diff --git a/go.mod b/go.mod index e151d4d52f0..254eaa6aaf6 100644 --- a/go.mod +++ b/go.mod @@ -8,16 +8,22 @@ replace ( github.com/Azure/go-autorest/autorest/date => github.com/Azure/go-autorest/autorest/date v0.2.1-0.20190906230412-69b4126ece6b github.com/Azure/go-autorest/autorest/mocks => github.com/Azure/go-autorest/autorest/mocks v0.3.1-0.20190906230412-69b4126ece6b github.com/Azure/go-autorest/tracing => github.com/Azure/go-autorest/tracing v0.5.0 + github.com/containerd/containerd => github.com/containerd/containerd v1.3.0 + github.com/docker/docker => github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 golang.org/x/crypto v0.0.0-20190129210102-0709b304e793 => golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 gopkg.in/russross/blackfriday.v2 v2.0.1 => github.com/russross/blackfriday/v2 v2.0.1 k8s.io/api => k8s.io/api v0.0.0-20190620084959-7cf5895f2711 k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719 k8s.io/client-go => k8s.io/client-go v0.0.0-20190620085101-78d2af792bab + k8s.io/kubectl => k8s.io/kubectl v0.0.0-20190831163037-3b58a944563f + k8s.io/kubernetes => k8s.io/kubernetes v1.12.10 ) require ( - 4d63.com/tz v0.0.0-20190311034157-bd6cee76f731 - cloud.google.com/go v0.45.1 + 4d63.com/embedfiles v1.0.0 // indirect + 4d63.com/tz v1.1.0 + cloud.google.com/go v0.47.0 // indirect + cloud.google.com/go/storage v1.1.1 contrib.go.opencensus.io/exporter/prometheus v0.1.0 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.12.6 // indirect github.com/Azure/azure-sdk-for-go v33.1.0+incompatible // indirect @@ -26,44 +32,39 @@ require ( github.com/Azure/go-autorest/autorest/validation v0.2.0 // indirect github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e // indirect github.com/Netflix/go-expect v0.0.0-20180928190340-9d1f4485533b // indirect - github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/aws/aws-sdk-go v1.23.15 // indirect github.com/blang/semver v3.5.1+incompatible github.com/bmatcuk/doublestar v1.1.5 - github.com/containerd/continuity v0.0.0-20181027224239-bea7585dbfac // indirect - github.com/docker/cli v0.0.0-20191011045415-5d85cdacd257 + github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 github.com/docker/distribution v2.7.1+incompatible - github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197 + github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c github.com/docker/go-connections v0.4.0 github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect - github.com/emirpasic/gods v1.12.0 // indirect github.com/ghodss/yaml v1.0.0 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b + github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc // indirect github.com/golang/protobuf v1.3.2 github.com/google/go-cmp v0.3.1 - github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8 + github.com/google/go-containerregistry v0.0.0-20191017210159-68bc585818ee github.com/google/go-github v17.0.0+incompatible github.com/google/go-querystring v1.0.0 // indirect github.com/google/uuid v1.1.1 - github.com/gorilla/context v1.1.1 // indirect - github.com/gorilla/mux v1.6.2 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.8.6 + github.com/grpc-ecosystem/grpc-gateway v1.11.3 github.com/hinshun/vt10x v0.0.0-20180809195222-d55458df857c // indirect - github.com/imdario/mergo v0.3.7 - github.com/karrick/godirwalk v1.10.12 - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect + github.com/imdario/mergo v0.3.8 + github.com/jstemmer/go-junit-report v0.9.1 // indirect + github.com/karrick/godirwalk v1.12.0 github.com/krishicks/yaml-patch v0.0.10 github.com/markbates/inflect v1.0.4 // indirect github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a // indirect github.com/mattn/go-colorable v0.1.2 // indirect github.com/mattn/go-isatty v0.0.9 // indirect github.com/mitchellh/go-homedir v1.1.0 - github.com/moby/buildkit v0.3.3 + github.com/moby/buildkit v0.6.2 github.com/opencontainers/go-digest v1.0.0-rc1 github.com/opencontainers/image-spec v1.0.1 - github.com/opencontainers/runc v0.1.1 // indirect github.com/pkg/errors v0.8.1 github.com/prometheus/procfs v0.0.4 // indirect github.com/rjeczalik/notify v0.9.2 @@ -77,20 +78,20 @@ require ( go.uber.org/atomic v1.4.0 // indirect go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.10.0 // indirect - golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 + golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 + golang.org/x/exp v0.0.0-20191014171548-69215a2ee97e // indirect + golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582 // indirect golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 - golang.org/x/sync v0.0.0-20190423024810-112230192c58 - golang.org/x/sys v0.0.0-20190904154756-749cb33beabd // indirect - golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 // indirect - google.golang.org/api v0.9.0 - google.golang.org/appengine v1.6.2 // indirect - google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 - google.golang.org/grpc v1.22.2 + golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e + golang.org/x/tools v0.0.0-20191018000036-341939e08647 // indirect + google.golang.org/api v0.11.0 + google.golang.org/appengine v1.6.5 // indirect + google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03 + google.golang.org/grpc v1.24.0 gopkg.in/AlecAivazis/survey.v1 v1.8.7 gopkg.in/russross/blackfriday.v2 v2.0.1 - gopkg.in/src-d/go-billy.v4 v4.3.0 // indirect - gopkg.in/src-d/go-git.v4 v4.11.0 - gopkg.in/yaml.v2 v2.2.2 + gopkg.in/src-d/go-git.v4 v4.13.1 + gopkg.in/yaml.v2 v2.2.4 k8s.io/api v0.0.0-20190831074750-7364b6bdad65 k8s.io/apimachinery v0.0.0-20190831074630-461753078381 k8s.io/client-go v0.0.0-20190831074946-3fe2abece89e diff --git a/go.sum b/go.sum index 01479892e8a..50a9f7317aa 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,9 @@ -4d63.com/tz v0.0.0-20190311034157-bd6cee76f731 h1:IewiLPO32uD72koV/eVlE0a79hZwbOYQpnoqL7uwb+M= -4d63.com/tz v0.0.0-20190311034157-bd6cee76f731/go.mod h1:Wb9xUAJLUbmcxZn11yBmZQ2VbDwHL+JXn9gT+a3S1uc= -cloud.google.com/go v0.25.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +4d63.com/embedfiles v0.0.0-20190311033909-995e0740726f h1:oyYjGRBNq1TxAIG8aHqtxlvqUfzdZf+MbcRb/oweNfY= +4d63.com/embedfiles v0.0.0-20190311033909-995e0740726f/go.mod h1:HxEsUxoVZyRxsZML/S6e2xAuieFMlGO0756ncWx1aXE= +4d63.com/embedfiles v1.0.0 h1:AR4j5WItSJwBX9SapkvmQUGLPlgCHQZaCDQ52zLXzZM= +4d63.com/embedfiles v1.0.0/go.mod h1:U0e+fedkrGPVJiU29PWZQ7pHHZRPiQAzwDJocZ4d3PE= +4d63.com/tz v1.1.0 h1:Hi58WbeFjiUH4XOWuCpl5iSzuUuw1axZzTqIfMKPKrg= +4d63.com/tz v1.1.0/go.mod h1:SHGqVdL7hd2ZaX2T9uEiOZ/OFAUfCCLURdLPJsd8ZNs= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -11,12 +14,24 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1 h1:lRi0CHyU+ytlvylOlFKKq0af6JncuyoRh1J+QJBqQx0= 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.47.0 h1:1JUtpcY9E7+eTospEwWS2QXP3DEn7poB3E2j0jN74mM= +cloud.google.com/go v0.47.0/go.mod h1:5p3Ky/7f3N10VBkhuR5LFtddroTiMyjZV/Kj5qOQFxU= +cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0 h1:VV2nUM3wwLLGh9lSABFgZMjInyUbJeaRSE64WuAIQ+4= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.1.1 h1:ycCxVkVbeNQj8t43giBuzCUJb9g5j1QHua8es8DMb/E= +cloud.google.com/go/storage v1.1.1/go.mod h1:nbQkUX8zrWh07WKekXr/Phd0q/ERj4IOJnkE+v56Qys= contrib.go.opencensus.io/exporter/prometheus v0.1.0 h1:SByaIoWwNgMdPSgl5sMqM2KDE5H/ukPWBRo314xiDvg= contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= contrib.go.opencensus.io/exporter/stackdriver v0.12.6 h1:Y2FTyj0HgOhfjEW6D6ytZNoz1YcPDXmkKr1I478CWKs= contrib.go.opencensus.io/exporter/stackdriver v0.12.6/go.mod h1:8x999/OcIPy5ivx/wDiV7Gx4D+VUPODf0mWRGRc5kSk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v19.1.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v33.1.0+incompatible h1:OAEdTDI/pJ7ee7W7PtRsd6W5s4mzvxjn0WhBTCN5eZg= github.com/Azure/azure-sdk-for-go v33.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -48,14 +63,15 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e h1:eb0Pzkt15Bm7f2FFYv7sjY7NPFi3cPkS3tv1CcrFBWA= github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.13-0.20190408173621-84b4ab48a507/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/hcsshim v0.8.5/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= github.com/Netflix/go-expect v0.0.0-20180928190340-9d1f4485533b h1:sSQK05nvxs4UkgCJaxihteu+r+6ela3dNMm7NVmsS3c= github.com/Netflix/go-expect v0.0.0-20180928190340-9d1f4485533b/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= @@ -66,7 +82,10 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.15.90/go.mod h1:es1KtYUFs7le0xQ3rOihkuoVD90z7D0fR2Qm4S00/gU= github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.15 h1:ut2ZzO0A34Ds18NXvvkWWKyO4aZqQ9uZquslWzCQvGU= @@ -85,12 +104,26 @@ github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/containerd/continuity v0.0.0-20181027224239-bea7585dbfac h1:PThQaO4yCvJzJBUW1XoFQxLotWRhvX2fgljJX8yrhFI= -github.com/containerd/continuity v0.0.0-20181027224239-bea7585dbfac/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/codahale/hdrhistogram v0.0.0-20160425231609-f8ad88b59a58/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/containerd/cgroups v0.0.0-20190226200435-dbea6f2bd416/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/containerd v1.3.0 h1:xjvXQWABwS2uiv3TWgQt5Uth60Gu86LTGZXMJkjc7rY= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-cni v0.0.0-20190610170741-5a4663dad645/go.mod h1:2wlRxCQdiBY+OcjNg5x8kI+5mEL1fGt25L4IzQHYJsM= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/ttrpc v0.0.0-20190411181408-699c4e40d1e7/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containernetworking/cni v0.6.1-0.20180218032124-142cde0c766c/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/creack/pty v1.1.7 h1:6pwm8kMQKCmgUg0ZHTm5+/YvRK0s3THD/28+T6/kk4A= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= @@ -99,24 +132,28 @@ github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1 github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/docker/cli v0.0.0-20190925022749-754388324470/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v0.0.0-20191011045415-5d85cdacd257 h1:CtCb3w4JnCpPuhlQ1sot/7HsKo/Y+emcB8PW4FxV22s= -github.com/docker/cli v0.0.0-20191011045415-5d85cdacd257/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20190321234815-f40f9c240ab0/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.6.0-rc.1.0.20180327202408-83389a148052+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0 h1:w3NnFcKR5241cfmQU5ZZAsf0xcpId6mWOupTvJlUX2U= -github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197 h1:7X3lPJrEEhoUt1UnISqyUB4phKf9aAKVMdFXD63DJO8= -github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 h1:Cvj7S8I4Xpx78KAl6TwTmMHuHlZ/0SM60NUneGJQ7IE= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.0/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.3.1/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libnetwork v0.8.0-dev.2.0.20190604151032-3c26b4e7495e/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4= github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= @@ -126,7 +163,6 @@ github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e h1:p1yVGRW3nmb85p1 github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -142,8 +178,9 @@ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2H github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= 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= @@ -159,8 +196,13 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobuffalo/envy v1.6.5 h1:X3is06x7v0nW2xiy2yFbbIjwHz57CD6z6MkvqULTCm8= github.com/gobuffalo/envy v1.6.5/go.mod h1:N+GkhhZ/93bGZc6ZKhJLP6+m+tCNPKwgSpH9kaifseQ= +github.com/godbus/dbus v4.1.0+incompatible/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/gofrs/flock v0.7.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -169,6 +211,8 @@ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 h1:LbsanbbD6LieF github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc h1:55rEp52jU6bkyslZ1+C/7NGfpQsEc6pxGLAGDOctqbw= +github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc/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= @@ -192,8 +236,8 @@ github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8 h1:i2MA7D3vtR5uk9ZPzVp/IC9616kCPv0RScyRD/tVQGM= -github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8/go.mod h1:KyKXa9ciM8+lgMXwOVsXi7UxGrsf9mM61Mzs+xKUrKE= +github.com/google/go-containerregistry v0.0.0-20191017210159-68bc585818ee h1:f4/kgW7U+YYzLGA5kJr+bLTp7wUpWsWoXcsFwiToIv4= +github.com/google/go-containerregistry v0.0.0-20191017210159-68bc585818ee/go.mod h1:XQTpY4MHT+qFughuXJ/NxN0cayffsGECBfcmq+Bbpuw= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= @@ -206,6 +250,8 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= 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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20150127133951-6f45313302b9/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -217,33 +263,37 @@ github.com/googleapis/gnostic v0.2.2 h1:DcFegQ7+ECdmkJMfVwWlC+89I4esJ7p8nkGt9ain github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8 h1:L9JPKrtsHMQ4VCRQfHvbbHBfB2Urn8xf6QZeXZ+OrN4= github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= -github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7 h1:6TSoaYExHper8PYsJu23GWVNOyYRCSnIFyxKgLSZ54w= github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway v1.8.6 h1:XvND7+MPP7Jp+JpqSZ7naSl5nVZf6k0LbL1V3EKh0zc= -github.com/grpc-ecosystem/grpc-gateway v1.8.6/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.11.3 h1:h8+NsYENhxNTuq+dobk3+ODoJtwY4Fu0WQXsxJfL8aM= +github.com/grpc-ecosystem/grpc-gateway v1.11.3/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/golang-lru v0.0.0-20160207214719-a0d98a5f2880/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/uuid v0.0.0-20160311170451-ebb0a03e909c/go.mod h1:fHzc09UnyJyqyW+bFuq864eh+wC7dj65aXmXLRe5to0= github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/hinshun/vt10x v0.0.0-20180809195222-d55458df857c h1:kp3AxgXgDOmIJFR7bIwqFhwJ2qWar8tEQSE5XXhCfVk= github.com/hinshun/vt10x v0.0.0-20180809195222-d55458df857c/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= -github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/ishidawataru/sctp v0.0.0-20180213033435-07191f837fed/go.mod h1:DM4VvS+hD/kDi1U1QsX2fnZowwBhqD0Dk3bRPKF/Oc8= +github.com/jaguilar/vt100 v0.0.0-20150826170717-2703a27b14ea/go.mod h1:QMdK4dGB3YhEW2BmA1wgGpPYI3HZy/5gD705PXKUVSg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -260,13 +310,15 @@ github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62F github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= 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 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +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/karrick/godirwalk v1.10.12 h1:BqUm+LuJcXjGv1d2mj3gBiQyrQ57a0rYoAmhvJQ7RDU= -github.com/karrick/godirwalk v1.10.12/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/karrick/godirwalk v1.12.0 h1:nkS4xxsjiZMvVlazd0mFyiwD4BR9f3m6LXGhM2TUx3Y= +github.com/karrick/godirwalk v1.12.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8= -github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= @@ -280,6 +332,8 @@ github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5 h1:hyz3dwM5QLc1Rfoz4FuWJQG5BN7tc6K1MndAUnGpQr4= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= 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/krishicks/yaml-patch v0.0.10 h1:H4FcHpnNwVmw8u0MjPRjWyIXtco6zM2F78t+57oNM3E= @@ -305,14 +359,14 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0j github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/moby/buildkit v0.3.3 h1:7eh9tOdFSuE84Q5wvmUjXhEvqnO7nNiwja45Hr59+uc= -github.com/moby/buildkit v0.3.3/go.mod h1:nnELdKPRkUAQR6pAB3mRU3+IlbqL3SSaAWqQL8k/K+4= +github.com/moby/buildkit v0.6.2 h1:aHW4kgySK9WoUxxdGDAiJcpVw/BKJgfGEUPUQ3WUvt0= +github.com/moby/buildkit v0.6.2/go.mod h1:JKVImCzxztxvULr5P6ZiBfA/B2P+ZpR6UHxOXQn4KiU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -320,17 +374,22 @@ github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lN github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= @@ -339,8 +398,11 @@ github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2i github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc6/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v0.0.0-20180909173843-eba862dc2470/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opentracing-contrib/go-stdlib v0.0.0-20171029140428-b1a47cfbdd75/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= +github.com/opentracing/opentracing-go v0.0.0-20171003133519-1361b9cd60be/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -349,6 +411,7 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -378,6 +441,7 @@ github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uY github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= @@ -386,9 +450,12 @@ github.com/segmentio/textio v1.2.0 h1:Ug4IkV3kh72juJbG8azoSBlgebIbUUxVNrfFcKHfTS github.com/segmentio/textio v1.2.0/go.mod h1:+Rb7v0YVODP+tK5F7FD9TCkV7gOYx9IgLHWiqtvY8ag= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.0.3/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -417,12 +484,21 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0 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/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tektoncd/pipeline v0.5.1-0.20190731183258-9d7e37e85bf8 h1:NftWnvqs4oGBatJExafxwZ/GzQa2+U3CZU4QKEcmWKA= github.com/tektoncd/pipeline v0.5.1-0.20190731183258-9d7e37e85bf8/go.mod h1:IZzJdiX9EqEMuUcgdnElozdYYRh0/ZRC+NKMLj1K3Yw= +github.com/tonistiigi/fsutil v0.0.0-20190819224149-3d2716dd0a4d/go.mod h1:pzh7kdwkDRh+Bx8J30uqaKJ1M4QrSH/um8fcIXeM8rc= +github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= +github.com/uber/jaeger-client-go v0.0.0-20180103221425-e02c85f9069e/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v1.2.1/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro= -github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/vishvananda/netlink v1.0.0/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -438,6 +514,7 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -445,19 +522,37 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 h1:58fnuSXlxZmFdJyvtTFVmV golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 h1:HuIa8hRrWRSrqYzx1qI49NNxhdi2PrY7gxVSq1JjLDc= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/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-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522 h1:OeRHuibLsmZkFj773W4LcfAGsSxJgfPONhr8cmO+eLA= 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-20190912063710-ac5d2bfcbfe0/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3 h1:n9HxLrNxWWtEb1cA950nuEEj3QnKbtsCJ6KjcgisNUs= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= +golang.org/x/exp v0.0.0-20191014171548-69215a2ee97e h1:ewBcnrlKhy0GKnQ31tXkOC/G7/jHC4ogar1TiIfANC4= +golang.org/x/exp v0.0.0-20191014171548-69215a2ee97e/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= 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 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI= 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 h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 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/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -480,7 +575,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc h1:gkKoSkUmnU6bpS/VhkuO27bzQeSA51uaEfbOW5dNb68= golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582 h1:p9xBe/w/OzkeYVKm234g55gMdD1nSIooTir5kV11kfA= +golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -494,10 +590,11 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180606202747-9527bec2660b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/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-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -505,7 +602,9 @@ golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/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-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190303122642-d455e41777fc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313 h1:pczuHS43Cp2ktBEEmLwScxgjWsBSzdaQiKzUyf3DTTc= 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= @@ -517,11 +616,12 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= 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-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd h1:DBH9mDw0zluJT/R+nGuV3jWFWLFaHyYZWD4tOT+cjn0= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47 h1:/XfQ9z7ib8eEJX2hdgFTZJ/ntt0swNk5oYBziWeTCvY= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/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= @@ -551,6 +651,17 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0 h1:Dh6fw+p6FyRl5x/FvNswO1ji0lIGzm3KP8Y9VkS9PTE= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +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-20190917162342-3b4f30a44f3b/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010171213-8abd42400456 h1:LR16zMCx87X52rsLOtnByklL2K/xWUKAo1Nm7AA4HA0= +golang.org/x/tools v0.0.0-20191010171213-8abd42400456/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-20191017163857-e4d7c6f25b8e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191018000036-341939e08647 h1:kfteFQIbFl9R5RwgjPgqDtpdeSnP/IfGo1R0ngom5vs= +golang.org/x/tools v0.0.0-20191018000036-341939e08647/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= @@ -562,14 +673,16 @@ google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.11.0 h1:n/qM3q0/rV2F0pox7o0CvNhlPvZAo7pLbef122cbLJ0= +google.golang.org/api v0.11.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= 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 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.2 h1:j8RI1yW0SkI+paT6uGwMlrMI/6zwYA6/CFil8rxOzGI= -google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= +google.golang.org/appengine v1.6.5/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= @@ -581,6 +694,9 @@ google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= 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-20191009194640-548a555dbc03 h1:4HYDjxeNXAOTv3o1N2tjo8UUSlhQgAD52FVkwxnWgM8= +google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= @@ -589,27 +705,29 @@ google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1 h1:/7cs52RnTJmD43s3uxzlq2U7nqVTd/37viQwMrMNlOM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.22.2 h1:isruki0DBfLFkl6UDkykCh6U/77y1sX6jcHp6MG6phs= -google.golang.org/grpc v1.22.2/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= gopkg.in/AlecAivazis/survey.v1 v1.8.7 h1:oBJqtgsyBLg9K5FK9twNUbcPnbCPoh+R9a+7nag3qJM= gopkg.in/AlecAivazis/survey.v1 v1.8.7/go.mod h1:iBNOmqKz/NUbZx3bA+4hAGLRC7fSK7tgtVDT4tB22XA= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= 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 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/src-d/go-billy.v4 v4.3.0 h1:KtlZ4c1OWbIs4jCv5ZXrTqG8EQocr0g/d4DjNg70aek= -gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.11.0 h1:cJwWgJ0DXifrNrXM6RGN1Y2yR60Rr1zQ9Q5DX5S9qgU= -gopkg.in/src-d/go-git.v4 v4.11.0/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk= +gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.13.1 h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE= +gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -618,6 +736,9 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -625,6 +746,8 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA= 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 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= k8s.io/api v0.0.0-20190620084959-7cf5895f2711 h1:BblVYz/wE5WtBsD/Gvu54KyBUTJMflolzc5I2DTvh50= k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A= k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719 h1:uV4S5IB5g4Nvi+TBVNf3e9L4wrirlwYJ6w88jUQxTUw= @@ -647,7 +770,6 @@ k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf h1:EYm5AW/UUDbnmnI+gK0TJD k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kubectl v0.0.0-20190831163037-3b58a944563f h1:rngzSSBHZ0ofTBvPu8HT9R+EMc3PKE9XUD9DrK+QdAM= k8s.io/kubectl v0.0.0-20190831163037-3b58a944563f/go.mod h1:/TM8X12sDkA1rdjpK4qMqSYiDZbicsgYIGjicJ6P4EU= -k8s.io/kubernetes v1.11.10/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/kubernetes v1.12.10 h1:Ev14jntgqMAlW1Dyk++0dU76+Wb2FJ9VwopYK1R78m4= k8s.io/kubernetes v1.12.10/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/metrics v0.0.0-20190831080339-bd7772846802/go.mod h1:98g4ghmWXz8M0qrhPme3ZnY3E/zPsSSbLlqOsw7WVa4= diff --git a/vendor/4d63.com/embedfiles/LICENSE b/vendor/4d63.com/embedfiles/LICENSE new file mode 100644 index 00000000000..3ce2f074404 --- /dev/null +++ b/vendor/4d63.com/embedfiles/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017, Leigh McCulloch + +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/4d63.com/embedfiles/README.md b/vendor/4d63.com/embedfiles/README.md new file mode 100644 index 00000000000..c66922e9668 --- /dev/null +++ b/vendor/4d63.com/embedfiles/README.md @@ -0,0 +1,74 @@ +# embedfiles +[![Go Report Card](https://goreportcard.com/badge/github.com/leighmcculloch/embedfiles)](https://goreportcard.com/report/github.com/leighmcculloch/embedfiles) + +Embedfiles is a tool for embedding files into Go code. + +Files are stored in a map of filenames to file data. + +## Install + +### Source + +``` +go get 4d63.com/embedfiles +``` + +## Usage + +``` +$ embedfiles +Embedfiles embeds files into a map in a go file. + +Usage: + + embedfiles -out=files.go -pkg=main + +Flags: + + -file-names-var string + name of the generated file names slice (default "fileNames") + -files-var string + name of the generated files slice (default "files") + -out file + output go file (default "files.go") + -pkg package + package name of the go file (default "main") + -verbose +``` + +## Example + +Given files: +``` +$ echo "hello world" > file1 +$ mkdir morefiles +$ echo "who are you?" > morefiles/file2 +``` + +Embed with `embedfiles`: +``` +$ embedfiles file1 morefiles +``` + +A new file `files.go` is created: +``` +$ cat files.go +// Generated by 4d63.com/embedfiles. + +package main + +var fileNames = []string{ + "file1", "morefiles/file2", +} + +var files = map[string][]byte{ + + "file1": []byte{ + 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 202, 72, 205, 201, 201, 87, 40, 207, 47, 202, 73, 225, 2, 4, 0, 0, 255, 255, 45, 59, 8, 175, 12, 0, 0, 0, + }, + + "morefiles/file2": []byte{ + 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 42, 207, 200, 87, 72, 44, 74, 85, 168, 204, 47, 181, 231, 2, 4, 0, 0, 255, 255, 138, 46, 37, 108, 13, 0, 0, 0, + }, +} +``` diff --git a/vendor/4d63.com/embedfiles/go.mod b/vendor/4d63.com/embedfiles/go.mod new file mode 100644 index 00000000000..eff18840374 --- /dev/null +++ b/vendor/4d63.com/embedfiles/go.mod @@ -0,0 +1,3 @@ +module 4d63.com/embedfiles + +go 1.13 diff --git a/vendor/4d63.com/embedfiles/main.go b/vendor/4d63.com/embedfiles/main.go new file mode 100644 index 00000000000..0ce89e1266b --- /dev/null +++ b/vendor/4d63.com/embedfiles/main.go @@ -0,0 +1,125 @@ +package main // import "4d63.com/embedfiles" + +import ( + "bytes" + "flag" + "fmt" + "go/format" + "io/ioutil" + "os" + "path/filepath" + "text/template" +) + +const tmpl = ` +// Generated by 4d63.com/embedfiles. + +package {{.Package}} + +var {{.FileNamesVar}} = []string{ {{range $name, $bytes := .Files}}"{{$name}}",{{end}} } + +var {{.FilesVar}} = map[string][]byte{ +{{range $name, $bytes := .Files}} + "{{$name}}": []byte{ {{range $bytes}}{{.}},{{end}} }, +{{end}} +} +` + +type tmplData struct { + Package string + Files map[string][]byte + FileNamesVar string + FilesVar string +} + +func main() { + out := flag.String("out", "files.go", "output go `file`") + pkg := flag.String("pkg", "main", "`package` name of the go file") + filesVar := flag.String("files-var", "files", "name of the generated files slice") + fileNamesVar := flag.String("file-names-var", "fileNames", "name of the generated file names slice") + verbose := flag.Bool("verbose", false, "") + flag.Usage = func() { + fmt.Fprintf(os.Stderr, "Embedfiles embeds files in the paths into a map in a go file.\n\n") + fmt.Fprintf(os.Stderr, "Usage:\n\n") + fmt.Fprintf(os.Stderr, " embedfiles -out=files.go -pkg=main \n\n") + fmt.Fprintf(os.Stderr, "Flags:\n\n") + flag.PrintDefaults() + } + flag.Parse() + + inputPaths := flag.Args() + + if len(inputPaths) == 0 { + flag.Usage() + return + } + + f, err := os.Create(*out) + if err != nil { + printErr("creating file", err) + return + } + + files := map[string][]byte{} + for _, inputPath := range inputPaths { + err = filepath.Walk(inputPath, func(path string, info os.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("walking: %s", err) + } + + if info.IsDir() { + return nil + } + + if *verbose { + fmt.Printf("%s ", path) + } + + contents, err := ioutil.ReadFile(path) + if err != nil { + return fmt.Errorf("reading file: %s", err) + } + if *verbose { + fmt.Printf("(%d bytes)\n", len(contents)) + } + + path = filepath.ToSlash(path) + files[path] = contents + return nil + }) + if err != nil { + printErr("walking", err) + return + } + } + + t, err := template.New("").Parse(tmpl) + if err != nil { + printErr("parsing template", err) + return + } + + buf := bytes.Buffer{} + err = t.Execute(&buf, &tmplData{Package: *pkg, Files: files, FilesVar: *filesVar, FileNamesVar: *fileNamesVar}) + if err != nil { + printErr("generating code", err) + return + } + + formatted, err := format.Source(buf.Bytes()) + if err != nil { + printErr("formatting code", err) + return + } + + f.Write(formatted) + err = f.Close() + if err != nil { + printErr("finalizing file", err) + return + } +} + +func printErr(doing string, err error) { + fmt.Fprintf(os.Stderr, "Error %s: %s\n", doing, err) +} diff --git a/vendor/4d63.com/tz/go.mod b/vendor/4d63.com/tz/go.mod index c9d635e354c..3bea92628e6 100644 --- a/vendor/4d63.com/tz/go.mod +++ b/vendor/4d63.com/tz/go.mod @@ -1 +1,5 @@ -module "4d63.com/tz" +module 4d63.com/tz + +go 1.13 + +require 4d63.com/embedfiles v0.0.0-20190311033909-995e0740726f diff --git a/vendor/4d63.com/tz/go.sum b/vendor/4d63.com/tz/go.sum new file mode 100644 index 00000000000..e471d44b831 --- /dev/null +++ b/vendor/4d63.com/tz/go.sum @@ -0,0 +1,2 @@ +4d63.com/embedfiles v0.0.0-20190311033909-995e0740726f h1:oyYjGRBNq1TxAIG8aHqtxlvqUfzdZf+MbcRb/oweNfY= +4d63.com/embedfiles v0.0.0-20190311033909-995e0740726f/go.mod h1:HxEsUxoVZyRxsZML/S6e2xAuieFMlGO0756ncWx1aXE= diff --git a/vendor/4d63.com/tz/tools.go b/vendor/4d63.com/tz/tools.go new file mode 100644 index 00000000000..94669479aac --- /dev/null +++ b/vendor/4d63.com/tz/tools.go @@ -0,0 +1,5 @@ +// +build tools + +package tz + +import _ "4d63.com/embedfiles" diff --git a/vendor/4d63.com/tz/tz.go b/vendor/4d63.com/tz/tz.go index 9f61fa7fbd1..7e7961f6e97 100644 --- a/vendor/4d63.com/tz/tz.go +++ b/vendor/4d63.com/tz/tz.go @@ -20,8 +20,7 @@ import ( //go:generate rm -fr zoneinfo //go:generate unzip -q $GOROOT/lib/time/zoneinfo.zip -d zoneinfo/ -//go:generate go get 4d63.com/embedfiles -//go:generate embedfiles -out=zoneinfo.go -pkg=tz zoneinfo/ +//go:generate go run 4d63.com/embedfiles -out=zoneinfo.go -pkg=tz zoneinfo/ func tzData(name string) ([]byte, bool) { data, ok := files["zoneinfo/"+name] diff --git a/vendor/4d63.com/tz/zoneinfo.go b/vendor/4d63.com/tz/zoneinfo.go index ac6377a166b..7b4e815f353 100644 --- a/vendor/4d63.com/tz/zoneinfo.go +++ b/vendor/4d63.com/tz/zoneinfo.go @@ -6,1189 +6,1189 @@ var fileNames = []string{"zoneinfo/Africa/Abidjan", "zoneinfo/Africa/Accra", "zo var files = map[string][]byte{ - "zoneinfo/Africa/Abidjan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Abidjan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Accra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 3, 0, 0, 0, 14, 158, 48, 102, 180, 163, 52, 123, 128, 163, 211, 252, 80, 165, 21, 175, 0, 165, 181, 47, 208, 166, 246, 226, 128, 167, 150, 99, 80, 168, 216, 22, 0, 169, 119, 150, 208, 170, 186, 155, 0, 171, 90, 27, 208, 172, 155, 206, 128, 173, 59, 79, 80, 174, 125, 2, 0, 175, 28, 130, 208, 176, 94, 53, 128, 176, 253, 182, 80, 178, 64, 186, 128, 178, 224, 59, 80, 180, 33, 238, 0, 180, 193, 110, 208, 182, 3, 33, 128, 182, 162, 162, 80, 183, 228, 85, 0, 184, 131, 213, 208, 185, 198, 218, 0, 186, 102, 90, 208, 187, 168, 13, 128, 188, 71, 142, 80, 189, 137, 65, 0, 190, 40, 193, 208, 191, 106, 116, 128, 192, 9, 245, 80, 193, 76, 249, 128, 193, 236, 122, 80, 195, 46, 45, 0, 195, 205, 173, 208, 197, 15, 96, 128, 197, 174, 225, 80, 198, 240, 148, 0, 199, 144, 20, 208, 200, 211, 25, 0, 201, 114, 153, 208, 202, 180, 76, 128, 203, 83, 205, 80, 204, 149, 128, 0, 205, 53, 0, 208, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 255, 204, 0, 0, 0, 0, 4, 176, 1, 4, 0, 0, 0, 0, 0, 10, 76, 77, 84, 0, 43, 48, 48, 50, 48, 0, 71, 77, 84, 0, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Accra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 3, 0, 0, 0, 14, 158, 48, 102, 180, 163, 52, 123, 128, 163, 211, 252, 80, 165, 21, 175, 0, 165, 181, 47, 208, 166, 246, 226, 128, 167, 150, 99, 80, 168, 216, 22, 0, 169, 119, 150, 208, 170, 186, 155, 0, 171, 90, 27, 208, 172, 155, 206, 128, 173, 59, 79, 80, 174, 125, 2, 0, 175, 28, 130, 208, 176, 94, 53, 128, 176, 253, 182, 80, 178, 64, 186, 128, 178, 224, 59, 80, 180, 33, 238, 0, 180, 193, 110, 208, 182, 3, 33, 128, 182, 162, 162, 80, 183, 228, 85, 0, 184, 131, 213, 208, 185, 198, 218, 0, 186, 102, 90, 208, 187, 168, 13, 128, 188, 71, 142, 80, 189, 137, 65, 0, 190, 40, 193, 208, 191, 106, 116, 128, 192, 9, 245, 80, 193, 76, 249, 128, 193, 236, 122, 80, 195, 46, 45, 0, 195, 205, 173, 208, 197, 15, 96, 128, 197, 174, 225, 80, 198, 240, 148, 0, 199, 144, 20, 208, 200, 211, 25, 0, 201, 114, 153, 208, 202, 180, 76, 128, 203, 83, 205, 80, 204, 149, 128, 0, 205, 53, 0, 208, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 255, 204, 0, 0, 0, 0, 4, 176, 1, 4, 0, 0, 0, 0, 0, 10, 76, 77, 84, 0, 43, 48, 48, 50, 48, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 158, 48, 102, 180, 255, 255, 255, 255, 163, 52, 123, 128, 255, 255, 255, 255, 163, 211, 252, 80, 255, 255, 255, 255, 165, 21, 175, 0, 255, 255, 255, 255, 165, 181, 47, 208, 255, 255, 255, 255, 166, 246, 226, 128, 255, 255, 255, 255, 167, 150, 99, 80, 255, 255, 255, 255, 168, 216, 22, 0, 255, 255, 255, 255, 169, 119, 150, 208, 255, 255, 255, 255, 170, 186, 155, 0, 255, 255, 255, 255, 171, 90, 27, 208, 255, 255, 255, 255, 172, 155, 206, 128, 255, 255, 255, 255, 173, 59, 79, 80, 255, 255, 255, 255, 174, 125, 2, 0, 255, 255, 255, 255, 175, 28, 130, 208, 255, 255, 255, 255, 176, 94, 53, 128, 255, 255, 255, 255, 176, 253, 182, 80, 255, 255, 255, 255, 178, 64, 186, 128, 255, 255, 255, 255, 178, 224, 59, 80, 255, 255, 255, 255, 180, 33, 238, 0, 255, 255, 255, 255, 180, 193, 110, 208, 255, 255, 255, 255, 182, 3, 33, 128, 255, 255, 255, 255, 182, 162, 162, 80, 255, 255, 255, 255, 183, 228, 85, 0, 255, 255, 255, 255, 184, 131, 213, 208, 255, 255, 255, 255, 185, 198, 218, 0, 255, 255, 255, 255, 186, 102, 90, 208, 255, 255, 255, 255, 187, 168, 13, 128, 255, 255, 255, 255, 188, 71, 142, 80, 255, 255, 255, 255, 189, 137, 65, 0, 255, 255, 255, 255, 190, 40, 193, 208, 255, 255, 255, 255, 191, 106, 116, 128, 255, 255, 255, 255, 192, 9, 245, 80, 255, 255, 255, 255, 193, 76, 249, 128, 255, 255, 255, 255, 193, 236, 122, 80, 255, 255, 255, 255, 195, 46, 45, 0, 255, 255, 255, 255, 195, 205, 173, 208, 255, 255, 255, 255, 197, 15, 96, 128, 255, 255, 255, 255, 197, 174, 225, 80, 255, 255, 255, 255, 198, 240, 148, 0, 255, 255, 255, 255, 199, 144, 20, 208, 255, 255, 255, 255, 200, 211, 25, 0, 255, 255, 255, 255, 201, 114, 153, 208, 255, 255, 255, 255, 202, 180, 76, 128, 255, 255, 255, 255, 203, 83, 205, 80, 255, 255, 255, 255, 204, 149, 128, 0, 255, 255, 255, 255, 205, 53, 0, 208, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 255, 204, 0, 0, 0, 0, 4, 176, 1, 4, 0, 0, 0, 0, 0, 10, 76, 77, 84, 0, 43, 48, 48, 50, 48, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Addis_Ababa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Addis_Ababa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Algiers": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 26, 128, 0, 0, 0, 145, 96, 80, 79, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 164, 184, 6, 112, 198, 255, 6, 112, 199, 88, 186, 128, 199, 218, 9, 160, 207, 146, 52, 16, 208, 138, 0, 0, 209, 114, 22, 16, 210, 78, 36, 112, 212, 75, 7, 112, 229, 206, 211, 0, 243, 92, 176, 240, 2, 120, 193, 240, 3, 67, 200, 240, 13, 207, 215, 0, 14, 173, 68, 240, 15, 120, 90, 0, 16, 104, 89, 16, 18, 118, 67, 112, 19, 102, 66, 128, 20, 95, 124, 16, 21, 79, 95, 0, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 6, 5, 6, 5, 6, 4, 6, 4, 2, 3, 7, 6, 5, 6, 4, 7, 4, 6, 0, 0, 2, 220, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 22, 0, 0, 14, 16, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 10}, + "zoneinfo/Africa/Algiers": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 26, 128, 0, 0, 0, 145, 96, 80, 79, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 164, 184, 6, 112, 198, 255, 6, 112, 199, 88, 186, 128, 199, 218, 9, 160, 207, 146, 52, 16, 208, 138, 0, 0, 209, 114, 22, 16, 210, 78, 36, 112, 212, 75, 7, 112, 229, 206, 211, 0, 243, 92, 176, 240, 2, 120, 193, 240, 3, 67, 200, 240, 13, 207, 215, 0, 14, 173, 68, 240, 15, 120, 90, 0, 16, 104, 89, 16, 18, 118, 67, 112, 19, 102, 66, 128, 20, 95, 124, 16, 21, 79, 95, 0, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 6, 5, 6, 5, 6, 4, 6, 4, 2, 3, 7, 6, 5, 6, 4, 7, 4, 6, 0, 0, 2, 220, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 22, 0, 0, 14, 16, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 8, 0, 0, 0, 26, 255, 255, 255, 255, 107, 200, 73, 224, 255, 255, 255, 255, 145, 96, 80, 79, 255, 255, 255, 255, 155, 71, 120, 240, 255, 255, 255, 255, 155, 215, 44, 112, 255, 255, 255, 255, 156, 188, 145, 112, 255, 255, 255, 255, 157, 192, 72, 240, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 42, 240, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 128, 12, 240, 255, 255, 255, 255, 162, 46, 18, 240, 255, 255, 255, 255, 163, 122, 76, 240, 255, 255, 255, 255, 164, 53, 129, 240, 255, 255, 255, 255, 164, 184, 6, 112, 255, 255, 255, 255, 198, 255, 6, 112, 255, 255, 255, 255, 199, 88, 186, 128, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 138, 0, 0, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 36, 112, 255, 255, 255, 255, 212, 75, 7, 112, 255, 255, 255, 255, 229, 206, 211, 0, 255, 255, 255, 255, 243, 92, 176, 240, 0, 0, 0, 0, 2, 120, 193, 240, 0, 0, 0, 0, 3, 67, 200, 240, 0, 0, 0, 0, 13, 207, 215, 0, 0, 0, 0, 0, 14, 173, 68, 240, 0, 0, 0, 0, 15, 120, 90, 0, 0, 0, 0, 0, 16, 104, 89, 16, 0, 0, 0, 0, 18, 118, 67, 112, 0, 0, 0, 0, 19, 102, 66, 128, 0, 0, 0, 0, 20, 95, 124, 16, 0, 0, 0, 0, 21, 79, 95, 0, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 6, 5, 6, 5, 6, 4, 6, 4, 2, 3, 7, 6, 5, 6, 4, 7, 4, 6, 0, 0, 2, 220, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 22, 0, 0, 14, 16, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 10}, - "zoneinfo/Africa/Asmara": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Asmara": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Asmera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Asmera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Bamako": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Bamako": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Bangui": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Bangui": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Banjul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Banjul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Bissau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 146, 230, 156, 144, 9, 103, 97, 16, 1, 2, 255, 255, 241, 100, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 1, 0, 0, 1, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Bissau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 146, 230, 156, 144, 9, 103, 97, 16, 1, 2, 255, 255, 241, 100, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 1, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 146, 230, 156, 144, 0, 0, 0, 0, 9, 103, 97, 16, 1, 2, 255, 255, 241, 100, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 1, 0, 0, 1, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Blantyre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Blantyre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Brazzaville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Brazzaville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Bujumbura": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Bujumbura": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Cairo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 200, 147, 180, 224, 200, 250, 123, 208, 201, 252, 239, 224, 202, 199, 232, 208, 203, 203, 174, 96, 204, 223, 41, 208, 205, 172, 225, 224, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 173, 80, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 194, 253, 128, 252, 219, 190, 240, 253, 165, 130, 128, 254, 188, 242, 112, 255, 134, 182, 0, 0, 158, 37, 240, 1, 103, 233, 128, 2, 127, 89, 112, 3, 73, 29, 0, 4, 97, 222, 112, 5, 43, 162, 0, 6, 67, 17, 240, 7, 12, 213, 128, 8, 36, 69, 112, 8, 238, 9, 0, 10, 5, 120, 240, 10, 207, 60, 128, 11, 231, 253, 240, 12, 177, 193, 128, 13, 201, 49, 112, 14, 146, 245, 0, 15, 170, 100, 240, 16, 116, 40, 128, 17, 139, 152, 112, 18, 85, 92, 0, 19, 110, 29, 112, 20, 55, 225, 0, 21, 79, 80, 240, 22, 25, 20, 128, 23, 160, 147, 240, 23, 250, 72, 0, 25, 112, 163, 240, 25, 219, 123, 128, 26, 244, 60, 240, 27, 190, 0, 128, 28, 213, 112, 112, 29, 159, 52, 0, 30, 182, 163, 240, 31, 128, 103, 128, 32, 151, 215, 112, 33, 97, 155, 0, 34, 122, 92, 112, 35, 68, 32, 0, 36, 98, 39, 112, 37, 37, 83, 128, 38, 60, 195, 112, 39, 6, 135, 0, 40, 29, 246, 240, 40, 231, 186, 128, 42, 0, 123, 240, 42, 202, 63, 128, 43, 225, 175, 112, 44, 171, 115, 0, 45, 194, 226, 240, 46, 140, 166, 128, 47, 160, 19, 224, 48, 107, 12, 208, 49, 127, 245, 224, 50, 74, 238, 208, 51, 95, 215, 224, 52, 42, 208, 208, 53, 63, 185, 224, 54, 10, 178, 208, 55, 40, 214, 96, 55, 243, 207, 80, 57, 8, 184, 96, 57, 211, 177, 80, 58, 232, 154, 96, 59, 179, 147, 80, 60, 200, 124, 96, 61, 147, 117, 80, 62, 168, 94, 96, 63, 115, 87, 80, 64, 145, 122, 224, 65, 92, 115, 208, 66, 113, 92, 224, 67, 60, 85, 208, 68, 81, 62, 224, 69, 18, 253, 80, 70, 49, 32, 224, 70, 224, 106, 80, 72, 17, 2, 224, 72, 183, 17, 208, 73, 240, 228, 224, 74, 141, 185, 80, 75, 218, 1, 96, 76, 97, 189, 208, 76, 137, 88, 224, 76, 164, 250, 80, 83, 117, 56, 224, 83, 172, 137, 208, 83, 218, 188, 96, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + "zoneinfo/Africa/Cairo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 200, 147, 180, 224, 200, 250, 123, 208, 201, 252, 239, 224, 202, 199, 232, 208, 203, 203, 174, 96, 204, 223, 41, 208, 205, 172, 225, 224, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 173, 80, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 194, 253, 128, 252, 219, 190, 240, 253, 165, 130, 128, 254, 188, 242, 112, 255, 134, 182, 0, 0, 158, 37, 240, 1, 103, 233, 128, 2, 127, 89, 112, 3, 73, 29, 0, 4, 97, 222, 112, 5, 43, 162, 0, 6, 67, 17, 240, 7, 12, 213, 128, 8, 36, 69, 112, 8, 238, 9, 0, 10, 5, 120, 240, 10, 207, 60, 128, 11, 231, 253, 240, 12, 177, 193, 128, 13, 201, 49, 112, 14, 146, 245, 0, 15, 170, 100, 240, 16, 116, 40, 128, 17, 139, 152, 112, 18, 85, 92, 0, 19, 110, 29, 112, 20, 55, 225, 0, 21, 79, 80, 240, 22, 25, 20, 128, 23, 160, 147, 240, 23, 250, 72, 0, 25, 112, 163, 240, 25, 219, 123, 128, 26, 244, 60, 240, 27, 190, 0, 128, 28, 213, 112, 112, 29, 159, 52, 0, 30, 182, 163, 240, 31, 128, 103, 128, 32, 151, 215, 112, 33, 97, 155, 0, 34, 122, 92, 112, 35, 68, 32, 0, 36, 98, 39, 112, 37, 37, 83, 128, 38, 60, 195, 112, 39, 6, 135, 0, 40, 29, 246, 240, 40, 231, 186, 128, 42, 0, 123, 240, 42, 202, 63, 128, 43, 225, 175, 112, 44, 171, 115, 0, 45, 194, 226, 240, 46, 140, 166, 128, 47, 160, 19, 224, 48, 107, 12, 208, 49, 127, 245, 224, 50, 74, 238, 208, 51, 95, 215, 224, 52, 42, 208, 208, 53, 63, 185, 224, 54, 10, 178, 208, 55, 40, 214, 96, 55, 243, 207, 80, 57, 8, 184, 96, 57, 211, 177, 80, 58, 232, 154, 96, 59, 179, 147, 80, 60, 200, 124, 96, 61, 147, 117, 80, 62, 168, 94, 96, 63, 115, 87, 80, 64, 145, 122, 224, 65, 92, 115, 208, 66, 113, 92, 224, 67, 60, 85, 208, 68, 81, 62, 224, 69, 18, 253, 80, 70, 49, 32, 224, 70, 224, 106, 80, 72, 17, 2, 224, 72, 183, 17, 208, 73, 240, 228, 224, 74, 141, 185, 80, 75, 218, 1, 96, 76, 97, 189, 208, 76, 137, 88, 224, 76, 164, 250, 80, 83, 117, 56, 224, 83, 172, 137, 208, 83, 218, 188, 96, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 255, 255, 255, 255, 125, 189, 77, 171, 255, 255, 255, 255, 200, 147, 180, 224, 255, 255, 255, 255, 200, 250, 123, 208, 255, 255, 255, 255, 201, 252, 239, 224, 255, 255, 255, 255, 202, 199, 232, 208, 255, 255, 255, 255, 203, 203, 174, 96, 255, 255, 255, 255, 204, 223, 41, 208, 255, 255, 255, 255, 205, 172, 225, 224, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 173, 80, 255, 255, 255, 255, 232, 54, 99, 96, 255, 255, 255, 255, 232, 244, 45, 80, 255, 255, 255, 255, 234, 11, 185, 96, 255, 255, 255, 255, 234, 213, 96, 208, 255, 255, 255, 255, 235, 236, 250, 240, 255, 255, 255, 255, 236, 181, 109, 0, 255, 255, 255, 255, 237, 207, 127, 240, 255, 255, 255, 255, 238, 151, 242, 0, 255, 255, 255, 255, 239, 176, 179, 112, 255, 255, 255, 255, 240, 121, 37, 128, 255, 255, 255, 255, 241, 145, 230, 240, 255, 255, 255, 255, 242, 90, 89, 0, 255, 255, 255, 255, 243, 115, 26, 112, 255, 255, 255, 255, 244, 59, 140, 128, 255, 255, 255, 255, 245, 85, 159, 112, 255, 255, 255, 255, 246, 30, 17, 128, 255, 255, 255, 255, 247, 54, 210, 240, 255, 255, 255, 255, 247, 255, 69, 0, 255, 255, 255, 255, 249, 24, 6, 112, 255, 255, 255, 255, 249, 225, 202, 0, 255, 255, 255, 255, 250, 249, 57, 240, 255, 255, 255, 255, 251, 194, 253, 128, 255, 255, 255, 255, 252, 219, 190, 240, 255, 255, 255, 255, 253, 165, 130, 128, 255, 255, 255, 255, 254, 188, 242, 112, 255, 255, 255, 255, 255, 134, 182, 0, 0, 0, 0, 0, 0, 158, 37, 240, 0, 0, 0, 0, 1, 103, 233, 128, 0, 0, 0, 0, 2, 127, 89, 112, 0, 0, 0, 0, 3, 73, 29, 0, 0, 0, 0, 0, 4, 97, 222, 112, 0, 0, 0, 0, 5, 43, 162, 0, 0, 0, 0, 0, 6, 67, 17, 240, 0, 0, 0, 0, 7, 12, 213, 128, 0, 0, 0, 0, 8, 36, 69, 112, 0, 0, 0, 0, 8, 238, 9, 0, 0, 0, 0, 0, 10, 5, 120, 240, 0, 0, 0, 0, 10, 207, 60, 128, 0, 0, 0, 0, 11, 231, 253, 240, 0, 0, 0, 0, 12, 177, 193, 128, 0, 0, 0, 0, 13, 201, 49, 112, 0, 0, 0, 0, 14, 146, 245, 0, 0, 0, 0, 0, 15, 170, 100, 240, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 139, 152, 112, 0, 0, 0, 0, 18, 85, 92, 0, 0, 0, 0, 0, 19, 110, 29, 112, 0, 0, 0, 0, 20, 55, 225, 0, 0, 0, 0, 0, 21, 79, 80, 240, 0, 0, 0, 0, 22, 25, 20, 128, 0, 0, 0, 0, 23, 160, 147, 240, 0, 0, 0, 0, 23, 250, 72, 0, 0, 0, 0, 0, 25, 112, 163, 240, 0, 0, 0, 0, 25, 219, 123, 128, 0, 0, 0, 0, 26, 244, 60, 240, 0, 0, 0, 0, 27, 190, 0, 128, 0, 0, 0, 0, 28, 213, 112, 112, 0, 0, 0, 0, 29, 159, 52, 0, 0, 0, 0, 0, 30, 182, 163, 240, 0, 0, 0, 0, 31, 128, 103, 128, 0, 0, 0, 0, 32, 151, 215, 112, 0, 0, 0, 0, 33, 97, 155, 0, 0, 0, 0, 0, 34, 122, 92, 112, 0, 0, 0, 0, 35, 68, 32, 0, 0, 0, 0, 0, 36, 98, 39, 112, 0, 0, 0, 0, 37, 37, 83, 128, 0, 0, 0, 0, 38, 60, 195, 112, 0, 0, 0, 0, 39, 6, 135, 0, 0, 0, 0, 0, 40, 29, 246, 240, 0, 0, 0, 0, 40, 231, 186, 128, 0, 0, 0, 0, 42, 0, 123, 240, 0, 0, 0, 0, 42, 202, 63, 128, 0, 0, 0, 0, 43, 225, 175, 112, 0, 0, 0, 0, 44, 171, 115, 0, 0, 0, 0, 0, 45, 194, 226, 240, 0, 0, 0, 0, 46, 140, 166, 128, 0, 0, 0, 0, 47, 160, 19, 224, 0, 0, 0, 0, 48, 107, 12, 208, 0, 0, 0, 0, 49, 127, 245, 224, 0, 0, 0, 0, 50, 74, 238, 208, 0, 0, 0, 0, 51, 95, 215, 224, 0, 0, 0, 0, 52, 42, 208, 208, 0, 0, 0, 0, 53, 63, 185, 224, 0, 0, 0, 0, 54, 10, 178, 208, 0, 0, 0, 0, 55, 40, 214, 96, 0, 0, 0, 0, 55, 243, 207, 80, 0, 0, 0, 0, 57, 8, 184, 96, 0, 0, 0, 0, 57, 211, 177, 80, 0, 0, 0, 0, 58, 232, 154, 96, 0, 0, 0, 0, 59, 179, 147, 80, 0, 0, 0, 0, 60, 200, 124, 96, 0, 0, 0, 0, 61, 147, 117, 80, 0, 0, 0, 0, 62, 168, 94, 96, 0, 0, 0, 0, 63, 115, 87, 80, 0, 0, 0, 0, 64, 145, 122, 224, 0, 0, 0, 0, 65, 92, 115, 208, 0, 0, 0, 0, 66, 113, 92, 224, 0, 0, 0, 0, 67, 60, 85, 208, 0, 0, 0, 0, 68, 81, 62, 224, 0, 0, 0, 0, 69, 18, 253, 80, 0, 0, 0, 0, 70, 49, 32, 224, 0, 0, 0, 0, 70, 224, 106, 80, 0, 0, 0, 0, 72, 17, 2, 224, 0, 0, 0, 0, 72, 183, 17, 208, 0, 0, 0, 0, 73, 240, 228, 224, 0, 0, 0, 0, 74, 141, 185, 80, 0, 0, 0, 0, 75, 218, 1, 96, 0, 0, 0, 0, 76, 97, 189, 208, 0, 0, 0, 0, 76, 137, 88, 224, 0, 0, 0, 0, 76, 164, 250, 80, 0, 0, 0, 0, 83, 117, 56, 224, 0, 0, 0, 0, 83, 172, 137, 208, 0, 0, 0, 0, 83, 218, 188, 96, 0, 0, 0, 0, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 10, 69, 69, 84, 45, 50, 10}, - "zoneinfo/Africa/Casablanca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 5, 0, 0, 0, 12, 150, 81, 249, 156, 198, 255, 20, 128, 199, 88, 172, 112, 199, 217, 237, 128, 210, 161, 50, 240, 219, 53, 164, 0, 219, 238, 39, 240, 251, 37, 114, 64, 251, 194, 239, 112, 8, 107, 132, 128, 8, 198, 109, 240, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 26, 183, 166, 0, 30, 24, 111, 240, 72, 65, 230, 128, 72, 187, 34, 112, 74, 35, 26, 0, 74, 141, 213, 112, 75, 220, 192, 128, 76, 93, 229, 112, 77, 151, 184, 128, 78, 52, 140, 240, 79, 156, 160, 160, 80, 8, 187, 160, 80, 49, 154, 32, 80, 103, 167, 160, 81, 124, 130, 160, 81, 216, 203, 160, 82, 5, 158, 160, 82, 108, 115, 160, 83, 55, 122, 160, 83, 174, 33, 160, 83, 220, 70, 32, 84, 76, 85, 160, 85, 23, 92, 160, 85, 124, 224, 32, 85, 171, 4, 160, 86, 44, 55, 160, 86, 247, 62, 160, 87, 83, 135, 160, 87, 129, 172, 32, 88, 21, 84, 32, 88, 215, 32, 160, 89, 32, 244, 160, 89, 88, 83, 160, 89, 245, 54, 32, 90, 183, 2, 160, 90, 247, 156, 32, 91, 37, 192, 160, 91, 213, 24, 32, 92, 206, 67, 160, 92, 252, 104, 32, 94, 155, 176, 160, 94, 201, 213, 32, 96, 114, 88, 32, 96, 160, 124, 160, 98, 63, 197, 32, 98, 119, 36, 32, 100, 22, 108, 160, 100, 68, 145, 32, 101, 237, 20, 32, 102, 27, 56, 160, 103, 186, 129, 32, 103, 241, 224, 32, 105, 145, 40, 160, 105, 191, 77, 32, 107, 103, 208, 32, 107, 149, 244, 160, 109, 53, 61, 32, 109, 99, 97, 160, 111, 11, 228, 160, 111, 58, 9, 32, 112, 217, 81, 160, 113, 16, 176, 160, 114, 175, 249, 32, 114, 222, 29, 160, 116, 134, 160, 160, 116, 180, 197, 32, 118, 84, 13, 160, 118, 139, 108, 160, 120, 42, 181, 32, 120, 88, 217, 160, 121, 248, 34, 32, 122, 47, 129, 32, 123, 206, 201, 160, 123, 252, 238, 32, 125, 165, 113, 32, 125, 211, 149, 160, 127, 114, 222, 32, 127, 170, 61, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 255, 255, 248, 228, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 0, 4, 0, 0, 0, 0, 1, 8, 76, 77, 84, 0, 43, 48, 49, 0, 43, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10}, + "zoneinfo/Africa/Casablanca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 5, 0, 0, 0, 12, 150, 81, 249, 156, 198, 255, 20, 128, 199, 88, 172, 112, 199, 217, 237, 128, 210, 161, 50, 240, 219, 53, 164, 0, 219, 238, 39, 240, 251, 37, 114, 64, 251, 194, 239, 112, 8, 107, 132, 128, 8, 198, 109, 240, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 26, 183, 166, 0, 30, 24, 111, 240, 72, 65, 230, 128, 72, 187, 34, 112, 74, 35, 26, 0, 74, 141, 213, 112, 75, 220, 192, 128, 76, 93, 229, 112, 77, 151, 184, 128, 78, 52, 140, 240, 79, 156, 160, 160, 80, 8, 187, 160, 80, 49, 154, 32, 80, 103, 167, 160, 81, 124, 130, 160, 81, 216, 203, 160, 82, 5, 158, 160, 82, 108, 115, 160, 83, 55, 122, 160, 83, 174, 33, 160, 83, 220, 70, 32, 84, 76, 85, 160, 85, 23, 92, 160, 85, 124, 224, 32, 85, 171, 4, 160, 86, 44, 55, 160, 86, 247, 62, 160, 87, 83, 135, 160, 87, 129, 172, 32, 88, 21, 84, 32, 88, 215, 32, 160, 89, 32, 244, 160, 89, 88, 83, 160, 89, 245, 54, 32, 90, 183, 2, 160, 90, 247, 156, 32, 91, 37, 192, 160, 91, 213, 24, 32, 92, 206, 67, 160, 92, 252, 104, 32, 94, 155, 176, 160, 94, 201, 213, 32, 96, 114, 88, 32, 96, 160, 124, 160, 98, 63, 197, 32, 98, 119, 36, 32, 100, 22, 108, 160, 100, 68, 145, 32, 101, 237, 20, 32, 102, 27, 56, 160, 103, 186, 129, 32, 103, 241, 224, 32, 105, 145, 40, 160, 105, 191, 77, 32, 107, 103, 208, 32, 107, 149, 244, 160, 109, 53, 61, 32, 109, 99, 97, 160, 111, 11, 228, 160, 111, 58, 9, 32, 112, 217, 81, 160, 113, 16, 176, 160, 114, 175, 249, 32, 114, 222, 29, 160, 116, 134, 160, 160, 116, 180, 197, 32, 118, 84, 13, 160, 118, 139, 108, 160, 120, 42, 181, 32, 120, 88, 217, 160, 121, 248, 34, 32, 122, 47, 129, 32, 123, 206, 201, 160, 123, 252, 238, 32, 125, 165, 113, 32, 125, 211, 149, 160, 127, 114, 222, 32, 127, 170, 61, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 255, 255, 248, 228, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 0, 4, 0, 0, 0, 0, 1, 8, 76, 77, 84, 0, 43, 48, 49, 0, 43, 48, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 150, 81, 249, 156, 255, 255, 255, 255, 198, 255, 20, 128, 255, 255, 255, 255, 199, 88, 172, 112, 255, 255, 255, 255, 199, 217, 237, 128, 255, 255, 255, 255, 210, 161, 50, 240, 255, 255, 255, 255, 219, 53, 164, 0, 255, 255, 255, 255, 219, 238, 39, 240, 255, 255, 255, 255, 251, 37, 114, 64, 255, 255, 255, 255, 251, 194, 239, 112, 0, 0, 0, 0, 8, 107, 132, 128, 0, 0, 0, 0, 8, 198, 109, 240, 0, 0, 0, 0, 11, 232, 12, 0, 0, 0, 0, 0, 12, 97, 71, 240, 0, 0, 0, 0, 13, 201, 63, 128, 0, 0, 0, 0, 14, 142, 242, 112, 0, 0, 0, 0, 15, 211, 81, 128, 0, 0, 0, 0, 16, 39, 163, 112, 0, 0, 0, 0, 26, 183, 166, 0, 0, 0, 0, 0, 30, 24, 111, 240, 0, 0, 0, 0, 72, 65, 230, 128, 0, 0, 0, 0, 72, 187, 34, 112, 0, 0, 0, 0, 74, 35, 26, 0, 0, 0, 0, 0, 74, 141, 213, 112, 0, 0, 0, 0, 75, 220, 192, 128, 0, 0, 0, 0, 76, 93, 229, 112, 0, 0, 0, 0, 77, 151, 184, 128, 0, 0, 0, 0, 78, 52, 140, 240, 0, 0, 0, 0, 79, 156, 160, 160, 0, 0, 0, 0, 80, 8, 187, 160, 0, 0, 0, 0, 80, 49, 154, 32, 0, 0, 0, 0, 80, 103, 167, 160, 0, 0, 0, 0, 81, 124, 130, 160, 0, 0, 0, 0, 81, 216, 203, 160, 0, 0, 0, 0, 82, 5, 158, 160, 0, 0, 0, 0, 82, 108, 115, 160, 0, 0, 0, 0, 83, 55, 122, 160, 0, 0, 0, 0, 83, 174, 33, 160, 0, 0, 0, 0, 83, 220, 70, 32, 0, 0, 0, 0, 84, 76, 85, 160, 0, 0, 0, 0, 85, 23, 92, 160, 0, 0, 0, 0, 85, 124, 224, 32, 0, 0, 0, 0, 85, 171, 4, 160, 0, 0, 0, 0, 86, 44, 55, 160, 0, 0, 0, 0, 86, 247, 62, 160, 0, 0, 0, 0, 87, 83, 135, 160, 0, 0, 0, 0, 87, 129, 172, 32, 0, 0, 0, 0, 88, 21, 84, 32, 0, 0, 0, 0, 88, 215, 32, 160, 0, 0, 0, 0, 89, 32, 244, 160, 0, 0, 0, 0, 89, 88, 83, 160, 0, 0, 0, 0, 89, 245, 54, 32, 0, 0, 0, 0, 90, 183, 2, 160, 0, 0, 0, 0, 90, 247, 156, 32, 0, 0, 0, 0, 91, 37, 192, 160, 0, 0, 0, 0, 91, 213, 24, 32, 0, 0, 0, 0, 92, 206, 67, 160, 0, 0, 0, 0, 92, 252, 104, 32, 0, 0, 0, 0, 94, 155, 176, 160, 0, 0, 0, 0, 94, 201, 213, 32, 0, 0, 0, 0, 96, 114, 88, 32, 0, 0, 0, 0, 96, 160, 124, 160, 0, 0, 0, 0, 98, 63, 197, 32, 0, 0, 0, 0, 98, 119, 36, 32, 0, 0, 0, 0, 100, 22, 108, 160, 0, 0, 0, 0, 100, 68, 145, 32, 0, 0, 0, 0, 101, 237, 20, 32, 0, 0, 0, 0, 102, 27, 56, 160, 0, 0, 0, 0, 103, 186, 129, 32, 0, 0, 0, 0, 103, 241, 224, 32, 0, 0, 0, 0, 105, 145, 40, 160, 0, 0, 0, 0, 105, 191, 77, 32, 0, 0, 0, 0, 107, 103, 208, 32, 0, 0, 0, 0, 107, 149, 244, 160, 0, 0, 0, 0, 109, 53, 61, 32, 0, 0, 0, 0, 109, 99, 97, 160, 0, 0, 0, 0, 111, 11, 228, 160, 0, 0, 0, 0, 111, 58, 9, 32, 0, 0, 0, 0, 112, 217, 81, 160, 0, 0, 0, 0, 113, 16, 176, 160, 0, 0, 0, 0, 114, 175, 249, 32, 0, 0, 0, 0, 114, 222, 29, 160, 0, 0, 0, 0, 116, 134, 160, 160, 0, 0, 0, 0, 116, 180, 197, 32, 0, 0, 0, 0, 118, 84, 13, 160, 0, 0, 0, 0, 118, 139, 108, 160, 0, 0, 0, 0, 120, 42, 181, 32, 0, 0, 0, 0, 120, 88, 217, 160, 0, 0, 0, 0, 121, 248, 34, 32, 0, 0, 0, 0, 122, 47, 129, 32, 0, 0, 0, 0, 123, 206, 201, 160, 0, 0, 0, 0, 123, 252, 238, 32, 0, 0, 0, 0, 125, 165, 113, 32, 0, 0, 0, 0, 125, 211, 149, 160, 0, 0, 0, 0, 127, 114, 222, 32, 0, 0, 0, 0, 127, 170, 61, 32, 0, 0, 0, 0, 129, 73, 133, 160, 0, 0, 0, 0, 129, 119, 170, 32, 0, 0, 0, 0, 131, 32, 45, 32, 0, 0, 0, 0, 131, 78, 81, 160, 0, 0, 0, 0, 132, 237, 154, 32, 0, 0, 0, 0, 133, 36, 249, 32, 0, 0, 0, 0, 134, 196, 65, 160, 0, 0, 0, 0, 134, 242, 102, 32, 0, 0, 0, 0, 136, 145, 174, 160, 0, 0, 0, 0, 136, 201, 13, 160, 0, 0, 0, 0, 138, 104, 86, 32, 0, 0, 0, 0, 138, 150, 122, 160, 0, 0, 0, 0, 140, 62, 253, 160, 0, 0, 0, 0, 140, 109, 34, 32, 0, 0, 0, 0, 142, 12, 106, 160, 0, 0, 0, 0, 142, 67, 201, 160, 0, 0, 0, 0, 143, 227, 18, 32, 0, 0, 0, 0, 144, 17, 54, 160, 0, 0, 0, 0, 145, 185, 185, 160, 0, 0, 0, 0, 145, 231, 222, 32, 0, 0, 0, 0, 147, 135, 38, 160, 0, 0, 0, 0, 147, 190, 133, 160, 0, 0, 0, 0, 149, 93, 206, 32, 0, 0, 0, 0, 149, 139, 242, 160, 0, 0, 0, 0, 151, 43, 59, 32, 0, 0, 0, 0, 151, 98, 154, 32, 0, 0, 0, 0, 153, 1, 226, 160, 0, 0, 0, 0, 153, 48, 7, 32, 0, 0, 0, 0, 154, 216, 138, 32, 0, 0, 0, 0, 155, 6, 174, 160, 0, 0, 0, 0, 156, 165, 247, 32, 0, 0, 0, 0, 156, 221, 86, 32, 0, 0, 0, 0, 158, 124, 158, 160, 0, 0, 0, 0, 158, 170, 195, 32, 0, 0, 0, 0, 160, 83, 70, 32, 0, 0, 0, 0, 160, 129, 106, 160, 0, 0, 0, 0, 162, 32, 179, 32, 0, 0, 0, 0, 162, 88, 18, 32, 0, 0, 0, 0, 163, 247, 90, 160, 0, 0, 0, 0, 164, 37, 127, 32, 0, 0, 0, 0, 165, 196, 199, 160, 0, 0, 0, 0, 165, 252, 38, 160, 0, 0, 0, 0, 167, 155, 111, 32, 0, 0, 0, 0, 167, 201, 147, 160, 0, 0, 0, 0, 169, 114, 22, 160, 0, 0, 0, 0, 169, 160, 59, 32, 0, 0, 0, 0, 171, 63, 131, 160, 0, 0, 0, 0, 171, 118, 226, 160, 0, 0, 0, 0, 173, 22, 43, 32, 0, 0, 0, 0, 173, 68, 79, 160, 0, 0, 0, 0, 174, 236, 210, 160, 0, 0, 0, 0, 175, 26, 247, 32, 0, 0, 0, 0, 176, 186, 63, 160, 0, 0, 0, 0, 176, 232, 100, 32, 0, 0, 0, 0, 178, 144, 231, 32, 0, 0, 0, 0, 178, 191, 11, 160, 0, 0, 0, 0, 180, 94, 84, 32, 0, 0, 0, 0, 180, 149, 179, 32, 0, 0, 0, 0, 182, 52, 251, 160, 0, 0, 0, 0, 182, 99, 32, 32, 0, 0, 0, 0, 184, 11, 163, 32, 0, 0, 0, 0, 184, 57, 199, 160, 0, 0, 0, 0, 185, 217, 16, 32, 0, 0, 0, 0, 186, 16, 111, 32, 0, 0, 0, 0, 187, 175, 183, 160, 0, 0, 0, 0, 187, 221, 220, 32, 0, 0, 0, 0, 189, 134, 95, 32, 0, 0, 0, 0, 189, 180, 131, 160, 0, 0, 0, 0, 191, 83, 204, 32, 0, 0, 0, 0, 191, 129, 240, 160, 0, 0, 0, 0, 193, 42, 115, 160, 0, 0, 0, 0, 193, 88, 152, 32, 0, 0, 0, 0, 194, 247, 224, 160, 0, 0, 0, 0, 195, 47, 63, 160, 0, 0, 0, 0, 196, 206, 136, 32, 0, 0, 0, 0, 196, 252, 172, 160, 0, 0, 0, 0, 198, 165, 47, 160, 0, 0, 0, 0, 198, 211, 84, 32, 0, 0, 0, 0, 200, 114, 156, 160, 0, 0, 0, 0, 200, 169, 251, 160, 0, 0, 0, 0, 202, 73, 68, 32, 0, 0, 0, 0, 202, 119, 104, 160, 0, 0, 0, 0, 204, 31, 235, 160, 0, 0, 0, 0, 204, 78, 16, 32, 0, 0, 0, 0, 205, 237, 88, 160, 0, 0, 0, 0, 206, 27, 125, 32, 0, 0, 0, 0, 207, 196, 0, 32, 0, 0, 0, 0, 207, 242, 36, 160, 0, 0, 0, 0, 209, 145, 109, 32, 0, 0, 0, 0, 209, 200, 204, 32, 0, 0, 0, 0, 211, 104, 20, 160, 0, 0, 0, 0, 211, 150, 57, 32, 0, 0, 0, 0, 213, 62, 188, 32, 0, 0, 0, 0, 213, 108, 224, 160, 0, 0, 0, 0, 215, 12, 41, 32, 0, 0, 0, 0, 215, 67, 136, 32, 0, 0, 0, 0, 216, 226, 208, 160, 0, 0, 0, 0, 217, 16, 245, 32, 0, 0, 0, 0, 218, 185, 120, 32, 0, 0, 0, 0, 218, 231, 156, 160, 0, 0, 0, 0, 220, 134, 229, 32, 0, 0, 0, 0, 220, 181, 9, 160, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 255, 255, 248, 228, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 0, 4, 0, 0, 0, 0, 1, 8, 76, 77, 84, 0, 43, 48, 49, 0, 43, 48, 48, 0, 10, 60, 43, 48, 49, 62, 45, 49, 10}, - "zoneinfo/Africa/Ceuta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 7, 0, 0, 0, 22, 128, 0, 0, 0, 158, 214, 117, 112, 159, 161, 110, 96, 170, 5, 239, 112, 170, 231, 110, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 178, 225, 145, 128, 251, 37, 114, 64, 251, 194, 239, 112, 8, 107, 132, 128, 8, 198, 109, 240, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 26, 183, 166, 0, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 251, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Africa/Ceuta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 7, 0, 0, 0, 22, 128, 0, 0, 0, 158, 214, 117, 112, 159, 161, 110, 96, 170, 5, 239, 112, 170, 231, 110, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 251, 37, 114, 64, 251, 194, 239, 112, 8, 107, 132, 128, 8, 198, 109, 240, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 26, 183, 166, 0, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 251, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 7, 0, 0, 0, 22, 255, 255, 255, 255, 126, 54, 181, 0, 255, 255, 255, 255, 158, 214, 117, 112, 255, 255, 255, 255, 159, 161, 110, 96, 255, 255, 255, 255, 170, 5, 239, 112, 255, 255, 255, 255, 170, 231, 110, 0, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 50, 0, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 20, 0, 255, 255, 255, 255, 177, 137, 122, 0, 255, 255, 255, 255, 178, 112, 48, 128, 255, 255, 255, 255, 251, 37, 114, 64, 255, 255, 255, 255, 251, 194, 239, 112, 0, 0, 0, 0, 8, 107, 132, 128, 0, 0, 0, 0, 8, 198, 109, 240, 0, 0, 0, 0, 11, 232, 12, 0, 0, 0, 0, 0, 12, 97, 71, 240, 0, 0, 0, 0, 13, 201, 63, 128, 0, 0, 0, 0, 14, 142, 242, 112, 0, 0, 0, 0, 15, 211, 81, 128, 0, 0, 0, 0, 16, 39, 163, 112, 0, 0, 0, 0, 26, 183, 166, 0, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 251, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 17, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Africa/Conakry": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Conakry": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Dakar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Dakar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Dar_es_Salaam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Dar_es_Salaam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Djibouti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Djibouti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Douala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Douala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/El_Aaiun": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 6, 0, 0, 0, 16, 188, 72, 240, 224, 11, 209, 176, 144, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 72, 65, 230, 128, 72, 187, 34, 112, 74, 35, 26, 0, 74, 141, 213, 112, 75, 220, 192, 128, 76, 93, 229, 112, 77, 151, 184, 128, 78, 52, 140, 240, 79, 156, 160, 160, 80, 8, 187, 160, 80, 49, 154, 32, 80, 103, 167, 160, 81, 124, 130, 160, 81, 216, 203, 160, 82, 5, 158, 160, 82, 108, 115, 160, 83, 55, 122, 160, 83, 174, 33, 160, 83, 220, 70, 32, 84, 76, 85, 160, 85, 23, 92, 160, 85, 124, 224, 32, 85, 171, 4, 160, 86, 44, 55, 160, 86, 247, 62, 160, 87, 83, 135, 160, 87, 129, 172, 32, 88, 21, 84, 32, 88, 215, 32, 160, 89, 32, 244, 160, 89, 88, 83, 160, 89, 245, 54, 32, 90, 183, 2, 160, 90, 247, 156, 32, 91, 37, 192, 160, 91, 213, 24, 32, 92, 206, 67, 160, 92, 252, 104, 32, 94, 155, 176, 160, 94, 201, 213, 32, 96, 114, 88, 32, 96, 160, 124, 160, 98, 63, 197, 32, 98, 119, 36, 32, 100, 22, 108, 160, 100, 68, 145, 32, 101, 237, 20, 32, 102, 27, 56, 160, 103, 186, 129, 32, 103, 241, 224, 32, 105, 145, 40, 160, 105, 191, 77, 32, 107, 103, 208, 32, 107, 149, 244, 160, 109, 53, 61, 32, 109, 99, 97, 160, 111, 11, 228, 160, 111, 58, 9, 32, 112, 217, 81, 160, 113, 16, 176, 160, 114, 175, 249, 32, 114, 222, 29, 160, 116, 134, 160, 160, 116, 180, 197, 32, 118, 84, 13, 160, 118, 139, 108, 160, 120, 42, 181, 32, 120, 88, 217, 160, 121, 248, 34, 32, 122, 47, 129, 32, 123, 206, 201, 160, 123, 252, 238, 32, 125, 165, 113, 32, 125, 211, 149, 160, 127, 114, 222, 32, 127, 170, 61, 32, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 255, 255, 243, 160, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 43, 48, 49, 0, 43, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10}, + "zoneinfo/Africa/El_Aaiun": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 6, 0, 0, 0, 16, 188, 72, 240, 224, 11, 209, 176, 144, 11, 232, 12, 0, 12, 97, 71, 240, 13, 201, 63, 128, 14, 142, 242, 112, 15, 211, 81, 128, 16, 39, 163, 112, 72, 65, 230, 128, 72, 187, 34, 112, 74, 35, 26, 0, 74, 141, 213, 112, 75, 220, 192, 128, 76, 93, 229, 112, 77, 151, 184, 128, 78, 52, 140, 240, 79, 156, 160, 160, 80, 8, 187, 160, 80, 49, 154, 32, 80, 103, 167, 160, 81, 124, 130, 160, 81, 216, 203, 160, 82, 5, 158, 160, 82, 108, 115, 160, 83, 55, 122, 160, 83, 174, 33, 160, 83, 220, 70, 32, 84, 76, 85, 160, 85, 23, 92, 160, 85, 124, 224, 32, 85, 171, 4, 160, 86, 44, 55, 160, 86, 247, 62, 160, 87, 83, 135, 160, 87, 129, 172, 32, 88, 21, 84, 32, 88, 215, 32, 160, 89, 32, 244, 160, 89, 88, 83, 160, 89, 245, 54, 32, 90, 183, 2, 160, 90, 247, 156, 32, 91, 37, 192, 160, 91, 213, 24, 32, 92, 206, 67, 160, 92, 252, 104, 32, 94, 155, 176, 160, 94, 201, 213, 32, 96, 114, 88, 32, 96, 160, 124, 160, 98, 63, 197, 32, 98, 119, 36, 32, 100, 22, 108, 160, 100, 68, 145, 32, 101, 237, 20, 32, 102, 27, 56, 160, 103, 186, 129, 32, 103, 241, 224, 32, 105, 145, 40, 160, 105, 191, 77, 32, 107, 103, 208, 32, 107, 149, 244, 160, 109, 53, 61, 32, 109, 99, 97, 160, 111, 11, 228, 160, 111, 58, 9, 32, 112, 217, 81, 160, 113, 16, 176, 160, 114, 175, 249, 32, 114, 222, 29, 160, 116, 134, 160, 160, 116, 180, 197, 32, 118, 84, 13, 160, 118, 139, 108, 160, 120, 42, 181, 32, 120, 88, 217, 160, 121, 248, 34, 32, 122, 47, 129, 32, 123, 206, 201, 160, 123, 252, 238, 32, 125, 165, 113, 32, 125, 211, 149, 160, 127, 114, 222, 32, 127, 170, 61, 32, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 255, 255, 243, 160, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 43, 48, 49, 0, 43, 48, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 188, 72, 240, 224, 0, 0, 0, 0, 11, 209, 176, 144, 0, 0, 0, 0, 11, 232, 12, 0, 0, 0, 0, 0, 12, 97, 71, 240, 0, 0, 0, 0, 13, 201, 63, 128, 0, 0, 0, 0, 14, 142, 242, 112, 0, 0, 0, 0, 15, 211, 81, 128, 0, 0, 0, 0, 16, 39, 163, 112, 0, 0, 0, 0, 72, 65, 230, 128, 0, 0, 0, 0, 72, 187, 34, 112, 0, 0, 0, 0, 74, 35, 26, 0, 0, 0, 0, 0, 74, 141, 213, 112, 0, 0, 0, 0, 75, 220, 192, 128, 0, 0, 0, 0, 76, 93, 229, 112, 0, 0, 0, 0, 77, 151, 184, 128, 0, 0, 0, 0, 78, 52, 140, 240, 0, 0, 0, 0, 79, 156, 160, 160, 0, 0, 0, 0, 80, 8, 187, 160, 0, 0, 0, 0, 80, 49, 154, 32, 0, 0, 0, 0, 80, 103, 167, 160, 0, 0, 0, 0, 81, 124, 130, 160, 0, 0, 0, 0, 81, 216, 203, 160, 0, 0, 0, 0, 82, 5, 158, 160, 0, 0, 0, 0, 82, 108, 115, 160, 0, 0, 0, 0, 83, 55, 122, 160, 0, 0, 0, 0, 83, 174, 33, 160, 0, 0, 0, 0, 83, 220, 70, 32, 0, 0, 0, 0, 84, 76, 85, 160, 0, 0, 0, 0, 85, 23, 92, 160, 0, 0, 0, 0, 85, 124, 224, 32, 0, 0, 0, 0, 85, 171, 4, 160, 0, 0, 0, 0, 86, 44, 55, 160, 0, 0, 0, 0, 86, 247, 62, 160, 0, 0, 0, 0, 87, 83, 135, 160, 0, 0, 0, 0, 87, 129, 172, 32, 0, 0, 0, 0, 88, 21, 84, 32, 0, 0, 0, 0, 88, 215, 32, 160, 0, 0, 0, 0, 89, 32, 244, 160, 0, 0, 0, 0, 89, 88, 83, 160, 0, 0, 0, 0, 89, 245, 54, 32, 0, 0, 0, 0, 90, 183, 2, 160, 0, 0, 0, 0, 90, 247, 156, 32, 0, 0, 0, 0, 91, 37, 192, 160, 0, 0, 0, 0, 91, 213, 24, 32, 0, 0, 0, 0, 92, 206, 67, 160, 0, 0, 0, 0, 92, 252, 104, 32, 0, 0, 0, 0, 94, 155, 176, 160, 0, 0, 0, 0, 94, 201, 213, 32, 0, 0, 0, 0, 96, 114, 88, 32, 0, 0, 0, 0, 96, 160, 124, 160, 0, 0, 0, 0, 98, 63, 197, 32, 0, 0, 0, 0, 98, 119, 36, 32, 0, 0, 0, 0, 100, 22, 108, 160, 0, 0, 0, 0, 100, 68, 145, 32, 0, 0, 0, 0, 101, 237, 20, 32, 0, 0, 0, 0, 102, 27, 56, 160, 0, 0, 0, 0, 103, 186, 129, 32, 0, 0, 0, 0, 103, 241, 224, 32, 0, 0, 0, 0, 105, 145, 40, 160, 0, 0, 0, 0, 105, 191, 77, 32, 0, 0, 0, 0, 107, 103, 208, 32, 0, 0, 0, 0, 107, 149, 244, 160, 0, 0, 0, 0, 109, 53, 61, 32, 0, 0, 0, 0, 109, 99, 97, 160, 0, 0, 0, 0, 111, 11, 228, 160, 0, 0, 0, 0, 111, 58, 9, 32, 0, 0, 0, 0, 112, 217, 81, 160, 0, 0, 0, 0, 113, 16, 176, 160, 0, 0, 0, 0, 114, 175, 249, 32, 0, 0, 0, 0, 114, 222, 29, 160, 0, 0, 0, 0, 116, 134, 160, 160, 0, 0, 0, 0, 116, 180, 197, 32, 0, 0, 0, 0, 118, 84, 13, 160, 0, 0, 0, 0, 118, 139, 108, 160, 0, 0, 0, 0, 120, 42, 181, 32, 0, 0, 0, 0, 120, 88, 217, 160, 0, 0, 0, 0, 121, 248, 34, 32, 0, 0, 0, 0, 122, 47, 129, 32, 0, 0, 0, 0, 123, 206, 201, 160, 0, 0, 0, 0, 123, 252, 238, 32, 0, 0, 0, 0, 125, 165, 113, 32, 0, 0, 0, 0, 125, 211, 149, 160, 0, 0, 0, 0, 127, 114, 222, 32, 0, 0, 0, 0, 127, 170, 61, 32, 0, 0, 0, 0, 129, 73, 133, 160, 0, 0, 0, 0, 129, 119, 170, 32, 0, 0, 0, 0, 131, 32, 45, 32, 0, 0, 0, 0, 131, 78, 81, 160, 0, 0, 0, 0, 132, 237, 154, 32, 0, 0, 0, 0, 133, 36, 249, 32, 0, 0, 0, 0, 134, 196, 65, 160, 0, 0, 0, 0, 134, 242, 102, 32, 0, 0, 0, 0, 136, 145, 174, 160, 0, 0, 0, 0, 136, 201, 13, 160, 0, 0, 0, 0, 138, 104, 86, 32, 0, 0, 0, 0, 138, 150, 122, 160, 0, 0, 0, 0, 140, 62, 253, 160, 0, 0, 0, 0, 140, 109, 34, 32, 0, 0, 0, 0, 142, 12, 106, 160, 0, 0, 0, 0, 142, 67, 201, 160, 0, 0, 0, 0, 143, 227, 18, 32, 0, 0, 0, 0, 144, 17, 54, 160, 0, 0, 0, 0, 145, 185, 185, 160, 0, 0, 0, 0, 145, 231, 222, 32, 0, 0, 0, 0, 147, 135, 38, 160, 0, 0, 0, 0, 147, 190, 133, 160, 0, 0, 0, 0, 149, 93, 206, 32, 0, 0, 0, 0, 149, 139, 242, 160, 0, 0, 0, 0, 151, 43, 59, 32, 0, 0, 0, 0, 151, 98, 154, 32, 0, 0, 0, 0, 153, 1, 226, 160, 0, 0, 0, 0, 153, 48, 7, 32, 0, 0, 0, 0, 154, 216, 138, 32, 0, 0, 0, 0, 155, 6, 174, 160, 0, 0, 0, 0, 156, 165, 247, 32, 0, 0, 0, 0, 156, 221, 86, 32, 0, 0, 0, 0, 158, 124, 158, 160, 0, 0, 0, 0, 158, 170, 195, 32, 0, 0, 0, 0, 160, 83, 70, 32, 0, 0, 0, 0, 160, 129, 106, 160, 0, 0, 0, 0, 162, 32, 179, 32, 0, 0, 0, 0, 162, 88, 18, 32, 0, 0, 0, 0, 163, 247, 90, 160, 0, 0, 0, 0, 164, 37, 127, 32, 0, 0, 0, 0, 165, 196, 199, 160, 0, 0, 0, 0, 165, 252, 38, 160, 0, 0, 0, 0, 167, 155, 111, 32, 0, 0, 0, 0, 167, 201, 147, 160, 0, 0, 0, 0, 169, 114, 22, 160, 0, 0, 0, 0, 169, 160, 59, 32, 0, 0, 0, 0, 171, 63, 131, 160, 0, 0, 0, 0, 171, 118, 226, 160, 0, 0, 0, 0, 173, 22, 43, 32, 0, 0, 0, 0, 173, 68, 79, 160, 0, 0, 0, 0, 174, 236, 210, 160, 0, 0, 0, 0, 175, 26, 247, 32, 0, 0, 0, 0, 176, 186, 63, 160, 0, 0, 0, 0, 176, 232, 100, 32, 0, 0, 0, 0, 178, 144, 231, 32, 0, 0, 0, 0, 178, 191, 11, 160, 0, 0, 0, 0, 180, 94, 84, 32, 0, 0, 0, 0, 180, 149, 179, 32, 0, 0, 0, 0, 182, 52, 251, 160, 0, 0, 0, 0, 182, 99, 32, 32, 0, 0, 0, 0, 184, 11, 163, 32, 0, 0, 0, 0, 184, 57, 199, 160, 0, 0, 0, 0, 185, 217, 16, 32, 0, 0, 0, 0, 186, 16, 111, 32, 0, 0, 0, 0, 187, 175, 183, 160, 0, 0, 0, 0, 187, 221, 220, 32, 0, 0, 0, 0, 189, 134, 95, 32, 0, 0, 0, 0, 189, 180, 131, 160, 0, 0, 0, 0, 191, 83, 204, 32, 0, 0, 0, 0, 191, 129, 240, 160, 0, 0, 0, 0, 193, 42, 115, 160, 0, 0, 0, 0, 193, 88, 152, 32, 0, 0, 0, 0, 194, 247, 224, 160, 0, 0, 0, 0, 195, 47, 63, 160, 0, 0, 0, 0, 196, 206, 136, 32, 0, 0, 0, 0, 196, 252, 172, 160, 0, 0, 0, 0, 198, 165, 47, 160, 0, 0, 0, 0, 198, 211, 84, 32, 0, 0, 0, 0, 200, 114, 156, 160, 0, 0, 0, 0, 200, 169, 251, 160, 0, 0, 0, 0, 202, 73, 68, 32, 0, 0, 0, 0, 202, 119, 104, 160, 0, 0, 0, 0, 204, 31, 235, 160, 0, 0, 0, 0, 204, 78, 16, 32, 0, 0, 0, 0, 205, 237, 88, 160, 0, 0, 0, 0, 206, 27, 125, 32, 0, 0, 0, 0, 207, 196, 0, 32, 0, 0, 0, 0, 207, 242, 36, 160, 0, 0, 0, 0, 209, 145, 109, 32, 0, 0, 0, 0, 209, 200, 204, 32, 0, 0, 0, 0, 211, 104, 20, 160, 0, 0, 0, 0, 211, 150, 57, 32, 0, 0, 0, 0, 213, 62, 188, 32, 0, 0, 0, 0, 213, 108, 224, 160, 0, 0, 0, 0, 215, 12, 41, 32, 0, 0, 0, 0, 215, 67, 136, 32, 0, 0, 0, 0, 216, 226, 208, 160, 0, 0, 0, 0, 217, 16, 245, 32, 0, 0, 0, 0, 218, 185, 120, 32, 0, 0, 0, 0, 218, 231, 156, 160, 0, 0, 0, 0, 220, 134, 229, 32, 0, 0, 0, 0, 220, 181, 9, 160, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 255, 255, 243, 160, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 43, 48, 49, 0, 43, 48, 48, 0, 10, 60, 43, 48, 49, 62, 45, 49, 10}, - "zoneinfo/Africa/Freetown": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Freetown": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Gaborone": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Gaborone": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Harare": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Harare": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Johannesburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 83, 65, 83, 84, 45, 50, 10}, + "zoneinfo/Africa/Johannesburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 255, 255, 255, 255, 109, 123, 65, 64, 255, 255, 255, 255, 130, 70, 207, 104, 255, 255, 255, 255, 204, 174, 140, 128, 255, 255, 255, 255, 205, 158, 111, 112, 255, 255, 255, 255, 206, 142, 110, 128, 255, 255, 255, 255, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 10, 83, 65, 83, 84, 45, 50, 10}, - "zoneinfo/Africa/Juba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 17, 182, 163, 218, 220, 0, 158, 23, 224, 1, 122, 52, 80, 2, 125, 249, 224, 3, 91, 103, 208, 4, 96, 126, 224, 5, 61, 236, 208, 6, 64, 96, 224, 7, 31, 32, 80, 8, 32, 66, 224, 9, 0, 83, 208, 10, 0, 36, 224, 10, 225, 135, 80, 11, 224, 6, 224, 12, 196, 12, 80, 13, 191, 232, 224, 14, 165, 63, 208, 15, 169, 5, 96, 16, 134, 115, 80, 17, 136, 231, 96, 18, 103, 166, 208, 19, 104, 201, 96, 20, 74, 43, 208, 21, 72, 171, 96, 22, 43, 95, 80, 23, 40, 141, 96, 24, 12, 146, 208, 25, 8, 111, 96, 25, 237, 198, 80, 26, 241, 139, 224, 27, 208, 75, 80, 28, 209, 109, 224, 29, 177, 126, 208, 56, 128, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 0, 0, 29, 164, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Juba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 17, 182, 163, 218, 220, 0, 158, 23, 224, 1, 122, 52, 80, 2, 125, 249, 224, 3, 91, 103, 208, 4, 96, 126, 224, 5, 61, 236, 208, 6, 64, 96, 224, 7, 31, 32, 80, 8, 32, 66, 224, 9, 0, 83, 208, 10, 0, 36, 224, 10, 225, 135, 80, 11, 224, 6, 224, 12, 196, 12, 80, 13, 191, 232, 224, 14, 165, 63, 208, 15, 169, 5, 96, 16, 134, 115, 80, 17, 136, 231, 96, 18, 103, 166, 208, 19, 104, 201, 96, 20, 74, 43, 208, 21, 72, 171, 96, 22, 43, 95, 80, 23, 40, 141, 96, 24, 12, 146, 208, 25, 8, 111, 96, 25, 237, 198, 80, 26, 241, 139, 224, 27, 208, 75, 80, 28, 209, 109, 224, 29, 177, 126, 208, 56, 128, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 0, 0, 29, 164, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 4, 0, 0, 0, 17, 255, 255, 255, 255, 182, 163, 218, 220, 0, 0, 0, 0, 0, 158, 23, 224, 0, 0, 0, 0, 1, 122, 52, 80, 0, 0, 0, 0, 2, 125, 249, 224, 0, 0, 0, 0, 3, 91, 103, 208, 0, 0, 0, 0, 4, 96, 126, 224, 0, 0, 0, 0, 5, 61, 236, 208, 0, 0, 0, 0, 6, 64, 96, 224, 0, 0, 0, 0, 7, 31, 32, 80, 0, 0, 0, 0, 8, 32, 66, 224, 0, 0, 0, 0, 9, 0, 83, 208, 0, 0, 0, 0, 10, 0, 36, 224, 0, 0, 0, 0, 10, 225, 135, 80, 0, 0, 0, 0, 11, 224, 6, 224, 0, 0, 0, 0, 12, 196, 12, 80, 0, 0, 0, 0, 13, 191, 232, 224, 0, 0, 0, 0, 14, 165, 63, 208, 0, 0, 0, 0, 15, 169, 5, 96, 0, 0, 0, 0, 16, 134, 115, 80, 0, 0, 0, 0, 17, 136, 231, 96, 0, 0, 0, 0, 18, 103, 166, 208, 0, 0, 0, 0, 19, 104, 201, 96, 0, 0, 0, 0, 20, 74, 43, 208, 0, 0, 0, 0, 21, 72, 171, 96, 0, 0, 0, 0, 22, 43, 95, 80, 0, 0, 0, 0, 23, 40, 141, 96, 0, 0, 0, 0, 24, 12, 146, 208, 0, 0, 0, 0, 25, 8, 111, 96, 0, 0, 0, 0, 25, 237, 198, 80, 0, 0, 0, 0, 26, 241, 139, 224, 0, 0, 0, 0, 27, 208, 75, 80, 0, 0, 0, 0, 28, 209, 109, 224, 0, 0, 0, 0, 29, 177, 126, 208, 0, 0, 0, 0, 56, 128, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 0, 0, 29, 164, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Kampala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Kampala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Khartoum": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 17, 182, 163, 218, 0, 0, 158, 23, 224, 1, 122, 52, 80, 2, 125, 249, 224, 3, 91, 103, 208, 4, 96, 126, 224, 5, 61, 236, 208, 6, 64, 96, 224, 7, 31, 32, 80, 8, 32, 66, 224, 9, 0, 83, 208, 10, 0, 36, 224, 10, 225, 135, 80, 11, 224, 6, 224, 12, 196, 12, 80, 13, 191, 232, 224, 14, 165, 63, 208, 15, 169, 5, 96, 16, 134, 115, 80, 17, 136, 231, 96, 18, 103, 166, 208, 19, 104, 201, 96, 20, 74, 43, 208, 21, 72, 171, 96, 22, 43, 95, 80, 23, 40, 141, 96, 24, 12, 146, 208, 25, 8, 111, 96, 25, 237, 198, 80, 26, 241, 139, 224, 27, 208, 75, 80, 28, 209, 109, 224, 29, 177, 126, 208, 56, 128, 69, 32, 89, 248, 228, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 0, 0, 30, 128, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Khartoum": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 17, 182, 163, 218, 0, 0, 158, 23, 224, 1, 122, 52, 80, 2, 125, 249, 224, 3, 91, 103, 208, 4, 96, 126, 224, 5, 61, 236, 208, 6, 64, 96, 224, 7, 31, 32, 80, 8, 32, 66, 224, 9, 0, 83, 208, 10, 0, 36, 224, 10, 225, 135, 80, 11, 224, 6, 224, 12, 196, 12, 80, 13, 191, 232, 224, 14, 165, 63, 208, 15, 169, 5, 96, 16, 134, 115, 80, 17, 136, 231, 96, 18, 103, 166, 208, 19, 104, 201, 96, 20, 74, 43, 208, 21, 72, 171, 96, 22, 43, 95, 80, 23, 40, 141, 96, 24, 12, 146, 208, 25, 8, 111, 96, 25, 237, 198, 80, 26, 241, 139, 224, 27, 208, 75, 80, 28, 209, 109, 224, 29, 177, 126, 208, 56, 128, 69, 32, 89, 248, 228, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 0, 0, 30, 128, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 5, 0, 0, 0, 17, 255, 255, 255, 255, 182, 163, 218, 0, 0, 0, 0, 0, 0, 158, 23, 224, 0, 0, 0, 0, 1, 122, 52, 80, 0, 0, 0, 0, 2, 125, 249, 224, 0, 0, 0, 0, 3, 91, 103, 208, 0, 0, 0, 0, 4, 96, 126, 224, 0, 0, 0, 0, 5, 61, 236, 208, 0, 0, 0, 0, 6, 64, 96, 224, 0, 0, 0, 0, 7, 31, 32, 80, 0, 0, 0, 0, 8, 32, 66, 224, 0, 0, 0, 0, 9, 0, 83, 208, 0, 0, 0, 0, 10, 0, 36, 224, 0, 0, 0, 0, 10, 225, 135, 80, 0, 0, 0, 0, 11, 224, 6, 224, 0, 0, 0, 0, 12, 196, 12, 80, 0, 0, 0, 0, 13, 191, 232, 224, 0, 0, 0, 0, 14, 165, 63, 208, 0, 0, 0, 0, 15, 169, 5, 96, 0, 0, 0, 0, 16, 134, 115, 80, 0, 0, 0, 0, 17, 136, 231, 96, 0, 0, 0, 0, 18, 103, 166, 208, 0, 0, 0, 0, 19, 104, 201, 96, 0, 0, 0, 0, 20, 74, 43, 208, 0, 0, 0, 0, 21, 72, 171, 96, 0, 0, 0, 0, 22, 43, 95, 80, 0, 0, 0, 0, 23, 40, 141, 96, 0, 0, 0, 0, 24, 12, 146, 208, 0, 0, 0, 0, 25, 8, 111, 96, 0, 0, 0, 0, 25, 237, 198, 80, 0, 0, 0, 0, 26, 241, 139, 224, 0, 0, 0, 0, 27, 208, 75, 80, 0, 0, 0, 0, 28, 209, 109, 224, 0, 0, 0, 0, 29, 177, 126, 208, 0, 0, 0, 0, 56, 128, 69, 32, 0, 0, 0, 0, 89, 248, 228, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 0, 0, 30, 128, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 67, 65, 83, 84, 0, 67, 65, 84, 0, 69, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Kigali": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Kigali": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Kinshasa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Kinshasa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Lagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Lagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Libreville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Libreville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Lome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Lome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Luanda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Luanda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Lubumbashi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Lubumbashi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Lusaka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Lusaka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Malabo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Malabo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Maputo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Maputo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 130, 70, 197, 244, 1, 0, 0, 30, 140, 0, 0, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/Africa/Maseru": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 83, 65, 83, 84, 45, 50, 10}, + "zoneinfo/Africa/Maseru": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 255, 255, 255, 255, 109, 123, 65, 64, 255, 255, 255, 255, 130, 70, 207, 104, 255, 255, 255, 255, 204, 174, 140, 128, 255, 255, 255, 255, 205, 158, 111, 112, 255, 255, 255, 255, 206, 142, 110, 128, 255, 255, 255, 255, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 10, 83, 65, 83, 84, 45, 50, 10}, - "zoneinfo/Africa/Mbabane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 83, 65, 83, 84, 45, 50, 10}, + "zoneinfo/Africa/Mbabane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 206, 142, 110, 128, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 9, 255, 255, 255, 255, 109, 123, 65, 64, 255, 255, 255, 255, 130, 70, 207, 104, 255, 255, 255, 255, 204, 174, 140, 128, 255, 255, 255, 255, 205, 158, 111, 112, 255, 255, 255, 255, 206, 142, 110, 128, 255, 255, 255, 255, 207, 126, 81, 112, 1, 3, 2, 3, 2, 3, 0, 0, 26, 64, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 83, 65, 83, 84, 0, 10, 83, 65, 83, 84, 45, 50, 10}, - "zoneinfo/Africa/Mogadishu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Mogadishu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Monrovia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 160, 95, 108, 156, 3, 202, 90, 110, 1, 2, 3, 255, 255, 245, 228, 0, 0, 255, 255, 245, 228, 0, 4, 255, 255, 245, 146, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Monrovia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 160, 95, 108, 156, 3, 202, 90, 110, 1, 2, 3, 255, 255, 245, 228, 0, 0, 255, 255, 245, 228, 0, 4, 255, 255, 245, 146, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 90, 122, 166, 156, 255, 255, 255, 255, 160, 95, 108, 156, 0, 0, 0, 0, 3, 202, 90, 110, 1, 2, 3, 255, 255, 245, 228, 0, 0, 255, 255, 245, 228, 0, 4, 255, 255, 245, 146, 0, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Nairobi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Africa/Nairobi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Africa/Ndjamena": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 13, 146, 230, 128, 100, 18, 102, 113, 112, 19, 38, 222, 96, 1, 2, 1, 0, 0, 14, 28, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 87, 65, 84, 0, 87, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Ndjamena": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 13, 146, 230, 128, 100, 18, 102, 113, 112, 19, 38, 222, 96, 1, 2, 1, 0, 0, 14, 28, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 87, 65, 84, 0, 87, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 13, 255, 255, 255, 255, 146, 230, 128, 100, 0, 0, 0, 0, 18, 102, 113, 112, 0, 0, 0, 0, 19, 38, 222, 96, 1, 2, 1, 0, 0, 14, 28, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 87, 65, 84, 0, 87, 65, 83, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Niamey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Niamey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Nouakchott": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Nouakchott": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Ouagadougou": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Ouagadougou": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Porto-Novo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 0, 0, 0, 0, 10, 87, 65, 84, 45, 49, 10}, + "zoneinfo/Africa/Porto-Novo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 81, 243, 80, 1, 0, 0, 3, 48, 0, 0, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 87, 65, 84, 0, 10, 87, 65, 84, 45, 49, 10}, - "zoneinfo/Africa/Sao_Tome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 146, 230, 142, 128, 90, 73, 136, 16, 92, 42, 187, 144, 1, 2, 3, 4, 0, 0, 6, 80, 0, 0, 255, 255, 247, 99, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 87, 65, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Sao_Tome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 12, 128, 0, 0, 0, 146, 230, 142, 128, 90, 73, 136, 16, 92, 42, 187, 144, 1, 2, 3, 4, 0, 0, 6, 80, 0, 0, 255, 255, 247, 99, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 87, 65, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 94, 60, 253, 48, 255, 255, 255, 255, 146, 230, 142, 128, 0, 0, 0, 0, 90, 73, 136, 16, 0, 0, 0, 0, 92, 42, 187, 144, 1, 2, 3, 4, 0, 0, 6, 80, 0, 0, 255, 255, 247, 99, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 87, 65, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Timbuktu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Africa/Timbuktu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Africa/Tripoli": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 17, 161, 242, 193, 36, 221, 187, 177, 16, 222, 35, 173, 96, 225, 120, 210, 16, 225, 231, 101, 224, 229, 47, 63, 112, 229, 169, 204, 224, 235, 78, 198, 240, 22, 146, 66, 96, 23, 8, 247, 112, 23, 250, 43, 224, 24, 234, 42, 240, 25, 219, 95, 96, 26, 204, 175, 240, 27, 189, 228, 96, 28, 180, 122, 240, 29, 159, 23, 224, 30, 147, 11, 112, 31, 130, 238, 96, 32, 112, 74, 112, 33, 97, 126, 224, 34, 82, 207, 112, 35, 68, 3, 224, 36, 52, 2, 240, 37, 37, 55, 96, 38, 64, 183, 240, 50, 78, 241, 96, 51, 68, 54, 112, 52, 53, 106, 224, 80, 157, 153, 0, 81, 84, 217, 128, 82, 105, 180, 128, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + "zoneinfo/Africa/Tripoli": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 17, 161, 242, 193, 36, 221, 187, 177, 16, 222, 35, 173, 96, 225, 120, 210, 16, 225, 231, 101, 224, 229, 47, 63, 112, 229, 169, 204, 224, 235, 78, 198, 240, 22, 146, 66, 96, 23, 8, 247, 112, 23, 250, 43, 224, 24, 234, 42, 240, 25, 219, 95, 96, 26, 204, 175, 240, 27, 189, 228, 96, 28, 180, 122, 240, 29, 159, 23, 224, 30, 147, 11, 112, 31, 130, 238, 96, 32, 112, 74, 112, 33, 97, 126, 224, 34, 82, 207, 112, 35, 68, 3, 224, 36, 52, 2, 240, 37, 37, 55, 96, 38, 64, 183, 240, 50, 78, 241, 96, 51, 68, 54, 112, 52, 53, 106, 224, 80, 157, 153, 0, 81, 84, 217, 128, 82, 105, 180, 128, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 17, 255, 255, 255, 255, 161, 242, 193, 36, 255, 255, 255, 255, 221, 187, 177, 16, 255, 255, 255, 255, 222, 35, 173, 96, 255, 255, 255, 255, 225, 120, 210, 16, 255, 255, 255, 255, 225, 231, 101, 224, 255, 255, 255, 255, 229, 47, 63, 112, 255, 255, 255, 255, 229, 169, 204, 224, 255, 255, 255, 255, 235, 78, 198, 240, 0, 0, 0, 0, 22, 146, 66, 96, 0, 0, 0, 0, 23, 8, 247, 112, 0, 0, 0, 0, 23, 250, 43, 224, 0, 0, 0, 0, 24, 234, 42, 240, 0, 0, 0, 0, 25, 219, 95, 96, 0, 0, 0, 0, 26, 204, 175, 240, 0, 0, 0, 0, 27, 189, 228, 96, 0, 0, 0, 0, 28, 180, 122, 240, 0, 0, 0, 0, 29, 159, 23, 224, 0, 0, 0, 0, 30, 147, 11, 112, 0, 0, 0, 0, 31, 130, 238, 96, 0, 0, 0, 0, 32, 112, 74, 112, 0, 0, 0, 0, 33, 97, 126, 224, 0, 0, 0, 0, 34, 82, 207, 112, 0, 0, 0, 0, 35, 68, 3, 224, 0, 0, 0, 0, 36, 52, 2, 240, 0, 0, 0, 0, 37, 37, 55, 96, 0, 0, 0, 0, 38, 64, 183, 240, 0, 0, 0, 0, 50, 78, 241, 96, 0, 0, 0, 0, 51, 68, 54, 112, 0, 0, 0, 0, 52, 53, 106, 224, 0, 0, 0, 0, 80, 157, 153, 0, 0, 0, 0, 0, 81, 84, 217, 128, 0, 0, 0, 0, 82, 105, 180, 128, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 10, 69, 69, 84, 45, 50, 10}, - "zoneinfo/Africa/Tunis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 145, 96, 80, 79, 198, 58, 136, 224, 199, 88, 158, 96, 199, 219, 34, 224, 202, 226, 84, 224, 203, 173, 105, 240, 204, 231, 75, 16, 205, 169, 23, 144, 205, 194, 22, 0, 205, 204, 176, 16, 206, 162, 53, 0, 207, 146, 52, 16, 208, 137, 227, 224, 209, 114, 22, 16, 210, 78, 22, 96, 13, 199, 223, 240, 14, 137, 172, 112, 15, 170, 100, 240, 16, 116, 26, 112, 34, 163, 58, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 60, 195, 112, 39, 5, 39, 112, 66, 116, 13, 240, 67, 60, 128, 0, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 1, 4, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 9, 140, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 10}, + "zoneinfo/Africa/Tunis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 145, 96, 80, 79, 198, 58, 136, 224, 199, 88, 158, 96, 199, 219, 34, 224, 202, 226, 84, 224, 203, 173, 105, 240, 204, 231, 75, 16, 205, 169, 23, 144, 205, 194, 22, 0, 205, 204, 176, 16, 206, 162, 53, 0, 207, 146, 52, 16, 208, 137, 227, 224, 209, 114, 22, 16, 210, 78, 22, 96, 13, 199, 223, 240, 14, 137, 172, 112, 15, 170, 100, 240, 16, 116, 26, 112, 34, 163, 58, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 60, 195, 112, 39, 5, 39, 112, 66, 116, 13, 240, 67, 60, 128, 0, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 1, 4, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 9, 140, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 89, 70, 19, 244, 255, 255, 255, 255, 145, 96, 80, 79, 255, 255, 255, 255, 198, 58, 136, 224, 255, 255, 255, 255, 199, 88, 158, 96, 255, 255, 255, 255, 199, 219, 34, 224, 255, 255, 255, 255, 202, 226, 84, 224, 255, 255, 255, 255, 203, 173, 105, 240, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 205, 194, 22, 0, 255, 255, 255, 255, 205, 204, 176, 16, 255, 255, 255, 255, 206, 162, 53, 0, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 137, 227, 224, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 22, 96, 0, 0, 0, 0, 13, 199, 223, 240, 0, 0, 0, 0, 14, 137, 172, 112, 0, 0, 0, 0, 15, 170, 100, 240, 0, 0, 0, 0, 16, 116, 26, 112, 0, 0, 0, 0, 34, 163, 58, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 60, 195, 112, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 66, 116, 13, 240, 0, 0, 0, 0, 67, 60, 128, 0, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 1, 4, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 9, 140, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 10, 67, 69, 84, 45, 49, 10}, - "zoneinfo/Africa/Windhoek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 23, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 38, 6, 167, 224, 45, 140, 199, 96, 46, 105, 28, 16, 47, 125, 233, 0, 48, 72, 254, 16, 49, 103, 5, 128, 50, 40, 224, 16, 51, 70, 231, 128, 52, 17, 252, 144, 53, 38, 201, 128, 53, 241, 222, 144, 55, 6, 171, 128, 55, 209, 192, 144, 56, 230, 141, 128, 57, 177, 162, 144, 58, 198, 111, 128, 59, 145, 132, 144, 60, 175, 140, 0, 61, 113, 102, 144, 62, 143, 110, 0, 63, 90, 131, 16, 64, 111, 80, 0, 65, 58, 101, 16, 66, 79, 50, 0, 67, 26, 71, 16, 68, 47, 20, 0, 68, 250, 41, 16, 70, 14, 246, 0, 70, 218, 11, 16, 71, 248, 18, 128, 72, 195, 39, 144, 73, 215, 244, 128, 74, 163, 9, 144, 75, 183, 214, 128, 76, 130, 235, 144, 77, 151, 184, 128, 78, 98, 205, 144, 79, 119, 154, 128, 80, 66, 175, 144, 81, 96, 183, 0, 82, 34, 145, 144, 83, 64, 153, 0, 84, 11, 174, 16, 85, 32, 123, 0, 85, 235, 144, 16, 87, 0, 93, 0, 87, 203, 114, 16, 88, 224, 63, 0, 89, 171, 84, 16, 1, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 16, 8, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 1, 10, 0, 0, 14, 16, 1, 15, 0, 0, 28, 32, 0, 19, 76, 77, 84, 0, 43, 48, 49, 51, 48, 0, 83, 65, 83, 84, 0, 87, 65, 84, 0, 67, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 65, 84, 45, 50, 10}, + "zoneinfo/Africa/Windhoek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 23, 128, 0, 0, 0, 130, 70, 207, 104, 204, 174, 140, 128, 205, 158, 111, 112, 38, 6, 167, 224, 45, 140, 199, 96, 46, 105, 28, 16, 47, 125, 233, 0, 48, 72, 254, 16, 49, 103, 5, 128, 50, 40, 224, 16, 51, 70, 231, 128, 52, 17, 252, 144, 53, 38, 201, 128, 53, 241, 222, 144, 55, 6, 171, 128, 55, 209, 192, 144, 56, 230, 141, 128, 57, 177, 162, 144, 58, 198, 111, 128, 59, 145, 132, 144, 60, 175, 140, 0, 61, 113, 102, 144, 62, 143, 110, 0, 63, 90, 131, 16, 64, 111, 80, 0, 65, 58, 101, 16, 66, 79, 50, 0, 67, 26, 71, 16, 68, 47, 20, 0, 68, 250, 41, 16, 70, 14, 246, 0, 70, 218, 11, 16, 71, 248, 18, 128, 72, 195, 39, 144, 73, 215, 244, 128, 74, 163, 9, 144, 75, 183, 214, 128, 76, 130, 235, 144, 77, 151, 184, 128, 78, 98, 205, 144, 79, 119, 154, 128, 80, 66, 175, 144, 81, 96, 183, 0, 82, 34, 145, 144, 83, 64, 153, 0, 84, 11, 174, 16, 85, 32, 123, 0, 85, 235, 144, 16, 87, 0, 93, 0, 87, 203, 114, 16, 88, 224, 63, 0, 89, 171, 84, 16, 1, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 16, 8, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 1, 10, 0, 0, 14, 16, 1, 15, 0, 0, 28, 32, 0, 19, 76, 77, 84, 0, 43, 48, 49, 51, 48, 0, 83, 65, 83, 84, 0, 87, 65, 84, 0, 67, 65, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 23, 255, 255, 255, 255, 109, 123, 75, 120, 255, 255, 255, 255, 130, 70, 207, 104, 255, 255, 255, 255, 204, 174, 140, 128, 255, 255, 255, 255, 205, 158, 111, 112, 0, 0, 0, 0, 38, 6, 167, 224, 0, 0, 0, 0, 45, 140, 199, 96, 0, 0, 0, 0, 46, 105, 28, 16, 0, 0, 0, 0, 47, 125, 233, 0, 0, 0, 0, 0, 48, 72, 254, 16, 0, 0, 0, 0, 49, 103, 5, 128, 0, 0, 0, 0, 50, 40, 224, 16, 0, 0, 0, 0, 51, 70, 231, 128, 0, 0, 0, 0, 52, 17, 252, 144, 0, 0, 0, 0, 53, 38, 201, 128, 0, 0, 0, 0, 53, 241, 222, 144, 0, 0, 0, 0, 55, 6, 171, 128, 0, 0, 0, 0, 55, 209, 192, 144, 0, 0, 0, 0, 56, 230, 141, 128, 0, 0, 0, 0, 57, 177, 162, 144, 0, 0, 0, 0, 58, 198, 111, 128, 0, 0, 0, 0, 59, 145, 132, 144, 0, 0, 0, 0, 60, 175, 140, 0, 0, 0, 0, 0, 61, 113, 102, 144, 0, 0, 0, 0, 62, 143, 110, 0, 0, 0, 0, 0, 63, 90, 131, 16, 0, 0, 0, 0, 64, 111, 80, 0, 0, 0, 0, 0, 65, 58, 101, 16, 0, 0, 0, 0, 66, 79, 50, 0, 0, 0, 0, 0, 67, 26, 71, 16, 0, 0, 0, 0, 68, 47, 20, 0, 0, 0, 0, 0, 68, 250, 41, 16, 0, 0, 0, 0, 70, 14, 246, 0, 0, 0, 0, 0, 70, 218, 11, 16, 0, 0, 0, 0, 71, 248, 18, 128, 0, 0, 0, 0, 72, 195, 39, 144, 0, 0, 0, 0, 73, 215, 244, 128, 0, 0, 0, 0, 74, 163, 9, 144, 0, 0, 0, 0, 75, 183, 214, 128, 0, 0, 0, 0, 76, 130, 235, 144, 0, 0, 0, 0, 77, 151, 184, 128, 0, 0, 0, 0, 78, 98, 205, 144, 0, 0, 0, 0, 79, 119, 154, 128, 0, 0, 0, 0, 80, 66, 175, 144, 0, 0, 0, 0, 81, 96, 183, 0, 0, 0, 0, 0, 82, 34, 145, 144, 0, 0, 0, 0, 83, 64, 153, 0, 0, 0, 0, 0, 84, 11, 174, 16, 0, 0, 0, 0, 85, 32, 123, 0, 0, 0, 0, 0, 85, 235, 144, 16, 0, 0, 0, 0, 87, 0, 93, 0, 0, 0, 0, 0, 87, 203, 114, 16, 0, 0, 0, 0, 88, 224, 63, 0, 0, 0, 0, 0, 89, 171, 84, 16, 1, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 16, 8, 0, 0, 0, 0, 21, 24, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 1, 10, 0, 0, 14, 16, 1, 15, 0, 0, 28, 32, 0, 19, 76, 77, 84, 0, 43, 48, 49, 51, 48, 0, 83, 65, 83, 84, 0, 87, 65, 84, 0, 67, 65, 84, 0, 10, 67, 65, 84, 45, 50, 10}, - "zoneinfo/America/Adak": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 171, 226, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Adak": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 171, 226, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 10, 0, 0, 0, 33, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 90, 94, 255, 255, 255, 255, 203, 137, 68, 208, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 80, 64, 255, 255, 255, 255, 250, 210, 85, 176, 255, 255, 255, 255, 254, 184, 113, 80, 255, 255, 255, 255, 255, 168, 84, 64, 0, 0, 0, 0, 0, 152, 83, 80, 0, 0, 0, 0, 1, 136, 54, 64, 0, 0, 0, 0, 2, 120, 53, 80, 0, 0, 0, 0, 3, 113, 82, 192, 0, 0, 0, 0, 4, 97, 81, 208, 0, 0, 0, 0, 5, 81, 52, 192, 0, 0, 0, 0, 6, 65, 51, 208, 0, 0, 0, 0, 7, 49, 22, 192, 0, 0, 0, 0, 7, 141, 109, 208, 0, 0, 0, 0, 9, 16, 248, 192, 0, 0, 0, 0, 9, 173, 233, 80, 0, 0, 0, 0, 10, 240, 218, 192, 0, 0, 0, 0, 11, 224, 217, 208, 0, 0, 0, 0, 12, 217, 247, 64, 0, 0, 0, 0, 13, 192, 187, 208, 0, 0, 0, 0, 14, 185, 217, 64, 0, 0, 0, 0, 15, 169, 216, 80, 0, 0, 0, 0, 16, 153, 187, 64, 0, 0, 0, 0, 17, 137, 186, 80, 0, 0, 0, 0, 18, 121, 157, 64, 0, 0, 0, 0, 19, 105, 156, 80, 0, 0, 0, 0, 20, 89, 127, 64, 0, 0, 0, 0, 21, 73, 126, 80, 0, 0, 0, 0, 22, 57, 97, 64, 0, 0, 0, 0, 23, 41, 96, 80, 0, 0, 0, 0, 24, 34, 125, 192, 0, 0, 0, 0, 25, 9, 66, 80, 0, 0, 0, 0, 26, 2, 95, 192, 0, 0, 0, 0, 26, 43, 34, 32, 0, 0, 0, 0, 26, 242, 80, 192, 0, 0, 0, 0, 27, 226, 51, 176, 0, 0, 0, 0, 28, 210, 50, 192, 0, 0, 0, 0, 29, 194, 21, 176, 0, 0, 0, 0, 30, 178, 20, 192, 0, 0, 0, 0, 31, 161, 247, 176, 0, 0, 0, 0, 32, 118, 71, 64, 0, 0, 0, 0, 33, 129, 217, 176, 0, 0, 0, 0, 34, 86, 41, 64, 0, 0, 0, 0, 35, 106, 246, 48, 0, 0, 0, 0, 36, 54, 11, 64, 0, 0, 0, 0, 37, 74, 216, 48, 0, 0, 0, 0, 38, 21, 237, 64, 0, 0, 0, 0, 39, 42, 186, 48, 0, 0, 0, 0, 39, 255, 9, 192, 0, 0, 0, 0, 41, 10, 156, 48, 0, 0, 0, 0, 41, 222, 235, 192, 0, 0, 0, 0, 42, 234, 126, 48, 0, 0, 0, 0, 43, 190, 205, 192, 0, 0, 0, 0, 44, 211, 154, 176, 0, 0, 0, 0, 45, 158, 175, 192, 0, 0, 0, 0, 46, 179, 124, 176, 0, 0, 0, 0, 47, 126, 145, 192, 0, 0, 0, 0, 48, 147, 94, 176, 0, 0, 0, 0, 49, 103, 174, 64, 0, 0, 0, 0, 50, 115, 64, 176, 0, 0, 0, 0, 51, 71, 144, 64, 0, 0, 0, 0, 52, 83, 34, 176, 0, 0, 0, 0, 53, 39, 114, 64, 0, 0, 0, 0, 54, 51, 4, 176, 0, 0, 0, 0, 55, 7, 84, 64, 0, 0, 0, 0, 56, 28, 33, 48, 0, 0, 0, 0, 56, 231, 54, 64, 0, 0, 0, 0, 57, 252, 3, 48, 0, 0, 0, 0, 58, 199, 24, 64, 0, 0, 0, 0, 59, 219, 229, 48, 0, 0, 0, 0, 60, 176, 52, 192, 0, 0, 0, 0, 61, 187, 199, 48, 0, 0, 0, 0, 62, 144, 22, 192, 0, 0, 0, 0, 63, 155, 169, 48, 0, 0, 0, 0, 64, 111, 248, 192, 0, 0, 0, 0, 65, 132, 197, 176, 0, 0, 0, 0, 66, 79, 218, 192, 0, 0, 0, 0, 67, 100, 167, 176, 0, 0, 0, 0, 68, 47, 188, 192, 0, 0, 0, 0, 69, 68, 137, 176, 0, 0, 0, 0, 69, 243, 239, 64, 0, 0, 0, 0, 71, 45, 166, 48, 0, 0, 0, 0, 71, 211, 209, 64, 0, 0, 0, 0, 73, 13, 136, 48, 0, 0, 0, 0, 73, 179, 179, 64, 0, 0, 0, 0, 74, 237, 106, 48, 0, 0, 0, 0, 75, 156, 207, 192, 0, 0, 0, 0, 76, 214, 134, 176, 0, 0, 0, 0, 77, 124, 177, 192, 0, 0, 0, 0, 78, 182, 104, 176, 0, 0, 0, 0, 79, 92, 147, 192, 0, 0, 0, 0, 80, 150, 74, 176, 0, 0, 0, 0, 81, 60, 117, 192, 0, 0, 0, 0, 82, 118, 44, 176, 0, 0, 0, 0, 83, 28, 87, 192, 0, 0, 0, 0, 84, 86, 14, 176, 0, 0, 0, 0, 84, 252, 57, 192, 0, 0, 0, 0, 86, 53, 240, 176, 0, 0, 0, 0, 86, 229, 86, 64, 0, 0, 0, 0, 88, 31, 13, 48, 0, 0, 0, 0, 88, 197, 56, 64, 0, 0, 0, 0, 89, 254, 239, 48, 0, 0, 0, 0, 90, 165, 26, 64, 0, 0, 0, 0, 91, 222, 209, 48, 0, 0, 0, 0, 92, 132, 252, 64, 0, 0, 0, 0, 93, 190, 179, 48, 0, 0, 0, 0, 94, 100, 222, 64, 0, 0, 0, 0, 95, 158, 149, 48, 0, 0, 0, 0, 96, 77, 250, 192, 0, 0, 0, 0, 97, 135, 177, 176, 0, 0, 0, 0, 98, 45, 220, 192, 0, 0, 0, 0, 99, 103, 147, 176, 0, 0, 0, 0, 100, 13, 190, 192, 0, 0, 0, 0, 101, 71, 117, 176, 0, 0, 0, 0, 101, 237, 160, 192, 0, 0, 0, 0, 103, 39, 87, 176, 0, 0, 0, 0, 103, 205, 130, 192, 0, 0, 0, 0, 105, 7, 57, 176, 0, 0, 0, 0, 105, 173, 100, 192, 0, 0, 0, 0, 106, 231, 27, 176, 0, 0, 0, 0, 107, 150, 129, 64, 0, 0, 0, 0, 108, 208, 56, 48, 0, 0, 0, 0, 109, 118, 99, 64, 0, 0, 0, 0, 110, 176, 26, 48, 0, 0, 0, 0, 111, 86, 69, 64, 0, 0, 0, 0, 112, 143, 252, 48, 0, 0, 0, 0, 113, 54, 39, 64, 0, 0, 0, 0, 114, 111, 222, 48, 0, 0, 0, 0, 115, 22, 9, 64, 0, 0, 0, 0, 116, 79, 192, 48, 0, 0, 0, 0, 116, 255, 37, 192, 0, 0, 0, 0, 118, 56, 220, 176, 0, 0, 0, 0, 118, 223, 7, 192, 0, 0, 0, 0, 120, 24, 190, 176, 0, 0, 0, 0, 120, 190, 233, 192, 0, 0, 0, 0, 121, 248, 160, 176, 0, 0, 0, 0, 122, 158, 203, 192, 0, 0, 0, 0, 123, 216, 130, 176, 0, 0, 0, 0, 124, 126, 173, 192, 0, 0, 0, 0, 125, 184, 100, 176, 0, 0, 0, 0, 126, 94, 143, 192, 0, 0, 0, 0, 127, 152, 70, 176, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 171, 226, 0, 0, 255, 255, 90, 98, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Anchorage": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 40, 128, 0, 0, 0, 203, 137, 54, 192, 210, 35, 244, 112, 210, 97, 66, 48, 250, 210, 71, 160, 254, 184, 99, 64, 255, 168, 70, 48, 0, 152, 69, 64, 1, 136, 40, 48, 2, 120, 39, 64, 3, 113, 68, 176, 4, 97, 67, 192, 5, 81, 38, 176, 6, 65, 37, 192, 7, 49, 8, 176, 7, 141, 95, 192, 9, 16, 234, 176, 9, 173, 219, 64, 10, 240, 204, 176, 11, 224, 203, 192, 12, 217, 233, 48, 13, 192, 173, 192, 14, 185, 203, 48, 15, 169, 202, 64, 16, 153, 173, 48, 17, 137, 172, 64, 18, 121, 143, 48, 19, 105, 142, 64, 20, 89, 113, 48, 21, 73, 112, 64, 22, 57, 83, 48, 23, 41, 82, 64, 24, 34, 111, 176, 25, 9, 52, 64, 26, 2, 81, 176, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 196, 248, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Anchorage": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 40, 128, 0, 0, 0, 203, 137, 54, 192, 210, 35, 244, 112, 210, 97, 66, 48, 250, 210, 71, 160, 254, 184, 99, 64, 255, 168, 70, 48, 0, 152, 69, 64, 1, 136, 40, 48, 2, 120, 39, 64, 3, 113, 68, 176, 4, 97, 67, 192, 5, 81, 38, 176, 6, 65, 37, 192, 7, 49, 8, 176, 7, 141, 95, 192, 9, 16, 234, 176, 9, 173, 219, 64, 10, 240, 204, 176, 11, 224, 203, 192, 12, 217, 233, 48, 13, 192, 173, 192, 14, 185, 203, 48, 15, 169, 202, 64, 16, 153, 173, 48, 17, 137, 172, 64, 18, 121, 143, 48, 19, 105, 142, 64, 20, 89, 113, 48, 21, 73, 112, 64, 22, 57, 83, 48, 23, 41, 82, 64, 24, 34, 111, 176, 25, 9, 52, 64, 26, 2, 81, 176, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 196, 248, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 10, 0, 0, 0, 40, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 65, 72, 255, 255, 255, 255, 203, 137, 54, 192, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 66, 48, 255, 255, 255, 255, 250, 210, 71, 160, 255, 255, 255, 255, 254, 184, 99, 64, 255, 255, 255, 255, 255, 168, 70, 48, 0, 0, 0, 0, 0, 152, 69, 64, 0, 0, 0, 0, 1, 136, 40, 48, 0, 0, 0, 0, 2, 120, 39, 64, 0, 0, 0, 0, 3, 113, 68, 176, 0, 0, 0, 0, 4, 97, 67, 192, 0, 0, 0, 0, 5, 81, 38, 176, 0, 0, 0, 0, 6, 65, 37, 192, 0, 0, 0, 0, 7, 49, 8, 176, 0, 0, 0, 0, 7, 141, 95, 192, 0, 0, 0, 0, 9, 16, 234, 176, 0, 0, 0, 0, 9, 173, 219, 64, 0, 0, 0, 0, 10, 240, 204, 176, 0, 0, 0, 0, 11, 224, 203, 192, 0, 0, 0, 0, 12, 217, 233, 48, 0, 0, 0, 0, 13, 192, 173, 192, 0, 0, 0, 0, 14, 185, 203, 48, 0, 0, 0, 0, 15, 169, 202, 64, 0, 0, 0, 0, 16, 153, 173, 48, 0, 0, 0, 0, 17, 137, 172, 64, 0, 0, 0, 0, 18, 121, 143, 48, 0, 0, 0, 0, 19, 105, 142, 64, 0, 0, 0, 0, 20, 89, 113, 48, 0, 0, 0, 0, 21, 73, 112, 64, 0, 0, 0, 0, 22, 57, 83, 48, 0, 0, 0, 0, 23, 41, 82, 64, 0, 0, 0, 0, 24, 34, 111, 176, 0, 0, 0, 0, 25, 9, 52, 64, 0, 0, 0, 0, 26, 2, 81, 176, 0, 0, 0, 0, 26, 43, 20, 16, 0, 0, 0, 0, 26, 242, 66, 176, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 210, 36, 176, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 178, 6, 176, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 118, 57, 48, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 86, 27, 48, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 53, 253, 48, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 38, 21, 223, 48, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 254, 251, 176, 0, 0, 0, 0, 41, 10, 142, 32, 0, 0, 0, 0, 41, 222, 221, 176, 0, 0, 0, 0, 42, 234, 112, 32, 0, 0, 0, 0, 43, 190, 191, 176, 0, 0, 0, 0, 44, 211, 140, 160, 0, 0, 0, 0, 45, 158, 161, 176, 0, 0, 0, 0, 46, 179, 110, 160, 0, 0, 0, 0, 47, 126, 131, 176, 0, 0, 0, 0, 48, 147, 80, 160, 0, 0, 0, 0, 49, 103, 160, 48, 0, 0, 0, 0, 50, 115, 50, 160, 0, 0, 0, 0, 51, 71, 130, 48, 0, 0, 0, 0, 52, 83, 20, 160, 0, 0, 0, 0, 53, 39, 100, 48, 0, 0, 0, 0, 54, 50, 246, 160, 0, 0, 0, 0, 55, 7, 70, 48, 0, 0, 0, 0, 56, 28, 19, 32, 0, 0, 0, 0, 56, 231, 40, 48, 0, 0, 0, 0, 57, 251, 245, 32, 0, 0, 0, 0, 58, 199, 10, 48, 0, 0, 0, 0, 59, 219, 215, 32, 0, 0, 0, 0, 60, 176, 38, 176, 0, 0, 0, 0, 61, 187, 185, 32, 0, 0, 0, 0, 62, 144, 8, 176, 0, 0, 0, 0, 63, 155, 155, 32, 0, 0, 0, 0, 64, 111, 234, 176, 0, 0, 0, 0, 65, 132, 183, 160, 0, 0, 0, 0, 66, 79, 204, 176, 0, 0, 0, 0, 67, 100, 153, 160, 0, 0, 0, 0, 68, 47, 174, 176, 0, 0, 0, 0, 69, 68, 123, 160, 0, 0, 0, 0, 69, 243, 225, 48, 0, 0, 0, 0, 71, 45, 152, 32, 0, 0, 0, 0, 71, 211, 195, 48, 0, 0, 0, 0, 73, 13, 122, 32, 0, 0, 0, 0, 73, 179, 165, 48, 0, 0, 0, 0, 74, 237, 92, 32, 0, 0, 0, 0, 75, 156, 193, 176, 0, 0, 0, 0, 76, 214, 120, 160, 0, 0, 0, 0, 77, 124, 163, 176, 0, 0, 0, 0, 78, 182, 90, 160, 0, 0, 0, 0, 79, 92, 133, 176, 0, 0, 0, 0, 80, 150, 60, 160, 0, 0, 0, 0, 81, 60, 103, 176, 0, 0, 0, 0, 82, 118, 30, 160, 0, 0, 0, 0, 83, 28, 73, 176, 0, 0, 0, 0, 84, 86, 0, 160, 0, 0, 0, 0, 84, 252, 43, 176, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 196, 248, 0, 0, 255, 255, 115, 120, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Anguilla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Anguilla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Antigua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Antigua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Araguaina": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 116, 48, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 80, 131, 101, 48, 81, 32, 57, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 208, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Araguaina": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 116, 48, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 80, 131, 101, 48, 81, 32, 57, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 208, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 116, 48, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 151, 255, 176, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 48, 128, 121, 48, 0, 0, 0, 0, 49, 29, 77, 160, 0, 0, 0, 0, 50, 87, 32, 176, 0, 0, 0, 0, 51, 6, 106, 32, 0, 0, 0, 0, 52, 56, 84, 48, 0, 0, 0, 0, 52, 248, 193, 32, 0, 0, 0, 0, 54, 32, 31, 48, 0, 0, 0, 0, 54, 207, 104, 160, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 58, 143, 44, 160, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 61, 196, 145, 48, 0, 0, 0, 0, 62, 78, 240, 160, 0, 0, 0, 0, 80, 131, 101, 48, 0, 0, 0, 0, 81, 32, 57, 160, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 208, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Buenos_Aires": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Buenos_Aires": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 168, 76, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 188, 97, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Catamarca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Catamarca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 175, 44, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 187, 241, 48, 0, 0, 0, 0, 64, 213, 11, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/ComodRivadavia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/ComodRivadavia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 175, 44, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 187, 241, 48, 0, 0, 0, 0, 64, 213, 11, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Cordoba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Cordoba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 173, 176, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 188, 97, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Jujuy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 42, 87, 192, 39, 226, 219, 176, 40, 238, 138, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Jujuy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 42, 87, 192, 39, 226, 219, 176, 40, 238, 138, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 174, 184, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 42, 87, 192, 0, 0, 0, 0, 39, 226, 219, 176, 0, 0, 0, 0, 40, 238, 138, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/La_Rioja": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 205, 181, 160, 40, 38, 38, 64, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 193, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/La_Rioja": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 205, 181, 160, 40, 38, 38, 64, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 193, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 176, 44, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 205, 181, 160, 0, 0, 0, 0, 40, 38, 38, 64, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 187, 241, 48, 0, 0, 0, 0, 64, 213, 11, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 193, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Mendoza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 250, 103, 192, 41, 176, 72, 176, 42, 224, 225, 64, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 176, 19, 176, 65, 86, 62, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Mendoza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 250, 103, 192, 41, 176, 72, 176, 42, 224, 225, 64, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 176, 19, 176, 65, 86, 62, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 178, 4, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 25, 52, 64, 0, 0, 0, 0, 39, 205, 195, 176, 0, 0, 0, 0, 40, 250, 103, 192, 0, 0, 0, 0, 41, 176, 72, 176, 0, 0, 0, 0, 42, 224, 225, 64, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 176, 19, 176, 0, 0, 0, 0, 65, 86, 62, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Rio_Gallegos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 28, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Rio_Gallegos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 28, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 178, 100, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 187, 241, 48, 0, 0, 0, 0, 64, 213, 11, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 28, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Salta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 172, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Salta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 172, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 174, 212, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 172, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/San_Juan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 205, 181, 160, 40, 38, 38, 64, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 186, 159, 176, 65, 3, 48, 64, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 196, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/San_Juan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 205, 181, 160, 40, 38, 38, 64, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 186, 159, 176, 65, 3, 48, 64, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 196, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 177, 188, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 205, 181, 160, 0, 0, 0, 0, 40, 38, 38, 64, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 186, 159, 176, 0, 0, 0, 0, 65, 3, 48, 64, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 196, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/San_Luis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 253, 165, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 71, 27, 192, 55, 246, 198, 176, 56, 191, 42, 176, 64, 186, 159, 176, 65, 3, 48, 64, 71, 119, 9, 176, 71, 147, 252, 160, 71, 211, 82, 176, 72, 241, 118, 64, 73, 179, 52, 176, 74, 209, 88, 64, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 5, 3, 5, 2, 5, 4, 3, 2, 3, 2, 5, 5, 255, 255, 193, 204, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/San_Luis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 253, 165, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 71, 27, 192, 55, 246, 198, 176, 56, 191, 42, 176, 64, 186, 159, 176, 65, 3, 48, 64, 71, 119, 9, 176, 71, 147, 252, 160, 71, 211, 82, 176, 72, 241, 118, 64, 73, 179, 52, 176, 74, 209, 88, 64, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 5, 3, 5, 2, 5, 4, 3, 2, 3, 2, 5, 5, 255, 255, 193, 204, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 175, 180, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 253, 165, 160, 0, 0, 0, 0, 39, 25, 52, 64, 0, 0, 0, 0, 39, 205, 195, 176, 0, 0, 0, 0, 40, 71, 27, 192, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 186, 159, 176, 0, 0, 0, 0, 65, 3, 48, 64, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 147, 252, 160, 0, 0, 0, 0, 71, 211, 82, 176, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 179, 52, 176, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 5, 3, 5, 2, 5, 4, 3, 2, 3, 2, 5, 5, 255, 255, 193, 204, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Tucuman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 203, 209, 64, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 4, 5, 5, 255, 255, 194, 220, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Tucuman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 203, 209, 64, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 4, 5, 5, 255, 255, 194, 220, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 174, 164, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 187, 241, 48, 0, 0, 0, 0, 64, 203, 209, 64, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 188, 97, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 4, 5, 5, 255, 255, 194, 220, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Argentina/Ushuaia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 185, 78, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 248, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Argentina/Ushuaia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 185, 78, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 248, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 177, 136, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 185, 78, 48, 0, 0, 0, 0, 64, 213, 11, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 248, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Aruba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Aruba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 147, 30, 46, 35, 255, 255, 255, 255, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Asuncion": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 184, 23, 245, 144, 5, 43, 218, 64, 7, 252, 240, 176, 10, 207, 116, 192, 11, 151, 202, 176, 12, 177, 249, 192, 13, 120, 254, 48, 14, 147, 45, 64, 15, 90, 49, 176, 16, 116, 96, 192, 17, 100, 67, 176, 18, 85, 148, 64, 19, 70, 200, 176, 20, 56, 25, 64, 21, 39, 252, 48, 22, 25, 76, 192, 23, 9, 47, 176, 23, 250, 128, 64, 24, 234, 99, 48, 25, 219, 179, 192, 26, 204, 232, 48, 27, 190, 56, 192, 28, 174, 27, 176, 29, 159, 108, 64, 30, 143, 79, 48, 31, 128, 159, 192, 32, 112, 130, 176, 33, 97, 211, 64, 34, 83, 7, 176, 35, 68, 88, 64, 36, 52, 59, 48, 37, 65, 59, 64, 38, 21, 110, 176, 39, 6, 191, 64, 39, 246, 162, 48, 40, 238, 138, 64, 41, 176, 72, 176, 42, 207, 189, 192, 43, 185, 9, 48, 44, 171, 171, 64, 45, 112, 12, 176, 46, 140, 222, 192, 47, 79, 238, 176, 48, 110, 18, 64, 49, 54, 104, 48, 50, 87, 46, 192, 51, 15, 178, 176, 52, 55, 16, 192, 52, 248, 207, 48, 54, 22, 242, 192, 54, 225, 235, 176, 55, 246, 212, 192, 56, 193, 205, 176, 57, 214, 182, 192, 58, 161, 175, 176, 59, 191, 211, 64, 60, 175, 182, 48, 61, 113, 144, 192, 62, 143, 152, 48, 63, 90, 173, 64, 64, 111, 122, 48, 65, 113, 238, 64, 66, 51, 172, 176, 67, 81, 208, 64, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 26, 206, 192, 71, 211, 82, 176, 72, 250, 176, 192, 73, 179, 52, 176, 74, 218, 146, 192, 75, 193, 59, 48, 76, 167, 255, 192, 77, 161, 29, 48, 78, 135, 225, 192, 79, 128, 255, 48, 80, 112, 254, 64, 81, 78, 108, 48, 82, 80, 224, 64, 83, 46, 78, 48, 84, 48, 194, 64, 85, 14, 48, 48, 86, 16, 164, 64, 86, 247, 76, 176, 87, 240, 134, 64, 88, 215, 46, 176, 89, 208, 104, 64, 90, 183, 16, 176, 91, 185, 132, 192, 92, 150, 242, 176, 93, 153, 102, 192, 94, 118, 212, 176, 95, 121, 72, 192, 96, 95, 241, 48, 97, 89, 42, 192, 98, 63, 211, 48, 99, 57, 12, 192, 100, 31, 181, 48, 101, 24, 238, 192, 101, 255, 151, 48, 103, 2, 11, 64, 103, 223, 121, 48, 104, 225, 237, 64, 105, 191, 91, 48, 106, 193, 207, 64, 107, 168, 119, 176, 108, 161, 177, 64, 109, 136, 89, 176, 110, 129, 147, 64, 111, 104, 59, 176, 112, 106, 175, 192, 113, 72, 29, 176, 114, 74, 145, 192, 115, 39, 255, 176, 116, 42, 115, 192, 117, 17, 28, 48, 118, 10, 85, 192, 118, 240, 254, 48, 119, 234, 55, 192, 120, 208, 224, 48, 121, 202, 25, 192, 122, 176, 194, 48, 123, 179, 54, 64, 124, 144, 164, 48, 125, 147, 24, 64, 126, 112, 134, 48, 127, 114, 250, 64, 127, 255, 255, 255, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 255, 255, 201, 240, 0, 0, 255, 255, 201, 240, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 48, 46, 49, 46, 48, 47, 48, 44, 77, 51, 46, 52, 46, 48, 47, 48, 10}, + "zoneinfo/America/Asuncion": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 184, 23, 245, 144, 5, 43, 218, 64, 7, 252, 240, 176, 10, 207, 116, 192, 11, 151, 202, 176, 12, 177, 249, 192, 13, 120, 254, 48, 14, 147, 45, 64, 15, 90, 49, 176, 16, 116, 96, 192, 17, 100, 67, 176, 18, 85, 148, 64, 19, 70, 200, 176, 20, 56, 25, 64, 21, 39, 252, 48, 22, 25, 76, 192, 23, 9, 47, 176, 23, 250, 128, 64, 24, 234, 99, 48, 25, 219, 179, 192, 26, 204, 232, 48, 27, 190, 56, 192, 28, 174, 27, 176, 29, 159, 108, 64, 30, 143, 79, 48, 31, 128, 159, 192, 32, 112, 130, 176, 33, 97, 211, 64, 34, 83, 7, 176, 35, 68, 88, 64, 36, 52, 59, 48, 37, 65, 59, 64, 38, 21, 110, 176, 39, 6, 191, 64, 39, 246, 162, 48, 40, 238, 138, 64, 41, 176, 72, 176, 42, 207, 189, 192, 43, 185, 9, 48, 44, 171, 171, 64, 45, 112, 12, 176, 46, 140, 222, 192, 47, 79, 238, 176, 48, 110, 18, 64, 49, 54, 104, 48, 50, 87, 46, 192, 51, 15, 178, 176, 52, 55, 16, 192, 52, 248, 207, 48, 54, 22, 242, 192, 54, 225, 235, 176, 55, 246, 212, 192, 56, 193, 205, 176, 57, 214, 182, 192, 58, 161, 175, 176, 59, 191, 211, 64, 60, 175, 182, 48, 61, 113, 144, 192, 62, 143, 152, 48, 63, 90, 173, 64, 64, 111, 122, 48, 65, 113, 238, 64, 66, 51, 172, 176, 67, 81, 208, 64, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 26, 206, 192, 71, 211, 82, 176, 72, 250, 176, 192, 73, 179, 52, 176, 74, 218, 146, 192, 75, 193, 59, 48, 76, 167, 255, 192, 77, 161, 29, 48, 78, 135, 225, 192, 79, 128, 255, 48, 80, 112, 254, 64, 81, 78, 108, 48, 82, 80, 224, 64, 83, 46, 78, 48, 84, 48, 194, 64, 85, 14, 48, 48, 86, 16, 164, 64, 86, 247, 76, 176, 87, 240, 134, 64, 88, 215, 46, 176, 89, 208, 104, 64, 90, 183, 16, 176, 91, 185, 132, 192, 92, 150, 242, 176, 93, 153, 102, 192, 94, 118, 212, 176, 95, 121, 72, 192, 96, 95, 241, 48, 97, 89, 42, 192, 98, 63, 211, 48, 99, 57, 12, 192, 100, 31, 181, 48, 101, 24, 238, 192, 101, 255, 151, 48, 103, 2, 11, 64, 103, 223, 121, 48, 104, 225, 237, 64, 105, 191, 91, 48, 106, 193, 207, 64, 107, 168, 119, 176, 108, 161, 177, 64, 109, 136, 89, 176, 110, 129, 147, 64, 111, 104, 59, 176, 112, 106, 175, 192, 113, 72, 29, 176, 114, 74, 145, 192, 115, 39, 255, 176, 116, 42, 115, 192, 117, 17, 28, 48, 118, 10, 85, 192, 118, 240, 254, 48, 119, 234, 55, 192, 120, 208, 224, 48, 121, 202, 25, 192, 122, 176, 194, 48, 123, 179, 54, 64, 124, 144, 164, 48, 125, 147, 24, 64, 126, 112, 134, 48, 127, 114, 250, 64, 127, 255, 255, 255, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 255, 255, 201, 240, 0, 0, 255, 255, 201, 240, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 17, 144, 255, 255, 255, 255, 184, 23, 245, 144, 0, 0, 0, 0, 5, 43, 218, 64, 0, 0, 0, 0, 7, 252, 240, 176, 0, 0, 0, 0, 10, 207, 116, 192, 0, 0, 0, 0, 11, 151, 202, 176, 0, 0, 0, 0, 12, 177, 249, 192, 0, 0, 0, 0, 13, 120, 254, 48, 0, 0, 0, 0, 14, 147, 45, 64, 0, 0, 0, 0, 15, 90, 49, 176, 0, 0, 0, 0, 16, 116, 96, 192, 0, 0, 0, 0, 17, 100, 67, 176, 0, 0, 0, 0, 18, 85, 148, 64, 0, 0, 0, 0, 19, 70, 200, 176, 0, 0, 0, 0, 20, 56, 25, 64, 0, 0, 0, 0, 21, 39, 252, 48, 0, 0, 0, 0, 22, 25, 76, 192, 0, 0, 0, 0, 23, 9, 47, 176, 0, 0, 0, 0, 23, 250, 128, 64, 0, 0, 0, 0, 24, 234, 99, 48, 0, 0, 0, 0, 25, 219, 179, 192, 0, 0, 0, 0, 26, 204, 232, 48, 0, 0, 0, 0, 27, 190, 56, 192, 0, 0, 0, 0, 28, 174, 27, 176, 0, 0, 0, 0, 29, 159, 108, 64, 0, 0, 0, 0, 30, 143, 79, 48, 0, 0, 0, 0, 31, 128, 159, 192, 0, 0, 0, 0, 32, 112, 130, 176, 0, 0, 0, 0, 33, 97, 211, 64, 0, 0, 0, 0, 34, 83, 7, 176, 0, 0, 0, 0, 35, 68, 88, 64, 0, 0, 0, 0, 36, 52, 59, 48, 0, 0, 0, 0, 37, 65, 59, 64, 0, 0, 0, 0, 38, 21, 110, 176, 0, 0, 0, 0, 39, 6, 191, 64, 0, 0, 0, 0, 39, 246, 162, 48, 0, 0, 0, 0, 40, 238, 138, 64, 0, 0, 0, 0, 41, 176, 72, 176, 0, 0, 0, 0, 42, 207, 189, 192, 0, 0, 0, 0, 43, 185, 9, 48, 0, 0, 0, 0, 44, 171, 171, 64, 0, 0, 0, 0, 45, 112, 12, 176, 0, 0, 0, 0, 46, 140, 222, 192, 0, 0, 0, 0, 47, 79, 238, 176, 0, 0, 0, 0, 48, 110, 18, 64, 0, 0, 0, 0, 49, 54, 104, 48, 0, 0, 0, 0, 50, 87, 46, 192, 0, 0, 0, 0, 51, 15, 178, 176, 0, 0, 0, 0, 52, 55, 16, 192, 0, 0, 0, 0, 52, 248, 207, 48, 0, 0, 0, 0, 54, 22, 242, 192, 0, 0, 0, 0, 54, 225, 235, 176, 0, 0, 0, 0, 55, 246, 212, 192, 0, 0, 0, 0, 56, 193, 205, 176, 0, 0, 0, 0, 57, 214, 182, 192, 0, 0, 0, 0, 58, 161, 175, 176, 0, 0, 0, 0, 59, 191, 211, 64, 0, 0, 0, 0, 60, 175, 182, 48, 0, 0, 0, 0, 61, 113, 144, 192, 0, 0, 0, 0, 62, 143, 152, 48, 0, 0, 0, 0, 63, 90, 173, 64, 0, 0, 0, 0, 64, 111, 122, 48, 0, 0, 0, 0, 65, 113, 238, 64, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 81, 208, 64, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 26, 206, 192, 0, 0, 0, 0, 71, 211, 82, 176, 0, 0, 0, 0, 72, 250, 176, 192, 0, 0, 0, 0, 73, 179, 52, 176, 0, 0, 0, 0, 74, 218, 146, 192, 0, 0, 0, 0, 75, 193, 59, 48, 0, 0, 0, 0, 76, 167, 255, 192, 0, 0, 0, 0, 77, 161, 29, 48, 0, 0, 0, 0, 78, 135, 225, 192, 0, 0, 0, 0, 79, 128, 255, 48, 0, 0, 0, 0, 80, 112, 254, 64, 0, 0, 0, 0, 81, 78, 108, 48, 0, 0, 0, 0, 82, 80, 224, 64, 0, 0, 0, 0, 83, 46, 78, 48, 0, 0, 0, 0, 84, 48, 194, 64, 0, 0, 0, 0, 85, 14, 48, 48, 0, 0, 0, 0, 86, 16, 164, 64, 0, 0, 0, 0, 86, 247, 76, 176, 0, 0, 0, 0, 87, 240, 134, 64, 0, 0, 0, 0, 88, 215, 46, 176, 0, 0, 0, 0, 89, 208, 104, 64, 0, 0, 0, 0, 90, 183, 16, 176, 0, 0, 0, 0, 91, 185, 132, 192, 0, 0, 0, 0, 92, 150, 242, 176, 0, 0, 0, 0, 93, 153, 102, 192, 0, 0, 0, 0, 94, 118, 212, 176, 0, 0, 0, 0, 95, 121, 72, 192, 0, 0, 0, 0, 96, 95, 241, 48, 0, 0, 0, 0, 97, 89, 42, 192, 0, 0, 0, 0, 98, 63, 211, 48, 0, 0, 0, 0, 99, 57, 12, 192, 0, 0, 0, 0, 100, 31, 181, 48, 0, 0, 0, 0, 101, 24, 238, 192, 0, 0, 0, 0, 101, 255, 151, 48, 0, 0, 0, 0, 103, 2, 11, 64, 0, 0, 0, 0, 103, 223, 121, 48, 0, 0, 0, 0, 104, 225, 237, 64, 0, 0, 0, 0, 105, 191, 91, 48, 0, 0, 0, 0, 106, 193, 207, 64, 0, 0, 0, 0, 107, 168, 119, 176, 0, 0, 0, 0, 108, 161, 177, 64, 0, 0, 0, 0, 109, 136, 89, 176, 0, 0, 0, 0, 110, 129, 147, 64, 0, 0, 0, 0, 111, 104, 59, 176, 0, 0, 0, 0, 112, 106, 175, 192, 0, 0, 0, 0, 113, 72, 29, 176, 0, 0, 0, 0, 114, 74, 145, 192, 0, 0, 0, 0, 115, 39, 255, 176, 0, 0, 0, 0, 116, 42, 115, 192, 0, 0, 0, 0, 117, 17, 28, 48, 0, 0, 0, 0, 118, 10, 85, 192, 0, 0, 0, 0, 118, 240, 254, 48, 0, 0, 0, 0, 119, 234, 55, 192, 0, 0, 0, 0, 120, 208, 224, 48, 0, 0, 0, 0, 121, 202, 25, 192, 0, 0, 0, 0, 122, 176, 194, 48, 0, 0, 0, 0, 123, 179, 54, 64, 0, 0, 0, 0, 124, 144, 164, 48, 0, 0, 0, 0, 125, 147, 24, 64, 0, 0, 0, 0, 126, 112, 134, 48, 0, 0, 0, 0, 127, 114, 250, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 4, 255, 255, 201, 240, 0, 0, 255, 255, 201, 240, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 12, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 48, 46, 49, 46, 48, 47, 48, 44, 77, 51, 46, 52, 46, 48, 47, 48, 10}, - "zoneinfo/America/Atikokan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/America/Atikokan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 114, 238, 132, 100, 255, 255, 255, 255, 158, 184, 161, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 200, 248, 87, 96, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/America/Atka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 171, 226, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Atka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 171, 226, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 10, 0, 0, 0, 33, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 90, 94, 255, 255, 255, 255, 203, 137, 68, 208, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 80, 64, 255, 255, 255, 255, 250, 210, 85, 176, 255, 255, 255, 255, 254, 184, 113, 80, 255, 255, 255, 255, 255, 168, 84, 64, 0, 0, 0, 0, 0, 152, 83, 80, 0, 0, 0, 0, 1, 136, 54, 64, 0, 0, 0, 0, 2, 120, 53, 80, 0, 0, 0, 0, 3, 113, 82, 192, 0, 0, 0, 0, 4, 97, 81, 208, 0, 0, 0, 0, 5, 81, 52, 192, 0, 0, 0, 0, 6, 65, 51, 208, 0, 0, 0, 0, 7, 49, 22, 192, 0, 0, 0, 0, 7, 141, 109, 208, 0, 0, 0, 0, 9, 16, 248, 192, 0, 0, 0, 0, 9, 173, 233, 80, 0, 0, 0, 0, 10, 240, 218, 192, 0, 0, 0, 0, 11, 224, 217, 208, 0, 0, 0, 0, 12, 217, 247, 64, 0, 0, 0, 0, 13, 192, 187, 208, 0, 0, 0, 0, 14, 185, 217, 64, 0, 0, 0, 0, 15, 169, 216, 80, 0, 0, 0, 0, 16, 153, 187, 64, 0, 0, 0, 0, 17, 137, 186, 80, 0, 0, 0, 0, 18, 121, 157, 64, 0, 0, 0, 0, 19, 105, 156, 80, 0, 0, 0, 0, 20, 89, 127, 64, 0, 0, 0, 0, 21, 73, 126, 80, 0, 0, 0, 0, 22, 57, 97, 64, 0, 0, 0, 0, 23, 41, 96, 80, 0, 0, 0, 0, 24, 34, 125, 192, 0, 0, 0, 0, 25, 9, 66, 80, 0, 0, 0, 0, 26, 2, 95, 192, 0, 0, 0, 0, 26, 43, 34, 32, 0, 0, 0, 0, 26, 242, 80, 192, 0, 0, 0, 0, 27, 226, 51, 176, 0, 0, 0, 0, 28, 210, 50, 192, 0, 0, 0, 0, 29, 194, 21, 176, 0, 0, 0, 0, 30, 178, 20, 192, 0, 0, 0, 0, 31, 161, 247, 176, 0, 0, 0, 0, 32, 118, 71, 64, 0, 0, 0, 0, 33, 129, 217, 176, 0, 0, 0, 0, 34, 86, 41, 64, 0, 0, 0, 0, 35, 106, 246, 48, 0, 0, 0, 0, 36, 54, 11, 64, 0, 0, 0, 0, 37, 74, 216, 48, 0, 0, 0, 0, 38, 21, 237, 64, 0, 0, 0, 0, 39, 42, 186, 48, 0, 0, 0, 0, 39, 255, 9, 192, 0, 0, 0, 0, 41, 10, 156, 48, 0, 0, 0, 0, 41, 222, 235, 192, 0, 0, 0, 0, 42, 234, 126, 48, 0, 0, 0, 0, 43, 190, 205, 192, 0, 0, 0, 0, 44, 211, 154, 176, 0, 0, 0, 0, 45, 158, 175, 192, 0, 0, 0, 0, 46, 179, 124, 176, 0, 0, 0, 0, 47, 126, 145, 192, 0, 0, 0, 0, 48, 147, 94, 176, 0, 0, 0, 0, 49, 103, 174, 64, 0, 0, 0, 0, 50, 115, 64, 176, 0, 0, 0, 0, 51, 71, 144, 64, 0, 0, 0, 0, 52, 83, 34, 176, 0, 0, 0, 0, 53, 39, 114, 64, 0, 0, 0, 0, 54, 51, 4, 176, 0, 0, 0, 0, 55, 7, 84, 64, 0, 0, 0, 0, 56, 28, 33, 48, 0, 0, 0, 0, 56, 231, 54, 64, 0, 0, 0, 0, 57, 252, 3, 48, 0, 0, 0, 0, 58, 199, 24, 64, 0, 0, 0, 0, 59, 219, 229, 48, 0, 0, 0, 0, 60, 176, 52, 192, 0, 0, 0, 0, 61, 187, 199, 48, 0, 0, 0, 0, 62, 144, 22, 192, 0, 0, 0, 0, 63, 155, 169, 48, 0, 0, 0, 0, 64, 111, 248, 192, 0, 0, 0, 0, 65, 132, 197, 176, 0, 0, 0, 0, 66, 79, 218, 192, 0, 0, 0, 0, 67, 100, 167, 176, 0, 0, 0, 0, 68, 47, 188, 192, 0, 0, 0, 0, 69, 68, 137, 176, 0, 0, 0, 0, 69, 243, 239, 64, 0, 0, 0, 0, 71, 45, 166, 48, 0, 0, 0, 0, 71, 211, 209, 64, 0, 0, 0, 0, 73, 13, 136, 48, 0, 0, 0, 0, 73, 179, 179, 64, 0, 0, 0, 0, 74, 237, 106, 48, 0, 0, 0, 0, 75, 156, 207, 192, 0, 0, 0, 0, 76, 214, 134, 176, 0, 0, 0, 0, 77, 124, 177, 192, 0, 0, 0, 0, 78, 182, 104, 176, 0, 0, 0, 0, 79, 92, 147, 192, 0, 0, 0, 0, 80, 150, 74, 176, 0, 0, 0, 0, 81, 60, 117, 192, 0, 0, 0, 0, 82, 118, 44, 176, 0, 0, 0, 0, 83, 28, 87, 192, 0, 0, 0, 0, 84, 86, 14, 176, 0, 0, 0, 0, 84, 252, 57, 192, 0, 0, 0, 0, 86, 53, 240, 176, 0, 0, 0, 0, 86, 229, 86, 64, 0, 0, 0, 0, 88, 31, 13, 48, 0, 0, 0, 0, 88, 197, 56, 64, 0, 0, 0, 0, 89, 254, 239, 48, 0, 0, 0, 0, 90, 165, 26, 64, 0, 0, 0, 0, 91, 222, 209, 48, 0, 0, 0, 0, 92, 132, 252, 64, 0, 0, 0, 0, 93, 190, 179, 48, 0, 0, 0, 0, 94, 100, 222, 64, 0, 0, 0, 0, 95, 158, 149, 48, 0, 0, 0, 0, 96, 77, 250, 192, 0, 0, 0, 0, 97, 135, 177, 176, 0, 0, 0, 0, 98, 45, 220, 192, 0, 0, 0, 0, 99, 103, 147, 176, 0, 0, 0, 0, 100, 13, 190, 192, 0, 0, 0, 0, 101, 71, 117, 176, 0, 0, 0, 0, 101, 237, 160, 192, 0, 0, 0, 0, 103, 39, 87, 176, 0, 0, 0, 0, 103, 205, 130, 192, 0, 0, 0, 0, 105, 7, 57, 176, 0, 0, 0, 0, 105, 173, 100, 192, 0, 0, 0, 0, 106, 231, 27, 176, 0, 0, 0, 0, 107, 150, 129, 64, 0, 0, 0, 0, 108, 208, 56, 48, 0, 0, 0, 0, 109, 118, 99, 64, 0, 0, 0, 0, 110, 176, 26, 48, 0, 0, 0, 0, 111, 86, 69, 64, 0, 0, 0, 0, 112, 143, 252, 48, 0, 0, 0, 0, 113, 54, 39, 64, 0, 0, 0, 0, 114, 111, 222, 48, 0, 0, 0, 0, 115, 22, 9, 64, 0, 0, 0, 0, 116, 79, 192, 48, 0, 0, 0, 0, 116, 255, 37, 192, 0, 0, 0, 0, 118, 56, 220, 176, 0, 0, 0, 0, 118, 223, 7, 192, 0, 0, 0, 0, 120, 24, 190, 176, 0, 0, 0, 0, 120, 190, 233, 192, 0, 0, 0, 0, 121, 248, 160, 176, 0, 0, 0, 0, 122, 158, 203, 192, 0, 0, 0, 0, 123, 216, 130, 176, 0, 0, 0, 0, 124, 126, 173, 192, 0, 0, 0, 0, 125, 184, 100, 176, 0, 0, 0, 0, 126, 94, 143, 192, 0, 0, 0, 0, 127, 152, 70, 176, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 171, 226, 0, 0, 255, 255, 90, 98, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Bahia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 107, 28, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 78, 154, 72, 176, 79, 73, 146, 32, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 228, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Bahia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 107, 28, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 78, 154, 72, 176, 79, 73, 146, 32, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 228, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 107, 28, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 151, 255, 176, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 189, 227, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 148, 139, 32, 0, 0, 0, 0, 42, 234, 13, 176, 0, 0, 0, 0, 43, 107, 50, 160, 0, 0, 0, 0, 44, 192, 181, 48, 0, 0, 0, 0, 45, 102, 196, 32, 0, 0, 0, 0, 46, 160, 151, 48, 0, 0, 0, 0, 47, 70, 166, 32, 0, 0, 0, 0, 48, 128, 121, 48, 0, 0, 0, 0, 49, 29, 77, 160, 0, 0, 0, 0, 50, 87, 32, 176, 0, 0, 0, 0, 51, 6, 106, 32, 0, 0, 0, 0, 52, 56, 84, 48, 0, 0, 0, 0, 52, 248, 193, 32, 0, 0, 0, 0, 54, 32, 31, 48, 0, 0, 0, 0, 54, 207, 104, 160, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 58, 143, 44, 160, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 61, 196, 145, 48, 0, 0, 0, 0, 62, 78, 240, 160, 0, 0, 0, 0, 78, 154, 72, 176, 0, 0, 0, 0, 79, 73, 146, 32, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 228, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Bahia_Banderas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 7, 0, 0, 0, 24, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 157, 84, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/America/Bahia_Banderas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 7, 0, 0, 0, 24, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 157, 84, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 255, 255, 255, 255, 203, 234, 113, 96, 255, 255, 255, 255, 216, 145, 180, 240, 0, 0, 0, 0, 0, 0, 112, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 245, 18, 144, 0, 0, 0, 0, 59, 182, 209, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 70, 15, 116, 144, 0, 0, 0, 0, 71, 36, 65, 128, 0, 0, 0, 0, 71, 248, 145, 16, 0, 0, 0, 0, 73, 4, 35, 128, 0, 0, 0, 0, 73, 216, 115, 16, 0, 0, 0, 0, 74, 228, 5, 128, 0, 0, 0, 0, 75, 184, 85, 16, 0, 0, 0, 0, 76, 205, 19, 240, 0, 0, 0, 0, 77, 152, 41, 0, 0, 0, 0, 0, 78, 172, 245, 240, 0, 0, 0, 0, 79, 120, 11, 0, 0, 0, 0, 0, 80, 140, 215, 240, 0, 0, 0, 0, 81, 97, 39, 128, 0, 0, 0, 0, 82, 108, 185, 240, 0, 0, 0, 0, 83, 65, 9, 128, 0, 0, 0, 0, 84, 76, 155, 240, 0, 0, 0, 0, 85, 32, 235, 128, 0, 0, 0, 0, 86, 44, 125, 240, 0, 0, 0, 0, 87, 0, 205, 128, 0, 0, 0, 0, 88, 21, 154, 112, 0, 0, 0, 0, 88, 224, 175, 128, 0, 0, 0, 0, 89, 245, 124, 112, 0, 0, 0, 0, 90, 192, 145, 128, 0, 0, 0, 0, 91, 213, 94, 112, 0, 0, 0, 0, 92, 169, 174, 0, 0, 0, 0, 0, 93, 181, 64, 112, 0, 0, 0, 0, 94, 137, 144, 0, 0, 0, 0, 0, 95, 149, 34, 112, 0, 0, 0, 0, 96, 105, 114, 0, 0, 0, 0, 0, 97, 126, 62, 240, 0, 0, 0, 0, 98, 73, 84, 0, 0, 0, 0, 0, 99, 94, 32, 240, 0, 0, 0, 0, 100, 41, 54, 0, 0, 0, 0, 0, 101, 62, 2, 240, 0, 0, 0, 0, 102, 18, 82, 128, 0, 0, 0, 0, 103, 29, 228, 240, 0, 0, 0, 0, 103, 242, 52, 128, 0, 0, 0, 0, 104, 253, 198, 240, 0, 0, 0, 0, 105, 210, 22, 128, 0, 0, 0, 0, 106, 221, 168, 240, 0, 0, 0, 0, 107, 177, 248, 128, 0, 0, 0, 0, 108, 198, 197, 112, 0, 0, 0, 0, 109, 145, 218, 128, 0, 0, 0, 0, 110, 166, 167, 112, 0, 0, 0, 0, 111, 113, 188, 128, 0, 0, 0, 0, 112, 134, 137, 112, 0, 0, 0, 0, 113, 90, 217, 0, 0, 0, 0, 0, 114, 102, 107, 112, 0, 0, 0, 0, 115, 58, 187, 0, 0, 0, 0, 0, 116, 70, 77, 112, 0, 0, 0, 0, 117, 26, 157, 0, 0, 0, 0, 0, 118, 47, 105, 240, 0, 0, 0, 0, 118, 250, 127, 0, 0, 0, 0, 0, 120, 15, 75, 240, 0, 0, 0, 0, 120, 218, 97, 0, 0, 0, 0, 0, 121, 239, 45, 240, 0, 0, 0, 0, 122, 186, 67, 0, 0, 0, 0, 0, 123, 207, 15, 240, 0, 0, 0, 0, 124, 163, 95, 128, 0, 0, 0, 0, 125, 174, 241, 240, 0, 0, 0, 0, 126, 131, 65, 128, 0, 0, 0, 0, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 157, 84, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/America/Barbados": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 16, 169, 121, 36, 229, 184, 133, 99, 229, 14, 0, 242, 224, 14, 148, 140, 208, 15, 151, 0, 224, 16, 116, 110, 208, 17, 118, 226, 224, 18, 84, 80, 208, 19, 95, 255, 96, 20, 48, 62, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 200, 27, 0, 0, 255, 255, 200, 27, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Barbados": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 16, 169, 121, 36, 229, 184, 133, 99, 229, 14, 0, 242, 224, 14, 148, 140, 208, 15, 151, 0, 224, 16, 116, 110, 208, 17, 118, 226, 224, 18, 84, 80, 208, 19, 95, 255, 96, 20, 48, 62, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 200, 27, 0, 0, 255, 255, 200, 27, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 169, 121, 36, 229, 255, 255, 255, 255, 184, 133, 99, 229, 0, 0, 0, 0, 14, 0, 242, 224, 0, 0, 0, 0, 14, 148, 140, 208, 0, 0, 0, 0, 15, 151, 0, 224, 0, 0, 0, 0, 16, 116, 110, 208, 0, 0, 0, 0, 17, 118, 226, 224, 0, 0, 0, 0, 18, 84, 80, 208, 0, 0, 0, 0, 19, 95, 255, 96, 0, 0, 0, 0, 20, 48, 62, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 200, 27, 0, 0, 255, 255, 200, 27, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Belem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 116, 116, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 140, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Belem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 116, 116, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 140, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 116, 116, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 151, 255, 176, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 210, 140, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Belize": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 18, 147, 94, 217, 176, 159, 159, 59, 224, 160, 69, 81, 216, 161, 127, 29, 224, 162, 46, 110, 88, 163, 94, 255, 224, 164, 14, 80, 88, 165, 62, 225, 224, 165, 238, 50, 88, 167, 39, 254, 96, 167, 206, 20, 88, 169, 7, 224, 96, 169, 173, 246, 88, 170, 231, 194, 96, 171, 151, 18, 216, 172, 199, 164, 96, 173, 118, 244, 216, 174, 167, 134, 96, 175, 86, 214, 216, 176, 135, 104, 96, 177, 54, 184, 216, 178, 112, 132, 224, 179, 22, 154, 216, 180, 80, 102, 224, 180, 246, 124, 216, 182, 48, 72, 224, 182, 223, 153, 88, 184, 16, 42, 224, 184, 191, 123, 88, 185, 240, 12, 224, 186, 159, 93, 88, 187, 217, 41, 96, 188, 127, 63, 88, 189, 185, 11, 96, 190, 95, 33, 88, 191, 152, 237, 96, 192, 63, 3, 88, 193, 120, 207, 96, 194, 40, 31, 216, 195, 88, 177, 96, 196, 8, 1, 216, 197, 56, 147, 96, 197, 231, 227, 216, 199, 33, 175, 224, 199, 199, 197, 216, 201, 1, 145, 224, 201, 167, 167, 216, 202, 225, 115, 224, 203, 144, 196, 88, 204, 193, 85, 224, 205, 112, 166, 88, 7, 98, 219, 96, 7, 185, 208, 80, 24, 97, 113, 96, 24, 171, 55, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 255, 255, 173, 80, 0, 0, 255, 255, 178, 168, 1, 4, 255, 255, 171, 160, 0, 10, 255, 255, 185, 176, 1, 14, 76, 77, 84, 0, 45, 48, 53, 51, 48, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Belize": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 18, 147, 94, 217, 176, 159, 159, 59, 224, 160, 69, 81, 216, 161, 127, 29, 224, 162, 46, 110, 88, 163, 94, 255, 224, 164, 14, 80, 88, 165, 62, 225, 224, 165, 238, 50, 88, 167, 39, 254, 96, 167, 206, 20, 88, 169, 7, 224, 96, 169, 173, 246, 88, 170, 231, 194, 96, 171, 151, 18, 216, 172, 199, 164, 96, 173, 118, 244, 216, 174, 167, 134, 96, 175, 86, 214, 216, 176, 135, 104, 96, 177, 54, 184, 216, 178, 112, 132, 224, 179, 22, 154, 216, 180, 80, 102, 224, 180, 246, 124, 216, 182, 48, 72, 224, 182, 223, 153, 88, 184, 16, 42, 224, 184, 191, 123, 88, 185, 240, 12, 224, 186, 159, 93, 88, 187, 217, 41, 96, 188, 127, 63, 88, 189, 185, 11, 96, 190, 95, 33, 88, 191, 152, 237, 96, 192, 63, 3, 88, 193, 120, 207, 96, 194, 40, 31, 216, 195, 88, 177, 96, 196, 8, 1, 216, 197, 56, 147, 96, 197, 231, 227, 216, 199, 33, 175, 224, 199, 199, 197, 216, 201, 1, 145, 224, 201, 167, 167, 216, 202, 225, 115, 224, 203, 144, 196, 88, 204, 193, 85, 224, 205, 112, 166, 88, 7, 98, 219, 96, 7, 185, 208, 80, 24, 97, 113, 96, 24, 171, 55, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 255, 255, 173, 80, 0, 0, 255, 255, 178, 168, 1, 4, 255, 255, 171, 160, 0, 10, 255, 255, 185, 176, 1, 14, 76, 77, 84, 0, 45, 48, 53, 51, 48, 0, 67, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 4, 0, 0, 0, 18, 255, 255, 255, 255, 147, 94, 217, 176, 255, 255, 255, 255, 159, 159, 59, 224, 255, 255, 255, 255, 160, 69, 81, 216, 255, 255, 255, 255, 161, 127, 29, 224, 255, 255, 255, 255, 162, 46, 110, 88, 255, 255, 255, 255, 163, 94, 255, 224, 255, 255, 255, 255, 164, 14, 80, 88, 255, 255, 255, 255, 165, 62, 225, 224, 255, 255, 255, 255, 165, 238, 50, 88, 255, 255, 255, 255, 167, 39, 254, 96, 255, 255, 255, 255, 167, 206, 20, 88, 255, 255, 255, 255, 169, 7, 224, 96, 255, 255, 255, 255, 169, 173, 246, 88, 255, 255, 255, 255, 170, 231, 194, 96, 255, 255, 255, 255, 171, 151, 18, 216, 255, 255, 255, 255, 172, 199, 164, 96, 255, 255, 255, 255, 173, 118, 244, 216, 255, 255, 255, 255, 174, 167, 134, 96, 255, 255, 255, 255, 175, 86, 214, 216, 255, 255, 255, 255, 176, 135, 104, 96, 255, 255, 255, 255, 177, 54, 184, 216, 255, 255, 255, 255, 178, 112, 132, 224, 255, 255, 255, 255, 179, 22, 154, 216, 255, 255, 255, 255, 180, 80, 102, 224, 255, 255, 255, 255, 180, 246, 124, 216, 255, 255, 255, 255, 182, 48, 72, 224, 255, 255, 255, 255, 182, 223, 153, 88, 255, 255, 255, 255, 184, 16, 42, 224, 255, 255, 255, 255, 184, 191, 123, 88, 255, 255, 255, 255, 185, 240, 12, 224, 255, 255, 255, 255, 186, 159, 93, 88, 255, 255, 255, 255, 187, 217, 41, 96, 255, 255, 255, 255, 188, 127, 63, 88, 255, 255, 255, 255, 189, 185, 11, 96, 255, 255, 255, 255, 190, 95, 33, 88, 255, 255, 255, 255, 191, 152, 237, 96, 255, 255, 255, 255, 192, 63, 3, 88, 255, 255, 255, 255, 193, 120, 207, 96, 255, 255, 255, 255, 194, 40, 31, 216, 255, 255, 255, 255, 195, 88, 177, 96, 255, 255, 255, 255, 196, 8, 1, 216, 255, 255, 255, 255, 197, 56, 147, 96, 255, 255, 255, 255, 197, 231, 227, 216, 255, 255, 255, 255, 199, 33, 175, 224, 255, 255, 255, 255, 199, 199, 197, 216, 255, 255, 255, 255, 201, 1, 145, 224, 255, 255, 255, 255, 201, 167, 167, 216, 255, 255, 255, 255, 202, 225, 115, 224, 255, 255, 255, 255, 203, 144, 196, 88, 255, 255, 255, 255, 204, 193, 85, 224, 255, 255, 255, 255, 205, 112, 166, 88, 0, 0, 0, 0, 7, 98, 219, 96, 0, 0, 0, 0, 7, 185, 208, 80, 0, 0, 0, 0, 24, 97, 113, 96, 0, 0, 0, 0, 24, 171, 55, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 255, 255, 173, 80, 0, 0, 255, 255, 178, 168, 1, 4, 255, 255, 171, 160, 0, 10, 255, 255, 185, 176, 1, 14, 76, 77, 84, 0, 45, 48, 53, 51, 48, 0, 67, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Blanc-Sablon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 133, 96, 159, 186, 221, 80, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 2, 1, 2, 3, 4, 2, 255, 255, 202, 116, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Blanc-Sablon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 133, 96, 159, 186, 221, 80, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 2, 1, 2, 3, 4, 2, 255, 255, 202, 116, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 61, 57, 12, 255, 255, 255, 255, 158, 184, 133, 96, 255, 255, 255, 255, 159, 186, 221, 80, 255, 255, 255, 255, 203, 136, 226, 96, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 2, 1, 2, 3, 4, 2, 255, 255, 202, 116, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Boa_Vista": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 127, 224, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 57, 233, 29, 176, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 32, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/America/Boa_Vista": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 127, 224, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 57, 233, 29, 176, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 32, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 127, 224, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 55, 246, 212, 192, 0, 0, 0, 0, 56, 184, 147, 48, 0, 0, 0, 0, 57, 223, 241, 64, 0, 0, 0, 0, 57, 233, 29, 176, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 32, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Bogota": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 152, 88, 85, 112, 42, 3, 115, 80, 43, 190, 93, 64, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 186, 144, 0, 0, 255, 255, 186, 144, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/America/Bogota": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 152, 88, 85, 112, 42, 3, 115, 80, 43, 190, 93, 64, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 186, 144, 0, 0, 255, 255, 186, 144, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 94, 156, 52, 240, 255, 255, 255, 255, 152, 88, 85, 112, 0, 0, 0, 0, 42, 3, 115, 80, 0, 0, 0, 0, 43, 190, 93, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 186, 144, 0, 0, 255, 255, 186, 144, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/America/Boise": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 168, 70, 76, 32, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 178, 31, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 5, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 147, 15, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 20, 255, 255, 171, 160, 1, 24, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Boise": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 168, 70, 76, 32, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 178, 31, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 5, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 147, 15, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 20, 255, 255, 171, 160, 1, 24, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 4, 26, 192, 255, 255, 255, 255, 158, 166, 72, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 160, 134, 42, 160, 255, 255, 255, 255, 161, 154, 247, 144, 255, 255, 255, 255, 168, 70, 76, 32, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 178, 31, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 5, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 147, 15, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 20, 255, 255, 171, 160, 1, 24, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Buenos_Aires": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Buenos_Aires": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 241, 48, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 168, 76, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 188, 97, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 201, 52, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Cambridge_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 11, 0, 0, 0, 37, 161, 242, 205, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 90, 112, 248, 40, 133, 240, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 202, 240, 58, 4, 233, 80, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 7, 6, 8, 7, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 255, 255, 185, 176, 1, 25, 255, 255, 171, 160, 0, 29, 255, 255, 185, 176, 0, 33, 255, 255, 171, 160, 1, 21, 255, 255, 157, 144, 0, 12, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Cambridge_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 11, 0, 0, 0, 37, 161, 242, 205, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 90, 112, 248, 40, 133, 240, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 202, 240, 58, 4, 233, 80, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 7, 6, 8, 7, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 255, 255, 185, 176, 1, 25, 255, 255, 171, 160, 0, 29, 255, 255, 185, 176, 0, 33, 255, 255, 171, 160, 1, 21, 255, 255, 157, 144, 0, 12, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 11, 0, 0, 0, 37, 255, 255, 255, 255, 161, 242, 205, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 133, 240, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 4, 233, 80, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 7, 6, 8, 7, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 255, 255, 185, 176, 1, 25, 255, 255, 171, 160, 0, 29, 255, 255, 185, 176, 0, 33, 255, 255, 171, 160, 1, 21, 255, 255, 157, 144, 0, 12, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Campo_Grande": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 122, 52, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 35, 88, 30, 192, 35, 226, 126, 48, 37, 56, 0, 192, 37, 212, 213, 48, 39, 33, 29, 64, 39, 189, 241, 176, 41, 0, 255, 64, 41, 148, 153, 48, 42, 234, 27, 192, 43, 107, 64, 176, 44, 192, 195, 64, 45, 102, 210, 48, 46, 160, 165, 64, 47, 70, 180, 48, 48, 128, 135, 64, 49, 29, 91, 176, 50, 87, 46, 192, 51, 6, 120, 48, 52, 56, 98, 64, 52, 248, 207, 48, 54, 32, 45, 64, 54, 207, 118, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 58, 143, 58, 176, 59, 201, 13, 192, 60, 111, 28, 176, 61, 196, 159, 64, 62, 78, 254, 176, 63, 146, 12, 64, 64, 46, 224, 176, 65, 135, 6, 64, 66, 23, 253, 48, 67, 81, 208, 64, 67, 247, 223, 48, 69, 77, 97, 192, 69, 224, 251, 176, 71, 17, 148, 64, 71, 183, 163, 48, 72, 250, 176, 192, 73, 151, 133, 48, 74, 218, 146, 192, 75, 128, 161, 176, 76, 186, 116, 192, 77, 96, 131, 176, 78, 154, 86, 192, 79, 73, 160, 48, 80, 131, 115, 64, 81, 32, 71, 176, 82, 99, 85, 64, 83, 0, 41, 176, 84, 67, 55, 64, 84, 233, 70, 48, 86, 35, 25, 64, 86, 201, 40, 48, 88, 2, 251, 64, 88, 169, 10, 48, 89, 226, 221, 64, 90, 136, 236, 48, 91, 222, 110, 192, 92, 104, 206, 48, 93, 190, 80, 192, 94, 72, 176, 48, 95, 158, 50, 192, 96, 49, 204, 176, 97, 135, 79, 64, 98, 17, 174, 176, 99, 103, 49, 64, 99, 250, 203, 48, 101, 71, 19, 64, 101, 209, 114, 176, 103, 38, 245, 64, 103, 177, 84, 176, 105, 6, 215, 64, 105, 154, 113, 48, 106, 230, 185, 64, 107, 122, 83, 48, 108, 207, 213, 192, 109, 90, 53, 48, 110, 175, 183, 192, 111, 58, 23, 48, 112, 143, 153, 192, 113, 25, 249, 48, 114, 111, 123, 192, 114, 249, 219, 48, 116, 79, 93, 192, 116, 217, 189, 48, 118, 56, 122, 64, 118, 194, 217, 176, 120, 24, 92, 64, 120, 171, 246, 48, 121, 248, 62, 64, 122, 130, 157, 176, 123, 216, 32, 64, 124, 98, 127, 176, 125, 184, 2, 64, 126, 75, 156, 48, 127, 151, 228, 64, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 204, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 49, 46, 49, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + "zoneinfo/America/Campo_Grande": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 122, 52, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 35, 88, 30, 192, 35, 226, 126, 48, 37, 56, 0, 192, 37, 212, 213, 48, 39, 33, 29, 64, 39, 189, 241, 176, 41, 0, 255, 64, 41, 148, 153, 48, 42, 234, 27, 192, 43, 107, 64, 176, 44, 192, 195, 64, 45, 102, 210, 48, 46, 160, 165, 64, 47, 70, 180, 48, 48, 128, 135, 64, 49, 29, 91, 176, 50, 87, 46, 192, 51, 6, 120, 48, 52, 56, 98, 64, 52, 248, 207, 48, 54, 32, 45, 64, 54, 207, 118, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 58, 143, 58, 176, 59, 201, 13, 192, 60, 111, 28, 176, 61, 196, 159, 64, 62, 78, 254, 176, 63, 146, 12, 64, 64, 46, 224, 176, 65, 135, 6, 64, 66, 23, 253, 48, 67, 81, 208, 64, 67, 247, 223, 48, 69, 77, 97, 192, 69, 224, 251, 176, 71, 17, 148, 64, 71, 183, 163, 48, 72, 250, 176, 192, 73, 151, 133, 48, 74, 218, 146, 192, 75, 128, 161, 176, 76, 186, 116, 192, 77, 96, 131, 176, 78, 154, 86, 192, 79, 73, 160, 48, 80, 131, 115, 64, 81, 32, 71, 176, 82, 99, 85, 64, 83, 0, 41, 176, 84, 67, 55, 64, 84, 233, 70, 48, 86, 35, 25, 64, 86, 201, 40, 48, 88, 2, 251, 64, 88, 169, 10, 48, 89, 226, 221, 64, 90, 136, 236, 48, 91, 222, 110, 192, 92, 104, 206, 48, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 204, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 122, 52, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 35, 88, 30, 192, 0, 0, 0, 0, 35, 226, 126, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 212, 213, 48, 0, 0, 0, 0, 39, 33, 29, 64, 0, 0, 0, 0, 39, 189, 241, 176, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 148, 153, 48, 0, 0, 0, 0, 42, 234, 27, 192, 0, 0, 0, 0, 43, 107, 64, 176, 0, 0, 0, 0, 44, 192, 195, 64, 0, 0, 0, 0, 45, 102, 210, 48, 0, 0, 0, 0, 46, 160, 165, 64, 0, 0, 0, 0, 47, 70, 180, 48, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 29, 91, 176, 0, 0, 0, 0, 50, 87, 46, 192, 0, 0, 0, 0, 51, 6, 120, 48, 0, 0, 0, 0, 52, 56, 98, 64, 0, 0, 0, 0, 52, 248, 207, 48, 0, 0, 0, 0, 54, 32, 45, 64, 0, 0, 0, 0, 54, 207, 118, 176, 0, 0, 0, 0, 55, 246, 212, 192, 0, 0, 0, 0, 56, 184, 147, 48, 0, 0, 0, 0, 57, 223, 241, 64, 0, 0, 0, 0, 58, 143, 58, 176, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 111, 28, 176, 0, 0, 0, 0, 61, 196, 159, 64, 0, 0, 0, 0, 62, 78, 254, 176, 0, 0, 0, 0, 63, 146, 12, 64, 0, 0, 0, 0, 64, 46, 224, 176, 0, 0, 0, 0, 65, 135, 6, 64, 0, 0, 0, 0, 66, 23, 253, 48, 0, 0, 0, 0, 67, 81, 208, 64, 0, 0, 0, 0, 67, 247, 223, 48, 0, 0, 0, 0, 69, 77, 97, 192, 0, 0, 0, 0, 69, 224, 251, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 183, 163, 48, 0, 0, 0, 0, 72, 250, 176, 192, 0, 0, 0, 0, 73, 151, 133, 48, 0, 0, 0, 0, 74, 218, 146, 192, 0, 0, 0, 0, 75, 128, 161, 176, 0, 0, 0, 0, 76, 186, 116, 192, 0, 0, 0, 0, 77, 96, 131, 176, 0, 0, 0, 0, 78, 154, 86, 192, 0, 0, 0, 0, 79, 73, 160, 48, 0, 0, 0, 0, 80, 131, 115, 64, 0, 0, 0, 0, 81, 32, 71, 176, 0, 0, 0, 0, 82, 99, 85, 64, 0, 0, 0, 0, 83, 0, 41, 176, 0, 0, 0, 0, 84, 67, 55, 64, 0, 0, 0, 0, 84, 233, 70, 48, 0, 0, 0, 0, 86, 35, 25, 64, 0, 0, 0, 0, 86, 201, 40, 48, 0, 0, 0, 0, 88, 2, 251, 64, 0, 0, 0, 0, 88, 169, 10, 48, 0, 0, 0, 0, 89, 226, 221, 64, 0, 0, 0, 0, 90, 136, 236, 48, 0, 0, 0, 0, 91, 222, 110, 192, 0, 0, 0, 0, 92, 104, 206, 48, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 204, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Cancun": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 5, 0, 0, 0, 20, 165, 182, 218, 96, 22, 134, 213, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 53, 196, 0, 96, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 84, 205, 221, 0, 1, 3, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 255, 255, 174, 168, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/America/Cancun": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 5, 0, 0, 0, 20, 165, 182, 218, 96, 22, 134, 213, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 53, 196, 0, 96, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 84, 205, 221, 0, 1, 3, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 255, 255, 174, 168, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 218, 96, 0, 0, 0, 0, 22, 134, 213, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 53, 196, 0, 96, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 245, 4, 128, 0, 0, 0, 0, 59, 182, 194, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 70, 15, 102, 128, 0, 0, 0, 0, 71, 36, 51, 112, 0, 0, 0, 0, 71, 248, 131, 0, 0, 0, 0, 0, 73, 4, 21, 112, 0, 0, 0, 0, 73, 216, 101, 0, 0, 0, 0, 0, 74, 227, 247, 112, 0, 0, 0, 0, 75, 184, 71, 0, 0, 0, 0, 0, 76, 205, 19, 240, 0, 0, 0, 0, 77, 152, 41, 0, 0, 0, 0, 0, 78, 172, 245, 240, 0, 0, 0, 0, 79, 120, 11, 0, 0, 0, 0, 0, 80, 140, 215, 240, 0, 0, 0, 0, 81, 97, 39, 128, 0, 0, 0, 0, 82, 108, 185, 240, 0, 0, 0, 0, 83, 65, 9, 128, 0, 0, 0, 0, 84, 76, 155, 240, 0, 0, 0, 0, 84, 205, 221, 0, 1, 3, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 255, 255, 174, 168, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/America/Caracas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 147, 30, 44, 60, 246, 152, 236, 72, 71, 91, 146, 112, 87, 37, 169, 112, 127, 255, 255, 255, 1, 2, 3, 2, 3, 3, 255, 255, 193, 64, 0, 0, 255, 255, 193, 68, 0, 4, 255, 255, 192, 184, 0, 8, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 51, 48, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/America/Caracas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 147, 30, 44, 60, 246, 152, 236, 72, 71, 91, 146, 112, 87, 37, 169, 112, 127, 255, 255, 255, 1, 2, 3, 2, 3, 3, 255, 255, 193, 64, 0, 0, 255, 255, 193, 68, 0, 4, 255, 255, 192, 184, 0, 8, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 51, 48, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 255, 255, 255, 255, 105, 135, 26, 64, 255, 255, 255, 255, 147, 30, 44, 60, 255, 255, 255, 255, 246, 152, 236, 72, 0, 0, 0, 0, 71, 91, 146, 112, 0, 0, 0, 0, 87, 37, 169, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 3, 255, 255, 193, 64, 0, 0, 255, 255, 193, 68, 0, 4, 255, 255, 192, 184, 0, 8, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 51, 48, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Catamarca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Catamarca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 187, 241, 48, 64, 213, 11, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 175, 44, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 187, 241, 48, 0, 0, 0, 0, 64, 213, 11, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 194, 84, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Cayenne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 145, 244, 43, 144, 251, 195, 53, 192, 127, 255, 255, 255, 1, 2, 2, 255, 255, 206, 240, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Cayenne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 145, 244, 43, 144, 251, 195, 53, 192, 127, 255, 255, 255, 1, 2, 2, 255, 255, 206, 240, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 145, 244, 43, 144, 255, 255, 255, 255, 251, 195, 53, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 255, 255, 206, 240, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Cayman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/America/Cayman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 105, 135, 38, 16, 255, 255, 255, 255, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/America/Chicago": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 162, 203, 116, 0, 163, 131, 247, 240, 164, 69, 210, 128, 165, 99, 217, 240, 166, 83, 217, 0, 167, 21, 151, 112, 168, 51, 187, 0, 168, 254, 179, 240, 170, 19, 157, 0, 170, 222, 149, 240, 171, 243, 127, 0, 172, 190, 119, 240, 173, 211, 97, 0, 174, 158, 89, 240, 175, 179, 67, 0, 176, 126, 59, 240, 177, 156, 95, 128, 178, 103, 88, 112, 179, 124, 65, 128, 180, 71, 58, 112, 181, 92, 35, 128, 182, 39, 28, 112, 183, 60, 5, 128, 184, 6, 254, 112, 185, 27, 231, 128, 185, 230, 224, 112, 187, 5, 4, 0, 187, 198, 194, 112, 188, 228, 230, 0, 189, 175, 222, 240, 190, 196, 200, 0, 191, 143, 192, 240, 192, 90, 214, 0, 193, 176, 60, 112, 194, 132, 140, 0, 195, 79, 132, 240, 196, 100, 110, 0, 197, 47, 102, 240, 198, 77, 138, 128, 199, 15, 72, 240, 200, 45, 108, 128, 200, 248, 101, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 248, 40, 133, 240, 249, 15, 74, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Chicago": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 162, 203, 116, 0, 163, 131, 247, 240, 164, 69, 210, 128, 165, 99, 217, 240, 166, 83, 217, 0, 167, 21, 151, 112, 168, 51, 187, 0, 168, 254, 179, 240, 170, 19, 157, 0, 170, 222, 149, 240, 171, 243, 127, 0, 172, 190, 119, 240, 173, 211, 97, 0, 174, 158, 89, 240, 175, 179, 67, 0, 176, 126, 59, 240, 177, 156, 95, 128, 178, 103, 88, 112, 179, 124, 65, 128, 180, 71, 58, 112, 181, 92, 35, 128, 182, 39, 28, 112, 183, 60, 5, 128, 184, 6, 254, 112, 185, 27, 231, 128, 185, 230, 224, 112, 187, 5, 4, 0, 187, 198, 194, 112, 188, 228, 230, 0, 189, 175, 222, 240, 190, 196, 200, 0, 191, 143, 192, 240, 192, 90, 214, 0, 193, 176, 60, 112, 194, 132, 140, 0, 195, 79, 132, 240, 196, 100, 110, 0, 197, 47, 102, 240, 198, 77, 138, 128, 199, 15, 72, 240, 200, 45, 108, 128, 200, 248, 101, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 248, 40, 133, 240, 249, 15, 74, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 162, 203, 116, 0, 255, 255, 255, 255, 163, 131, 247, 240, 255, 255, 255, 255, 164, 69, 210, 128, 255, 255, 255, 255, 165, 99, 217, 240, 255, 255, 255, 255, 166, 83, 217, 0, 255, 255, 255, 255, 167, 21, 151, 112, 255, 255, 255, 255, 168, 51, 187, 0, 255, 255, 255, 255, 168, 254, 179, 240, 255, 255, 255, 255, 170, 19, 157, 0, 255, 255, 255, 255, 170, 222, 149, 240, 255, 255, 255, 255, 171, 243, 127, 0, 255, 255, 255, 255, 172, 190, 119, 240, 255, 255, 255, 255, 173, 211, 97, 0, 255, 255, 255, 255, 174, 158, 89, 240, 255, 255, 255, 255, 175, 179, 67, 0, 255, 255, 255, 255, 176, 126, 59, 240, 255, 255, 255, 255, 177, 156, 95, 128, 255, 255, 255, 255, 178, 103, 88, 112, 255, 255, 255, 255, 179, 124, 65, 128, 255, 255, 255, 255, 180, 71, 58, 112, 255, 255, 255, 255, 181, 92, 35, 128, 255, 255, 255, 255, 182, 39, 28, 112, 255, 255, 255, 255, 183, 60, 5, 128, 255, 255, 255, 255, 184, 6, 254, 112, 255, 255, 255, 255, 185, 27, 231, 128, 255, 255, 255, 255, 185, 230, 224, 112, 255, 255, 255, 255, 187, 5, 4, 0, 255, 255, 255, 255, 187, 198, 194, 112, 255, 255, 255, 255, 188, 228, 230, 0, 255, 255, 255, 255, 189, 175, 222, 240, 255, 255, 255, 255, 190, 196, 200, 0, 255, 255, 255, 255, 191, 143, 192, 240, 255, 255, 255, 255, 192, 90, 214, 0, 255, 255, 255, 255, 193, 176, 60, 112, 255, 255, 255, 255, 194, 132, 140, 0, 255, 255, 255, 255, 195, 79, 132, 240, 255, 255, 255, 255, 196, 100, 110, 0, 255, 255, 255, 255, 197, 47, 102, 240, 255, 255, 255, 255, 198, 77, 138, 128, 255, 255, 255, 255, 199, 15, 72, 240, 255, 255, 255, 255, 200, 45, 108, 128, 255, 255, 255, 255, 200, 248, 101, 112, 255, 255, 255, 255, 202, 13, 78, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 87, 60, 240, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 233, 23, 0, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 246, 226, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 159, 195, 112, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 242, 127, 165, 112, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 245, 79, 134, 128, 255, 255, 255, 255, 246, 63, 105, 112, 255, 255, 255, 255, 247, 47, 104, 128, 255, 255, 255, 255, 248, 40, 133, 240, 255, 255, 255, 255, 249, 15, 74, 128, 255, 255, 255, 255, 250, 8, 103, 240, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Chihuahua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 140, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/America/Chihuahua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 140, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 245, 18, 144, 0, 0, 0, 0, 59, 182, 209, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 70, 15, 116, 144, 0, 0, 0, 0, 71, 36, 65, 128, 0, 0, 0, 0, 71, 248, 145, 16, 0, 0, 0, 0, 73, 4, 35, 128, 0, 0, 0, 0, 73, 216, 115, 16, 0, 0, 0, 0, 74, 228, 5, 128, 0, 0, 0, 0, 75, 184, 85, 16, 0, 0, 0, 0, 76, 205, 34, 0, 0, 0, 0, 0, 77, 152, 55, 16, 0, 0, 0, 0, 78, 173, 4, 0, 0, 0, 0, 0, 79, 120, 25, 16, 0, 0, 0, 0, 80, 140, 230, 0, 0, 0, 0, 0, 81, 97, 53, 144, 0, 0, 0, 0, 82, 108, 200, 0, 0, 0, 0, 0, 83, 65, 23, 144, 0, 0, 0, 0, 84, 76, 170, 0, 0, 0, 0, 0, 85, 32, 249, 144, 0, 0, 0, 0, 86, 44, 140, 0, 0, 0, 0, 0, 87, 0, 219, 144, 0, 0, 0, 0, 88, 21, 168, 128, 0, 0, 0, 0, 88, 224, 189, 144, 0, 0, 0, 0, 89, 245, 138, 128, 0, 0, 0, 0, 90, 192, 159, 144, 0, 0, 0, 0, 91, 213, 108, 128, 0, 0, 0, 0, 92, 169, 188, 16, 0, 0, 0, 0, 93, 181, 78, 128, 0, 0, 0, 0, 94, 137, 158, 16, 0, 0, 0, 0, 95, 149, 48, 128, 0, 0, 0, 0, 96, 105, 128, 16, 0, 0, 0, 0, 97, 126, 77, 0, 0, 0, 0, 0, 98, 73, 98, 16, 0, 0, 0, 0, 99, 94, 47, 0, 0, 0, 0, 0, 100, 41, 68, 16, 0, 0, 0, 0, 101, 62, 17, 0, 0, 0, 0, 0, 102, 18, 96, 144, 0, 0, 0, 0, 103, 29, 243, 0, 0, 0, 0, 0, 103, 242, 66, 144, 0, 0, 0, 0, 104, 253, 213, 0, 0, 0, 0, 0, 105, 210, 36, 144, 0, 0, 0, 0, 106, 221, 183, 0, 0, 0, 0, 0, 107, 178, 6, 144, 0, 0, 0, 0, 108, 198, 211, 128, 0, 0, 0, 0, 109, 145, 232, 144, 0, 0, 0, 0, 110, 166, 181, 128, 0, 0, 0, 0, 111, 113, 202, 144, 0, 0, 0, 0, 112, 134, 151, 128, 0, 0, 0, 0, 113, 90, 231, 16, 0, 0, 0, 0, 114, 102, 121, 128, 0, 0, 0, 0, 115, 58, 201, 16, 0, 0, 0, 0, 116, 70, 91, 128, 0, 0, 0, 0, 117, 26, 171, 16, 0, 0, 0, 0, 118, 47, 120, 0, 0, 0, 0, 0, 118, 250, 141, 16, 0, 0, 0, 0, 120, 15, 90, 0, 0, 0, 0, 0, 120, 218, 111, 16, 0, 0, 0, 0, 121, 239, 60, 0, 0, 0, 0, 0, 122, 186, 81, 16, 0, 0, 0, 0, 123, 207, 30, 0, 0, 0, 0, 0, 124, 163, 109, 144, 0, 0, 0, 0, 125, 175, 0, 0, 0, 0, 0, 0, 126, 131, 79, 144, 0, 0, 0, 0, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 140, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/America/Coral_Harbour": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/America/Coral_Harbour": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 114, 238, 132, 100, 255, 255, 255, 255, 158, 184, 161, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 200, 248, 87, 96, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 2, 1, 2, 1, 3, 4, 5, 255, 255, 170, 28, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/America/Cordoba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Cordoba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 173, 176, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 188, 97, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Costa_Rica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 163, 232, 22, 77, 17, 54, 73, 96, 17, 183, 110, 80, 19, 22, 43, 96, 19, 151, 80, 80, 39, 151, 224, 96, 40, 110, 182, 208, 41, 119, 194, 96, 41, 194, 217, 208, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 177, 51, 0, 0, 255, 255, 177, 51, 0, 4, 255, 255, 185, 176, 1, 9, 255, 255, 171, 160, 0, 13, 76, 77, 84, 0, 83, 74, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Costa_Rica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 163, 232, 22, 77, 17, 54, 73, 96, 17, 183, 110, 80, 19, 22, 43, 96, 19, 151, 80, 80, 39, 151, 224, 96, 40, 110, 182, 208, 41, 119, 194, 96, 41, 194, 217, 208, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 177, 51, 0, 0, 255, 255, 177, 51, 0, 4, 255, 255, 185, 176, 1, 9, 255, 255, 171, 160, 0, 13, 76, 77, 84, 0, 83, 74, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 17, 255, 255, 255, 255, 105, 135, 42, 77, 255, 255, 255, 255, 163, 232, 22, 77, 0, 0, 0, 0, 17, 54, 73, 96, 0, 0, 0, 0, 17, 183, 110, 80, 0, 0, 0, 0, 19, 22, 43, 96, 0, 0, 0, 0, 19, 151, 80, 80, 0, 0, 0, 0, 39, 151, 224, 96, 0, 0, 0, 0, 40, 110, 182, 208, 0, 0, 0, 0, 41, 119, 194, 96, 0, 0, 0, 0, 41, 194, 217, 208, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 177, 51, 0, 0, 255, 255, 177, 51, 0, 4, 255, 255, 185, 176, 1, 9, 255, 255, 171, 160, 0, 13, 76, 77, 84, 0, 83, 74, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Creston": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 155, 214, 75, 112, 158, 249, 59, 0, 1, 2, 1, 255, 255, 146, 196, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/America/Creston": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 155, 214, 75, 112, 158, 249, 59, 0, 1, 2, 1, 255, 255, 146, 196, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 94, 61, 112, 188, 255, 255, 255, 255, 155, 214, 75, 112, 255, 255, 255, 255, 158, 249, 59, 0, 1, 2, 1, 255, 255, 146, 196, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/America/Cuiaba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 123, 148, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 35, 88, 30, 192, 35, 226, 126, 48, 37, 56, 0, 192, 37, 212, 213, 48, 39, 33, 29, 64, 39, 189, 241, 176, 41, 0, 255, 64, 41, 148, 153, 48, 42, 234, 27, 192, 43, 107, 64, 176, 44, 192, 195, 64, 45, 102, 210, 48, 46, 160, 165, 64, 47, 70, 180, 48, 48, 128, 135, 64, 49, 29, 91, 176, 50, 87, 46, 192, 51, 6, 120, 48, 52, 56, 98, 64, 52, 248, 207, 48, 54, 32, 45, 64, 54, 207, 118, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 58, 143, 58, 176, 59, 201, 13, 192, 60, 111, 28, 176, 61, 196, 159, 64, 62, 78, 254, 176, 65, 135, 6, 64, 66, 23, 253, 48, 67, 81, 208, 64, 67, 247, 223, 48, 69, 77, 97, 192, 69, 224, 251, 176, 71, 17, 148, 64, 71, 183, 163, 48, 72, 250, 176, 192, 73, 151, 133, 48, 74, 218, 146, 192, 75, 128, 161, 176, 76, 186, 116, 192, 77, 96, 131, 176, 78, 154, 86, 192, 79, 73, 160, 48, 80, 131, 115, 64, 81, 32, 71, 176, 82, 99, 85, 64, 83, 0, 41, 176, 84, 67, 55, 64, 84, 233, 70, 48, 86, 35, 25, 64, 86, 201, 40, 48, 88, 2, 251, 64, 88, 169, 10, 48, 89, 226, 221, 64, 90, 136, 236, 48, 91, 222, 110, 192, 92, 104, 206, 48, 93, 190, 80, 192, 94, 72, 176, 48, 95, 158, 50, 192, 96, 49, 204, 176, 97, 135, 79, 64, 98, 17, 174, 176, 99, 103, 49, 64, 99, 250, 203, 48, 101, 71, 19, 64, 101, 209, 114, 176, 103, 38, 245, 64, 103, 177, 84, 176, 105, 6, 215, 64, 105, 154, 113, 48, 106, 230, 185, 64, 107, 122, 83, 48, 108, 207, 213, 192, 109, 90, 53, 48, 110, 175, 183, 192, 111, 58, 23, 48, 112, 143, 153, 192, 113, 25, 249, 48, 114, 111, 123, 192, 114, 249, 219, 48, 116, 79, 93, 192, 116, 217, 189, 48, 118, 56, 122, 64, 118, 194, 217, 176, 120, 24, 92, 64, 120, 171, 246, 48, 121, 248, 62, 64, 122, 130, 157, 176, 123, 216, 32, 64, 124, 98, 127, 176, 125, 184, 2, 64, 126, 75, 156, 48, 127, 151, 228, 64, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 203, 108, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 49, 49, 46, 49, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + "zoneinfo/America/Cuiaba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 123, 148, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 35, 88, 30, 192, 35, 226, 126, 48, 37, 56, 0, 192, 37, 212, 213, 48, 39, 33, 29, 64, 39, 189, 241, 176, 41, 0, 255, 64, 41, 148, 153, 48, 42, 234, 27, 192, 43, 107, 64, 176, 44, 192, 195, 64, 45, 102, 210, 48, 46, 160, 165, 64, 47, 70, 180, 48, 48, 128, 135, 64, 49, 29, 91, 176, 50, 87, 46, 192, 51, 6, 120, 48, 52, 56, 98, 64, 52, 248, 207, 48, 54, 32, 45, 64, 54, 207, 118, 176, 55, 246, 212, 192, 56, 184, 147, 48, 57, 223, 241, 64, 58, 143, 58, 176, 59, 201, 13, 192, 60, 111, 28, 176, 61, 196, 159, 64, 62, 78, 254, 176, 65, 135, 6, 64, 66, 23, 253, 48, 67, 81, 208, 64, 67, 247, 223, 48, 69, 77, 97, 192, 69, 224, 251, 176, 71, 17, 148, 64, 71, 183, 163, 48, 72, 250, 176, 192, 73, 151, 133, 48, 74, 218, 146, 192, 75, 128, 161, 176, 76, 186, 116, 192, 77, 96, 131, 176, 78, 154, 86, 192, 79, 73, 160, 48, 80, 131, 115, 64, 81, 32, 71, 176, 82, 99, 85, 64, 83, 0, 41, 176, 84, 67, 55, 64, 84, 233, 70, 48, 86, 35, 25, 64, 86, 201, 40, 48, 88, 2, 251, 64, 88, 169, 10, 48, 89, 226, 221, 64, 90, 136, 236, 48, 91, 222, 110, 192, 92, 104, 206, 48, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 203, 108, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 123, 148, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 35, 88, 30, 192, 0, 0, 0, 0, 35, 226, 126, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 212, 213, 48, 0, 0, 0, 0, 39, 33, 29, 64, 0, 0, 0, 0, 39, 189, 241, 176, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 148, 153, 48, 0, 0, 0, 0, 42, 234, 27, 192, 0, 0, 0, 0, 43, 107, 64, 176, 0, 0, 0, 0, 44, 192, 195, 64, 0, 0, 0, 0, 45, 102, 210, 48, 0, 0, 0, 0, 46, 160, 165, 64, 0, 0, 0, 0, 47, 70, 180, 48, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 29, 91, 176, 0, 0, 0, 0, 50, 87, 46, 192, 0, 0, 0, 0, 51, 6, 120, 48, 0, 0, 0, 0, 52, 56, 98, 64, 0, 0, 0, 0, 52, 248, 207, 48, 0, 0, 0, 0, 54, 32, 45, 64, 0, 0, 0, 0, 54, 207, 118, 176, 0, 0, 0, 0, 55, 246, 212, 192, 0, 0, 0, 0, 56, 184, 147, 48, 0, 0, 0, 0, 57, 223, 241, 64, 0, 0, 0, 0, 58, 143, 58, 176, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 111, 28, 176, 0, 0, 0, 0, 61, 196, 159, 64, 0, 0, 0, 0, 62, 78, 254, 176, 0, 0, 0, 0, 65, 135, 6, 64, 0, 0, 0, 0, 66, 23, 253, 48, 0, 0, 0, 0, 67, 81, 208, 64, 0, 0, 0, 0, 67, 247, 223, 48, 0, 0, 0, 0, 69, 77, 97, 192, 0, 0, 0, 0, 69, 224, 251, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 183, 163, 48, 0, 0, 0, 0, 72, 250, 176, 192, 0, 0, 0, 0, 73, 151, 133, 48, 0, 0, 0, 0, 74, 218, 146, 192, 0, 0, 0, 0, 75, 128, 161, 176, 0, 0, 0, 0, 76, 186, 116, 192, 0, 0, 0, 0, 77, 96, 131, 176, 0, 0, 0, 0, 78, 154, 86, 192, 0, 0, 0, 0, 79, 73, 160, 48, 0, 0, 0, 0, 80, 131, 115, 64, 0, 0, 0, 0, 81, 32, 71, 176, 0, 0, 0, 0, 82, 99, 85, 64, 0, 0, 0, 0, 83, 0, 41, 176, 0, 0, 0, 0, 84, 67, 55, 64, 0, 0, 0, 0, 84, 233, 70, 48, 0, 0, 0, 0, 86, 35, 25, 64, 0, 0, 0, 0, 86, 201, 40, 48, 0, 0, 0, 0, 88, 2, 251, 64, 0, 0, 0, 0, 88, 169, 10, 48, 0, 0, 0, 0, 89, 226, 221, 64, 0, 0, 0, 0, 90, 136, 236, 48, 0, 0, 0, 0, 91, 222, 110, 192, 0, 0, 0, 0, 92, 104, 206, 48, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 203, 108, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Curacao": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Curacao": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 147, 30, 46, 35, 255, 255, 255, 255, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Danmarkshavn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 16, 155, 128, 73, 0, 19, 77, 124, 80, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 48, 231, 78, 48, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 255, 255, 238, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 71, 77, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/America/Danmarkshavn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 16, 155, 128, 73, 0, 19, 77, 124, 80, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 48, 231, 78, 48, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 255, 255, 238, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 71, 77, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 155, 128, 73, 0, 0, 0, 0, 0, 19, 77, 124, 80, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 48, 231, 78, 48, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 255, 255, 238, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 71, 77, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/America/Dawson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 7, 48, 236, 144, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 125, 76, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Dawson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 7, 48, 236, 144, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 125, 76, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 255, 255, 255, 255, 125, 134, 142, 180, 255, 255, 255, 255, 158, 184, 203, 176, 255, 255, 255, 255, 159, 187, 35, 160, 255, 255, 255, 255, 160, 208, 12, 176, 255, 255, 255, 255, 161, 162, 210, 128, 255, 255, 255, 255, 203, 137, 40, 176, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 52, 32, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 162, 16, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 125, 76, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Dawson_Creek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 1, 240, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 255, 255, 143, 72, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/America/Dawson_Creek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 1, 240, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 255, 255, 143, 72, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 94, 61, 116, 56, 255, 255, 255, 255, 158, 184, 189, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 213, 85, 241, 32, 255, 255, 255, 255, 214, 32, 234, 16, 255, 255, 255, 255, 215, 53, 211, 32, 255, 255, 255, 255, 216, 0, 204, 16, 255, 255, 255, 255, 217, 21, 181, 32, 255, 255, 255, 255, 217, 224, 174, 16, 255, 255, 255, 255, 218, 254, 209, 160, 255, 255, 255, 255, 219, 192, 144, 16, 255, 255, 255, 255, 220, 222, 179, 160, 255, 255, 255, 255, 221, 169, 172, 144, 255, 255, 255, 255, 222, 190, 149, 160, 255, 255, 255, 255, 223, 137, 142, 144, 255, 255, 255, 255, 224, 158, 119, 160, 255, 255, 255, 255, 225, 105, 112, 144, 255, 255, 255, 255, 226, 126, 89, 160, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 59, 160, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 88, 32, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 58, 32, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 28, 32, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 254, 32, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 224, 32, 255, 255, 255, 255, 238, 145, 217, 16, 255, 255, 255, 255, 239, 175, 252, 160, 255, 255, 255, 255, 240, 113, 187, 16, 255, 255, 255, 255, 241, 143, 222, 160, 255, 255, 255, 255, 242, 127, 193, 144, 255, 255, 255, 255, 243, 111, 192, 160, 255, 255, 255, 255, 244, 95, 163, 144, 255, 255, 255, 255, 245, 79, 162, 160, 255, 255, 255, 255, 246, 63, 133, 144, 255, 255, 255, 255, 247, 47, 132, 160, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 249, 15, 102, 160, 255, 255, 255, 255, 250, 8, 132, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 1, 240, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 255, 255, 143, 72, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/America/Denver": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Denver": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 162, 101, 254, 144, 255, 255, 255, 255, 163, 132, 6, 0, 255, 255, 255, 255, 164, 69, 224, 144, 255, 255, 255, 255, 164, 143, 166, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 148, 0, 255, 255, 255, 255, 249, 15, 88, 144, 255, 255, 255, 255, 250, 8, 118, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Detroit": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 6, 0, 0, 0, 24, 133, 189, 34, 91, 153, 60, 148, 0, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 215, 53, 168, 240, 216, 0, 161, 224, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Detroit": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 6, 0, 0, 0, 24, 133, 189, 34, 91, 153, 60, 148, 0, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 215, 53, 168, 240, 216, 0, 161, 224, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 133, 189, 34, 91, 255, 255, 255, 255, 153, 60, 148, 0, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 215, 53, 168, 240, 255, 255, 255, 255, 216, 0, 161, 224, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Dominica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Dominica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Edmonton": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 5, 0, 0, 0, 20, 136, 222, 206, 224, 158, 184, 175, 144, 159, 187, 7, 128, 160, 152, 145, 144, 160, 210, 133, 128, 162, 138, 232, 144, 163, 132, 6, 0, 164, 106, 202, 144, 165, 53, 195, 128, 166, 83, 231, 16, 167, 21, 165, 128, 168, 51, 201, 16, 168, 254, 194, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 213, 85, 227, 16, 214, 32, 220, 0, 250, 248, 117, 16, 251, 232, 88, 0, 254, 184, 57, 16, 255, 168, 28, 0, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 8, 32, 221, 144, 9, 16, 192, 128, 10, 0, 191, 144, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Edmonton": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 5, 0, 0, 0, 20, 136, 222, 206, 224, 158, 184, 175, 144, 159, 187, 7, 128, 160, 152, 145, 144, 160, 210, 133, 128, 162, 138, 232, 144, 163, 132, 6, 0, 164, 106, 202, 144, 165, 53, 195, 128, 166, 83, 231, 16, 167, 21, 165, 128, 168, 51, 201, 16, 168, 254, 194, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 213, 85, 227, 16, 214, 32, 220, 0, 250, 248, 117, 16, 251, 232, 88, 0, 254, 184, 57, 16, 255, 168, 28, 0, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 8, 32, 221, 144, 9, 16, 192, 128, 10, 0, 191, 144, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 136, 222, 206, 224, 255, 255, 255, 255, 158, 184, 175, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 152, 145, 144, 255, 255, 255, 255, 160, 210, 133, 128, 255, 255, 255, 255, 162, 138, 232, 144, 255, 255, 255, 255, 163, 132, 6, 0, 255, 255, 255, 255, 164, 106, 202, 144, 255, 255, 255, 255, 165, 53, 195, 128, 255, 255, 255, 255, 166, 83, 231, 16, 255, 255, 255, 255, 167, 21, 165, 128, 255, 255, 255, 255, 168, 51, 201, 16, 255, 255, 255, 255, 168, 254, 194, 0, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 213, 85, 227, 16, 255, 255, 255, 255, 214, 32, 220, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 8, 32, 221, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 10, 0, 191, 144, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Eirunepe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 136, 128, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 44, 192, 209, 80, 45, 102, 224, 64, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 190, 128, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/America/Eirunepe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 136, 128, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 44, 192, 209, 80, 45, 102, 224, 64, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 190, 128, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 136, 128, 255, 255, 255, 255, 184, 15, 102, 0, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 241, 80, 80, 255, 255, 255, 255, 186, 222, 144, 64, 255, 255, 255, 255, 218, 56, 202, 80, 255, 255, 255, 255, 218, 236, 22, 80, 255, 255, 255, 255, 220, 25, 253, 208, 255, 255, 255, 255, 220, 185, 117, 64, 255, 255, 255, 255, 221, 251, 49, 80, 255, 255, 255, 255, 222, 155, 250, 64, 255, 255, 255, 255, 223, 221, 182, 80, 255, 255, 255, 255, 224, 84, 79, 64, 255, 255, 255, 255, 244, 152, 27, 208, 255, 255, 255, 255, 245, 5, 122, 64, 255, 255, 255, 255, 246, 192, 128, 80, 255, 255, 255, 255, 247, 14, 58, 192, 255, 255, 255, 255, 248, 81, 72, 80, 255, 255, 255, 255, 248, 199, 225, 64, 255, 255, 255, 255, 250, 10, 238, 208, 255, 255, 255, 255, 250, 169, 20, 192, 255, 255, 255, 255, 251, 236, 34, 80, 255, 255, 255, 255, 252, 139, 153, 192, 0, 0, 0, 0, 29, 201, 170, 80, 0, 0, 0, 0, 30, 120, 243, 192, 0, 0, 0, 0, 31, 160, 81, 208, 0, 0, 0, 0, 32, 51, 235, 192, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 11, 228, 192, 0, 0, 0, 0, 44, 192, 209, 80, 0, 0, 0, 0, 45, 102, 224, 64, 0, 0, 0, 0, 72, 96, 127, 80, 0, 0, 0, 0, 82, 127, 4, 192, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 190, 128, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/America/El_Salvador": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 12, 163, 213, 166, 32, 32, 154, 220, 224, 33, 92, 155, 80, 34, 122, 190, 224, 35, 60, 125, 80, 2, 1, 2, 1, 2, 255, 255, 172, 96, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/El_Salvador": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 12, 163, 213, 166, 32, 32, 154, 220, 224, 33, 92, 155, 80, 34, 122, 190, 224, 35, 60, 125, 80, 2, 1, 2, 1, 2, 255, 255, 172, 96, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 163, 213, 166, 32, 0, 0, 0, 0, 32, 154, 220, 224, 0, 0, 0, 0, 33, 92, 155, 80, 0, 0, 0, 0, 34, 122, 190, 224, 0, 0, 0, 0, 35, 60, 125, 80, 2, 1, 2, 1, 2, 255, 255, 172, 96, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Ensenada": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Ensenada": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 165, 182, 246, 128, 255, 255, 255, 255, 169, 121, 79, 112, 255, 255, 255, 255, 175, 242, 124, 240, 255, 255, 255, 255, 182, 102, 100, 112, 255, 255, 255, 255, 183, 27, 16, 0, 255, 255, 255, 255, 184, 10, 242, 240, 255, 255, 255, 255, 203, 234, 141, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 153, 186, 112, 255, 255, 255, 255, 215, 27, 89, 0, 255, 255, 255, 255, 216, 145, 180, 240, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 14, 16, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 217, 16, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 70, 15, 130, 160, 0, 0, 0, 0, 71, 36, 79, 144, 0, 0, 0, 0, 71, 248, 159, 32, 0, 0, 0, 0, 73, 4, 49, 144, 0, 0, 0, 0, 73, 216, 129, 32, 0, 0, 0, 0, 74, 228, 19, 144, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Fort_Nelson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 140, 249, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/America/Fort_Nelson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 140, 249, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 94, 61, 118, 135, 255, 255, 255, 255, 158, 184, 189, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 213, 85, 241, 32, 255, 255, 255, 255, 214, 32, 234, 16, 255, 255, 255, 255, 215, 53, 211, 32, 255, 255, 255, 255, 216, 0, 204, 16, 255, 255, 255, 255, 217, 21, 181, 32, 255, 255, 255, 255, 217, 224, 174, 16, 255, 255, 255, 255, 218, 254, 209, 160, 255, 255, 255, 255, 219, 192, 144, 16, 255, 255, 255, 255, 220, 222, 179, 160, 255, 255, 255, 255, 221, 169, 172, 144, 255, 255, 255, 255, 222, 190, 149, 160, 255, 255, 255, 255, 223, 137, 142, 144, 255, 255, 255, 255, 224, 158, 119, 160, 255, 255, 255, 255, 225, 105, 112, 144, 255, 255, 255, 255, 226, 126, 89, 160, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 59, 160, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 88, 32, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 58, 32, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 28, 32, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 254, 32, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 224, 32, 255, 255, 255, 255, 238, 145, 217, 16, 255, 255, 255, 255, 239, 175, 252, 160, 255, 255, 255, 255, 240, 113, 187, 16, 255, 255, 255, 255, 241, 143, 222, 160, 255, 255, 255, 255, 242, 127, 193, 144, 255, 255, 255, 255, 243, 111, 192, 160, 255, 255, 255, 255, 244, 95, 163, 144, 255, 255, 255, 255, 245, 79, 162, 160, 255, 255, 255, 255, 246, 63, 133, 144, 255, 255, 255, 255, 247, 47, 132, 160, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 249, 15, 102, 160, 255, 255, 255, 255, 250, 8, 132, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 8, 32, 235, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 10, 0, 205, 160, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 140, 249, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 0, 20, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 77, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/America/Fort_Wayne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Fort_Wayne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 202, 87, 34, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Fortaleza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 107, 24, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 242, 74, 32, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 232, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Fortaleza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 107, 24, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 242, 74, 32, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 232, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 107, 24, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 151, 255, 176, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 57, 242, 74, 32, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 219, 232, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Glace_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 5, 0, 0, 0, 20, 128, 241, 168, 52, 158, 184, 133, 96, 159, 186, 221, 80, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 224, 158, 63, 96, 225, 105, 56, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 199, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Glace_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 5, 0, 0, 0, 20, 128, 241, 168, 52, 158, 184, 133, 96, 159, 186, 221, 80, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 224, 158, 63, 96, 225, 105, 56, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 199, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 128, 241, 168, 52, 255, 255, 255, 255, 158, 184, 133, 96, 255, 255, 255, 255, 159, 186, 221, 80, 255, 255, 255, 255, 203, 136, 226, 96, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 255, 255, 255, 255, 224, 158, 63, 96, 255, 255, 255, 255, 225, 105, 56, 80, 0, 0, 0, 0, 4, 96, 239, 96, 0, 0, 0, 0, 5, 80, 210, 80, 0, 0, 0, 0, 6, 64, 209, 96, 0, 0, 0, 0, 7, 48, 180, 80, 0, 0, 0, 0, 8, 32, 179, 96, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 10, 0, 149, 96, 0, 0, 0, 0, 10, 240, 120, 80, 0, 0, 0, 0, 11, 224, 119, 96, 0, 0, 0, 0, 12, 217, 148, 208, 0, 0, 0, 0, 13, 192, 89, 96, 0, 0, 0, 0, 14, 185, 118, 208, 0, 0, 0, 0, 15, 169, 117, 224, 0, 0, 0, 0, 16, 153, 88, 208, 0, 0, 0, 0, 17, 137, 87, 224, 0, 0, 0, 0, 18, 121, 58, 208, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 242, 224, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 161, 208, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 131, 208, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 101, 208, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 71, 208, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 41, 208, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 70, 80, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 40, 80, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 10, 80, 0, 0, 0, 0, 49, 103, 89, 224, 0, 0, 0, 0, 50, 114, 236, 80, 0, 0, 0, 0, 51, 71, 59, 224, 0, 0, 0, 0, 52, 82, 206, 80, 0, 0, 0, 0, 53, 39, 29, 224, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 55, 6, 255, 224, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 225, 224, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 195, 224, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 224, 96, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 194, 96, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 111, 164, 96, 0, 0, 0, 0, 65, 132, 113, 80, 0, 0, 0, 0, 66, 79, 134, 96, 0, 0, 0, 0, 67, 100, 83, 80, 0, 0, 0, 0, 68, 47, 104, 96, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 154, 224, 0, 0, 0, 0, 71, 45, 81, 208, 0, 0, 0, 0, 71, 211, 124, 224, 0, 0, 0, 0, 73, 13, 51, 208, 0, 0, 0, 0, 73, 179, 94, 224, 0, 0, 0, 0, 74, 237, 21, 208, 0, 0, 0, 0, 75, 156, 123, 96, 0, 0, 0, 0, 76, 214, 50, 80, 0, 0, 0, 0, 77, 124, 93, 96, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 199, 204, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Godthab": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 5, 0, 0, 0, 12, 155, 128, 104, 0, 19, 77, 124, 80, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 207, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 51, 46, 53, 46, 48, 47, 45, 50, 44, 77, 49, 48, 46, 53, 46, 48, 47, 45, 49, 10}, + "zoneinfo/America/Godthab": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 5, 0, 0, 0, 12, 155, 128, 104, 0, 19, 77, 124, 80, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 207, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 155, 128, 104, 0, 0, 0, 0, 0, 19, 77, 124, 80, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 0, 0, 0, 0, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 207, 128, 0, 0, 255, 255, 213, 208, 0, 4, 255, 255, 213, 208, 0, 4, 255, 255, 227, 224, 1, 8, 255, 255, 227, 224, 1, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 51, 46, 53, 46, 48, 47, 45, 50, 44, 77, 49, 48, 46, 53, 46, 48, 47, 45, 49, 10}, - "zoneinfo/America/Goose_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 11, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 126, 140, 159, 186, 214, 124, 190, 158, 77, 108, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 248, 218, 107, 88, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 214, 252, 33, 129, 105, 108, 34, 85, 184, 252, 35, 106, 119, 220, 36, 53, 154, 252, 37, 74, 103, 236, 38, 21, 124, 252, 39, 42, 73, 236, 39, 254, 153, 124, 41, 10, 43, 236, 41, 222, 123, 124, 42, 234, 13, 236, 43, 190, 93, 124, 44, 211, 42, 108, 45, 158, 63, 124, 46, 179, 12, 108, 47, 126, 33, 124, 48, 146, 238, 108, 49, 103, 61, 252, 50, 114, 208, 108, 51, 71, 31, 252, 52, 82, 178, 108, 53, 39, 1, 252, 54, 50, 148, 108, 55, 6, 227, 252, 56, 27, 176, 236, 56, 230, 197, 252, 57, 251, 146, 236, 58, 198, 167, 252, 59, 219, 116, 236, 60, 175, 196, 124, 61, 187, 86, 236, 62, 143, 166, 124, 63, 155, 56, 236, 64, 111, 136, 124, 65, 132, 85, 108, 66, 79, 106, 124, 67, 100, 55, 108, 68, 47, 76, 124, 69, 68, 25, 108, 69, 243, 126, 252, 71, 45, 53, 236, 71, 211, 96, 252, 73, 13, 23, 236, 73, 179, 66, 252, 74, 236, 249, 236, 75, 156, 95, 124, 76, 214, 22, 108, 77, 124, 65, 124, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 6, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 9, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 199, 92, 0, 0, 255, 255, 206, 148, 0, 4, 255, 255, 220, 164, 1, 8, 255, 255, 206, 200, 0, 4, 255, 255, 220, 216, 1, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 213, 208, 1, 20, 255, 255, 199, 192, 0, 24, 255, 255, 227, 224, 1, 28, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 78, 83, 84, 0, 78, 68, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Goose_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 11, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 126, 140, 159, 186, 214, 124, 190, 158, 77, 108, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 248, 218, 107, 88, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 214, 252, 33, 129, 105, 108, 34, 85, 184, 252, 35, 106, 119, 220, 36, 53, 154, 252, 37, 74, 103, 236, 38, 21, 124, 252, 39, 42, 73, 236, 39, 254, 153, 124, 41, 10, 43, 236, 41, 222, 123, 124, 42, 234, 13, 236, 43, 190, 93, 124, 44, 211, 42, 108, 45, 158, 63, 124, 46, 179, 12, 108, 47, 126, 33, 124, 48, 146, 238, 108, 49, 103, 61, 252, 50, 114, 208, 108, 51, 71, 31, 252, 52, 82, 178, 108, 53, 39, 1, 252, 54, 50, 148, 108, 55, 6, 227, 252, 56, 27, 176, 236, 56, 230, 197, 252, 57, 251, 146, 236, 58, 198, 167, 252, 59, 219, 116, 236, 60, 175, 196, 124, 61, 187, 86, 236, 62, 143, 166, 124, 63, 155, 56, 236, 64, 111, 136, 124, 65, 132, 85, 108, 66, 79, 106, 124, 67, 100, 55, 108, 68, 47, 76, 124, 69, 68, 25, 108, 69, 243, 126, 252, 71, 45, 53, 236, 71, 211, 96, 252, 73, 13, 23, 236, 73, 179, 66, 252, 74, 236, 249, 236, 75, 156, 95, 124, 76, 214, 22, 108, 77, 124, 65, 124, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 6, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 9, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 199, 92, 0, 0, 255, 255, 206, 148, 0, 4, 255, 255, 220, 164, 1, 8, 255, 255, 206, 200, 0, 4, 255, 255, 220, 216, 1, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 213, 208, 1, 20, 255, 255, 199, 192, 0, 24, 255, 255, 227, 224, 1, 28, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 78, 83, 84, 0, 78, 68, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 11, 0, 0, 0, 33, 255, 255, 255, 255, 94, 61, 60, 36, 255, 255, 255, 255, 158, 184, 126, 140, 255, 255, 255, 255, 159, 186, 214, 124, 255, 255, 255, 255, 190, 158, 77, 108, 255, 255, 255, 255, 192, 184, 49, 56, 255, 255, 255, 255, 193, 121, 239, 168, 255, 255, 255, 255, 194, 152, 19, 56, 255, 255, 255, 255, 195, 89, 209, 168, 255, 255, 255, 255, 196, 119, 245, 56, 255, 255, 255, 255, 197, 57, 179, 168, 255, 255, 255, 255, 198, 97, 17, 184, 255, 255, 255, 255, 199, 25, 149, 168, 255, 255, 255, 255, 200, 64, 243, 184, 255, 255, 255, 255, 201, 2, 178, 40, 255, 255, 255, 255, 202, 32, 213, 184, 255, 255, 255, 255, 202, 226, 148, 40, 255, 255, 255, 255, 204, 0, 183, 184, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 230, 200, 255, 255, 255, 255, 211, 136, 68, 216, 255, 255, 255, 255, 212, 74, 3, 72, 255, 255, 255, 255, 213, 104, 38, 216, 255, 255, 255, 255, 214, 41, 229, 72, 255, 255, 255, 255, 215, 72, 8, 216, 255, 255, 255, 255, 216, 9, 199, 72, 255, 255, 255, 255, 217, 39, 234, 216, 255, 255, 255, 255, 217, 233, 169, 72, 255, 255, 255, 255, 219, 17, 7, 88, 255, 255, 255, 255, 219, 210, 197, 200, 255, 255, 255, 255, 220, 222, 116, 88, 255, 255, 255, 255, 221, 169, 109, 72, 255, 255, 255, 255, 222, 190, 86, 88, 255, 255, 255, 255, 223, 137, 79, 72, 255, 255, 255, 255, 224, 158, 56, 88, 255, 255, 255, 255, 225, 105, 49, 72, 255, 255, 255, 255, 226, 126, 26, 88, 255, 255, 255, 255, 227, 73, 19, 72, 255, 255, 255, 255, 228, 93, 252, 88, 255, 255, 255, 255, 229, 40, 245, 72, 255, 255, 255, 255, 230, 71, 24, 216, 255, 255, 255, 255, 231, 18, 17, 200, 255, 255, 255, 255, 232, 38, 250, 216, 255, 255, 255, 255, 232, 241, 243, 200, 255, 255, 255, 255, 234, 6, 220, 216, 255, 255, 255, 255, 234, 209, 213, 200, 255, 255, 255, 255, 235, 230, 190, 216, 255, 255, 255, 255, 236, 177, 183, 200, 255, 255, 255, 255, 237, 198, 160, 216, 255, 255, 255, 255, 238, 191, 190, 72, 255, 255, 255, 255, 239, 175, 189, 88, 255, 255, 255, 255, 240, 159, 160, 72, 255, 255, 255, 255, 241, 143, 159, 88, 255, 255, 255, 255, 242, 127, 130, 72, 255, 255, 255, 255, 243, 111, 129, 88, 255, 255, 255, 255, 244, 95, 100, 72, 255, 255, 255, 255, 245, 79, 99, 88, 255, 255, 255, 255, 246, 63, 70, 72, 255, 255, 255, 255, 247, 47, 69, 88, 255, 255, 255, 255, 248, 40, 98, 200, 255, 255, 255, 255, 248, 218, 107, 88, 255, 255, 255, 255, 249, 15, 46, 96, 255, 255, 255, 255, 250, 8, 75, 208, 255, 255, 255, 255, 250, 248, 74, 224, 255, 255, 255, 255, 251, 232, 45, 208, 255, 255, 255, 255, 252, 216, 44, 224, 255, 255, 255, 255, 253, 200, 15, 208, 255, 255, 255, 255, 254, 184, 14, 224, 255, 255, 255, 255, 255, 167, 241, 208, 0, 0, 0, 0, 0, 151, 240, 224, 0, 0, 0, 0, 1, 135, 211, 208, 0, 0, 0, 0, 2, 119, 210, 224, 0, 0, 0, 0, 3, 112, 240, 80, 0, 0, 0, 0, 4, 96, 239, 96, 0, 0, 0, 0, 5, 80, 210, 80, 0, 0, 0, 0, 6, 64, 209, 96, 0, 0, 0, 0, 7, 48, 180, 80, 0, 0, 0, 0, 8, 32, 179, 96, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 10, 0, 149, 96, 0, 0, 0, 0, 10, 240, 120, 80, 0, 0, 0, 0, 11, 224, 119, 96, 0, 0, 0, 0, 12, 217, 148, 208, 0, 0, 0, 0, 13, 192, 89, 96, 0, 0, 0, 0, 14, 185, 118, 208, 0, 0, 0, 0, 15, 169, 117, 224, 0, 0, 0, 0, 16, 153, 88, 208, 0, 0, 0, 0, 17, 137, 87, 224, 0, 0, 0, 0, 18, 121, 58, 208, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 214, 252, 0, 0, 0, 0, 33, 129, 105, 108, 0, 0, 0, 0, 34, 85, 184, 252, 0, 0, 0, 0, 35, 106, 119, 220, 0, 0, 0, 0, 36, 53, 154, 252, 0, 0, 0, 0, 37, 74, 103, 236, 0, 0, 0, 0, 38, 21, 124, 252, 0, 0, 0, 0, 39, 42, 73, 236, 0, 0, 0, 0, 39, 254, 153, 124, 0, 0, 0, 0, 41, 10, 43, 236, 0, 0, 0, 0, 41, 222, 123, 124, 0, 0, 0, 0, 42, 234, 13, 236, 0, 0, 0, 0, 43, 190, 93, 124, 0, 0, 0, 0, 44, 211, 42, 108, 0, 0, 0, 0, 45, 158, 63, 124, 0, 0, 0, 0, 46, 179, 12, 108, 0, 0, 0, 0, 47, 126, 33, 124, 0, 0, 0, 0, 48, 146, 238, 108, 0, 0, 0, 0, 49, 103, 61, 252, 0, 0, 0, 0, 50, 114, 208, 108, 0, 0, 0, 0, 51, 71, 31, 252, 0, 0, 0, 0, 52, 82, 178, 108, 0, 0, 0, 0, 53, 39, 1, 252, 0, 0, 0, 0, 54, 50, 148, 108, 0, 0, 0, 0, 55, 6, 227, 252, 0, 0, 0, 0, 56, 27, 176, 236, 0, 0, 0, 0, 56, 230, 197, 252, 0, 0, 0, 0, 57, 251, 146, 236, 0, 0, 0, 0, 58, 198, 167, 252, 0, 0, 0, 0, 59, 219, 116, 236, 0, 0, 0, 0, 60, 175, 196, 124, 0, 0, 0, 0, 61, 187, 86, 236, 0, 0, 0, 0, 62, 143, 166, 124, 0, 0, 0, 0, 63, 155, 56, 236, 0, 0, 0, 0, 64, 111, 136, 124, 0, 0, 0, 0, 65, 132, 85, 108, 0, 0, 0, 0, 66, 79, 106, 124, 0, 0, 0, 0, 67, 100, 55, 108, 0, 0, 0, 0, 68, 47, 76, 124, 0, 0, 0, 0, 69, 68, 25, 108, 0, 0, 0, 0, 69, 243, 126, 252, 0, 0, 0, 0, 71, 45, 53, 236, 0, 0, 0, 0, 71, 211, 96, 252, 0, 0, 0, 0, 73, 13, 23, 236, 0, 0, 0, 0, 73, 179, 66, 252, 0, 0, 0, 0, 74, 236, 249, 236, 0, 0, 0, 0, 75, 156, 95, 124, 0, 0, 0, 0, 76, 214, 22, 108, 0, 0, 0, 0, 77, 124, 65, 124, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 6, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 9, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 255, 255, 199, 92, 0, 0, 255, 255, 206, 148, 0, 4, 255, 255, 220, 164, 1, 8, 255, 255, 206, 200, 0, 4, 255, 255, 220, 216, 1, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 213, 208, 1, 20, 255, 255, 199, 192, 0, 24, 255, 255, 227, 224, 1, 28, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 78, 83, 84, 0, 78, 68, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Grand_Turk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 147, 15, 180, 254, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 189, 80, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 0, 16, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Grand_Turk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 147, 15, 180, 254, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 189, 80, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 0, 16, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 30, 48, 255, 255, 255, 255, 147, 15, 180, 254, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 189, 80, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 0, 16, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 65, 83, 84, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Grenada": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Grenada": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Guadeloupe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Guadeloupe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Guatemala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 12, 159, 157, 234, 220, 7, 85, 172, 96, 7, 205, 150, 208, 25, 44, 120, 96, 25, 207, 228, 80, 39, 234, 238, 224, 40, 200, 92, 208, 68, 84, 82, 96, 69, 31, 75, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 171, 36, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Guatemala": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 12, 159, 157, 234, 220, 7, 85, 172, 96, 7, 205, 150, 208, 25, 44, 120, 96, 25, 207, 228, 80, 39, 234, 238, 224, 40, 200, 92, 208, 68, 84, 82, 96, 69, 31, 75, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 171, 36, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 159, 157, 234, 220, 0, 0, 0, 0, 7, 85, 172, 96, 0, 0, 0, 0, 7, 205, 150, 208, 0, 0, 0, 0, 25, 44, 120, 96, 0, 0, 0, 0, 25, 207, 228, 80, 0, 0, 0, 0, 39, 234, 238, 224, 0, 0, 0, 0, 40, 200, 92, 208, 0, 0, 0, 0, 68, 84, 82, 96, 0, 0, 0, 0, 69, 31, 75, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 171, 36, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Guayaquil": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 182, 164, 66, 24, 43, 22, 252, 208, 43, 113, 230, 64, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 181, 40, 0, 0, 255, 255, 182, 104, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 81, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/America/Guayaquil": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 182, 164, 66, 24, 43, 22, 252, 208, 43, 113, 230, 64, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 181, 40, 0, 0, 255, 255, 182, 104, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 81, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 38, 88, 255, 255, 255, 255, 182, 164, 66, 24, 0, 0, 0, 0, 43, 22, 252, 208, 0, 0, 0, 0, 43, 113, 230, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 181, 40, 0, 0, 255, 255, 182, 104, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 76, 77, 84, 0, 81, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/America/Guyana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 152, 217, 121, 136, 10, 125, 180, 60, 39, 127, 251, 48, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 201, 120, 0, 0, 255, 255, 203, 68, 0, 4, 255, 255, 213, 208, 0, 10, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 45, 48, 51, 52, 53, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/America/Guyana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 152, 217, 121, 136, 10, 125, 180, 60, 39, 127, 251, 48, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 201, 120, 0, 0, 255, 255, 203, 68, 0, 4, 255, 255, 213, 208, 0, 10, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 45, 48, 51, 52, 53, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 255, 255, 255, 255, 152, 217, 121, 136, 0, 0, 0, 0, 10, 125, 180, 60, 0, 0, 0, 0, 39, 127, 251, 48, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 201, 120, 0, 0, 255, 255, 203, 68, 0, 4, 255, 255, 213, 208, 0, 10, 255, 255, 199, 192, 0, 14, 76, 77, 84, 0, 45, 48, 51, 52, 53, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Halifax": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 5, 0, 0, 0, 20, 128, 241, 171, 160, 154, 228, 222, 192, 155, 214, 19, 48, 158, 184, 133, 96, 159, 186, 221, 80, 162, 157, 23, 64, 163, 48, 177, 48, 164, 122, 86, 64, 165, 27, 31, 48, 166, 83, 160, 192, 166, 252, 82, 176, 168, 60, 189, 64, 168, 220, 52, 176, 170, 28, 159, 64, 170, 205, 58, 48, 171, 252, 129, 64, 172, 191, 145, 48, 173, 238, 216, 64, 174, 140, 254, 48, 175, 188, 69, 64, 176, 127, 85, 48, 177, 174, 156, 64, 178, 75, 112, 176, 179, 142, 126, 64, 180, 36, 187, 48, 181, 110, 96, 64, 182, 21, 192, 176, 183, 78, 66, 64, 184, 8, 23, 176, 185, 36, 233, 192, 185, 231, 249, 176, 187, 4, 203, 192, 187, 209, 22, 48, 189, 0, 93, 64, 189, 157, 49, 176, 190, 242, 180, 64, 191, 144, 218, 48, 192, 211, 231, 192, 193, 94, 71, 48, 194, 141, 142, 64, 195, 80, 158, 48, 196, 109, 112, 64, 197, 48, 128, 48, 198, 114, 60, 64, 199, 16, 98, 48, 200, 54, 110, 192, 200, 249, 126, 176, 202, 22, 80, 192, 202, 217, 96, 176, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 232, 241, 250, 208, 234, 6, 227, 224, 234, 209, 220, 208, 235, 230, 197, 224, 236, 177, 190, 208, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Halifax": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 5, 0, 0, 0, 20, 128, 241, 171, 160, 154, 228, 222, 192, 155, 214, 19, 48, 158, 184, 133, 96, 159, 186, 221, 80, 162, 157, 23, 64, 163, 48, 177, 48, 164, 122, 86, 64, 165, 27, 31, 48, 166, 83, 160, 192, 166, 252, 82, 176, 168, 60, 189, 64, 168, 220, 52, 176, 170, 28, 159, 64, 170, 205, 58, 48, 171, 252, 129, 64, 172, 191, 145, 48, 173, 238, 216, 64, 174, 140, 254, 48, 175, 188, 69, 64, 176, 127, 85, 48, 177, 174, 156, 64, 178, 75, 112, 176, 179, 142, 126, 64, 180, 36, 187, 48, 181, 110, 96, 64, 182, 21, 192, 176, 183, 78, 66, 64, 184, 8, 23, 176, 185, 36, 233, 192, 185, 231, 249, 176, 187, 4, 203, 192, 187, 209, 22, 48, 189, 0, 93, 64, 189, 157, 49, 176, 190, 242, 180, 64, 191, 144, 218, 48, 192, 211, 231, 192, 193, 94, 71, 48, 194, 141, 142, 64, 195, 80, 158, 48, 196, 109, 112, 64, 197, 48, 128, 48, 198, 114, 60, 64, 199, 16, 98, 48, 200, 54, 110, 192, 200, 249, 126, 176, 202, 22, 80, 192, 202, 217, 96, 176, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 232, 241, 250, 208, 234, 6, 227, 224, 234, 209, 220, 208, 235, 230, 197, 224, 236, 177, 190, 208, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 128, 241, 171, 160, 255, 255, 255, 255, 154, 228, 222, 192, 255, 255, 255, 255, 155, 214, 19, 48, 255, 255, 255, 255, 158, 184, 133, 96, 255, 255, 255, 255, 159, 186, 221, 80, 255, 255, 255, 255, 162, 157, 23, 64, 255, 255, 255, 255, 163, 48, 177, 48, 255, 255, 255, 255, 164, 122, 86, 64, 255, 255, 255, 255, 165, 27, 31, 48, 255, 255, 255, 255, 166, 83, 160, 192, 255, 255, 255, 255, 166, 252, 82, 176, 255, 255, 255, 255, 168, 60, 189, 64, 255, 255, 255, 255, 168, 220, 52, 176, 255, 255, 255, 255, 170, 28, 159, 64, 255, 255, 255, 255, 170, 205, 58, 48, 255, 255, 255, 255, 171, 252, 129, 64, 255, 255, 255, 255, 172, 191, 145, 48, 255, 255, 255, 255, 173, 238, 216, 64, 255, 255, 255, 255, 174, 140, 254, 48, 255, 255, 255, 255, 175, 188, 69, 64, 255, 255, 255, 255, 176, 127, 85, 48, 255, 255, 255, 255, 177, 174, 156, 64, 255, 255, 255, 255, 178, 75, 112, 176, 255, 255, 255, 255, 179, 142, 126, 64, 255, 255, 255, 255, 180, 36, 187, 48, 255, 255, 255, 255, 181, 110, 96, 64, 255, 255, 255, 255, 182, 21, 192, 176, 255, 255, 255, 255, 183, 78, 66, 64, 255, 255, 255, 255, 184, 8, 23, 176, 255, 255, 255, 255, 185, 36, 233, 192, 255, 255, 255, 255, 185, 231, 249, 176, 255, 255, 255, 255, 187, 4, 203, 192, 255, 255, 255, 255, 187, 209, 22, 48, 255, 255, 255, 255, 189, 0, 93, 64, 255, 255, 255, 255, 189, 157, 49, 176, 255, 255, 255, 255, 190, 242, 180, 64, 255, 255, 255, 255, 191, 144, 218, 48, 255, 255, 255, 255, 192, 211, 231, 192, 255, 255, 255, 255, 193, 94, 71, 48, 255, 255, 255, 255, 194, 141, 142, 64, 255, 255, 255, 255, 195, 80, 158, 48, 255, 255, 255, 255, 196, 109, 112, 64, 255, 255, 255, 255, 197, 48, 128, 48, 255, 255, 255, 255, 198, 114, 60, 64, 255, 255, 255, 255, 199, 16, 98, 48, 255, 255, 255, 255, 200, 54, 110, 192, 255, 255, 255, 255, 200, 249, 126, 176, 255, 255, 255, 255, 202, 22, 80, 192, 255, 255, 255, 255, 202, 217, 96, 176, 255, 255, 255, 255, 203, 136, 226, 96, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 255, 255, 255, 255, 211, 117, 214, 224, 255, 255, 255, 255, 212, 64, 207, 208, 255, 255, 255, 255, 213, 85, 184, 224, 255, 255, 255, 255, 214, 32, 177, 208, 255, 255, 255, 255, 215, 53, 154, 224, 255, 255, 255, 255, 216, 0, 147, 208, 255, 255, 255, 255, 217, 21, 124, 224, 255, 255, 255, 255, 217, 224, 117, 208, 255, 255, 255, 255, 220, 222, 123, 96, 255, 255, 255, 255, 221, 169, 116, 80, 255, 255, 255, 255, 222, 190, 93, 96, 255, 255, 255, 255, 223, 137, 86, 80, 255, 255, 255, 255, 224, 158, 63, 96, 255, 255, 255, 255, 225, 105, 56, 80, 255, 255, 255, 255, 226, 126, 33, 96, 255, 255, 255, 255, 227, 73, 26, 80, 255, 255, 255, 255, 230, 71, 31, 224, 255, 255, 255, 255, 231, 18, 24, 208, 255, 255, 255, 255, 232, 39, 1, 224, 255, 255, 255, 255, 232, 241, 250, 208, 255, 255, 255, 255, 234, 6, 227, 224, 255, 255, 255, 255, 234, 209, 220, 208, 255, 255, 255, 255, 235, 230, 197, 224, 255, 255, 255, 255, 236, 177, 190, 208, 255, 255, 255, 255, 241, 143, 166, 96, 255, 255, 255, 255, 242, 127, 137, 80, 255, 255, 255, 255, 243, 111, 136, 96, 255, 255, 255, 255, 244, 95, 107, 80, 255, 255, 255, 255, 245, 79, 106, 96, 255, 255, 255, 255, 246, 63, 77, 80, 255, 255, 255, 255, 247, 47, 76, 96, 255, 255, 255, 255, 248, 40, 105, 208, 255, 255, 255, 255, 249, 15, 46, 96, 255, 255, 255, 255, 250, 8, 75, 208, 255, 255, 255, 255, 250, 248, 74, 224, 255, 255, 255, 255, 251, 232, 45, 208, 255, 255, 255, 255, 252, 216, 44, 224, 255, 255, 255, 255, 253, 200, 15, 208, 255, 255, 255, 255, 254, 184, 14, 224, 255, 255, 255, 255, 255, 167, 241, 208, 0, 0, 0, 0, 0, 151, 240, 224, 0, 0, 0, 0, 1, 135, 211, 208, 0, 0, 0, 0, 2, 119, 210, 224, 0, 0, 0, 0, 3, 112, 240, 80, 0, 0, 0, 0, 4, 96, 239, 96, 0, 0, 0, 0, 5, 80, 210, 80, 0, 0, 0, 0, 6, 64, 209, 96, 0, 0, 0, 0, 7, 48, 180, 80, 0, 0, 0, 0, 8, 32, 179, 96, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 10, 0, 149, 96, 0, 0, 0, 0, 10, 240, 120, 80, 0, 0, 0, 0, 11, 224, 119, 96, 0, 0, 0, 0, 12, 217, 148, 208, 0, 0, 0, 0, 13, 192, 89, 96, 0, 0, 0, 0, 14, 185, 118, 208, 0, 0, 0, 0, 15, 169, 117, 224, 0, 0, 0, 0, 16, 153, 88, 208, 0, 0, 0, 0, 17, 137, 87, 224, 0, 0, 0, 0, 18, 121, 58, 208, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 242, 224, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 161, 208, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 131, 208, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 101, 208, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 71, 208, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 41, 208, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 70, 80, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 40, 80, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 10, 80, 0, 0, 0, 0, 49, 103, 89, 224, 0, 0, 0, 0, 50, 114, 236, 80, 0, 0, 0, 0, 51, 71, 59, 224, 0, 0, 0, 0, 52, 82, 206, 80, 0, 0, 0, 0, 53, 39, 29, 224, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 55, 6, 255, 224, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 225, 224, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 195, 224, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 224, 96, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 194, 96, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 111, 164, 96, 0, 0, 0, 0, 65, 132, 113, 80, 0, 0, 0, 0, 66, 79, 134, 96, 0, 0, 0, 0, 67, 100, 83, 80, 0, 0, 0, 0, 68, 47, 104, 96, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 154, 224, 0, 0, 0, 0, 71, 45, 81, 208, 0, 0, 0, 0, 71, 211, 124, 224, 0, 0, 0, 0, 73, 13, 51, 208, 0, 0, 0, 0, 73, 179, 94, 224, 0, 0, 0, 0, 74, 237, 21, 208, 0, 0, 0, 0, 75, 156, 123, 96, 0, 0, 0, 0, 76, 214, 50, 80, 0, 0, 0, 0, 77, 124, 93, 96, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Havana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 172, 98, 194, 128, 177, 211, 148, 80, 178, 116, 93, 64, 200, 91, 102, 208, 200, 211, 81, 64, 202, 59, 72, 208, 202, 188, 109, 192, 204, 36, 101, 80, 204, 156, 79, 192, 209, 196, 11, 80, 210, 59, 245, 192, 211, 163, 237, 80, 212, 27, 215, 192, 247, 96, 5, 208, 247, 255, 125, 64, 249, 61, 68, 208, 249, 227, 83, 192, 250, 219, 59, 208, 251, 167, 134, 64, 252, 197, 169, 208, 253, 135, 104, 64, 254, 184, 0, 208, 255, 167, 227, 192, 0, 151, 226, 208, 1, 135, 197, 192, 2, 119, 196, 208, 3, 112, 226, 64, 4, 96, 225, 80, 5, 53, 20, 192, 6, 64, 195, 80, 7, 22, 72, 64, 8, 32, 165, 80, 8, 247, 123, 192, 10, 0, 135, 80, 10, 240, 106, 64, 11, 224, 105, 80, 12, 217, 134, 192, 13, 192, 75, 80, 14, 185, 104, 192, 15, 178, 162, 80, 16, 125, 155, 64, 17, 81, 234, 208, 18, 102, 183, 192, 19, 49, 204, 208, 20, 70, 153, 192, 21, 91, 130, 208, 22, 38, 123, 192, 23, 59, 100, 208, 24, 6, 93, 192, 25, 27, 70, 208, 25, 230, 63, 192, 26, 251, 40, 208, 27, 207, 92, 64, 28, 219, 10, 208, 29, 175, 62, 64, 30, 122, 83, 80, 31, 143, 32, 64, 32, 90, 53, 80, 33, 111, 2, 64, 34, 67, 81, 208, 35, 78, 228, 64, 36, 35, 51, 208, 37, 46, 198, 64, 38, 21, 138, 208, 39, 23, 226, 192, 39, 254, 167, 80, 40, 247, 210, 208, 41, 222, 137, 80, 42, 215, 180, 208, 43, 190, 107, 80, 44, 183, 150, 208, 45, 158, 77, 80, 46, 151, 120, 208, 47, 126, 47, 80, 48, 119, 90, 208, 49, 103, 75, 208, 50, 87, 60, 208, 51, 71, 45, 208, 52, 64, 89, 80, 53, 29, 213, 80, 54, 50, 176, 80, 54, 253, 183, 80, 56, 27, 204, 208, 56, 230, 211, 208, 57, 251, 174, 208, 58, 198, 181, 208, 59, 219, 144, 208, 60, 175, 210, 80, 61, 187, 114, 208, 62, 143, 180, 80, 63, 155, 84, 208, 64, 102, 91, 208, 69, 68, 53, 80, 69, 243, 140, 208, 71, 36, 23, 80, 71, 220, 169, 80, 73, 3, 249, 80, 73, 179, 80, 208, 74, 227, 219, 80, 75, 156, 109, 80, 76, 204, 247, 208, 77, 133, 137, 208, 78, 191, 78, 208, 79, 119, 224, 208, 80, 149, 246, 80, 81, 60, 19, 80, 82, 117, 216, 80, 83, 27, 245, 80, 84, 85, 186, 80, 84, 251, 215, 80, 86, 53, 156, 80, 86, 228, 243, 208, 88, 30, 184, 208, 88, 196, 213, 208, 89, 254, 154, 208, 90, 164, 183, 208, 91, 222, 124, 208, 92, 132, 153, 208, 93, 190, 94, 208, 94, 100, 123, 208, 95, 158, 64, 208, 96, 77, 152, 80, 97, 135, 93, 80, 98, 45, 122, 80, 99, 103, 63, 80, 100, 13, 92, 80, 101, 71, 33, 80, 101, 237, 62, 80, 103, 39, 3, 80, 103, 205, 32, 80, 105, 6, 229, 80, 105, 173, 2, 80, 106, 230, 199, 80, 107, 150, 30, 208, 108, 207, 227, 208, 109, 118, 0, 208, 110, 175, 197, 208, 111, 85, 226, 208, 112, 143, 167, 208, 113, 53, 196, 208, 114, 111, 137, 208, 115, 21, 166, 208, 116, 79, 107, 208, 116, 254, 195, 80, 118, 56, 136, 80, 118, 222, 165, 80, 120, 24, 106, 80, 120, 190, 135, 80, 121, 248, 76, 80, 122, 158, 105, 80, 123, 216, 46, 80, 124, 126, 75, 80, 125, 184, 16, 80, 126, 94, 45, 80, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 53, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 47, 48, 44, 77, 49, 49, 46, 49, 46, 48, 47, 49, 10}, + "zoneinfo/America/Havana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 172, 98, 194, 128, 177, 211, 148, 80, 178, 116, 93, 64, 200, 91, 102, 208, 200, 211, 81, 64, 202, 59, 72, 208, 202, 188, 109, 192, 204, 36, 101, 80, 204, 156, 79, 192, 209, 196, 11, 80, 210, 59, 245, 192, 211, 163, 237, 80, 212, 27, 215, 192, 247, 96, 5, 208, 247, 255, 125, 64, 249, 61, 68, 208, 249, 227, 83, 192, 250, 219, 59, 208, 251, 167, 134, 64, 252, 197, 169, 208, 253, 135, 104, 64, 254, 184, 0, 208, 255, 167, 227, 192, 0, 151, 226, 208, 1, 135, 197, 192, 2, 119, 196, 208, 3, 112, 226, 64, 4, 96, 225, 80, 5, 53, 20, 192, 6, 64, 195, 80, 7, 22, 72, 64, 8, 32, 165, 80, 8, 247, 123, 192, 10, 0, 135, 80, 10, 240, 106, 64, 11, 224, 105, 80, 12, 217, 134, 192, 13, 192, 75, 80, 14, 185, 104, 192, 15, 178, 162, 80, 16, 125, 155, 64, 17, 81, 234, 208, 18, 102, 183, 192, 19, 49, 204, 208, 20, 70, 153, 192, 21, 91, 130, 208, 22, 38, 123, 192, 23, 59, 100, 208, 24, 6, 93, 192, 25, 27, 70, 208, 25, 230, 63, 192, 26, 251, 40, 208, 27, 207, 92, 64, 28, 219, 10, 208, 29, 175, 62, 64, 30, 122, 83, 80, 31, 143, 32, 64, 32, 90, 53, 80, 33, 111, 2, 64, 34, 67, 81, 208, 35, 78, 228, 64, 36, 35, 51, 208, 37, 46, 198, 64, 38, 21, 138, 208, 39, 23, 226, 192, 39, 254, 167, 80, 40, 247, 210, 208, 41, 222, 137, 80, 42, 215, 180, 208, 43, 190, 107, 80, 44, 183, 150, 208, 45, 158, 77, 80, 46, 151, 120, 208, 47, 126, 47, 80, 48, 119, 90, 208, 49, 103, 75, 208, 50, 87, 60, 208, 51, 71, 45, 208, 52, 64, 89, 80, 53, 29, 213, 80, 54, 50, 176, 80, 54, 253, 183, 80, 56, 27, 204, 208, 56, 230, 211, 208, 57, 251, 174, 208, 58, 198, 181, 208, 59, 219, 144, 208, 60, 175, 210, 80, 61, 187, 114, 208, 62, 143, 180, 80, 63, 155, 84, 208, 64, 102, 91, 208, 69, 68, 53, 80, 69, 243, 140, 208, 71, 36, 23, 80, 71, 220, 169, 80, 73, 3, 249, 80, 73, 179, 80, 208, 74, 227, 219, 80, 75, 156, 109, 80, 76, 204, 247, 208, 77, 133, 137, 208, 78, 191, 78, 208, 79, 119, 224, 208, 80, 149, 246, 80, 81, 60, 19, 80, 82, 117, 216, 80, 83, 27, 245, 80, 84, 85, 186, 80, 84, 251, 215, 80, 86, 53, 156, 80, 86, 228, 243, 208, 88, 30, 184, 208, 88, 196, 213, 208, 89, 254, 154, 208, 90, 164, 183, 208, 91, 222, 124, 208, 92, 132, 153, 208, 93, 190, 94, 208, 94, 100, 123, 208, 95, 158, 64, 208, 96, 77, 152, 80, 97, 135, 93, 80, 98, 45, 122, 80, 99, 103, 63, 80, 100, 13, 92, 80, 101, 71, 33, 80, 101, 237, 62, 80, 103, 39, 3, 80, 103, 205, 32, 80, 105, 6, 229, 80, 105, 173, 2, 80, 106, 230, 199, 80, 107, 150, 30, 208, 108, 207, 227, 208, 109, 118, 0, 208, 110, 175, 197, 208, 111, 85, 226, 208, 112, 143, 167, 208, 113, 53, 196, 208, 114, 111, 137, 208, 115, 21, 166, 208, 116, 79, 107, 208, 116, 254, 195, 80, 118, 56, 136, 80, 118, 222, 165, 80, 120, 24, 106, 80, 120, 190, 135, 80, 121, 248, 76, 80, 122, 158, 105, 80, 123, 216, 46, 80, 124, 126, 75, 80, 125, 184, 16, 80, 126, 94, 45, 80, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 40, 184, 255, 255, 255, 255, 172, 98, 194, 128, 255, 255, 255, 255, 177, 211, 148, 80, 255, 255, 255, 255, 178, 116, 93, 64, 255, 255, 255, 255, 200, 91, 102, 208, 255, 255, 255, 255, 200, 211, 81, 64, 255, 255, 255, 255, 202, 59, 72, 208, 255, 255, 255, 255, 202, 188, 109, 192, 255, 255, 255, 255, 204, 36, 101, 80, 255, 255, 255, 255, 204, 156, 79, 192, 255, 255, 255, 255, 209, 196, 11, 80, 255, 255, 255, 255, 210, 59, 245, 192, 255, 255, 255, 255, 211, 163, 237, 80, 255, 255, 255, 255, 212, 27, 215, 192, 255, 255, 255, 255, 247, 96, 5, 208, 255, 255, 255, 255, 247, 255, 125, 64, 255, 255, 255, 255, 249, 61, 68, 208, 255, 255, 255, 255, 249, 227, 83, 192, 255, 255, 255, 255, 250, 219, 59, 208, 255, 255, 255, 255, 251, 167, 134, 64, 255, 255, 255, 255, 252, 197, 169, 208, 255, 255, 255, 255, 253, 135, 104, 64, 255, 255, 255, 255, 254, 184, 0, 208, 255, 255, 255, 255, 255, 167, 227, 192, 0, 0, 0, 0, 0, 151, 226, 208, 0, 0, 0, 0, 1, 135, 197, 192, 0, 0, 0, 0, 2, 119, 196, 208, 0, 0, 0, 0, 3, 112, 226, 64, 0, 0, 0, 0, 4, 96, 225, 80, 0, 0, 0, 0, 5, 53, 20, 192, 0, 0, 0, 0, 6, 64, 195, 80, 0, 0, 0, 0, 7, 22, 72, 64, 0, 0, 0, 0, 8, 32, 165, 80, 0, 0, 0, 0, 8, 247, 123, 192, 0, 0, 0, 0, 10, 0, 135, 80, 0, 0, 0, 0, 10, 240, 106, 64, 0, 0, 0, 0, 11, 224, 105, 80, 0, 0, 0, 0, 12, 217, 134, 192, 0, 0, 0, 0, 13, 192, 75, 80, 0, 0, 0, 0, 14, 185, 104, 192, 0, 0, 0, 0, 15, 178, 162, 80, 0, 0, 0, 0, 16, 125, 155, 64, 0, 0, 0, 0, 17, 81, 234, 208, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 49, 204, 208, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 91, 130, 208, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 23, 59, 100, 208, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 25, 27, 70, 208, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 251, 40, 208, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 219, 10, 208, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 122, 83, 80, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 90, 53, 80, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 67, 81, 208, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 35, 51, 208, 0, 0, 0, 0, 37, 46, 198, 64, 0, 0, 0, 0, 38, 21, 138, 208, 0, 0, 0, 0, 39, 23, 226, 192, 0, 0, 0, 0, 39, 254, 167, 80, 0, 0, 0, 0, 40, 247, 210, 208, 0, 0, 0, 0, 41, 222, 137, 80, 0, 0, 0, 0, 42, 215, 180, 208, 0, 0, 0, 0, 43, 190, 107, 80, 0, 0, 0, 0, 44, 183, 150, 208, 0, 0, 0, 0, 45, 158, 77, 80, 0, 0, 0, 0, 46, 151, 120, 208, 0, 0, 0, 0, 47, 126, 47, 80, 0, 0, 0, 0, 48, 119, 90, 208, 0, 0, 0, 0, 49, 103, 75, 208, 0, 0, 0, 0, 50, 87, 60, 208, 0, 0, 0, 0, 51, 71, 45, 208, 0, 0, 0, 0, 52, 64, 89, 80, 0, 0, 0, 0, 53, 29, 213, 80, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 54, 253, 183, 80, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 211, 208, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 181, 208, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 210, 80, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 180, 80, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 102, 91, 208, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 140, 208, 0, 0, 0, 0, 71, 36, 23, 80, 0, 0, 0, 0, 71, 220, 169, 80, 0, 0, 0, 0, 73, 3, 249, 80, 0, 0, 0, 0, 73, 179, 80, 208, 0, 0, 0, 0, 74, 227, 219, 80, 0, 0, 0, 0, 75, 156, 109, 80, 0, 0, 0, 0, 76, 204, 247, 208, 0, 0, 0, 0, 77, 133, 137, 208, 0, 0, 0, 0, 78, 191, 78, 208, 0, 0, 0, 0, 79, 119, 224, 208, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 19, 80, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 27, 245, 80, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 215, 80, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 228, 243, 208, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 213, 208, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 183, 208, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 153, 208, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 123, 208, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 152, 80, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 122, 80, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 92, 80, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 62, 80, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 32, 80, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 2, 80, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 30, 208, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 0, 208, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 226, 208, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 196, 208, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 166, 208, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 195, 80, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 165, 80, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 135, 80, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 105, 80, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 75, 80, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 45, 80, 0, 0, 0, 0, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 10, 67, 83, 84, 53, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 47, 48, 44, 77, 49, 49, 46, 49, 46, 48, 47, 49, 10}, - "zoneinfo/America/Hermosillo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 255, 255, 151, 248, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/America/Hermosillo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 255, 255, 151, 248, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 255, 255, 255, 255, 203, 234, 113, 96, 255, 255, 255, 255, 216, 145, 180, 240, 0, 0, 0, 0, 0, 0, 112, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 255, 255, 151, 248, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/America/Indiana/Indianapolis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Indianapolis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 202, 87, 34, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Knox": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Knox": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 87, 60, 240, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 159, 195, 112, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Marengo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 220, 222, 151, 128, 221, 169, 144, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 13, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Marengo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 220, 222, 151, 128, 221, 169, 144, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 13, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 18, 52, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 177, 218, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 145, 188, 240, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 13, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Petersburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 45, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Petersburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 45, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 228, 103, 61, 224, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 18, 52, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 177, 218, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 145, 188, 240, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 159, 195, 112, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 242, 127, 165, 112, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 245, 79, 134, 128, 255, 255, 255, 255, 246, 63, 105, 112, 255, 255, 255, 255, 247, 47, 104, 128, 255, 255, 255, 255, 250, 8, 103, 240, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 45, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Tell_City": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 9, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 113, 158, 240, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 169, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Tell_City": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 9, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 113, 158, 240, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 169, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 9, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 103, 61, 224, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 18, 52, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 177, 218, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 113, 158, 240, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 242, 127, 165, 112, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 245, 79, 134, 128, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 169, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Vevay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 226, 126, 61, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 176, 64, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Vevay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 226, 126, 61, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 176, 64, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 176, 64, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Vincennes": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 113, 158, 240, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 173, 241, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Vincennes": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 103, 61, 224, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 113, 158, 240, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 173, 241, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 103, 61, 224, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 18, 52, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 177, 218, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 113, 158, 240, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 242, 127, 165, 112, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 245, 79, 134, 128, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 173, 241, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indiana/Winamac": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 207, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indiana/Winamac": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 177, 218, 240, 237, 198, 196, 0, 238, 145, 188, 240, 239, 175, 224, 128, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 207, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 87, 60, 240, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 177, 218, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 145, 188, 240, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 174, 207, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Indianapolis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Indianapolis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 202, 87, 34, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Inuvik": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 5, 0, 0, 0, 21, 224, 6, 78, 128, 247, 47, 104, 128, 248, 40, 148, 0, 17, 137, 144, 32, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 143, 128, 0, 9, 255, 255, 157, 144, 0, 13, 255, 255, 171, 160, 1, 17, 45, 48, 48, 0, 80, 68, 68, 84, 0, 80, 83, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Inuvik": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 5, 0, 0, 0, 21, 224, 6, 78, 128, 247, 47, 104, 128, 248, 40, 148, 0, 17, 137, 144, 32, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 143, 128, 0, 9, 255, 255, 157, 144, 0, 13, 255, 255, 171, 160, 1, 17, 45, 48, 48, 0, 80, 68, 68, 84, 0, 80, 83, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 5, 0, 0, 0, 21, 255, 255, 255, 255, 224, 6, 78, 128, 255, 255, 255, 255, 247, 47, 104, 128, 255, 255, 255, 255, 248, 40, 148, 0, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 143, 128, 0, 9, 255, 255, 157, 144, 0, 13, 255, 255, 171, 160, 1, 17, 45, 48, 48, 0, 80, 68, 68, 84, 0, 80, 83, 84, 0, 77, 83, 84, 0, 77, 68, 84, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Iqaluit": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 10, 0, 0, 0, 33, 204, 108, 161, 128, 210, 35, 244, 112, 210, 96, 251, 224, 247, 47, 62, 80, 248, 40, 105, 208, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 5, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 6, 7, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 1, 17, 255, 255, 199, 192, 1, 21, 255, 255, 171, 160, 0, 25, 255, 255, 185, 176, 1, 29, 255, 255, 199, 192, 1, 17, 255, 255, 185, 176, 0, 8, 45, 48, 48, 0, 69, 80, 84, 0, 69, 83, 84, 0, 69, 68, 68, 84, 0, 69, 68, 84, 0, 69, 87, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Iqaluit": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 10, 0, 0, 0, 33, 204, 108, 161, 128, 210, 35, 244, 112, 210, 96, 251, 224, 247, 47, 62, 80, 248, 40, 105, 208, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 5, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 6, 7, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 1, 17, 255, 255, 199, 192, 1, 21, 255, 255, 171, 160, 0, 25, 255, 255, 185, 176, 1, 29, 255, 255, 199, 192, 1, 17, 255, 255, 185, 176, 0, 8, 45, 48, 48, 0, 69, 80, 84, 0, 69, 83, 84, 0, 69, 68, 68, 84, 0, 69, 68, 84, 0, 69, 87, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 10, 0, 0, 0, 33, 255, 255, 255, 255, 204, 108, 161, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 247, 47, 62, 80, 255, 255, 255, 255, 248, 40, 105, 208, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 5, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 6, 7, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 199, 192, 1, 17, 255, 255, 199, 192, 1, 21, 255, 255, 171, 160, 0, 25, 255, 255, 185, 176, 1, 29, 255, 255, 199, 192, 1, 17, 255, 255, 185, 176, 0, 8, 45, 48, 48, 0, 69, 80, 84, 0, 69, 83, 84, 0, 69, 68, 68, 84, 0, 69, 68, 84, 0, 69, 87, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Jamaica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 147, 15, 180, 254, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 2, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/America/Jamaica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 147, 15, 180, 254, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 2, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 35, 126, 255, 255, 255, 255, 147, 15, 180, 254, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 2, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/America/Jujuy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 42, 87, 192, 39, 226, 219, 176, 40, 238, 138, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Jujuy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 42, 87, 192, 39, 226, 219, 176, 40, 238, 138, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 174, 184, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 42, 87, 192, 0, 0, 0, 0, 39, 226, 219, 176, 0, 0, 0, 0, 40, 238, 138, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 4, 5, 4, 5, 3, 5, 4, 5, 5, 255, 255, 194, 200, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Juneau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 9, 0, 0, 0, 38, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 99, 32, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 4, 1, 4, 1, 4, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 211, 123, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Juneau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 9, 0, 0, 0, 38, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 99, 32, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 4, 1, 4, 1, 4, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 211, 123, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 10, 0, 0, 0, 38, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 50, 197, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 7, 141, 67, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 9, 173, 191, 32, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 99, 32, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 43, 20, 16, 0, 0, 0, 0, 26, 242, 66, 176, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 210, 36, 176, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 178, 6, 176, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 118, 57, 48, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 86, 27, 48, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 53, 253, 48, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 38, 21, 223, 48, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 254, 251, 176, 0, 0, 0, 0, 41, 10, 142, 32, 0, 0, 0, 0, 41, 222, 221, 176, 0, 0, 0, 0, 42, 234, 112, 32, 0, 0, 0, 0, 43, 190, 191, 176, 0, 0, 0, 0, 44, 211, 140, 160, 0, 0, 0, 0, 45, 158, 161, 176, 0, 0, 0, 0, 46, 179, 110, 160, 0, 0, 0, 0, 47, 126, 131, 176, 0, 0, 0, 0, 48, 147, 80, 160, 0, 0, 0, 0, 49, 103, 160, 48, 0, 0, 0, 0, 50, 115, 50, 160, 0, 0, 0, 0, 51, 71, 130, 48, 0, 0, 0, 0, 52, 83, 20, 160, 0, 0, 0, 0, 53, 39, 100, 48, 0, 0, 0, 0, 54, 50, 246, 160, 0, 0, 0, 0, 55, 7, 70, 48, 0, 0, 0, 0, 56, 28, 19, 32, 0, 0, 0, 0, 56, 231, 40, 48, 0, 0, 0, 0, 57, 251, 245, 32, 0, 0, 0, 0, 58, 199, 10, 48, 0, 0, 0, 0, 59, 219, 215, 32, 0, 0, 0, 0, 60, 176, 38, 176, 0, 0, 0, 0, 61, 187, 185, 32, 0, 0, 0, 0, 62, 144, 8, 176, 0, 0, 0, 0, 63, 155, 155, 32, 0, 0, 0, 0, 64, 111, 234, 176, 0, 0, 0, 0, 65, 132, 183, 160, 0, 0, 0, 0, 66, 79, 204, 176, 0, 0, 0, 0, 67, 100, 153, 160, 0, 0, 0, 0, 68, 47, 174, 176, 0, 0, 0, 0, 69, 68, 123, 160, 0, 0, 0, 0, 69, 243, 225, 48, 0, 0, 0, 0, 71, 45, 152, 32, 0, 0, 0, 0, 71, 211, 195, 48, 0, 0, 0, 0, 73, 13, 122, 32, 0, 0, 0, 0, 73, 179, 165, 48, 0, 0, 0, 0, 74, 237, 92, 32, 0, 0, 0, 0, 75, 156, 193, 176, 0, 0, 0, 0, 76, 214, 120, 160, 0, 0, 0, 0, 77, 124, 163, 176, 0, 0, 0, 0, 78, 182, 90, 160, 0, 0, 0, 0, 79, 92, 133, 176, 0, 0, 0, 0, 80, 150, 60, 160, 0, 0, 0, 0, 81, 60, 103, 176, 0, 0, 0, 0, 82, 118, 30, 160, 0, 0, 0, 0, 83, 28, 73, 176, 0, 0, 0, 0, 84, 86, 0, 160, 0, 0, 0, 0, 84, 252, 43, 176, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 6, 2, 5, 2, 5, 2, 5, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 211, 123, 0, 0, 255, 255, 129, 251, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Kentucky/Louisville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 164, 115, 247, 0, 165, 22, 17, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 210, 219, 151, 96, 211, 164, 9, 112, 213, 85, 213, 0, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 30, 144, 112, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Kentucky/Louisville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 164, 115, 247, 0, 165, 22, 17, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 210, 219, 151, 96, 211, 164, 9, 112, 213, 85, 213, 0, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 30, 144, 112, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 164, 115, 247, 0, 255, 255, 255, 255, 165, 22, 17, 112, 255, 255, 255, 255, 202, 13, 78, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 210, 219, 151, 96, 255, 255, 255, 255, 211, 164, 9, 112, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 233, 23, 0, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 246, 226, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 30, 144, 112, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Kentucky/Monticello": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 176, 116, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 199, 192, 1, 20, 255, 255, 185, 176, 0, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Kentucky/Monticello": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 176, 116, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 199, 192, 1, 20, 255, 255, 185, 176, 0, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 176, 116, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 199, 192, 1, 20, 255, 255, 185, 176, 0, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Knox_IN": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Knox_IN": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 87, 60, 240, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 159, 195, 112, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Kralendijk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Kralendijk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 147, 30, 46, 35, 255, 255, 255, 255, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/La_Paz": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 184, 30, 150, 228, 184, 238, 213, 212, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 192, 28, 0, 0, 255, 255, 192, 28, 0, 4, 255, 255, 206, 44, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 66, 83, 84, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/America/La_Paz": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 184, 30, 150, 228, 184, 238, 213, 212, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 192, 28, 0, 0, 255, 255, 192, 28, 0, 4, 255, 255, 206, 44, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 66, 83, 84, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 27, 100, 255, 255, 255, 255, 184, 30, 150, 228, 255, 255, 255, 255, 184, 238, 213, 212, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 192, 28, 0, 0, 255, 255, 192, 28, 0, 4, 255, 255, 206, 44, 1, 8, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 66, 83, 84, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Lima": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 140, 116, 64, 212, 195, 207, 74, 80, 196, 69, 227, 64, 197, 47, 74, 208, 198, 31, 45, 192, 199, 15, 44, 208, 199, 255, 15, 192, 30, 24, 196, 80, 30, 143, 93, 64, 31, 249, 247, 208, 32, 112, 144, 192, 37, 158, 227, 208, 38, 21, 124, 192, 45, 37, 3, 80, 45, 155, 156, 64, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 255, 255, 183, 196, 0, 0, 255, 255, 183, 172, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/America/Lima": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 140, 116, 64, 212, 195, 207, 74, 80, 196, 69, 227, 64, 197, 47, 74, 208, 198, 31, 45, 192, 199, 15, 44, 208, 199, 255, 15, 192, 30, 24, 196, 80, 30, 143, 93, 64, 31, 249, 247, 208, 32, 112, 144, 192, 37, 158, 227, 208, 38, 21, 124, 192, 45, 37, 3, 80, 45, 155, 156, 64, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 255, 255, 183, 196, 0, 0, 255, 255, 183, 172, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 105, 135, 35, 188, 255, 255, 255, 255, 140, 116, 64, 212, 255, 255, 255, 255, 195, 207, 74, 80, 255, 255, 255, 255, 196, 69, 227, 64, 255, 255, 255, 255, 197, 47, 74, 208, 255, 255, 255, 255, 198, 31, 45, 192, 255, 255, 255, 255, 199, 15, 44, 208, 255, 255, 255, 255, 199, 255, 15, 192, 0, 0, 0, 0, 30, 24, 196, 80, 0, 0, 0, 0, 30, 143, 93, 64, 0, 0, 0, 0, 31, 249, 247, 208, 0, 0, 0, 0, 32, 112, 144, 192, 0, 0, 0, 0, 37, 158, 227, 208, 0, 0, 0, 0, 38, 21, 124, 192, 0, 0, 0, 0, 45, 37, 3, 80, 0, 0, 0, 0, 45, 155, 156, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 255, 255, 183, 196, 0, 0, 255, 255, 183, 172, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/America/Los_Angeles": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 214, 254, 116, 92, 216, 128, 173, 144, 218, 254, 195, 144, 219, 192, 144, 16, 220, 222, 165, 144, 221, 169, 172, 144, 222, 190, 135, 144, 223, 137, 142, 144, 224, 158, 105, 144, 225, 105, 112, 144, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 239, 175, 238, 144, 240, 113, 187, 16, 241, 143, 208, 144, 242, 127, 193, 144, 243, 111, 178, 144, 244, 95, 163, 144, 245, 79, 148, 144, 246, 63, 133, 144, 247, 47, 118, 144, 248, 40, 162, 16, 249, 15, 88, 144, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Los_Angeles": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 214, 254, 116, 92, 216, 128, 173, 144, 218, 254, 195, 144, 219, 192, 144, 16, 220, 222, 165, 144, 221, 169, 172, 144, 222, 190, 135, 144, 223, 137, 142, 144, 224, 158, 105, 144, 225, 105, 112, 144, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 239, 175, 238, 144, 240, 113, 187, 16, 241, 143, 208, 144, 242, 127, 193, 144, 243, 111, 178, 144, 244, 95, 163, 144, 245, 79, 148, 144, 246, 63, 133, 144, 247, 47, 118, 144, 248, 40, 162, 16, 249, 15, 88, 144, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 4, 26, 192, 255, 255, 255, 255, 158, 166, 72, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 160, 134, 42, 160, 255, 255, 255, 255, 161, 154, 247, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 214, 254, 116, 92, 255, 255, 255, 255, 216, 128, 173, 144, 255, 255, 255, 255, 218, 254, 195, 144, 255, 255, 255, 255, 219, 192, 144, 16, 255, 255, 255, 255, 220, 222, 165, 144, 255, 255, 255, 255, 221, 169, 172, 144, 255, 255, 255, 255, 222, 190, 135, 144, 255, 255, 255, 255, 223, 137, 142, 144, 255, 255, 255, 255, 224, 158, 105, 144, 255, 255, 255, 255, 225, 105, 112, 144, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 14, 16, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 217, 16, 255, 255, 255, 255, 239, 175, 238, 144, 255, 255, 255, 255, 240, 113, 187, 16, 255, 255, 255, 255, 241, 143, 208, 144, 255, 255, 255, 255, 242, 127, 193, 144, 255, 255, 255, 255, 243, 111, 178, 144, 255, 255, 255, 255, 244, 95, 163, 144, 255, 255, 255, 255, 245, 79, 148, 144, 255, 255, 255, 255, 246, 63, 133, 144, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 249, 15, 88, 144, 255, 255, 255, 255, 250, 8, 132, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 7, 141, 67, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 9, 173, 191, 32, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Louisville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 164, 115, 247, 0, 165, 22, 17, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 210, 219, 151, 96, 211, 164, 9, 112, 213, 85, 213, 0, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 30, 144, 112, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Louisville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 164, 115, 247, 0, 165, 22, 17, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 210, 219, 151, 96, 211, 164, 9, 112, 213, 85, 213, 0, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 30, 144, 112, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 178, 112, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 164, 115, 247, 0, 255, 255, 255, 255, 165, 22, 17, 112, 255, 255, 255, 255, 202, 13, 78, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 210, 219, 151, 96, 255, 255, 255, 255, 211, 164, 9, 112, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 233, 23, 0, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 246, 226, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 30, 144, 112, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 154, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Lower_Princes": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Lower_Princes": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 147, 30, 46, 35, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 147, 30, 46, 35, 255, 255, 255, 255, 246, 152, 236, 72, 1, 2, 255, 255, 191, 93, 0, 0, 255, 255, 192, 184, 0, 4, 255, 255, 199, 192, 0, 10, 76, 77, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Maceio": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 104, 124, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 48, 128, 121, 48, 49, 29, 77, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 242, 74, 32, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 222, 132, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Maceio": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 104, 124, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 48, 128, 121, 48, 49, 29, 77, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 242, 74, 32, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 222, 132, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 104, 124, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 151, 255, 176, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 48, 128, 121, 48, 0, 0, 0, 0, 49, 29, 77, 160, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 57, 242, 74, 32, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 222, 132, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Managua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 189, 45, 72, 232, 6, 67, 116, 96, 9, 164, 62, 80, 17, 81, 248, 224, 17, 212, 111, 80, 19, 49, 218, 224, 19, 180, 81, 80, 41, 97, 145, 32, 42, 193, 75, 80, 43, 67, 221, 224, 50, 201, 239, 80, 66, 88, 192, 224, 67, 63, 105, 80, 68, 84, 110, 128, 69, 31, 89, 96, 1, 2, 3, 2, 4, 2, 4, 2, 3, 2, 3, 2, 4, 2, 4, 2, 255, 255, 175, 28, 0, 0, 255, 255, 175, 24, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Managua": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 189, 45, 72, 232, 6, 67, 116, 96, 9, 164, 62, 80, 17, 81, 248, 224, 17, 212, 111, 80, 19, 49, 218, 224, 19, 180, 81, 80, 41, 97, 145, 32, 42, 193, 75, 80, 43, 67, 221, 224, 50, 201, 239, 80, 66, 88, 192, 224, 67, 63, 105, 80, 68, 84, 110, 128, 69, 31, 89, 96, 1, 2, 3, 2, 4, 2, 4, 2, 3, 2, 3, 2, 4, 2, 4, 2, 255, 255, 175, 28, 0, 0, 255, 255, 175, 24, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 44, 100, 255, 255, 255, 255, 189, 45, 72, 232, 0, 0, 0, 0, 6, 67, 116, 96, 0, 0, 0, 0, 9, 164, 62, 80, 0, 0, 0, 0, 17, 81, 248, 224, 0, 0, 0, 0, 17, 212, 111, 80, 0, 0, 0, 0, 19, 49, 218, 224, 0, 0, 0, 0, 19, 180, 81, 80, 0, 0, 0, 0, 41, 97, 145, 32, 0, 0, 0, 0, 42, 193, 75, 80, 0, 0, 0, 0, 43, 67, 221, 224, 0, 0, 0, 0, 50, 201, 239, 80, 0, 0, 0, 0, 66, 88, 192, 224, 0, 0, 0, 0, 67, 63, 105, 80, 0, 0, 0, 0, 68, 84, 110, 128, 0, 0, 0, 0, 69, 31, 89, 96, 1, 2, 3, 2, 4, 2, 4, 2, 3, 2, 3, 2, 4, 2, 4, 2, 255, 255, 175, 28, 0, 0, 255, 255, 175, 24, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Manaus": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 127, 68, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 44, 192, 195, 64, 45, 102, 210, 48, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/America/Manaus": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 127, 68, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 44, 192, 195, 64, 45, 102, 210, 48, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 127, 68, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 44, 192, 195, 64, 0, 0, 0, 0, 45, 102, 210, 48, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Marigot": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Marigot": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Martinique": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 145, 163, 200, 68, 19, 77, 110, 64, 20, 52, 22, 176, 1, 2, 3, 2, 255, 255, 198, 188, 0, 0, 255, 255, 198, 188, 0, 4, 255, 255, 199, 192, 0, 9, 255, 255, 213, 208, 1, 13, 76, 77, 84, 0, 70, 70, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Martinique": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 17, 128, 0, 0, 0, 145, 163, 200, 68, 19, 77, 110, 64, 20, 52, 22, 176, 1, 2, 3, 2, 255, 255, 198, 188, 0, 0, 255, 255, 198, 188, 0, 4, 255, 255, 199, 192, 0, 9, 255, 255, 213, 208, 1, 13, 76, 77, 84, 0, 70, 70, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 17, 255, 255, 255, 255, 105, 135, 20, 196, 255, 255, 255, 255, 145, 163, 200, 68, 0, 0, 0, 0, 19, 77, 110, 64, 0, 0, 0, 0, 20, 52, 22, 176, 1, 2, 3, 2, 255, 255, 198, 188, 0, 0, 255, 255, 198, 188, 0, 4, 255, 255, 199, 192, 0, 9, 255, 255, 213, 208, 1, 13, 76, 77, 84, 0, 70, 70, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Matamoros": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 3, 0, 0, 0, 12, 165, 182, 218, 96, 34, 85, 241, 0, 35, 106, 189, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 162, 64, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Matamoros": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 3, 0, 0, 0, 12, 165, 182, 218, 96, 34, 85, 241, 0, 35, 106, 189, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 162, 64, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 165, 182, 218, 96, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 245, 4, 128, 0, 0, 0, 0, 59, 182, 194, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 70, 15, 102, 128, 0, 0, 0, 0, 71, 36, 51, 112, 0, 0, 0, 0, 71, 248, 131, 0, 0, 0, 0, 0, 73, 4, 21, 112, 0, 0, 0, 0, 73, 216, 101, 0, 0, 0, 0, 0, 74, 227, 247, 112, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 162, 64, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Mazatlan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/America/Mazatlan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 255, 255, 255, 255, 203, 234, 113, 96, 255, 255, 255, 255, 216, 145, 180, 240, 0, 0, 0, 0, 0, 0, 112, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 245, 18, 144, 0, 0, 0, 0, 59, 182, 209, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 70, 15, 116, 144, 0, 0, 0, 0, 71, 36, 65, 128, 0, 0, 0, 0, 71, 248, 145, 16, 0, 0, 0, 0, 73, 4, 35, 128, 0, 0, 0, 0, 73, 216, 115, 16, 0, 0, 0, 0, 74, 228, 5, 128, 0, 0, 0, 0, 75, 184, 85, 16, 0, 0, 0, 0, 76, 205, 34, 0, 0, 0, 0, 0, 77, 152, 55, 16, 0, 0, 0, 0, 78, 173, 4, 0, 0, 0, 0, 0, 79, 120, 25, 16, 0, 0, 0, 0, 80, 140, 230, 0, 0, 0, 0, 0, 81, 97, 53, 144, 0, 0, 0, 0, 82, 108, 200, 0, 0, 0, 0, 0, 83, 65, 23, 144, 0, 0, 0, 0, 84, 76, 170, 0, 0, 0, 0, 0, 85, 32, 249, 144, 0, 0, 0, 0, 86, 44, 140, 0, 0, 0, 0, 0, 87, 0, 219, 144, 0, 0, 0, 0, 88, 21, 168, 128, 0, 0, 0, 0, 88, 224, 189, 144, 0, 0, 0, 0, 89, 245, 138, 128, 0, 0, 0, 0, 90, 192, 159, 144, 0, 0, 0, 0, 91, 213, 108, 128, 0, 0, 0, 0, 92, 169, 188, 16, 0, 0, 0, 0, 93, 181, 78, 128, 0, 0, 0, 0, 94, 137, 158, 16, 0, 0, 0, 0, 95, 149, 48, 128, 0, 0, 0, 0, 96, 105, 128, 16, 0, 0, 0, 0, 97, 126, 77, 0, 0, 0, 0, 0, 98, 73, 98, 16, 0, 0, 0, 0, 99, 94, 47, 0, 0, 0, 0, 0, 100, 41, 68, 16, 0, 0, 0, 0, 101, 62, 17, 0, 0, 0, 0, 0, 102, 18, 96, 144, 0, 0, 0, 0, 103, 29, 243, 0, 0, 0, 0, 0, 103, 242, 66, 144, 0, 0, 0, 0, 104, 253, 213, 0, 0, 0, 0, 0, 105, 210, 36, 144, 0, 0, 0, 0, 106, 221, 183, 0, 0, 0, 0, 0, 107, 178, 6, 144, 0, 0, 0, 0, 108, 198, 211, 128, 0, 0, 0, 0, 109, 145, 232, 144, 0, 0, 0, 0, 110, 166, 181, 128, 0, 0, 0, 0, 111, 113, 202, 144, 0, 0, 0, 0, 112, 134, 151, 128, 0, 0, 0, 0, 113, 90, 231, 16, 0, 0, 0, 0, 114, 102, 121, 128, 0, 0, 0, 0, 115, 58, 201, 16, 0, 0, 0, 0, 116, 70, 91, 128, 0, 0, 0, 0, 117, 26, 171, 16, 0, 0, 0, 0, 118, 47, 120, 0, 0, 0, 0, 0, 118, 250, 141, 16, 0, 0, 0, 0, 120, 15, 90, 0, 0, 0, 0, 0, 120, 218, 111, 16, 0, 0, 0, 0, 121, 239, 60, 0, 0, 0, 0, 0, 122, 186, 81, 16, 0, 0, 0, 0, 123, 207, 30, 0, 0, 0, 0, 0, 124, 163, 109, 144, 0, 0, 0, 0, 125, 175, 0, 0, 0, 0, 0, 0, 126, 131, 79, 144, 0, 0, 0, 0, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/America/Mendoza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 250, 103, 192, 41, 176, 72, 176, 42, 224, 225, 64, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 176, 19, 176, 65, 86, 62, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Mendoza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 25, 52, 64, 39, 205, 195, 176, 40, 250, 103, 192, 41, 176, 72, 176, 42, 224, 225, 64, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 64, 176, 19, 176, 65, 86, 62, 192, 71, 119, 9, 176, 71, 220, 127, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 178, 4, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 25, 52, 64, 0, 0, 0, 0, 39, 205, 195, 176, 0, 0, 0, 0, 40, 250, 103, 192, 0, 0, 0, 0, 41, 176, 72, 176, 0, 0, 0, 0, 42, 224, 225, 64, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 64, 176, 19, 176, 0, 0, 0, 0, 65, 86, 62, 192, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 2, 3, 2, 3, 2, 4, 5, 3, 5, 2, 5, 4, 5, 5, 255, 255, 191, 124, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Menominee": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 249, 15, 74, 128, 250, 8, 103, 240, 254, 184, 43, 0, 6, 64, 223, 112, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 221, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Menominee": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 249, 15, 74, 128, 250, 8, 103, 240, 254, 184, 43, 0, 6, 64, 223, 112, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 221, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 97, 119, 73, 99, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 249, 15, 74, 128, 255, 255, 255, 255, 250, 8, 103, 240, 255, 255, 255, 255, 254, 184, 43, 0, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 221, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Merida": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 5, 0, 0, 0, 16, 165, 182, 218, 96, 22, 134, 213, 96, 24, 76, 75, 80, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 255, 255, 171, 252, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/America/Merida": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 5, 0, 0, 0, 16, 165, 182, 218, 96, 22, 134, 213, 96, 24, 76, 75, 80, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 255, 255, 171, 252, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 165, 182, 218, 96, 0, 0, 0, 0, 22, 134, 213, 96, 0, 0, 0, 0, 24, 76, 75, 80, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 245, 4, 128, 0, 0, 0, 0, 59, 182, 194, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 70, 15, 102, 128, 0, 0, 0, 0, 71, 36, 51, 112, 0, 0, 0, 0, 71, 248, 131, 0, 0, 0, 0, 0, 73, 4, 21, 112, 0, 0, 0, 0, 73, 216, 101, 0, 0, 0, 0, 0, 74, 227, 247, 112, 0, 0, 0, 0, 75, 184, 71, 0, 0, 0, 0, 0, 76, 205, 19, 240, 0, 0, 0, 0, 77, 152, 41, 0, 0, 0, 0, 0, 78, 172, 245, 240, 0, 0, 0, 0, 79, 120, 11, 0, 0, 0, 0, 0, 80, 140, 215, 240, 0, 0, 0, 0, 81, 97, 39, 128, 0, 0, 0, 0, 82, 108, 185, 240, 0, 0, 0, 0, 83, 65, 9, 128, 0, 0, 0, 0, 84, 76, 155, 240, 0, 0, 0, 0, 85, 32, 235, 128, 0, 0, 0, 0, 86, 44, 125, 240, 0, 0, 0, 0, 87, 0, 205, 128, 0, 0, 0, 0, 88, 21, 154, 112, 0, 0, 0, 0, 88, 224, 175, 128, 0, 0, 0, 0, 89, 245, 124, 112, 0, 0, 0, 0, 90, 192, 145, 128, 0, 0, 0, 0, 91, 213, 94, 112, 0, 0, 0, 0, 92, 169, 174, 0, 0, 0, 0, 0, 93, 181, 64, 112, 0, 0, 0, 0, 94, 137, 144, 0, 0, 0, 0, 0, 95, 149, 34, 112, 0, 0, 0, 0, 96, 105, 114, 0, 0, 0, 0, 0, 97, 126, 62, 240, 0, 0, 0, 0, 98, 73, 84, 0, 0, 0, 0, 0, 99, 94, 32, 240, 0, 0, 0, 0, 100, 41, 54, 0, 0, 0, 0, 0, 101, 62, 2, 240, 0, 0, 0, 0, 102, 18, 82, 128, 0, 0, 0, 0, 103, 29, 228, 240, 0, 0, 0, 0, 103, 242, 52, 128, 0, 0, 0, 0, 104, 253, 198, 240, 0, 0, 0, 0, 105, 210, 22, 128, 0, 0, 0, 0, 106, 221, 168, 240, 0, 0, 0, 0, 107, 177, 248, 128, 0, 0, 0, 0, 108, 198, 197, 112, 0, 0, 0, 0, 109, 145, 218, 128, 0, 0, 0, 0, 110, 166, 167, 112, 0, 0, 0, 0, 111, 113, 188, 128, 0, 0, 0, 0, 112, 134, 137, 112, 0, 0, 0, 0, 113, 90, 217, 0, 0, 0, 0, 0, 114, 102, 107, 112, 0, 0, 0, 0, 115, 58, 187, 0, 0, 0, 0, 0, 116, 70, 77, 112, 0, 0, 0, 0, 117, 26, 157, 0, 0, 0, 0, 0, 118, 47, 105, 240, 0, 0, 0, 0, 118, 250, 127, 0, 0, 0, 0, 0, 120, 15, 75, 240, 0, 0, 0, 0, 120, 218, 97, 0, 0, 0, 0, 0, 121, 239, 45, 240, 0, 0, 0, 0, 122, 186, 67, 0, 0, 0, 0, 0, 123, 207, 15, 240, 0, 0, 0, 0, 124, 163, 95, 128, 0, 0, 0, 0, 125, 174, 241, 240, 0, 0, 0, 0, 126, 131, 65, 128, 0, 0, 0, 0, 127, 142, 211, 240, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 255, 255, 171, 252, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/America/Metlakatla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 7, 0, 0, 0, 30, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 6, 5, 6, 5, 6, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 214, 38, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 25, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 65, 75, 83, 84, 0, 65, 75, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Metlakatla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 7, 0, 0, 0, 30, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 68, 70, 160, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 6, 5, 6, 5, 6, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 214, 38, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 25, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 65, 75, 83, 84, 0, 65, 75, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 8, 0, 0, 0, 30, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 48, 26, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 7, 141, 67, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 9, 173, 191, 32, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 68, 70, 160, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 6, 7, 6, 7, 6, 7, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 0, 0, 214, 38, 0, 0, 255, 255, 132, 166, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 25, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 65, 75, 83, 84, 0, 65, 75, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Mexico_City": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 5, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 197, 222, 176, 96, 198, 151, 52, 80, 201, 85, 241, 224, 201, 234, 221, 80, 207, 2, 198, 224, 207, 183, 86, 80, 218, 153, 21, 224, 219, 118, 131, 208, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/America/Mexico_City": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 5, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 197, 222, 176, 96, 198, 151, 52, 80, 201, 85, 241, 224, 201, 234, 221, 80, 207, 2, 198, 224, 207, 183, 86, 80, 218, 153, 21, 224, 219, 118, 131, 208, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 255, 255, 255, 255, 197, 222, 176, 96, 255, 255, 255, 255, 198, 151, 52, 80, 255, 255, 255, 255, 201, 85, 241, 224, 255, 255, 255, 255, 201, 234, 221, 80, 255, 255, 255, 255, 207, 2, 198, 224, 255, 255, 255, 255, 207, 183, 86, 80, 255, 255, 255, 255, 218, 153, 21, 224, 255, 255, 255, 255, 219, 118, 131, 208, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 245, 4, 128, 0, 0, 0, 0, 59, 182, 194, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 70, 15, 102, 128, 0, 0, 0, 0, 71, 36, 51, 112, 0, 0, 0, 0, 71, 248, 131, 0, 0, 0, 0, 0, 73, 4, 21, 112, 0, 0, 0, 0, 73, 216, 101, 0, 0, 0, 0, 0, 74, 227, 247, 112, 0, 0, 0, 0, 75, 184, 71, 0, 0, 0, 0, 0, 76, 205, 19, 240, 0, 0, 0, 0, 77, 152, 41, 0, 0, 0, 0, 0, 78, 172, 245, 240, 0, 0, 0, 0, 79, 120, 11, 0, 0, 0, 0, 0, 80, 140, 215, 240, 0, 0, 0, 0, 81, 97, 39, 128, 0, 0, 0, 0, 82, 108, 185, 240, 0, 0, 0, 0, 83, 65, 9, 128, 0, 0, 0, 0, 84, 76, 155, 240, 0, 0, 0, 0, 85, 32, 235, 128, 0, 0, 0, 0, 86, 44, 125, 240, 0, 0, 0, 0, 87, 0, 205, 128, 0, 0, 0, 0, 88, 21, 154, 112, 0, 0, 0, 0, 88, 224, 175, 128, 0, 0, 0, 0, 89, 245, 124, 112, 0, 0, 0, 0, 90, 192, 145, 128, 0, 0, 0, 0, 91, 213, 94, 112, 0, 0, 0, 0, 92, 169, 174, 0, 0, 0, 0, 0, 93, 181, 64, 112, 0, 0, 0, 0, 94, 137, 144, 0, 0, 0, 0, 0, 95, 149, 34, 112, 0, 0, 0, 0, 96, 105, 114, 0, 0, 0, 0, 0, 97, 126, 62, 240, 0, 0, 0, 0, 98, 73, 84, 0, 0, 0, 0, 0, 99, 94, 32, 240, 0, 0, 0, 0, 100, 41, 54, 0, 0, 0, 0, 0, 101, 62, 2, 240, 0, 0, 0, 0, 102, 18, 82, 128, 0, 0, 0, 0, 103, 29, 228, 240, 0, 0, 0, 0, 103, 242, 52, 128, 0, 0, 0, 0, 104, 253, 198, 240, 0, 0, 0, 0, 105, 210, 22, 128, 0, 0, 0, 0, 106, 221, 168, 240, 0, 0, 0, 0, 107, 177, 248, 128, 0, 0, 0, 0, 108, 198, 197, 112, 0, 0, 0, 0, 109, 145, 218, 128, 0, 0, 0, 0, 110, 166, 167, 112, 0, 0, 0, 0, 111, 113, 188, 128, 0, 0, 0, 0, 112, 134, 137, 112, 0, 0, 0, 0, 113, 90, 217, 0, 0, 0, 0, 0, 114, 102, 107, 112, 0, 0, 0, 0, 115, 58, 187, 0, 0, 0, 0, 0, 116, 70, 77, 112, 0, 0, 0, 0, 117, 26, 157, 0, 0, 0, 0, 0, 118, 47, 105, 240, 0, 0, 0, 0, 118, 250, 127, 0, 0, 0, 0, 0, 120, 15, 75, 240, 0, 0, 0, 0, 120, 218, 97, 0, 0, 0, 0, 0, 121, 239, 45, 240, 0, 0, 0, 0, 122, 186, 67, 0, 0, 0, 0, 0, 123, 207, 15, 240, 0, 0, 0, 0, 124, 163, 95, 128, 0, 0, 0, 0, 125, 174, 241, 240, 0, 0, 0, 0, 126, 131, 65, 128, 0, 0, 0, 0, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/America/Miquelon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 4, 0, 0, 0, 16, 145, 182, 56, 168, 19, 110, 99, 192, 32, 117, 228, 208, 33, 129, 119, 64, 34, 85, 198, 208, 35, 106, 147, 192, 36, 53, 168, 208, 37, 74, 117, 192, 38, 21, 138, 208, 39, 42, 87, 192, 39, 254, 167, 80, 41, 10, 57, 192, 41, 222, 137, 80, 42, 234, 27, 192, 43, 190, 107, 80, 44, 211, 56, 64, 45, 158, 77, 80, 46, 179, 26, 64, 47, 126, 47, 80, 48, 146, 252, 64, 49, 103, 75, 208, 50, 114, 222, 64, 51, 71, 45, 208, 52, 82, 192, 64, 53, 39, 15, 208, 54, 50, 162, 64, 55, 6, 241, 208, 56, 27, 190, 192, 56, 230, 211, 208, 57, 251, 160, 192, 58, 198, 181, 208, 59, 219, 130, 192, 60, 175, 210, 80, 61, 187, 100, 192, 62, 143, 180, 80, 63, 155, 70, 192, 64, 111, 150, 80, 65, 132, 99, 64, 66, 79, 120, 80, 67, 100, 69, 64, 68, 47, 90, 80, 69, 68, 39, 64, 69, 243, 140, 208, 71, 45, 67, 192, 71, 211, 110, 208, 73, 13, 37, 192, 73, 179, 80, 208, 74, 237, 7, 192, 75, 156, 109, 80, 76, 214, 36, 64, 77, 124, 79, 80, 78, 182, 6, 64, 79, 92, 49, 80, 80, 149, 232, 64, 81, 60, 19, 80, 82, 117, 202, 64, 83, 27, 245, 80, 84, 85, 172, 64, 84, 251, 215, 80, 86, 53, 142, 64, 86, 228, 243, 208, 88, 30, 170, 192, 88, 196, 213, 208, 89, 254, 140, 192, 90, 164, 183, 208, 91, 222, 110, 192, 92, 132, 153, 208, 93, 190, 80, 192, 94, 100, 123, 208, 95, 158, 50, 192, 96, 77, 152, 80, 97, 135, 79, 64, 98, 45, 122, 80, 99, 103, 49, 64, 100, 13, 92, 80, 101, 71, 19, 64, 101, 237, 62, 80, 103, 38, 245, 64, 103, 205, 32, 80, 105, 6, 215, 64, 105, 173, 2, 80, 106, 230, 185, 64, 107, 150, 30, 208, 108, 207, 213, 192, 109, 118, 0, 208, 110, 175, 183, 192, 111, 85, 226, 208, 112, 143, 153, 192, 113, 53, 196, 208, 114, 111, 123, 192, 115, 21, 166, 208, 116, 79, 93, 192, 116, 254, 195, 80, 118, 56, 122, 64, 118, 222, 165, 80, 120, 24, 92, 64, 120, 190, 135, 80, 121, 248, 62, 64, 122, 158, 105, 80, 123, 216, 32, 64, 124, 126, 75, 80, 125, 184, 2, 64, 126, 94, 45, 80, 127, 151, 228, 64, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 203, 88, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 255, 255, 227, 224, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Miquelon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 4, 0, 0, 0, 16, 145, 182, 56, 168, 19, 110, 99, 192, 32, 117, 228, 208, 33, 129, 119, 64, 34, 85, 198, 208, 35, 106, 147, 192, 36, 53, 168, 208, 37, 74, 117, 192, 38, 21, 138, 208, 39, 42, 87, 192, 39, 254, 167, 80, 41, 10, 57, 192, 41, 222, 137, 80, 42, 234, 27, 192, 43, 190, 107, 80, 44, 211, 56, 64, 45, 158, 77, 80, 46, 179, 26, 64, 47, 126, 47, 80, 48, 146, 252, 64, 49, 103, 75, 208, 50, 114, 222, 64, 51, 71, 45, 208, 52, 82, 192, 64, 53, 39, 15, 208, 54, 50, 162, 64, 55, 6, 241, 208, 56, 27, 190, 192, 56, 230, 211, 208, 57, 251, 160, 192, 58, 198, 181, 208, 59, 219, 130, 192, 60, 175, 210, 80, 61, 187, 100, 192, 62, 143, 180, 80, 63, 155, 70, 192, 64, 111, 150, 80, 65, 132, 99, 64, 66, 79, 120, 80, 67, 100, 69, 64, 68, 47, 90, 80, 69, 68, 39, 64, 69, 243, 140, 208, 71, 45, 67, 192, 71, 211, 110, 208, 73, 13, 37, 192, 73, 179, 80, 208, 74, 237, 7, 192, 75, 156, 109, 80, 76, 214, 36, 64, 77, 124, 79, 80, 78, 182, 6, 64, 79, 92, 49, 80, 80, 149, 232, 64, 81, 60, 19, 80, 82, 117, 202, 64, 83, 27, 245, 80, 84, 85, 172, 64, 84, 251, 215, 80, 86, 53, 142, 64, 86, 228, 243, 208, 88, 30, 170, 192, 88, 196, 213, 208, 89, 254, 140, 192, 90, 164, 183, 208, 91, 222, 110, 192, 92, 132, 153, 208, 93, 190, 80, 192, 94, 100, 123, 208, 95, 158, 50, 192, 96, 77, 152, 80, 97, 135, 79, 64, 98, 45, 122, 80, 99, 103, 49, 64, 100, 13, 92, 80, 101, 71, 19, 64, 101, 237, 62, 80, 103, 38, 245, 64, 103, 205, 32, 80, 105, 6, 215, 64, 105, 173, 2, 80, 106, 230, 185, 64, 107, 150, 30, 208, 108, 207, 213, 192, 109, 118, 0, 208, 110, 175, 183, 192, 111, 85, 226, 208, 112, 143, 153, 192, 113, 53, 196, 208, 114, 111, 123, 192, 115, 21, 166, 208, 116, 79, 93, 192, 116, 254, 195, 80, 118, 56, 122, 64, 118, 222, 165, 80, 120, 24, 92, 64, 120, 190, 135, 80, 121, 248, 62, 64, 122, 158, 105, 80, 123, 216, 32, 64, 124, 126, 75, 80, 125, 184, 2, 64, 126, 94, 45, 80, 127, 151, 228, 64, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 203, 88, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 255, 255, 227, 224, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 145, 182, 56, 168, 0, 0, 0, 0, 19, 110, 99, 192, 0, 0, 0, 0, 32, 117, 228, 208, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 85, 198, 208, 0, 0, 0, 0, 35, 106, 147, 192, 0, 0, 0, 0, 36, 53, 168, 208, 0, 0, 0, 0, 37, 74, 117, 192, 0, 0, 0, 0, 38, 21, 138, 208, 0, 0, 0, 0, 39, 42, 87, 192, 0, 0, 0, 0, 39, 254, 167, 80, 0, 0, 0, 0, 41, 10, 57, 192, 0, 0, 0, 0, 41, 222, 137, 80, 0, 0, 0, 0, 42, 234, 27, 192, 0, 0, 0, 0, 43, 190, 107, 80, 0, 0, 0, 0, 44, 211, 56, 64, 0, 0, 0, 0, 45, 158, 77, 80, 0, 0, 0, 0, 46, 179, 26, 64, 0, 0, 0, 0, 47, 126, 47, 80, 0, 0, 0, 0, 48, 146, 252, 64, 0, 0, 0, 0, 49, 103, 75, 208, 0, 0, 0, 0, 50, 114, 222, 64, 0, 0, 0, 0, 51, 71, 45, 208, 0, 0, 0, 0, 52, 82, 192, 64, 0, 0, 0, 0, 53, 39, 15, 208, 0, 0, 0, 0, 54, 50, 162, 64, 0, 0, 0, 0, 55, 6, 241, 208, 0, 0, 0, 0, 56, 27, 190, 192, 0, 0, 0, 0, 56, 230, 211, 208, 0, 0, 0, 0, 57, 251, 160, 192, 0, 0, 0, 0, 58, 198, 181, 208, 0, 0, 0, 0, 59, 219, 130, 192, 0, 0, 0, 0, 60, 175, 210, 80, 0, 0, 0, 0, 61, 187, 100, 192, 0, 0, 0, 0, 62, 143, 180, 80, 0, 0, 0, 0, 63, 155, 70, 192, 0, 0, 0, 0, 64, 111, 150, 80, 0, 0, 0, 0, 65, 132, 99, 64, 0, 0, 0, 0, 66, 79, 120, 80, 0, 0, 0, 0, 67, 100, 69, 64, 0, 0, 0, 0, 68, 47, 90, 80, 0, 0, 0, 0, 69, 68, 39, 64, 0, 0, 0, 0, 69, 243, 140, 208, 0, 0, 0, 0, 71, 45, 67, 192, 0, 0, 0, 0, 71, 211, 110, 208, 0, 0, 0, 0, 73, 13, 37, 192, 0, 0, 0, 0, 73, 179, 80, 208, 0, 0, 0, 0, 74, 237, 7, 192, 0, 0, 0, 0, 75, 156, 109, 80, 0, 0, 0, 0, 76, 214, 36, 64, 0, 0, 0, 0, 77, 124, 79, 80, 0, 0, 0, 0, 78, 182, 6, 64, 0, 0, 0, 0, 79, 92, 49, 80, 0, 0, 0, 0, 80, 149, 232, 64, 0, 0, 0, 0, 81, 60, 19, 80, 0, 0, 0, 0, 82, 117, 202, 64, 0, 0, 0, 0, 83, 27, 245, 80, 0, 0, 0, 0, 84, 85, 172, 64, 0, 0, 0, 0, 84, 251, 215, 80, 0, 0, 0, 0, 86, 53, 142, 64, 0, 0, 0, 0, 86, 228, 243, 208, 0, 0, 0, 0, 88, 30, 170, 192, 0, 0, 0, 0, 88, 196, 213, 208, 0, 0, 0, 0, 89, 254, 140, 192, 0, 0, 0, 0, 90, 164, 183, 208, 0, 0, 0, 0, 91, 222, 110, 192, 0, 0, 0, 0, 92, 132, 153, 208, 0, 0, 0, 0, 93, 190, 80, 192, 0, 0, 0, 0, 94, 100, 123, 208, 0, 0, 0, 0, 95, 158, 50, 192, 0, 0, 0, 0, 96, 77, 152, 80, 0, 0, 0, 0, 97, 135, 79, 64, 0, 0, 0, 0, 98, 45, 122, 80, 0, 0, 0, 0, 99, 103, 49, 64, 0, 0, 0, 0, 100, 13, 92, 80, 0, 0, 0, 0, 101, 71, 19, 64, 0, 0, 0, 0, 101, 237, 62, 80, 0, 0, 0, 0, 103, 38, 245, 64, 0, 0, 0, 0, 103, 205, 32, 80, 0, 0, 0, 0, 105, 6, 215, 64, 0, 0, 0, 0, 105, 173, 2, 80, 0, 0, 0, 0, 106, 230, 185, 64, 0, 0, 0, 0, 107, 150, 30, 208, 0, 0, 0, 0, 108, 207, 213, 192, 0, 0, 0, 0, 109, 118, 0, 208, 0, 0, 0, 0, 110, 175, 183, 192, 0, 0, 0, 0, 111, 85, 226, 208, 0, 0, 0, 0, 112, 143, 153, 192, 0, 0, 0, 0, 113, 53, 196, 208, 0, 0, 0, 0, 114, 111, 123, 192, 0, 0, 0, 0, 115, 21, 166, 208, 0, 0, 0, 0, 116, 79, 93, 192, 0, 0, 0, 0, 116, 254, 195, 80, 0, 0, 0, 0, 118, 56, 122, 64, 0, 0, 0, 0, 118, 222, 165, 80, 0, 0, 0, 0, 120, 24, 92, 64, 0, 0, 0, 0, 120, 190, 135, 80, 0, 0, 0, 0, 121, 248, 62, 64, 0, 0, 0, 0, 122, 158, 105, 80, 0, 0, 0, 0, 123, 216, 32, 64, 0, 0, 0, 0, 124, 126, 75, 80, 0, 0, 0, 0, 125, 184, 2, 64, 0, 0, 0, 0, 126, 94, 45, 80, 0, 0, 0, 0, 127, 151, 228, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 203, 88, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 255, 255, 227, 224, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Moncton": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 128, 241, 182, 80, 158, 184, 133, 96, 159, 186, 221, 80, 187, 60, 56, 208, 187, 180, 35, 64, 189, 28, 26, 208, 189, 148, 5, 64, 190, 251, 252, 208, 191, 115, 231, 64, 192, 219, 222, 208, 193, 83, 201, 64, 194, 187, 192, 208, 195, 51, 171, 64, 196, 155, 162, 208, 197, 19, 141, 64, 198, 112, 248, 208, 199, 13, 205, 64, 200, 72, 241, 208, 200, 237, 175, 64, 202, 22, 94, 208, 202, 214, 203, 192, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 218, 254, 153, 96, 219, 192, 87, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 228, 94, 3, 96, 229, 40, 252, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 233, 22, 228, 208, 234, 6, 227, 224, 234, 246, 198, 208, 235, 230, 197, 224, 236, 214, 168, 208, 237, 198, 167, 224, 238, 191, 197, 80, 239, 175, 196, 96, 240, 159, 167, 80, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 93, 124, 44, 211, 42, 108, 45, 158, 63, 124, 46, 179, 12, 108, 47, 126, 33, 124, 48, 146, 238, 108, 49, 103, 61, 252, 50, 114, 208, 108, 51, 71, 31, 252, 52, 82, 178, 108, 53, 39, 1, 252, 54, 50, 148, 108, 55, 6, 227, 252, 56, 27, 176, 236, 56, 230, 197, 252, 57, 251, 146, 236, 58, 198, 167, 252, 59, 219, 116, 236, 60, 175, 196, 124, 61, 187, 86, 236, 62, 143, 166, 124, 63, 155, 56, 236, 64, 111, 136, 124, 65, 132, 85, 108, 66, 79, 106, 124, 67, 100, 55, 108, 68, 47, 76, 124, 69, 68, 25, 108, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 195, 68, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 69, 83, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Moncton": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 128, 241, 182, 80, 158, 184, 133, 96, 159, 186, 221, 80, 187, 60, 56, 208, 187, 180, 35, 64, 189, 28, 26, 208, 189, 148, 5, 64, 190, 251, 252, 208, 191, 115, 231, 64, 192, 219, 222, 208, 193, 83, 201, 64, 194, 187, 192, 208, 195, 51, 171, 64, 196, 155, 162, 208, 197, 19, 141, 64, 198, 112, 248, 208, 199, 13, 205, 64, 200, 72, 241, 208, 200, 237, 175, 64, 202, 22, 94, 208, 202, 214, 203, 192, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 218, 254, 153, 96, 219, 192, 87, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 228, 94, 3, 96, 229, 40, 252, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 233, 22, 228, 208, 234, 6, 227, 224, 234, 246, 198, 208, 235, 230, 197, 224, 236, 214, 168, 208, 237, 198, 167, 224, 238, 191, 197, 80, 239, 175, 196, 96, 240, 159, 167, 80, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 93, 124, 44, 211, 42, 108, 45, 158, 63, 124, 46, 179, 12, 108, 47, 126, 33, 124, 48, 146, 238, 108, 49, 103, 61, 252, 50, 114, 208, 108, 51, 71, 31, 252, 52, 82, 178, 108, 53, 39, 1, 252, 54, 50, 148, 108, 55, 6, 227, 252, 56, 27, 176, 236, 56, 230, 197, 252, 57, 251, 146, 236, 58, 198, 167, 252, 59, 219, 116, 236, 60, 175, 196, 124, 61, 187, 86, 236, 62, 143, 166, 124, 63, 155, 56, 236, 64, 111, 136, 124, 65, 132, 85, 108, 66, 79, 106, 124, 67, 100, 55, 108, 68, 47, 76, 124, 69, 68, 25, 108, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 195, 68, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 69, 83, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 94, 30, 237, 188, 255, 255, 255, 255, 128, 241, 182, 80, 255, 255, 255, 255, 158, 184, 133, 96, 255, 255, 255, 255, 159, 186, 221, 80, 255, 255, 255, 255, 187, 60, 56, 208, 255, 255, 255, 255, 187, 180, 35, 64, 255, 255, 255, 255, 189, 28, 26, 208, 255, 255, 255, 255, 189, 148, 5, 64, 255, 255, 255, 255, 190, 251, 252, 208, 255, 255, 255, 255, 191, 115, 231, 64, 255, 255, 255, 255, 192, 219, 222, 208, 255, 255, 255, 255, 193, 83, 201, 64, 255, 255, 255, 255, 194, 187, 192, 208, 255, 255, 255, 255, 195, 51, 171, 64, 255, 255, 255, 255, 196, 155, 162, 208, 255, 255, 255, 255, 197, 19, 141, 64, 255, 255, 255, 255, 198, 112, 248, 208, 255, 255, 255, 255, 199, 13, 205, 64, 255, 255, 255, 255, 200, 72, 241, 208, 255, 255, 255, 255, 200, 237, 175, 64, 255, 255, 255, 255, 202, 22, 94, 208, 255, 255, 255, 255, 202, 214, 203, 192, 255, 255, 255, 255, 203, 136, 226, 96, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 255, 255, 255, 255, 211, 117, 214, 224, 255, 255, 255, 255, 212, 64, 207, 208, 255, 255, 255, 255, 213, 85, 184, 224, 255, 255, 255, 255, 214, 32, 177, 208, 255, 255, 255, 255, 215, 53, 154, 224, 255, 255, 255, 255, 216, 0, 147, 208, 255, 255, 255, 255, 217, 21, 124, 224, 255, 255, 255, 255, 217, 224, 117, 208, 255, 255, 255, 255, 218, 254, 153, 96, 255, 255, 255, 255, 219, 192, 87, 208, 255, 255, 255, 255, 220, 222, 123, 96, 255, 255, 255, 255, 221, 169, 116, 80, 255, 255, 255, 255, 222, 190, 93, 96, 255, 255, 255, 255, 223, 137, 86, 80, 255, 255, 255, 255, 224, 158, 63, 96, 255, 255, 255, 255, 225, 105, 56, 80, 255, 255, 255, 255, 226, 126, 33, 96, 255, 255, 255, 255, 227, 73, 26, 80, 255, 255, 255, 255, 228, 94, 3, 96, 255, 255, 255, 255, 229, 40, 252, 80, 255, 255, 255, 255, 230, 71, 31, 224, 255, 255, 255, 255, 231, 18, 24, 208, 255, 255, 255, 255, 232, 39, 1, 224, 255, 255, 255, 255, 233, 22, 228, 208, 255, 255, 255, 255, 234, 6, 227, 224, 255, 255, 255, 255, 234, 246, 198, 208, 255, 255, 255, 255, 235, 230, 197, 224, 255, 255, 255, 255, 236, 214, 168, 208, 255, 255, 255, 255, 237, 198, 167, 224, 255, 255, 255, 255, 238, 191, 197, 80, 255, 255, 255, 255, 239, 175, 196, 96, 255, 255, 255, 255, 240, 159, 167, 80, 255, 255, 255, 255, 241, 143, 166, 96, 255, 255, 255, 255, 242, 127, 137, 80, 255, 255, 255, 255, 243, 111, 136, 96, 255, 255, 255, 255, 244, 95, 107, 80, 255, 255, 255, 255, 245, 79, 106, 96, 255, 255, 255, 255, 246, 63, 77, 80, 255, 255, 255, 255, 247, 47, 76, 96, 255, 255, 255, 255, 248, 40, 105, 208, 255, 255, 255, 255, 249, 15, 46, 96, 255, 255, 255, 255, 250, 8, 75, 208, 255, 255, 255, 255, 250, 248, 74, 224, 255, 255, 255, 255, 251, 232, 45, 208, 255, 255, 255, 255, 252, 216, 44, 224, 255, 255, 255, 255, 253, 200, 15, 208, 255, 255, 255, 255, 254, 184, 14, 224, 255, 255, 255, 255, 255, 167, 241, 208, 0, 0, 0, 0, 0, 151, 240, 224, 0, 0, 0, 0, 1, 135, 211, 208, 0, 0, 0, 0, 2, 119, 210, 224, 0, 0, 0, 0, 3, 112, 240, 80, 0, 0, 0, 0, 4, 96, 239, 96, 0, 0, 0, 0, 5, 80, 210, 80, 0, 0, 0, 0, 8, 32, 179, 96, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 10, 0, 149, 96, 0, 0, 0, 0, 10, 240, 120, 80, 0, 0, 0, 0, 11, 224, 119, 96, 0, 0, 0, 0, 12, 217, 148, 208, 0, 0, 0, 0, 13, 192, 89, 96, 0, 0, 0, 0, 14, 185, 118, 208, 0, 0, 0, 0, 15, 169, 117, 224, 0, 0, 0, 0, 16, 153, 88, 208, 0, 0, 0, 0, 17, 137, 87, 224, 0, 0, 0, 0, 18, 121, 58, 208, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 242, 224, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 161, 208, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 131, 208, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 101, 208, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 71, 208, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 41, 208, 0, 0, 0, 0, 43, 190, 93, 124, 0, 0, 0, 0, 44, 211, 42, 108, 0, 0, 0, 0, 45, 158, 63, 124, 0, 0, 0, 0, 46, 179, 12, 108, 0, 0, 0, 0, 47, 126, 33, 124, 0, 0, 0, 0, 48, 146, 238, 108, 0, 0, 0, 0, 49, 103, 61, 252, 0, 0, 0, 0, 50, 114, 208, 108, 0, 0, 0, 0, 51, 71, 31, 252, 0, 0, 0, 0, 52, 82, 178, 108, 0, 0, 0, 0, 53, 39, 1, 252, 0, 0, 0, 0, 54, 50, 148, 108, 0, 0, 0, 0, 55, 6, 227, 252, 0, 0, 0, 0, 56, 27, 176, 236, 0, 0, 0, 0, 56, 230, 197, 252, 0, 0, 0, 0, 57, 251, 146, 236, 0, 0, 0, 0, 58, 198, 167, 252, 0, 0, 0, 0, 59, 219, 116, 236, 0, 0, 0, 0, 60, 175, 196, 124, 0, 0, 0, 0, 61, 187, 86, 236, 0, 0, 0, 0, 62, 143, 166, 124, 0, 0, 0, 0, 63, 155, 56, 236, 0, 0, 0, 0, 64, 111, 136, 124, 0, 0, 0, 0, 65, 132, 85, 108, 0, 0, 0, 0, 66, 79, 106, 124, 0, 0, 0, 0, 67, 100, 55, 108, 0, 0, 0, 0, 68, 47, 76, 124, 0, 0, 0, 0, 69, 68, 25, 108, 0, 0, 0, 0, 69, 243, 154, 224, 0, 0, 0, 0, 71, 45, 81, 208, 0, 0, 0, 0, 71, 211, 124, 224, 0, 0, 0, 0, 73, 13, 51, 208, 0, 0, 0, 0, 73, 179, 94, 224, 0, 0, 0, 0, 74, 237, 21, 208, 0, 0, 0, 0, 75, 156, 123, 96, 0, 0, 0, 0, 76, 214, 50, 80, 0, 0, 0, 0, 77, 124, 93, 96, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 195, 68, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 20, 76, 77, 84, 0, 69, 83, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Monterrey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 3, 0, 0, 0, 12, 165, 182, 218, 96, 34, 85, 241, 0, 35, 106, 189, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 161, 244, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/America/Monterrey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 3, 0, 0, 0, 12, 165, 182, 218, 96, 34, 85, 241, 0, 35, 106, 189, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 161, 244, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 165, 182, 218, 96, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 245, 4, 128, 0, 0, 0, 0, 59, 182, 194, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 70, 15, 102, 128, 0, 0, 0, 0, 71, 36, 51, 112, 0, 0, 0, 0, 71, 248, 131, 0, 0, 0, 0, 0, 73, 4, 21, 112, 0, 0, 0, 0, 73, 216, 101, 0, 0, 0, 0, 0, 74, 227, 247, 112, 0, 0, 0, 0, 75, 184, 71, 0, 0, 0, 0, 0, 76, 205, 19, 240, 0, 0, 0, 0, 77, 152, 41, 0, 0, 0, 0, 0, 78, 172, 245, 240, 0, 0, 0, 0, 79, 120, 11, 0, 0, 0, 0, 0, 80, 140, 215, 240, 0, 0, 0, 0, 81, 97, 39, 128, 0, 0, 0, 0, 82, 108, 185, 240, 0, 0, 0, 0, 83, 65, 9, 128, 0, 0, 0, 0, 84, 76, 155, 240, 0, 0, 0, 0, 85, 32, 235, 128, 0, 0, 0, 0, 86, 44, 125, 240, 0, 0, 0, 0, 87, 0, 205, 128, 0, 0, 0, 0, 88, 21, 154, 112, 0, 0, 0, 0, 88, 224, 175, 128, 0, 0, 0, 0, 89, 245, 124, 112, 0, 0, 0, 0, 90, 192, 145, 128, 0, 0, 0, 0, 91, 213, 94, 112, 0, 0, 0, 0, 92, 169, 174, 0, 0, 0, 0, 0, 93, 181, 64, 112, 0, 0, 0, 0, 94, 137, 144, 0, 0, 0, 0, 0, 95, 149, 34, 112, 0, 0, 0, 0, 96, 105, 114, 0, 0, 0, 0, 0, 97, 126, 62, 240, 0, 0, 0, 0, 98, 73, 84, 0, 0, 0, 0, 0, 99, 94, 32, 240, 0, 0, 0, 0, 100, 41, 54, 0, 0, 0, 0, 0, 101, 62, 2, 240, 0, 0, 0, 0, 102, 18, 82, 128, 0, 0, 0, 0, 103, 29, 228, 240, 0, 0, 0, 0, 103, 242, 52, 128, 0, 0, 0, 0, 104, 253, 198, 240, 0, 0, 0, 0, 105, 210, 22, 128, 0, 0, 0, 0, 106, 221, 168, 240, 0, 0, 0, 0, 107, 177, 248, 128, 0, 0, 0, 0, 108, 198, 197, 112, 0, 0, 0, 0, 109, 145, 218, 128, 0, 0, 0, 0, 110, 166, 167, 112, 0, 0, 0, 0, 111, 113, 188, 128, 0, 0, 0, 0, 112, 134, 137, 112, 0, 0, 0, 0, 113, 90, 217, 0, 0, 0, 0, 0, 114, 102, 107, 112, 0, 0, 0, 0, 115, 58, 187, 0, 0, 0, 0, 0, 116, 70, 77, 112, 0, 0, 0, 0, 117, 26, 157, 0, 0, 0, 0, 0, 118, 47, 105, 240, 0, 0, 0, 0, 118, 250, 127, 0, 0, 0, 0, 0, 120, 15, 75, 240, 0, 0, 0, 0, 120, 218, 97, 0, 0, 0, 0, 0, 121, 239, 45, 240, 0, 0, 0, 0, 122, 186, 67, 0, 0, 0, 0, 0, 123, 207, 15, 240, 0, 0, 0, 0, 124, 163, 95, 128, 0, 0, 0, 0, 125, 174, 241, 240, 0, 0, 0, 0, 126, 131, 65, 128, 0, 0, 0, 0, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 161, 244, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 8, 76, 77, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/America/Montevideo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 10, 0, 0, 0, 38, 140, 52, 229, 51, 162, 146, 135, 179, 168, 255, 219, 64, 169, 241, 15, 176, 170, 226, 89, 56, 171, 210, 67, 48, 172, 195, 140, 184, 173, 179, 118, 176, 187, 244, 181, 184, 188, 191, 181, 176, 189, 212, 151, 184, 190, 159, 151, 176, 191, 180, 121, 184, 192, 127, 121, 176, 193, 148, 91, 184, 194, 95, 91, 176, 195, 125, 120, 56, 196, 63, 61, 176, 197, 93, 90, 56, 198, 31, 31, 176, 199, 24, 82, 56, 200, 8, 60, 48, 201, 29, 30, 56, 201, 232, 30, 48, 202, 139, 159, 56, 205, 30, 198, 48, 205, 149, 102, 40, 236, 11, 133, 176, 236, 242, 53, 40, 237, 69, 74, 176, 237, 133, 214, 32, 247, 19, 114, 176, 247, 250, 27, 32, 252, 254, 62, 48, 253, 246, 17, 40, 0, 150, 117, 48, 0, 216, 82, 32, 4, 87, 138, 176, 4, 198, 58, 160, 7, 150, 27, 176, 7, 223, 218, 152, 8, 198, 159, 40, 9, 90, 78, 48, 9, 219, 115, 32, 13, 26, 18, 48, 13, 127, 135, 160, 14, 231, 127, 48, 15, 95, 105, 160, 16, 217, 214, 48, 17, 63, 75, 160, 17, 137, 45, 176, 19, 49, 162, 160, 33, 195, 84, 48, 34, 39, 120, 32, 35, 161, 228, 176, 36, 16, 148, 160, 37, 74, 103, 176, 37, 231, 60, 32, 39, 33, 15, 48, 39, 208, 88, 160, 41, 10, 43, 176, 41, 176, 58, 160, 42, 224, 211, 48, 43, 144, 28, 160, 65, 76, 246, 48, 66, 70, 47, 192, 67, 72, 163, 208, 68, 19, 156, 192, 69, 31, 75, 80, 69, 243, 126, 192, 71, 8, 103, 208, 71, 211, 96, 192, 72, 232, 73, 208, 73, 179, 66, 192, 74, 200, 43, 208, 75, 156, 95, 64, 76, 168, 13, 208, 77, 124, 65, 64, 78, 135, 239, 208, 79, 92, 35, 64, 80, 113, 12, 80, 81, 60, 5, 64, 82, 80, 238, 80, 83, 27, 231, 64, 84, 48, 208, 80, 84, 251, 201, 64, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 5, 7, 5, 7, 5, 6, 5, 7, 5, 7, 5, 8, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 5, 255, 255, 203, 77, 0, 0, 255, 255, 203, 77, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 206, 200, 0, 12, 255, 255, 213, 208, 1, 18, 255, 255, 213, 208, 0, 18, 255, 255, 220, 216, 1, 22, 255, 255, 227, 224, 1, 28, 255, 255, 234, 232, 1, 32, 255, 255, 227, 224, 1, 28, 76, 77, 84, 0, 77, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 45, 48, 50, 51, 48, 0, 45, 48, 50, 0, 45, 48, 49, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Montevideo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 10, 0, 0, 0, 38, 140, 52, 229, 51, 162, 146, 135, 179, 168, 255, 219, 64, 169, 241, 15, 176, 170, 226, 89, 56, 171, 210, 67, 48, 172, 195, 140, 184, 173, 179, 118, 176, 187, 244, 181, 184, 188, 191, 181, 176, 189, 212, 151, 184, 190, 159, 151, 176, 191, 180, 121, 184, 192, 127, 121, 176, 193, 148, 91, 184, 194, 95, 91, 176, 195, 125, 120, 56, 196, 63, 61, 176, 197, 93, 90, 56, 198, 31, 31, 176, 199, 24, 82, 56, 200, 8, 60, 48, 201, 29, 30, 56, 201, 232, 30, 48, 202, 139, 159, 56, 205, 30, 198, 48, 205, 149, 102, 40, 236, 11, 133, 176, 236, 242, 53, 40, 237, 69, 74, 176, 237, 133, 214, 32, 247, 19, 114, 176, 247, 250, 27, 32, 252, 254, 62, 48, 253, 246, 17, 40, 0, 150, 117, 48, 0, 216, 82, 32, 4, 87, 138, 176, 4, 198, 58, 160, 7, 150, 27, 176, 7, 223, 218, 152, 8, 198, 159, 40, 9, 90, 78, 48, 9, 219, 115, 32, 13, 26, 18, 48, 13, 127, 135, 160, 14, 231, 127, 48, 15, 95, 105, 160, 16, 217, 214, 48, 17, 63, 75, 160, 17, 137, 45, 176, 19, 49, 162, 160, 33, 195, 84, 48, 34, 39, 120, 32, 35, 161, 228, 176, 36, 16, 148, 160, 37, 74, 103, 176, 37, 231, 60, 32, 39, 33, 15, 48, 39, 208, 88, 160, 41, 10, 43, 176, 41, 176, 58, 160, 42, 224, 211, 48, 43, 144, 28, 160, 65, 76, 246, 48, 66, 70, 47, 192, 67, 72, 163, 208, 68, 19, 156, 192, 69, 31, 75, 80, 69, 243, 126, 192, 71, 8, 103, 208, 71, 211, 96, 192, 72, 232, 73, 208, 73, 179, 66, 192, 74, 200, 43, 208, 75, 156, 95, 64, 76, 168, 13, 208, 77, 124, 65, 64, 78, 135, 239, 208, 79, 92, 35, 64, 80, 113, 12, 80, 81, 60, 5, 64, 82, 80, 238, 80, 83, 27, 231, 64, 84, 48, 208, 80, 84, 251, 201, 64, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 5, 7, 5, 7, 5, 6, 5, 7, 5, 7, 5, 8, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 5, 255, 255, 203, 77, 0, 0, 255, 255, 203, 77, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 206, 200, 0, 12, 255, 255, 213, 208, 1, 18, 255, 255, 213, 208, 0, 18, 255, 255, 220, 216, 1, 22, 255, 255, 227, 224, 1, 28, 255, 255, 234, 232, 1, 32, 255, 255, 227, 224, 1, 28, 76, 77, 84, 0, 77, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 45, 48, 50, 51, 48, 0, 45, 48, 50, 0, 45, 48, 49, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 10, 0, 0, 0, 38, 255, 255, 255, 255, 140, 52, 229, 51, 255, 255, 255, 255, 162, 146, 135, 179, 255, 255, 255, 255, 168, 255, 219, 64, 255, 255, 255, 255, 169, 241, 15, 176, 255, 255, 255, 255, 170, 226, 89, 56, 255, 255, 255, 255, 171, 210, 67, 48, 255, 255, 255, 255, 172, 195, 140, 184, 255, 255, 255, 255, 173, 179, 118, 176, 255, 255, 255, 255, 187, 244, 181, 184, 255, 255, 255, 255, 188, 191, 181, 176, 255, 255, 255, 255, 189, 212, 151, 184, 255, 255, 255, 255, 190, 159, 151, 176, 255, 255, 255, 255, 191, 180, 121, 184, 255, 255, 255, 255, 192, 127, 121, 176, 255, 255, 255, 255, 193, 148, 91, 184, 255, 255, 255, 255, 194, 95, 91, 176, 255, 255, 255, 255, 195, 125, 120, 56, 255, 255, 255, 255, 196, 63, 61, 176, 255, 255, 255, 255, 197, 93, 90, 56, 255, 255, 255, 255, 198, 31, 31, 176, 255, 255, 255, 255, 199, 24, 82, 56, 255, 255, 255, 255, 200, 8, 60, 48, 255, 255, 255, 255, 201, 29, 30, 56, 255, 255, 255, 255, 201, 232, 30, 48, 255, 255, 255, 255, 202, 139, 159, 56, 255, 255, 255, 255, 205, 30, 198, 48, 255, 255, 255, 255, 205, 149, 102, 40, 255, 255, 255, 255, 236, 11, 133, 176, 255, 255, 255, 255, 236, 242, 53, 40, 255, 255, 255, 255, 237, 69, 74, 176, 255, 255, 255, 255, 237, 133, 214, 32, 255, 255, 255, 255, 247, 19, 114, 176, 255, 255, 255, 255, 247, 250, 27, 32, 255, 255, 255, 255, 252, 254, 62, 48, 255, 255, 255, 255, 253, 246, 17, 40, 0, 0, 0, 0, 0, 150, 117, 48, 0, 0, 0, 0, 0, 216, 82, 32, 0, 0, 0, 0, 4, 87, 138, 176, 0, 0, 0, 0, 4, 198, 58, 160, 0, 0, 0, 0, 7, 150, 27, 176, 0, 0, 0, 0, 7, 223, 218, 152, 0, 0, 0, 0, 8, 198, 159, 40, 0, 0, 0, 0, 9, 90, 78, 48, 0, 0, 0, 0, 9, 219, 115, 32, 0, 0, 0, 0, 13, 26, 18, 48, 0, 0, 0, 0, 13, 127, 135, 160, 0, 0, 0, 0, 14, 231, 127, 48, 0, 0, 0, 0, 15, 95, 105, 160, 0, 0, 0, 0, 16, 217, 214, 48, 0, 0, 0, 0, 17, 63, 75, 160, 0, 0, 0, 0, 17, 137, 45, 176, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 33, 195, 84, 48, 0, 0, 0, 0, 34, 39, 120, 32, 0, 0, 0, 0, 35, 161, 228, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 74, 103, 176, 0, 0, 0, 0, 37, 231, 60, 32, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 10, 43, 176, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 144, 28, 160, 0, 0, 0, 0, 65, 76, 246, 48, 0, 0, 0, 0, 66, 70, 47, 192, 0, 0, 0, 0, 67, 72, 163, 208, 0, 0, 0, 0, 68, 19, 156, 192, 0, 0, 0, 0, 69, 31, 75, 80, 0, 0, 0, 0, 69, 243, 126, 192, 0, 0, 0, 0, 71, 8, 103, 208, 0, 0, 0, 0, 71, 211, 96, 192, 0, 0, 0, 0, 72, 232, 73, 208, 0, 0, 0, 0, 73, 179, 66, 192, 0, 0, 0, 0, 74, 200, 43, 208, 0, 0, 0, 0, 75, 156, 95, 64, 0, 0, 0, 0, 76, 168, 13, 208, 0, 0, 0, 0, 77, 124, 65, 64, 0, 0, 0, 0, 78, 135, 239, 208, 0, 0, 0, 0, 79, 92, 35, 64, 0, 0, 0, 0, 80, 113, 12, 80, 0, 0, 0, 0, 81, 60, 5, 64, 0, 0, 0, 0, 82, 80, 238, 80, 0, 0, 0, 0, 83, 27, 231, 64, 0, 0, 0, 0, 84, 48, 208, 80, 0, 0, 0, 0, 84, 251, 201, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 5, 7, 5, 7, 5, 6, 5, 7, 5, 7, 5, 8, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 5, 255, 255, 203, 77, 0, 0, 255, 255, 203, 77, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 206, 200, 0, 12, 255, 255, 213, 208, 1, 18, 255, 255, 213, 208, 0, 18, 255, 255, 220, 216, 1, 22, 255, 255, 227, 224, 1, 28, 255, 255, 234, 232, 1, 32, 255, 255, 227, 224, 1, 28, 76, 77, 84, 0, 77, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 45, 48, 50, 51, 48, 0, 45, 48, 50, 0, 45, 48, 49, 51, 48, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Montreal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Montreal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 114, 238, 120, 236, 255, 255, 255, 255, 158, 184, 147, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 160, 135, 46, 200, 255, 255, 255, 255, 161, 154, 177, 64, 255, 255, 255, 255, 162, 148, 6, 240, 255, 255, 255, 255, 163, 85, 169, 64, 255, 255, 255, 255, 164, 134, 93, 240, 255, 255, 255, 255, 165, 40, 120, 96, 255, 255, 255, 255, 166, 102, 63, 240, 255, 255, 255, 255, 167, 12, 78, 224, 255, 255, 255, 255, 168, 70, 33, 240, 255, 255, 255, 255, 168, 236, 48, 224, 255, 255, 255, 255, 170, 28, 201, 112, 255, 255, 255, 255, 170, 213, 77, 96, 255, 255, 255, 255, 171, 252, 171, 112, 255, 255, 255, 255, 172, 181, 47, 96, 255, 255, 255, 255, 173, 220, 141, 112, 255, 255, 255, 255, 174, 149, 17, 96, 255, 255, 255, 255, 175, 188, 111, 112, 255, 255, 255, 255, 176, 126, 45, 224, 255, 255, 255, 255, 177, 156, 81, 112, 255, 255, 255, 255, 178, 103, 74, 96, 255, 255, 255, 255, 179, 124, 51, 112, 255, 255, 255, 255, 180, 71, 44, 96, 255, 255, 255, 255, 181, 92, 21, 112, 255, 255, 255, 255, 182, 39, 14, 96, 255, 255, 255, 255, 183, 59, 247, 112, 255, 255, 255, 255, 184, 6, 240, 96, 255, 255, 255, 255, 185, 37, 19, 240, 255, 255, 255, 255, 185, 230, 210, 96, 255, 255, 255, 255, 187, 4, 245, 240, 255, 255, 255, 255, 187, 207, 238, 224, 255, 255, 255, 255, 188, 228, 215, 240, 255, 255, 255, 255, 189, 175, 208, 224, 255, 255, 255, 255, 190, 196, 185, 240, 255, 255, 255, 255, 191, 143, 178, 224, 255, 255, 255, 255, 192, 164, 155, 240, 255, 255, 255, 255, 193, 111, 148, 224, 255, 255, 255, 255, 194, 132, 125, 240, 255, 255, 255, 255, 195, 79, 118, 224, 255, 255, 255, 255, 196, 100, 95, 240, 255, 255, 255, 255, 197, 47, 88, 224, 255, 255, 255, 255, 198, 77, 124, 112, 255, 255, 255, 255, 199, 15, 58, 224, 255, 255, 255, 255, 200, 45, 94, 112, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 211, 117, 228, 240, 255, 255, 255, 255, 212, 64, 221, 224, 255, 255, 255, 255, 213, 85, 170, 208, 255, 255, 255, 255, 214, 32, 163, 192, 255, 255, 255, 255, 215, 53, 140, 208, 255, 255, 255, 255, 216, 0, 133, 192, 255, 255, 255, 255, 217, 21, 110, 208, 255, 255, 255, 255, 218, 51, 118, 64, 255, 255, 255, 255, 218, 254, 167, 112, 255, 255, 255, 255, 220, 19, 116, 96, 255, 255, 255, 255, 220, 222, 137, 112, 255, 255, 255, 255, 221, 169, 130, 96, 255, 255, 255, 255, 222, 190, 107, 112, 255, 255, 255, 255, 223, 137, 100, 96, 255, 255, 255, 255, 224, 158, 77, 112, 255, 255, 255, 255, 225, 105, 70, 96, 255, 255, 255, 255, 226, 126, 47, 112, 255, 255, 255, 255, 227, 73, 40, 96, 255, 255, 255, 255, 228, 94, 17, 112, 255, 255, 255, 255, 229, 41, 10, 96, 255, 255, 255, 255, 230, 71, 45, 240, 255, 255, 255, 255, 231, 18, 38, 224, 255, 255, 255, 255, 232, 39, 15, 240, 255, 255, 255, 255, 233, 22, 242, 224, 255, 255, 255, 255, 234, 6, 241, 240, 255, 255, 255, 255, 234, 246, 212, 224, 255, 255, 255, 255, 235, 230, 211, 240, 255, 255, 255, 255, 236, 214, 182, 224, 255, 255, 255, 255, 237, 198, 181, 240, 255, 255, 255, 255, 238, 191, 211, 96, 255, 255, 255, 255, 239, 175, 210, 112, 255, 255, 255, 255, 240, 159, 181, 96, 255, 255, 255, 255, 241, 143, 180, 112, 255, 255, 255, 255, 242, 127, 151, 96, 255, 255, 255, 255, 243, 111, 150, 112, 255, 255, 255, 255, 244, 95, 121, 96, 255, 255, 255, 255, 245, 79, 120, 112, 255, 255, 255, 255, 246, 63, 91, 96, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 119, 224, 255, 255, 255, 255, 249, 15, 60, 112, 255, 255, 255, 255, 250, 8, 89, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 8, 32, 193, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Montserrat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Montserrat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Nassau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 3, 0, 0, 0, 12, 147, 55, 66, 138, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 183, 118, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Nassau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 3, 0, 0, 0, 12, 147, 55, 66, 138, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 183, 118, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 147, 55, 66, 138, 255, 255, 255, 255, 245, 79, 120, 112, 255, 255, 255, 255, 246, 63, 91, 96, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 119, 224, 255, 255, 255, 255, 249, 15, 60, 112, 255, 255, 255, 255, 250, 8, 89, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 8, 32, 193, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 183, 118, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/New_York": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 162, 101, 226, 112, 163, 131, 233, 224, 164, 106, 174, 112, 165, 53, 167, 96, 166, 83, 202, 240, 167, 21, 137, 96, 168, 51, 172, 240, 168, 254, 165, 224, 170, 19, 142, 240, 170, 222, 135, 224, 171, 243, 112, 240, 172, 190, 105, 224, 173, 211, 82, 240, 174, 158, 75, 224, 175, 179, 52, 240, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 27, 217, 112, 185, 230, 210, 96, 187, 4, 245, 240, 187, 198, 180, 96, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 200, 248, 87, 96, 202, 13, 64, 112, 202, 216, 57, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 198, 240, 214, 32, 191, 224, 215, 53, 168, 240, 216, 0, 161, 224, 217, 21, 138, 240, 217, 224, 131, 224, 218, 254, 167, 112, 219, 192, 101, 224, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 87, 46, 224, 230, 71, 45, 240, 231, 55, 16, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/New_York": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 162, 101, 226, 112, 163, 131, 233, 224, 164, 106, 174, 112, 165, 53, 167, 96, 166, 83, 202, 240, 167, 21, 137, 96, 168, 51, 172, 240, 168, 254, 165, 224, 170, 19, 142, 240, 170, 222, 135, 224, 171, 243, 112, 240, 172, 190, 105, 224, 173, 211, 82, 240, 174, 158, 75, 224, 175, 179, 52, 240, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 27, 217, 112, 185, 230, 210, 96, 187, 4, 245, 240, 187, 198, 180, 96, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 200, 248, 87, 96, 202, 13, 64, 112, 202, 216, 57, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 198, 240, 214, 32, 191, 224, 215, 53, 168, 240, 216, 0, 161, 224, 217, 21, 138, 240, 217, 224, 131, 224, 218, 254, 167, 112, 219, 192, 101, 224, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 87, 46, 224, 230, 71, 45, 240, 231, 55, 16, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 3, 240, 144, 255, 255, 255, 255, 158, 166, 30, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 160, 134, 0, 112, 255, 255, 255, 255, 161, 154, 205, 96, 255, 255, 255, 255, 162, 101, 226, 112, 255, 255, 255, 255, 163, 131, 233, 224, 255, 255, 255, 255, 164, 106, 174, 112, 255, 255, 255, 255, 165, 53, 167, 96, 255, 255, 255, 255, 166, 83, 202, 240, 255, 255, 255, 255, 167, 21, 137, 96, 255, 255, 255, 255, 168, 51, 172, 240, 255, 255, 255, 255, 168, 254, 165, 224, 255, 255, 255, 255, 170, 19, 142, 240, 255, 255, 255, 255, 170, 222, 135, 224, 255, 255, 255, 255, 171, 243, 112, 240, 255, 255, 255, 255, 172, 190, 105, 224, 255, 255, 255, 255, 173, 211, 82, 240, 255, 255, 255, 255, 174, 158, 75, 224, 255, 255, 255, 255, 175, 179, 52, 240, 255, 255, 255, 255, 176, 126, 45, 224, 255, 255, 255, 255, 177, 156, 81, 112, 255, 255, 255, 255, 178, 103, 74, 96, 255, 255, 255, 255, 179, 124, 51, 112, 255, 255, 255, 255, 180, 71, 44, 96, 255, 255, 255, 255, 181, 92, 21, 112, 255, 255, 255, 255, 182, 39, 14, 96, 255, 255, 255, 255, 183, 59, 247, 112, 255, 255, 255, 255, 184, 6, 240, 96, 255, 255, 255, 255, 185, 27, 217, 112, 255, 255, 255, 255, 185, 230, 210, 96, 255, 255, 255, 255, 187, 4, 245, 240, 255, 255, 255, 255, 187, 198, 180, 96, 255, 255, 255, 255, 188, 228, 215, 240, 255, 255, 255, 255, 189, 175, 208, 224, 255, 255, 255, 255, 190, 196, 185, 240, 255, 255, 255, 255, 191, 143, 178, 224, 255, 255, 255, 255, 192, 164, 155, 240, 255, 255, 255, 255, 193, 111, 148, 224, 255, 255, 255, 255, 194, 132, 125, 240, 255, 255, 255, 255, 195, 79, 118, 224, 255, 255, 255, 255, 196, 100, 95, 240, 255, 255, 255, 255, 197, 47, 88, 224, 255, 255, 255, 255, 198, 77, 124, 112, 255, 255, 255, 255, 199, 15, 58, 224, 255, 255, 255, 255, 200, 45, 94, 112, 255, 255, 255, 255, 200, 248, 87, 96, 255, 255, 255, 255, 202, 13, 64, 112, 255, 255, 255, 255, 202, 216, 57, 96, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 211, 117, 228, 240, 255, 255, 255, 255, 212, 64, 221, 224, 255, 255, 255, 255, 213, 85, 198, 240, 255, 255, 255, 255, 214, 32, 191, 224, 255, 255, 255, 255, 215, 53, 168, 240, 255, 255, 255, 255, 216, 0, 161, 224, 255, 255, 255, 255, 217, 21, 138, 240, 255, 255, 255, 255, 217, 224, 131, 224, 255, 255, 255, 255, 218, 254, 167, 112, 255, 255, 255, 255, 219, 192, 101, 224, 255, 255, 255, 255, 220, 222, 137, 112, 255, 255, 255, 255, 221, 169, 130, 96, 255, 255, 255, 255, 222, 190, 107, 112, 255, 255, 255, 255, 223, 137, 100, 96, 255, 255, 255, 255, 224, 158, 77, 112, 255, 255, 255, 255, 225, 105, 70, 96, 255, 255, 255, 255, 226, 126, 47, 112, 255, 255, 255, 255, 227, 73, 40, 96, 255, 255, 255, 255, 228, 94, 17, 112, 255, 255, 255, 255, 229, 87, 46, 224, 255, 255, 255, 255, 230, 71, 45, 240, 255, 255, 255, 255, 231, 55, 16, 224, 255, 255, 255, 255, 232, 39, 15, 240, 255, 255, 255, 255, 233, 22, 242, 224, 255, 255, 255, 255, 234, 6, 241, 240, 255, 255, 255, 255, 234, 246, 212, 224, 255, 255, 255, 255, 235, 230, 211, 240, 255, 255, 255, 255, 236, 214, 182, 224, 255, 255, 255, 255, 237, 198, 181, 240, 255, 255, 255, 255, 238, 191, 211, 96, 255, 255, 255, 255, 239, 175, 210, 112, 255, 255, 255, 255, 240, 159, 181, 96, 255, 255, 255, 255, 241, 143, 180, 112, 255, 255, 255, 255, 242, 127, 151, 96, 255, 255, 255, 255, 243, 111, 150, 112, 255, 255, 255, 255, 244, 95, 121, 96, 255, 255, 255, 255, 245, 79, 120, 112, 255, 255, 255, 255, 246, 63, 91, 96, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 119, 224, 255, 255, 255, 255, 249, 15, 60, 112, 255, 255, 255, 255, 250, 8, 89, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Nipigon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 200, 248, 73, 80, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 64, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Nipigon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 200, 248, 73, 80, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 64, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 114, 238, 129, 64, 255, 255, 255, 255, 158, 184, 147, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 200, 248, 73, 80, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 0, 0, 0, 0, 8, 32, 193, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 64, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Nome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 38, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 182, 110, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Nome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 38, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 182, 110, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 10, 0, 0, 0, 38, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 79, 210, 255, 255, 255, 255, 203, 137, 68, 208, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 80, 64, 255, 255, 255, 255, 250, 210, 85, 176, 255, 255, 255, 255, 254, 184, 113, 80, 255, 255, 255, 255, 255, 168, 84, 64, 0, 0, 0, 0, 0, 152, 83, 80, 0, 0, 0, 0, 1, 136, 54, 64, 0, 0, 0, 0, 2, 120, 53, 80, 0, 0, 0, 0, 3, 113, 82, 192, 0, 0, 0, 0, 4, 97, 81, 208, 0, 0, 0, 0, 5, 81, 52, 192, 0, 0, 0, 0, 6, 65, 51, 208, 0, 0, 0, 0, 7, 49, 22, 192, 0, 0, 0, 0, 7, 141, 109, 208, 0, 0, 0, 0, 9, 16, 248, 192, 0, 0, 0, 0, 9, 173, 233, 80, 0, 0, 0, 0, 10, 240, 218, 192, 0, 0, 0, 0, 11, 224, 217, 208, 0, 0, 0, 0, 12, 217, 247, 64, 0, 0, 0, 0, 13, 192, 187, 208, 0, 0, 0, 0, 14, 185, 217, 64, 0, 0, 0, 0, 15, 169, 216, 80, 0, 0, 0, 0, 16, 153, 187, 64, 0, 0, 0, 0, 17, 137, 186, 80, 0, 0, 0, 0, 18, 121, 157, 64, 0, 0, 0, 0, 19, 105, 156, 80, 0, 0, 0, 0, 20, 89, 127, 64, 0, 0, 0, 0, 21, 73, 126, 80, 0, 0, 0, 0, 22, 57, 97, 64, 0, 0, 0, 0, 23, 41, 96, 80, 0, 0, 0, 0, 24, 34, 125, 192, 0, 0, 0, 0, 25, 9, 66, 80, 0, 0, 0, 0, 26, 2, 95, 192, 0, 0, 0, 0, 26, 43, 20, 16, 0, 0, 0, 0, 26, 242, 66, 176, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 210, 36, 176, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 178, 6, 176, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 118, 57, 48, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 86, 27, 48, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 53, 253, 48, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 38, 21, 223, 48, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 254, 251, 176, 0, 0, 0, 0, 41, 10, 142, 32, 0, 0, 0, 0, 41, 222, 221, 176, 0, 0, 0, 0, 42, 234, 112, 32, 0, 0, 0, 0, 43, 190, 191, 176, 0, 0, 0, 0, 44, 211, 140, 160, 0, 0, 0, 0, 45, 158, 161, 176, 0, 0, 0, 0, 46, 179, 110, 160, 0, 0, 0, 0, 47, 126, 131, 176, 0, 0, 0, 0, 48, 147, 80, 160, 0, 0, 0, 0, 49, 103, 160, 48, 0, 0, 0, 0, 50, 115, 50, 160, 0, 0, 0, 0, 51, 71, 130, 48, 0, 0, 0, 0, 52, 83, 20, 160, 0, 0, 0, 0, 53, 39, 100, 48, 0, 0, 0, 0, 54, 50, 246, 160, 0, 0, 0, 0, 55, 7, 70, 48, 0, 0, 0, 0, 56, 28, 19, 32, 0, 0, 0, 0, 56, 231, 40, 48, 0, 0, 0, 0, 57, 251, 245, 32, 0, 0, 0, 0, 58, 199, 10, 48, 0, 0, 0, 0, 59, 219, 215, 32, 0, 0, 0, 0, 60, 176, 38, 176, 0, 0, 0, 0, 61, 187, 185, 32, 0, 0, 0, 0, 62, 144, 8, 176, 0, 0, 0, 0, 63, 155, 155, 32, 0, 0, 0, 0, 64, 111, 234, 176, 0, 0, 0, 0, 65, 132, 183, 160, 0, 0, 0, 0, 66, 79, 204, 176, 0, 0, 0, 0, 67, 100, 153, 160, 0, 0, 0, 0, 68, 47, 174, 176, 0, 0, 0, 0, 69, 68, 123, 160, 0, 0, 0, 0, 69, 243, 225, 48, 0, 0, 0, 0, 71, 45, 152, 32, 0, 0, 0, 0, 71, 211, 195, 48, 0, 0, 0, 0, 73, 13, 122, 32, 0, 0, 0, 0, 73, 179, 165, 48, 0, 0, 0, 0, 74, 237, 92, 32, 0, 0, 0, 0, 75, 156, 193, 176, 0, 0, 0, 0, 76, 214, 120, 160, 0, 0, 0, 0, 77, 124, 163, 176, 0, 0, 0, 0, 78, 182, 90, 160, 0, 0, 0, 0, 79, 92, 133, 176, 0, 0, 0, 0, 80, 150, 60, 160, 0, 0, 0, 0, 81, 60, 103, 176, 0, 0, 0, 0, 82, 118, 30, 160, 0, 0, 0, 0, 83, 28, 73, 176, 0, 0, 0, 0, 84, 86, 0, 160, 0, 0, 0, 0, 84, 252, 43, 176, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 182, 110, 0, 0, 255, 255, 100, 238, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 129, 112, 0, 24, 255, 255, 143, 128, 1, 28, 255, 255, 129, 112, 0, 33, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Noronha": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 101, 100, 184, 15, 59, 208, 184, 253, 50, 144, 185, 241, 38, 32, 186, 222, 102, 16, 218, 56, 160, 32, 218, 235, 236, 32, 220, 25, 211, 160, 220, 185, 75, 16, 221, 251, 7, 32, 222, 155, 208, 16, 223, 221, 140, 32, 224, 84, 37, 16, 244, 151, 241, 160, 245, 5, 80, 16, 246, 192, 86, 32, 247, 14, 16, 144, 248, 81, 30, 32, 248, 199, 183, 16, 250, 10, 196, 160, 250, 168, 234, 144, 251, 235, 248, 32, 252, 139, 111, 144, 29, 201, 128, 32, 30, 120, 201, 144, 31, 160, 39, 160, 32, 51, 193, 144, 33, 129, 91, 32, 34, 11, 186, 144, 35, 88, 2, 160, 35, 226, 98, 16, 37, 55, 228, 160, 37, 212, 185, 16, 55, 246, 184, 160, 56, 184, 119, 16, 57, 223, 213, 32, 57, 233, 1, 144, 59, 200, 241, 160, 60, 111, 0, 144, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + "zoneinfo/America/Noronha": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 101, 100, 184, 15, 59, 208, 184, 253, 50, 144, 185, 241, 38, 32, 186, 222, 102, 16, 218, 56, 160, 32, 218, 235, 236, 32, 220, 25, 211, 160, 220, 185, 75, 16, 221, 251, 7, 32, 222, 155, 208, 16, 223, 221, 140, 32, 224, 84, 37, 16, 244, 151, 241, 160, 245, 5, 80, 16, 246, 192, 86, 32, 247, 14, 16, 144, 248, 81, 30, 32, 248, 199, 183, 16, 250, 10, 196, 160, 250, 168, 234, 144, 251, 235, 248, 32, 252, 139, 111, 144, 29, 201, 128, 32, 30, 120, 201, 144, 31, 160, 39, 160, 32, 51, 193, 144, 33, 129, 91, 32, 34, 11, 186, 144, 35, 88, 2, 160, 35, 226, 98, 16, 37, 55, 228, 160, 37, 212, 185, 16, 55, 246, 184, 160, 56, 184, 119, 16, 57, 223, 213, 32, 57, 233, 1, 144, 59, 200, 241, 160, 60, 111, 0, 144, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 101, 100, 255, 255, 255, 255, 184, 15, 59, 208, 255, 255, 255, 255, 184, 253, 50, 144, 255, 255, 255, 255, 185, 241, 38, 32, 255, 255, 255, 255, 186, 222, 102, 16, 255, 255, 255, 255, 218, 56, 160, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 220, 25, 211, 160, 255, 255, 255, 255, 220, 185, 75, 16, 255, 255, 255, 255, 221, 251, 7, 32, 255, 255, 255, 255, 222, 155, 208, 16, 255, 255, 255, 255, 223, 221, 140, 32, 255, 255, 255, 255, 224, 84, 37, 16, 255, 255, 255, 255, 244, 151, 241, 160, 255, 255, 255, 255, 245, 5, 80, 16, 255, 255, 255, 255, 246, 192, 86, 32, 255, 255, 255, 255, 247, 14, 16, 144, 255, 255, 255, 255, 248, 81, 30, 32, 255, 255, 255, 255, 248, 199, 183, 16, 255, 255, 255, 255, 250, 10, 196, 160, 255, 255, 255, 255, 250, 168, 234, 144, 255, 255, 255, 255, 251, 235, 248, 32, 255, 255, 255, 255, 252, 139, 111, 144, 0, 0, 0, 0, 29, 201, 128, 32, 0, 0, 0, 0, 30, 120, 201, 144, 0, 0, 0, 0, 31, 160, 39, 160, 0, 0, 0, 0, 32, 51, 193, 144, 0, 0, 0, 0, 33, 129, 91, 32, 0, 0, 0, 0, 34, 11, 186, 144, 0, 0, 0, 0, 35, 88, 2, 160, 0, 0, 0, 0, 35, 226, 98, 16, 0, 0, 0, 0, 37, 55, 228, 160, 0, 0, 0, 0, 37, 212, 185, 16, 0, 0, 0, 0, 55, 246, 184, 160, 0, 0, 0, 0, 56, 184, 119, 16, 0, 0, 0, 0, 57, 223, 213, 32, 0, 0, 0, 0, 57, 233, 1, 144, 0, 0, 0, 0, 59, 200, 241, 160, 0, 0, 0, 0, 60, 111, 0, 144, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 10, 60, 45, 48, 50, 62, 50, 10}, - "zoneinfo/America/North_Dakota/Beulah": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 149, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/North_Dakota/Beulah": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 149, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 149, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/North_Dakota/Center": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 161, 8, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/North_Dakota/Center": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 161, 8, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 161, 8, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/North_Dakota/New_Salem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 237, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/North_Dakota/New_Salem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 237, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 160, 237, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 24, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Ojinaga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 158, 28, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Ojinaga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 158, 28, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 245, 18, 144, 0, 0, 0, 0, 59, 182, 209, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 70, 15, 116, 144, 0, 0, 0, 0, 71, 36, 65, 128, 0, 0, 0, 0, 71, 248, 145, 16, 0, 0, 0, 0, 73, 4, 35, 128, 0, 0, 0, 0, 73, 216, 115, 16, 0, 0, 0, 0, 74, 228, 5, 128, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 158, 28, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 77, 68, 84, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Panama": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/America/Panama": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 105, 135, 38, 16, 255, 255, 255, 255, 139, 244, 97, 232, 1, 2, 255, 255, 181, 112, 0, 0, 255, 255, 181, 24, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 67, 77, 84, 0, 69, 83, 84, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/America/Pangnirtung": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 12, 0, 0, 0, 41, 163, 213, 82, 128, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 247, 47, 48, 64, 248, 40, 91, 192, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 1, 21, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 255, 255, 171, 160, 0, 33, 255, 255, 185, 176, 1, 37, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 45, 48, 48, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 65, 68, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Pangnirtung": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 12, 0, 0, 0, 41, 163, 213, 82, 128, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 247, 47, 48, 64, 248, 40, 91, 192, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 1, 21, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 255, 255, 171, 160, 0, 33, 255, 255, 185, 176, 1, 37, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 45, 48, 48, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 65, 68, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 12, 0, 0, 0, 41, 255, 255, 255, 255, 163, 213, 82, 128, 255, 255, 255, 255, 203, 136, 226, 96, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 255, 255, 255, 255, 247, 47, 48, 64, 255, 255, 255, 255, 248, 40, 91, 192, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 242, 224, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 161, 208, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 131, 208, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 101, 208, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 71, 208, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 41, 208, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 70, 80, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 40, 80, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 1, 21, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 255, 255, 171, 160, 0, 33, 255, 255, 185, 176, 1, 37, 255, 255, 199, 192, 1, 25, 255, 255, 185, 176, 0, 29, 45, 48, 48, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 83, 84, 0, 65, 68, 68, 84, 0, 65, 68, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Paramaribo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 145, 5, 142, 184, 190, 42, 75, 196, 210, 98, 44, 180, 27, 190, 49, 184, 127, 255, 255, 255, 1, 2, 3, 4, 4, 255, 255, 204, 72, 0, 0, 255, 255, 204, 60, 0, 4, 255, 255, 204, 76, 0, 4, 255, 255, 206, 200, 0, 8, 255, 255, 213, 208, 0, 14, 76, 77, 84, 0, 80, 77, 84, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Paramaribo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 145, 5, 142, 184, 190, 42, 75, 196, 210, 98, 44, 180, 27, 190, 49, 184, 127, 255, 255, 255, 1, 2, 3, 4, 4, 255, 255, 204, 72, 0, 0, 255, 255, 204, 60, 0, 4, 255, 255, 204, 76, 0, 4, 255, 255, 206, 200, 0, 8, 255, 255, 213, 208, 0, 14, 76, 77, 84, 0, 80, 77, 84, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 255, 255, 255, 255, 145, 5, 142, 184, 255, 255, 255, 255, 190, 42, 75, 196, 255, 255, 255, 255, 210, 98, 44, 180, 0, 0, 0, 0, 27, 190, 49, 184, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 4, 255, 255, 204, 72, 0, 0, 255, 255, 204, 60, 0, 4, 255, 255, 204, 76, 0, 4, 255, 255, 206, 200, 0, 8, 255, 255, 213, 208, 0, 14, 76, 77, 84, 0, 80, 77, 84, 0, 45, 48, 51, 51, 48, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Phoenix": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 207, 23, 223, 28, 207, 143, 229, 172, 208, 129, 26, 28, 250, 248, 117, 16, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/America/Phoenix": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 207, 23, 223, 28, 207, 143, 229, 172, 208, 129, 26, 28, 250, 248, 117, 16, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 207, 23, 223, 28, 255, 255, 255, 255, 207, 143, 229, 172, 255, 255, 255, 255, 208, 129, 26, 28, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/America/Port-au-Prince": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 156, 110, 113, 252, 25, 27, 70, 208, 26, 1, 239, 64, 26, 241, 238, 80, 27, 225, 209, 64, 28, 209, 208, 80, 29, 193, 179, 64, 30, 177, 178, 80, 31, 161, 149, 64, 32, 145, 148, 80, 33, 129, 119, 64, 34, 85, 212, 224, 35, 106, 175, 224, 36, 53, 182, 224, 37, 74, 145, 224, 38, 21, 152, 224, 39, 42, 115, 224, 39, 254, 181, 96, 41, 10, 85, 224, 41, 222, 151, 96, 42, 234, 55, 224, 43, 190, 121, 96, 44, 211, 84, 96, 45, 158, 91, 96, 46, 179, 54, 96, 47, 126, 61, 96, 48, 147, 24, 96, 49, 103, 89, 224, 50, 114, 250, 96, 51, 71, 59, 224, 52, 82, 220, 96, 66, 79, 120, 80, 67, 100, 69, 64, 68, 47, 90, 80, 69, 68, 39, 64, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 188, 48, 0, 0, 255, 255, 188, 68, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 76, 77, 84, 0, 80, 80, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Port-au-Prince": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 156, 110, 113, 252, 25, 27, 70, 208, 26, 1, 239, 64, 26, 241, 238, 80, 27, 225, 209, 64, 28, 209, 208, 80, 29, 193, 179, 64, 30, 177, 178, 80, 31, 161, 149, 64, 32, 145, 148, 80, 33, 129, 119, 64, 34, 85, 212, 224, 35, 106, 175, 224, 36, 53, 182, 224, 37, 74, 145, 224, 38, 21, 152, 224, 39, 42, 115, 224, 39, 254, 181, 96, 41, 10, 85, 224, 41, 222, 151, 96, 42, 234, 55, 224, 43, 190, 121, 96, 44, 211, 84, 96, 45, 158, 91, 96, 46, 179, 54, 96, 47, 126, 61, 96, 48, 147, 24, 96, 49, 103, 89, 224, 50, 114, 250, 96, 51, 71, 59, 224, 52, 82, 220, 96, 66, 79, 120, 80, 67, 100, 69, 64, 68, 47, 90, 80, 69, 68, 39, 64, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 188, 48, 0, 0, 255, 255, 188, 68, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 76, 77, 84, 0, 80, 80, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 105, 135, 31, 80, 255, 255, 255, 255, 156, 110, 113, 252, 0, 0, 0, 0, 25, 27, 70, 208, 0, 0, 0, 0, 26, 1, 239, 64, 0, 0, 0, 0, 26, 241, 238, 80, 0, 0, 0, 0, 27, 225, 209, 64, 0, 0, 0, 0, 28, 209, 208, 80, 0, 0, 0, 0, 29, 193, 179, 64, 0, 0, 0, 0, 30, 177, 178, 80, 0, 0, 0, 0, 31, 161, 149, 64, 0, 0, 0, 0, 32, 145, 148, 80, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 89, 224, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 59, 224, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 66, 79, 120, 80, 0, 0, 0, 0, 67, 100, 69, 64, 0, 0, 0, 0, 68, 47, 90, 80, 0, 0, 0, 0, 69, 68, 39, 64, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 188, 48, 0, 0, 255, 255, 188, 68, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 76, 77, 84, 0, 80, 80, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Port_of_Spain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Port_of_Spain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Porto_Acre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/America/Porto_Acre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 134, 144, 255, 255, 255, 255, 184, 15, 102, 0, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 241, 80, 80, 255, 255, 255, 255, 186, 222, 144, 64, 255, 255, 255, 255, 218, 56, 202, 80, 255, 255, 255, 255, 218, 236, 22, 80, 255, 255, 255, 255, 220, 25, 253, 208, 255, 255, 255, 255, 220, 185, 117, 64, 255, 255, 255, 255, 221, 251, 49, 80, 255, 255, 255, 255, 222, 155, 250, 64, 255, 255, 255, 255, 223, 221, 182, 80, 255, 255, 255, 255, 224, 84, 79, 64, 255, 255, 255, 255, 244, 152, 27, 208, 255, 255, 255, 255, 245, 5, 122, 64, 255, 255, 255, 255, 246, 192, 128, 80, 255, 255, 255, 255, 247, 14, 58, 192, 255, 255, 255, 255, 248, 81, 72, 80, 255, 255, 255, 255, 248, 199, 225, 64, 255, 255, 255, 255, 250, 10, 238, 208, 255, 255, 255, 255, 250, 169, 20, 192, 255, 255, 255, 255, 251, 236, 34, 80, 255, 255, 255, 255, 252, 139, 153, 192, 0, 0, 0, 0, 29, 201, 170, 80, 0, 0, 0, 0, 30, 120, 243, 192, 0, 0, 0, 0, 31, 160, 81, 208, 0, 0, 0, 0, 32, 51, 235, 192, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 11, 228, 192, 0, 0, 0, 0, 72, 96, 127, 80, 0, 0, 0, 0, 82, 127, 4, 192, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/America/Porto_Velho": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 130, 232, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 196, 24, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/America/Porto_Velho": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 130, 232, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 196, 24, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 130, 232, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 196, 24, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/America/Puerto_Rico": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 203, 246, 50, 192, 210, 35, 244, 112, 210, 96, 237, 208, 1, 3, 2, 1, 255, 255, 194, 7, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 65, 80, 84, 0, 65, 87, 84, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Puerto_Rico": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 203, 246, 50, 192, 210, 35, 244, 112, 210, 96, 237, 208, 1, 3, 2, 1, 255, 255, 194, 7, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 65, 80, 84, 0, 65, 87, 84, 0, 0, 0, 1, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 122, 230, 149, 185, 255, 255, 255, 255, 203, 246, 50, 192, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 1, 3, 2, 1, 255, 255, 194, 7, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 213, 208, 1, 12, 76, 77, 84, 0, 65, 83, 84, 0, 65, 80, 84, 0, 65, 87, 84, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Punta_Arenas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 88, 67, 134, 176, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 7, 255, 255, 189, 132, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 0, 16, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Punta_Arenas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 88, 67, 134, 176, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 7, 255, 255, 189, 132, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 0, 16, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 8, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 29, 252, 255, 255, 255, 255, 143, 48, 71, 70, 255, 255, 255, 255, 155, 92, 229, 80, 255, 255, 255, 255, 159, 124, 226, 198, 255, 255, 255, 255, 161, 0, 113, 192, 255, 255, 255, 255, 176, 94, 119, 198, 255, 255, 255, 255, 177, 119, 61, 64, 255, 255, 255, 255, 178, 65, 0, 208, 255, 255, 255, 255, 179, 88, 112, 192, 255, 255, 255, 255, 180, 34, 52, 80, 255, 255, 255, 255, 181, 57, 164, 64, 255, 255, 255, 255, 182, 3, 103, 208, 255, 255, 255, 255, 183, 26, 215, 192, 255, 255, 255, 255, 183, 228, 155, 80, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 199, 32, 80, 255, 255, 255, 255, 204, 28, 110, 64, 255, 255, 255, 255, 204, 108, 231, 208, 255, 255, 255, 255, 213, 51, 85, 192, 255, 255, 255, 255, 213, 118, 146, 64, 255, 255, 255, 255, 253, 209, 60, 64, 255, 255, 255, 255, 254, 146, 250, 176, 255, 255, 255, 255, 255, 204, 205, 192, 0, 0, 0, 0, 0, 114, 220, 176, 0, 0, 0, 0, 1, 117, 80, 192, 0, 0, 0, 0, 2, 64, 73, 176, 0, 0, 0, 0, 3, 85, 50, 192, 0, 0, 0, 0, 4, 32, 43, 176, 0, 0, 0, 0, 5, 62, 79, 64, 0, 0, 0, 0, 6, 0, 13, 176, 0, 0, 0, 0, 7, 11, 188, 64, 0, 0, 0, 0, 7, 223, 239, 176, 0, 0, 0, 0, 8, 254, 19, 64, 0, 0, 0, 0, 9, 191, 209, 176, 0, 0, 0, 0, 10, 221, 245, 64, 0, 0, 0, 0, 11, 168, 238, 48, 0, 0, 0, 0, 12, 189, 215, 64, 0, 0, 0, 0, 13, 136, 208, 48, 0, 0, 0, 0, 14, 157, 185, 64, 0, 0, 0, 0, 15, 104, 178, 48, 0, 0, 0, 0, 16, 134, 213, 192, 0, 0, 0, 0, 17, 72, 148, 48, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 40, 118, 48, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 17, 146, 176, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 22, 241, 116, 176, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 24, 209, 86, 176, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 177, 56, 176, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 145, 26, 176, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 112, 252, 176, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 127, 3, 48, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 57, 251, 48, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 25, 221, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 249, 191, 48, 0, 0, 0, 0, 38, 242, 248, 192, 0, 0, 0, 0, 39, 217, 161, 48, 0, 0, 0, 0, 40, 247, 196, 192, 0, 0, 0, 0, 41, 194, 189, 176, 0, 0, 0, 0, 42, 215, 166, 192, 0, 0, 0, 0, 43, 162, 159, 176, 0, 0, 0, 0, 44, 183, 136, 192, 0, 0, 0, 0, 45, 130, 129, 176, 0, 0, 0, 0, 46, 151, 106, 192, 0, 0, 0, 0, 47, 98, 99, 176, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 66, 69, 176, 0, 0, 0, 0, 50, 96, 105, 64, 0, 0, 0, 0, 51, 61, 215, 48, 0, 0, 0, 0, 52, 64, 75, 64, 0, 0, 0, 0, 53, 11, 68, 48, 0, 0, 0, 0, 54, 13, 184, 64, 0, 0, 0, 0, 55, 6, 213, 176, 0, 0, 0, 0, 56, 0, 15, 64, 0, 0, 0, 0, 56, 203, 8, 48, 0, 0, 0, 0, 57, 233, 43, 192, 0, 0, 0, 0, 58, 170, 234, 48, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 138, 204, 48, 0, 0, 0, 0, 61, 168, 239, 192, 0, 0, 0, 0, 62, 106, 174, 48, 0, 0, 0, 0, 63, 136, 209, 192, 0, 0, 0, 0, 64, 83, 202, 176, 0, 0, 0, 0, 65, 104, 179, 192, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 72, 149, 192, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 239, 2, 48, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 188, 111, 48, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 75, 184, 0, 176, 0, 0, 0, 0, 76, 177, 58, 64, 0, 0, 0, 0, 77, 198, 7, 48, 0, 0, 0, 0, 78, 80, 130, 192, 0, 0, 0, 0, 79, 156, 174, 176, 0, 0, 0, 0, 80, 66, 217, 192, 0, 0, 0, 0, 81, 124, 144, 176, 0, 0, 0, 0, 82, 43, 246, 64, 0, 0, 0, 0, 83, 92, 114, 176, 0, 0, 0, 0, 84, 11, 216, 64, 0, 0, 0, 0, 87, 55, 230, 48, 0, 0, 0, 0, 87, 175, 236, 192, 0, 0, 0, 0, 88, 67, 134, 176, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 7, 255, 255, 189, 132, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 255, 255, 213, 208, 0, 16, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Rainy_River": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 8, 32, 207, 128, 9, 16, 178, 112, 10, 0, 177, 128, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 167, 88, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Rainy_River": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 161, 128, 159, 186, 249, 112, 200, 248, 87, 96, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 8, 32, 207, 128, 9, 16, 178, 112, 10, 0, 177, 128, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 167, 88, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 114, 238, 135, 40, 255, 255, 255, 255, 158, 184, 161, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 200, 248, 87, 96, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 0, 0, 0, 0, 8, 32, 207, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 10, 0, 177, 128, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 167, 88, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Rankin_Inlet": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 21, 231, 140, 110, 0, 247, 47, 76, 96, 248, 40, 119, 224, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Rankin_Inlet": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 21, 231, 140, 110, 0, 247, 47, 76, 96, 248, 40, 119, 224, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 231, 140, 110, 0, 255, 255, 255, 255, 247, 47, 76, 96, 255, 255, 255, 255, 248, 40, 119, 224, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Recife": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 103, 184, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 233, 15, 160, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 223, 72, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Recife": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 103, 184, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 151, 255, 176, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 57, 233, 15, 160, 59, 200, 255, 176, 60, 111, 14, 160, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 223, 72, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 103, 184, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 151, 255, 176, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 57, 233, 15, 160, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 223, 72, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Regina": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 24, 134, 253, 147, 28, 158, 184, 175, 144, 159, 187, 7, 128, 181, 101, 79, 240, 182, 48, 72, 224, 183, 69, 49, 240, 184, 16, 42, 224, 185, 37, 19, 240, 185, 240, 12, 224, 187, 14, 48, 112, 187, 207, 238, 224, 188, 238, 18, 112, 189, 185, 11, 96, 194, 114, 8, 240, 195, 97, 235, 224, 196, 81, 234, 240, 197, 56, 147, 96, 198, 49, 204, 240, 199, 33, 175, 224, 200, 26, 233, 112, 201, 10, 204, 96, 201, 250, 203, 112, 202, 234, 174, 96, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 99, 140, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 218, 254, 195, 144, 219, 192, 130, 0, 220, 222, 165, 144, 221, 169, 158, 128, 222, 190, 135, 144, 223, 137, 128, 128, 224, 158, 105, 144, 225, 105, 98, 128, 226, 126, 75, 144, 227, 73, 68, 128, 228, 94, 45, 144, 229, 41, 38, 128, 230, 71, 74, 16, 231, 18, 67, 0, 232, 39, 44, 16, 232, 242, 37, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Regina": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 24, 134, 253, 147, 28, 158, 184, 175, 144, 159, 187, 7, 128, 181, 101, 79, 240, 182, 48, 72, 224, 183, 69, 49, 240, 184, 16, 42, 224, 185, 37, 19, 240, 185, 240, 12, 224, 187, 14, 48, 112, 187, 207, 238, 224, 188, 238, 18, 112, 189, 185, 11, 96, 194, 114, 8, 240, 195, 97, 235, 224, 196, 81, 234, 240, 197, 56, 147, 96, 198, 49, 204, 240, 199, 33, 175, 224, 200, 26, 233, 112, 201, 10, 204, 96, 201, 250, 203, 112, 202, 234, 174, 96, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 99, 140, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 218, 254, 195, 144, 219, 192, 130, 0, 220, 222, 165, 144, 221, 169, 158, 128, 222, 190, 135, 144, 223, 137, 128, 128, 224, 158, 105, 144, 225, 105, 98, 128, 226, 126, 75, 144, 227, 73, 68, 128, 228, 94, 45, 144, 229, 41, 38, 128, 230, 71, 74, 16, 231, 18, 67, 0, 232, 39, 44, 16, 232, 242, 37, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 134, 253, 147, 28, 255, 255, 255, 255, 158, 184, 175, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 181, 101, 79, 240, 255, 255, 255, 255, 182, 48, 72, 224, 255, 255, 255, 255, 183, 69, 49, 240, 255, 255, 255, 255, 184, 16, 42, 224, 255, 255, 255, 255, 185, 37, 19, 240, 255, 255, 255, 255, 185, 240, 12, 224, 255, 255, 255, 255, 187, 14, 48, 112, 255, 255, 255, 255, 187, 207, 238, 224, 255, 255, 255, 255, 188, 238, 18, 112, 255, 255, 255, 255, 189, 185, 11, 96, 255, 255, 255, 255, 194, 114, 8, 240, 255, 255, 255, 255, 195, 97, 235, 224, 255, 255, 255, 255, 196, 81, 234, 240, 255, 255, 255, 255, 197, 56, 147, 96, 255, 255, 255, 255, 198, 49, 204, 240, 255, 255, 255, 255, 199, 33, 175, 224, 255, 255, 255, 255, 200, 26, 233, 112, 255, 255, 255, 255, 201, 10, 204, 96, 255, 255, 255, 255, 201, 250, 203, 112, 255, 255, 255, 255, 202, 234, 174, 96, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 211, 99, 140, 16, 255, 255, 255, 255, 212, 83, 111, 0, 255, 255, 255, 255, 213, 85, 227, 16, 255, 255, 255, 255, 214, 32, 220, 0, 255, 255, 255, 255, 215, 53, 197, 16, 255, 255, 255, 255, 216, 0, 190, 0, 255, 255, 255, 255, 217, 21, 167, 16, 255, 255, 255, 255, 217, 224, 160, 0, 255, 255, 255, 255, 218, 254, 195, 144, 255, 255, 255, 255, 219, 192, 130, 0, 255, 255, 255, 255, 220, 222, 165, 144, 255, 255, 255, 255, 221, 169, 158, 128, 255, 255, 255, 255, 222, 190, 135, 144, 255, 255, 255, 255, 223, 137, 128, 128, 255, 255, 255, 255, 224, 158, 105, 144, 255, 255, 255, 255, 225, 105, 98, 128, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 68, 128, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 38, 128, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 67, 0, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 37, 0, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 214, 211, 0, 255, 255, 255, 255, 237, 198, 210, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Resolute": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 21, 213, 251, 129, 128, 247, 47, 76, 96, 248, 40, 119, 224, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Resolute": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 21, 213, 251, 129, 128, 247, 47, 76, 96, 248, 40, 119, 224, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 213, 251, 129, 128, 255, 255, 255, 255, 247, 47, 76, 96, 255, 255, 255, 255, 248, 40, 119, 224, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 171, 160, 0, 9, 255, 255, 185, 176, 1, 13, 255, 255, 185, 176, 0, 17, 255, 255, 171, 160, 0, 9, 45, 48, 48, 0, 67, 68, 68, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 69, 83, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Rio_Branco": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/America/Rio_Branco": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 134, 144, 255, 255, 255, 255, 184, 15, 102, 0, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 241, 80, 80, 255, 255, 255, 255, 186, 222, 144, 64, 255, 255, 255, 255, 218, 56, 202, 80, 255, 255, 255, 255, 218, 236, 22, 80, 255, 255, 255, 255, 220, 25, 253, 208, 255, 255, 255, 255, 220, 185, 117, 64, 255, 255, 255, 255, 221, 251, 49, 80, 255, 255, 255, 255, 222, 155, 250, 64, 255, 255, 255, 255, 223, 221, 182, 80, 255, 255, 255, 255, 224, 84, 79, 64, 255, 255, 255, 255, 244, 152, 27, 208, 255, 255, 255, 255, 245, 5, 122, 64, 255, 255, 255, 255, 246, 192, 128, 80, 255, 255, 255, 255, 247, 14, 58, 192, 255, 255, 255, 255, 248, 81, 72, 80, 255, 255, 255, 255, 248, 199, 225, 64, 255, 255, 255, 255, 250, 10, 238, 208, 255, 255, 255, 255, 250, 169, 20, 192, 255, 255, 255, 255, 251, 236, 34, 80, 255, 255, 255, 255, 252, 139, 153, 192, 0, 0, 0, 0, 29, 201, 170, 80, 0, 0, 0, 0, 30, 120, 243, 192, 0, 0, 0, 0, 31, 160, 81, 208, 0, 0, 0, 0, 32, 51, 235, 192, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 11, 228, 192, 0, 0, 0, 0, 72, 96, 127, 80, 0, 0, 0, 0, 82, 127, 4, 192, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/America/Rosario": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Rosario": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 162, 146, 143, 48, 182, 123, 82, 64, 183, 26, 201, 176, 184, 30, 143, 64, 184, 212, 112, 48, 186, 23, 125, 192, 186, 181, 163, 176, 187, 248, 177, 64, 188, 150, 215, 48, 189, 217, 228, 192, 190, 120, 10, 176, 191, 187, 24, 64, 192, 90, 143, 176, 193, 157, 157, 64, 194, 59, 195, 48, 195, 126, 208, 192, 196, 28, 246, 176, 197, 96, 4, 64, 197, 254, 42, 48, 199, 65, 55, 192, 199, 224, 175, 48, 200, 129, 148, 64, 202, 77, 161, 176, 202, 238, 134, 192, 206, 77, 255, 48, 206, 176, 237, 192, 211, 41, 53, 176, 212, 67, 100, 192, 244, 61, 8, 48, 244, 159, 246, 192, 245, 5, 108, 48, 246, 50, 16, 64, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 35, 148, 181, 176, 36, 16, 148, 160, 37, 55, 242, 176, 37, 240, 118, 160, 39, 33, 15, 48, 39, 208, 88, 160, 41, 0, 255, 64, 41, 176, 58, 160, 42, 224, 211, 48, 43, 153, 87, 32, 55, 246, 198, 176, 56, 191, 42, 176, 71, 119, 9, 176, 71, 220, 127, 32, 72, 250, 162, 176, 73, 188, 97, 32, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 114, 156, 173, 176, 255, 255, 255, 255, 162, 146, 143, 48, 255, 255, 255, 255, 182, 123, 82, 64, 255, 255, 255, 255, 183, 26, 201, 176, 255, 255, 255, 255, 184, 30, 143, 64, 255, 255, 255, 255, 184, 212, 112, 48, 255, 255, 255, 255, 186, 23, 125, 192, 255, 255, 255, 255, 186, 181, 163, 176, 255, 255, 255, 255, 187, 248, 177, 64, 255, 255, 255, 255, 188, 150, 215, 48, 255, 255, 255, 255, 189, 217, 228, 192, 255, 255, 255, 255, 190, 120, 10, 176, 255, 255, 255, 255, 191, 187, 24, 64, 255, 255, 255, 255, 192, 90, 143, 176, 255, 255, 255, 255, 193, 157, 157, 64, 255, 255, 255, 255, 194, 59, 195, 48, 255, 255, 255, 255, 195, 126, 208, 192, 255, 255, 255, 255, 196, 28, 246, 176, 255, 255, 255, 255, 197, 96, 4, 64, 255, 255, 255, 255, 197, 254, 42, 48, 255, 255, 255, 255, 199, 65, 55, 192, 255, 255, 255, 255, 199, 224, 175, 48, 255, 255, 255, 255, 200, 129, 148, 64, 255, 255, 255, 255, 202, 77, 161, 176, 255, 255, 255, 255, 202, 238, 134, 192, 255, 255, 255, 255, 206, 77, 255, 48, 255, 255, 255, 255, 206, 176, 237, 192, 255, 255, 255, 255, 211, 41, 53, 176, 255, 255, 255, 255, 212, 67, 100, 192, 255, 255, 255, 255, 244, 61, 8, 48, 255, 255, 255, 255, 244, 159, 246, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 50, 16, 64, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 35, 148, 181, 176, 0, 0, 0, 0, 36, 16, 148, 160, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 240, 118, 160, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 208, 88, 160, 0, 0, 0, 0, 41, 0, 255, 64, 0, 0, 0, 0, 41, 176, 58, 160, 0, 0, 0, 0, 42, 224, 211, 48, 0, 0, 0, 0, 43, 153, 87, 32, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 191, 42, 176, 0, 0, 0, 0, 71, 119, 9, 176, 0, 0, 0, 0, 71, 220, 127, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 188, 97, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 4, 5, 4, 5, 4, 5, 4, 2, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 5, 255, 255, 195, 208, 0, 0, 255, 255, 195, 208, 0, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 12, 76, 77, 84, 0, 67, 77, 84, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Santa_Isabel": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Santa_Isabel": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 165, 182, 246, 128, 255, 255, 255, 255, 169, 121, 79, 112, 255, 255, 255, 255, 175, 242, 124, 240, 255, 255, 255, 255, 182, 102, 100, 112, 255, 255, 255, 255, 183, 27, 16, 0, 255, 255, 255, 255, 184, 10, 242, 240, 255, 255, 255, 255, 203, 234, 141, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 153, 186, 112, 255, 255, 255, 255, 215, 27, 89, 0, 255, 255, 255, 255, 216, 145, 180, 240, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 14, 16, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 217, 16, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 70, 15, 130, 160, 0, 0, 0, 0, 71, 36, 79, 144, 0, 0, 0, 0, 71, 248, 159, 32, 0, 0, 0, 0, 73, 4, 49, 144, 0, 0, 0, 0, 73, 216, 129, 32, 0, 0, 0, 0, 74, 228, 19, 144, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Santarem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0, 12, 150, 170, 122, 72, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 72, 96, 113, 64, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 3, 255, 255, 204, 184, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 4, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/America/Santarem": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0, 12, 150, 170, 122, 72, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 72, 96, 113, 64, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 3, 255, 255, 204, 184, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 4, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 122, 72, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 72, 96, 113, 64, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 3, 255, 255, 204, 184, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 0, 4, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Santiago": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 211, 220, 143, 192, 212, 27, 201, 176, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 52, 44, 77, 52, 46, 49, 46, 54, 47, 50, 52, 10}, + "zoneinfo/America/Santiago": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 211, 220, 143, 192, 212, 27, 201, 176, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 29, 198, 255, 255, 255, 255, 143, 48, 71, 70, 255, 255, 255, 255, 155, 92, 229, 80, 255, 255, 255, 255, 159, 124, 226, 198, 255, 255, 255, 255, 161, 0, 113, 192, 255, 255, 255, 255, 176, 94, 119, 198, 255, 255, 255, 255, 177, 119, 61, 64, 255, 255, 255, 255, 178, 65, 0, 208, 255, 255, 255, 255, 179, 88, 112, 192, 255, 255, 255, 255, 180, 34, 52, 80, 255, 255, 255, 255, 181, 57, 164, 64, 255, 255, 255, 255, 182, 3, 103, 208, 255, 255, 255, 255, 183, 26, 215, 192, 255, 255, 255, 255, 183, 228, 155, 80, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 199, 32, 80, 255, 255, 255, 255, 204, 28, 110, 64, 255, 255, 255, 255, 204, 108, 231, 208, 255, 255, 255, 255, 211, 220, 143, 192, 255, 255, 255, 255, 212, 27, 201, 176, 255, 255, 255, 255, 213, 51, 85, 192, 255, 255, 255, 255, 213, 118, 146, 64, 255, 255, 255, 255, 253, 209, 60, 64, 255, 255, 255, 255, 254, 146, 250, 176, 255, 255, 255, 255, 255, 204, 205, 192, 0, 0, 0, 0, 0, 114, 220, 176, 0, 0, 0, 0, 1, 117, 80, 192, 0, 0, 0, 0, 2, 64, 73, 176, 0, 0, 0, 0, 3, 85, 50, 192, 0, 0, 0, 0, 4, 32, 43, 176, 0, 0, 0, 0, 5, 62, 79, 64, 0, 0, 0, 0, 6, 0, 13, 176, 0, 0, 0, 0, 7, 11, 188, 64, 0, 0, 0, 0, 7, 223, 239, 176, 0, 0, 0, 0, 8, 254, 19, 64, 0, 0, 0, 0, 9, 191, 209, 176, 0, 0, 0, 0, 10, 221, 245, 64, 0, 0, 0, 0, 11, 168, 238, 48, 0, 0, 0, 0, 12, 189, 215, 64, 0, 0, 0, 0, 13, 136, 208, 48, 0, 0, 0, 0, 14, 157, 185, 64, 0, 0, 0, 0, 15, 104, 178, 48, 0, 0, 0, 0, 16, 134, 213, 192, 0, 0, 0, 0, 17, 72, 148, 48, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 40, 118, 48, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 17, 146, 176, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 22, 241, 116, 176, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 24, 209, 86, 176, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 177, 56, 176, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 145, 26, 176, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 112, 252, 176, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 127, 3, 48, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 57, 251, 48, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 25, 221, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 249, 191, 48, 0, 0, 0, 0, 38, 242, 248, 192, 0, 0, 0, 0, 39, 217, 161, 48, 0, 0, 0, 0, 40, 247, 196, 192, 0, 0, 0, 0, 41, 194, 189, 176, 0, 0, 0, 0, 42, 215, 166, 192, 0, 0, 0, 0, 43, 162, 159, 176, 0, 0, 0, 0, 44, 183, 136, 192, 0, 0, 0, 0, 45, 130, 129, 176, 0, 0, 0, 0, 46, 151, 106, 192, 0, 0, 0, 0, 47, 98, 99, 176, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 66, 69, 176, 0, 0, 0, 0, 50, 96, 105, 64, 0, 0, 0, 0, 51, 61, 215, 48, 0, 0, 0, 0, 52, 64, 75, 64, 0, 0, 0, 0, 53, 11, 68, 48, 0, 0, 0, 0, 54, 13, 184, 64, 0, 0, 0, 0, 55, 6, 213, 176, 0, 0, 0, 0, 56, 0, 15, 64, 0, 0, 0, 0, 56, 203, 8, 48, 0, 0, 0, 0, 57, 233, 43, 192, 0, 0, 0, 0, 58, 170, 234, 48, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 138, 204, 48, 0, 0, 0, 0, 61, 168, 239, 192, 0, 0, 0, 0, 62, 106, 174, 48, 0, 0, 0, 0, 63, 136, 209, 192, 0, 0, 0, 0, 64, 83, 202, 176, 0, 0, 0, 0, 65, 104, 179, 192, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 72, 149, 192, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 239, 2, 48, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 188, 111, 48, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 75, 184, 0, 176, 0, 0, 0, 0, 76, 177, 58, 64, 0, 0, 0, 0, 77, 198, 7, 48, 0, 0, 0, 0, 78, 80, 130, 192, 0, 0, 0, 0, 79, 156, 174, 176, 0, 0, 0, 0, 80, 66, 217, 192, 0, 0, 0, 0, 81, 124, 144, 176, 0, 0, 0, 0, 82, 43, 246, 64, 0, 0, 0, 0, 83, 92, 114, 176, 0, 0, 0, 0, 84, 11, 216, 64, 0, 0, 0, 0, 87, 55, 230, 48, 0, 0, 0, 0, 87, 175, 236, 192, 0, 0, 0, 0, 89, 23, 200, 48, 0, 0, 0, 0, 89, 143, 206, 192, 0, 0, 0, 0, 90, 247, 170, 48, 0, 0, 0, 0, 91, 111, 176, 192, 0, 0, 0, 0, 92, 169, 103, 176, 0, 0, 0, 0, 93, 116, 124, 192, 0, 0, 0, 0, 94, 137, 73, 176, 0, 0, 0, 0, 95, 84, 94, 192, 0, 0, 0, 0, 96, 105, 43, 176, 0, 0, 0, 0, 97, 52, 64, 192, 0, 0, 0, 0, 98, 73, 13, 176, 0, 0, 0, 0, 99, 20, 34, 192, 0, 0, 0, 0, 100, 40, 239, 176, 0, 0, 0, 0, 100, 244, 4, 192, 0, 0, 0, 0, 102, 18, 12, 48, 0, 0, 0, 0, 102, 221, 33, 64, 0, 0, 0, 0, 103, 241, 238, 48, 0, 0, 0, 0, 104, 189, 3, 64, 0, 0, 0, 0, 105, 209, 208, 48, 0, 0, 0, 0, 106, 156, 229, 64, 0, 0, 0, 0, 107, 177, 178, 48, 0, 0, 0, 0, 108, 124, 199, 64, 0, 0, 0, 0, 109, 145, 148, 48, 0, 0, 0, 0, 110, 92, 169, 64, 0, 0, 0, 0, 111, 122, 176, 176, 0, 0, 0, 0, 112, 60, 139, 64, 0, 0, 0, 0, 113, 90, 146, 176, 0, 0, 0, 0, 114, 37, 167, 192, 0, 0, 0, 0, 115, 58, 116, 176, 0, 0, 0, 0, 116, 5, 137, 192, 0, 0, 0, 0, 117, 26, 86, 176, 0, 0, 0, 0, 117, 229, 107, 192, 0, 0, 0, 0, 118, 250, 56, 176, 0, 0, 0, 0, 119, 197, 77, 192, 0, 0, 0, 0, 120, 218, 26, 176, 0, 0, 0, 0, 121, 165, 47, 192, 0, 0, 0, 0, 122, 195, 55, 48, 0, 0, 0, 0, 123, 133, 17, 192, 0, 0, 0, 0, 124, 163, 25, 48, 0, 0, 0, 0, 125, 110, 46, 64, 0, 0, 0, 0, 126, 130, 251, 48, 0, 0, 0, 0, 127, 78, 16, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 52, 44, 77, 52, 46, 49, 46, 54, 47, 50, 52, 10}, - "zoneinfo/America/Santo_Domingo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 6, 0, 0, 0, 27, 128, 0, 0, 0, 186, 223, 66, 96, 250, 8, 75, 208, 250, 167, 195, 64, 255, 167, 241, 208, 0, 67, 123, 200, 1, 135, 211, 208, 1, 250, 127, 72, 3, 112, 240, 80, 3, 221, 4, 72, 5, 80, 210, 80, 5, 191, 137, 72, 7, 48, 180, 80, 7, 160, 188, 200, 9, 16, 150, 80, 57, 251, 188, 224, 58, 41, 225, 96, 1, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 255, 255, 190, 120, 0, 0, 255, 255, 190, 96, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 192, 184, 1, 17, 255, 255, 199, 192, 0, 23, 76, 77, 84, 0, 83, 68, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Santo_Domingo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 6, 0, 0, 0, 27, 128, 0, 0, 0, 186, 223, 66, 96, 250, 8, 75, 208, 250, 167, 195, 64, 255, 167, 241, 208, 0, 67, 123, 200, 1, 135, 211, 208, 1, 250, 127, 72, 3, 112, 240, 80, 3, 221, 4, 72, 5, 80, 210, 80, 5, 191, 137, 72, 7, 48, 180, 80, 7, 160, 188, 200, 9, 16, 150, 80, 57, 251, 188, 224, 58, 41, 225, 96, 1, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 255, 255, 190, 120, 0, 0, 255, 255, 190, 96, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 192, 184, 1, 17, 255, 255, 199, 192, 0, 23, 76, 77, 84, 0, 83, 68, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 6, 0, 0, 0, 27, 255, 255, 255, 255, 105, 135, 29, 8, 255, 255, 255, 255, 186, 223, 66, 96, 255, 255, 255, 255, 250, 8, 75, 208, 255, 255, 255, 255, 250, 167, 195, 64, 255, 255, 255, 255, 255, 167, 241, 208, 0, 0, 0, 0, 0, 67, 123, 200, 0, 0, 0, 0, 1, 135, 211, 208, 0, 0, 0, 0, 1, 250, 127, 72, 0, 0, 0, 0, 3, 112, 240, 80, 0, 0, 0, 0, 3, 221, 4, 72, 0, 0, 0, 0, 5, 80, 210, 80, 0, 0, 0, 0, 5, 191, 137, 72, 0, 0, 0, 0, 7, 48, 180, 80, 0, 0, 0, 0, 7, 160, 188, 200, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 41, 225, 96, 1, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 255, 255, 190, 120, 0, 0, 255, 255, 190, 96, 0, 4, 255, 255, 199, 192, 1, 9, 255, 255, 185, 176, 0, 13, 255, 255, 192, 184, 1, 17, 255, 255, 199, 192, 0, 23, 76, 77, 84, 0, 83, 68, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 45, 48, 52, 51, 48, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Sao_Paulo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 114, 180, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 90, 9, 48, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 63, 145, 254, 48, 64, 46, 210, 160, 65, 134, 248, 48, 66, 23, 239, 32, 67, 81, 194, 48, 67, 247, 209, 32, 69, 77, 83, 176, 69, 224, 237, 160, 71, 17, 134, 48, 71, 183, 149, 32, 72, 250, 162, 176, 73, 151, 119, 32, 74, 218, 132, 176, 75, 128, 147, 160, 76, 186, 102, 176, 77, 96, 117, 160, 78, 154, 72, 176, 79, 73, 146, 32, 80, 131, 101, 48, 81, 32, 57, 160, 82, 99, 71, 48, 83, 0, 27, 160, 84, 67, 41, 48, 84, 233, 56, 32, 86, 35, 11, 48, 86, 201, 26, 32, 88, 2, 237, 48, 88, 168, 252, 32, 89, 226, 207, 48, 90, 136, 222, 32, 91, 222, 96, 176, 92, 104, 192, 32, 93, 190, 66, 176, 94, 72, 162, 32, 95, 158, 36, 176, 96, 49, 190, 160, 97, 135, 65, 48, 98, 17, 160, 160, 99, 103, 35, 48, 99, 250, 189, 32, 101, 71, 5, 48, 101, 209, 100, 160, 103, 38, 231, 48, 103, 177, 70, 160, 105, 6, 201, 48, 105, 154, 99, 32, 106, 230, 171, 48, 107, 122, 69, 32, 108, 207, 199, 176, 109, 90, 39, 32, 110, 175, 169, 176, 111, 58, 9, 32, 112, 143, 139, 176, 113, 25, 235, 32, 114, 111, 109, 176, 114, 249, 205, 32, 116, 79, 79, 176, 116, 217, 175, 32, 118, 56, 108, 48, 118, 194, 203, 160, 120, 24, 78, 48, 120, 171, 232, 32, 121, 248, 48, 48, 122, 130, 143, 160, 123, 216, 18, 48, 124, 98, 113, 160, 125, 183, 244, 48, 126, 75, 142, 32, 127, 151, 214, 48, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 49, 49, 46, 49, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + "zoneinfo/America/Sao_Paulo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 114, 180, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 90, 9, 48, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 63, 145, 254, 48, 64, 46, 210, 160, 65, 134, 248, 48, 66, 23, 239, 32, 67, 81, 194, 48, 67, 247, 209, 32, 69, 77, 83, 176, 69, 224, 237, 160, 71, 17, 134, 48, 71, 183, 149, 32, 72, 250, 162, 176, 73, 151, 119, 32, 74, 218, 132, 176, 75, 128, 147, 160, 76, 186, 102, 176, 77, 96, 117, 160, 78, 154, 72, 176, 79, 73, 146, 32, 80, 131, 101, 48, 81, 32, 57, 160, 82, 99, 71, 48, 83, 0, 27, 160, 84, 67, 41, 48, 84, 233, 56, 32, 86, 35, 11, 48, 86, 201, 26, 32, 88, 2, 237, 48, 88, 168, 252, 32, 89, 226, 207, 48, 90, 136, 222, 32, 91, 222, 96, 176, 92, 104, 192, 32, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 114, 180, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 90, 9, 48, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 189, 227, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 148, 139, 32, 0, 0, 0, 0, 42, 234, 13, 176, 0, 0, 0, 0, 43, 107, 50, 160, 0, 0, 0, 0, 44, 192, 181, 48, 0, 0, 0, 0, 45, 102, 196, 32, 0, 0, 0, 0, 46, 160, 151, 48, 0, 0, 0, 0, 47, 70, 166, 32, 0, 0, 0, 0, 48, 128, 121, 48, 0, 0, 0, 0, 49, 29, 77, 160, 0, 0, 0, 0, 50, 87, 32, 176, 0, 0, 0, 0, 51, 6, 106, 32, 0, 0, 0, 0, 52, 56, 84, 48, 0, 0, 0, 0, 52, 248, 193, 32, 0, 0, 0, 0, 54, 32, 31, 48, 0, 0, 0, 0, 54, 207, 104, 160, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 58, 143, 44, 160, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 61, 196, 145, 48, 0, 0, 0, 0, 62, 78, 240, 160, 0, 0, 0, 0, 63, 145, 254, 48, 0, 0, 0, 0, 64, 46, 210, 160, 0, 0, 0, 0, 65, 134, 248, 48, 0, 0, 0, 0, 66, 23, 239, 32, 0, 0, 0, 0, 67, 81, 194, 48, 0, 0, 0, 0, 67, 247, 209, 32, 0, 0, 0, 0, 69, 77, 83, 176, 0, 0, 0, 0, 69, 224, 237, 160, 0, 0, 0, 0, 71, 17, 134, 48, 0, 0, 0, 0, 71, 183, 149, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 151, 119, 32, 0, 0, 0, 0, 74, 218, 132, 176, 0, 0, 0, 0, 75, 128, 147, 160, 0, 0, 0, 0, 76, 186, 102, 176, 0, 0, 0, 0, 77, 96, 117, 160, 0, 0, 0, 0, 78, 154, 72, 176, 0, 0, 0, 0, 79, 73, 146, 32, 0, 0, 0, 0, 80, 131, 101, 48, 0, 0, 0, 0, 81, 32, 57, 160, 0, 0, 0, 0, 82, 99, 71, 48, 0, 0, 0, 0, 83, 0, 27, 160, 0, 0, 0, 0, 84, 67, 41, 48, 0, 0, 0, 0, 84, 233, 56, 32, 0, 0, 0, 0, 86, 35, 11, 48, 0, 0, 0, 0, 86, 201, 26, 32, 0, 0, 0, 0, 88, 2, 237, 48, 0, 0, 0, 0, 88, 168, 252, 32, 0, 0, 0, 0, 89, 226, 207, 48, 0, 0, 0, 0, 90, 136, 222, 32, 0, 0, 0, 0, 91, 222, 96, 176, 0, 0, 0, 0, 92, 104, 192, 32, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/America/Scoresbysund": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 7, 0, 0, 0, 16, 155, 128, 76, 24, 19, 77, 110, 64, 20, 52, 36, 192, 21, 35, 249, 160, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 255, 255, 235, 104, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 1, 12, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 43, 48, 48, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 49, 62, 49, 60, 43, 48, 48, 62, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 49, 10}, + "zoneinfo/America/Scoresbysund": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 7, 0, 0, 0, 16, 155, 128, 76, 24, 19, 77, 110, 64, 20, 52, 36, 192, 21, 35, 249, 160, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 255, 255, 235, 104, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 1, 12, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 43, 48, 48, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 7, 0, 0, 0, 16, 255, 255, 255, 255, 155, 128, 76, 24, 0, 0, 0, 0, 19, 77, 110, 64, 0, 0, 0, 0, 20, 52, 36, 192, 0, 0, 0, 0, 21, 35, 249, 160, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 255, 255, 235, 104, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 12, 0, 0, 0, 0, 1, 12, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 43, 48, 48, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 49, 62, 49, 60, 43, 48, 48, 62, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 49, 10}, - "zoneinfo/America/Shiprock": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Shiprock": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 162, 101, 254, 144, 255, 255, 255, 255, 163, 132, 6, 0, 255, 255, 255, 255, 164, 69, 224, 144, 255, 255, 255, 255, 164, 143, 166, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 148, 0, 255, 255, 255, 255, 249, 15, 88, 144, 255, 255, 255, 255, 250, 8, 118, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Sitka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 8, 0, 0, 0, 34, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 210, 167, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 24, 255, 255, 129, 112, 0, 29, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Sitka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 8, 0, 0, 0, 34, 128, 0, 0, 0, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 210, 167, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 24, 255, 255, 129, 112, 0, 29, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 34, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 51, 153, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 7, 141, 67, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 9, 173, 191, 32, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 43, 20, 16, 0, 0, 0, 0, 26, 242, 66, 176, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 210, 36, 176, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 178, 6, 176, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 118, 57, 48, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 86, 27, 48, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 53, 253, 48, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 38, 21, 223, 48, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 254, 251, 176, 0, 0, 0, 0, 41, 10, 142, 32, 0, 0, 0, 0, 41, 222, 221, 176, 0, 0, 0, 0, 42, 234, 112, 32, 0, 0, 0, 0, 43, 190, 191, 176, 0, 0, 0, 0, 44, 211, 140, 160, 0, 0, 0, 0, 45, 158, 161, 176, 0, 0, 0, 0, 46, 179, 110, 160, 0, 0, 0, 0, 47, 126, 131, 176, 0, 0, 0, 0, 48, 147, 80, 160, 0, 0, 0, 0, 49, 103, 160, 48, 0, 0, 0, 0, 50, 115, 50, 160, 0, 0, 0, 0, 51, 71, 130, 48, 0, 0, 0, 0, 52, 83, 20, 160, 0, 0, 0, 0, 53, 39, 100, 48, 0, 0, 0, 0, 54, 50, 246, 160, 0, 0, 0, 0, 55, 7, 70, 48, 0, 0, 0, 0, 56, 28, 19, 32, 0, 0, 0, 0, 56, 231, 40, 48, 0, 0, 0, 0, 57, 251, 245, 32, 0, 0, 0, 0, 58, 199, 10, 48, 0, 0, 0, 0, 59, 219, 215, 32, 0, 0, 0, 0, 60, 176, 38, 176, 0, 0, 0, 0, 61, 187, 185, 32, 0, 0, 0, 0, 62, 144, 8, 176, 0, 0, 0, 0, 63, 155, 155, 32, 0, 0, 0, 0, 64, 111, 234, 176, 0, 0, 0, 0, 65, 132, 183, 160, 0, 0, 0, 0, 66, 79, 204, 176, 0, 0, 0, 0, 67, 100, 153, 160, 0, 0, 0, 0, 68, 47, 174, 176, 0, 0, 0, 0, 69, 68, 123, 160, 0, 0, 0, 0, 69, 243, 225, 48, 0, 0, 0, 0, 71, 45, 152, 32, 0, 0, 0, 0, 71, 211, 195, 48, 0, 0, 0, 0, 73, 13, 122, 32, 0, 0, 0, 0, 73, 179, 165, 48, 0, 0, 0, 0, 74, 237, 92, 32, 0, 0, 0, 0, 75, 156, 193, 176, 0, 0, 0, 0, 76, 214, 120, 160, 0, 0, 0, 0, 77, 124, 163, 176, 0, 0, 0, 0, 78, 182, 90, 160, 0, 0, 0, 0, 79, 92, 133, 176, 0, 0, 0, 0, 80, 150, 60, 160, 0, 0, 0, 0, 81, 60, 103, 176, 0, 0, 0, 0, 82, 118, 30, 160, 0, 0, 0, 0, 83, 28, 73, 176, 0, 0, 0, 0, 84, 86, 0, 160, 0, 0, 0, 0, 84, 252, 43, 176, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 210, 167, 0, 0, 255, 255, 129, 39, 0, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 129, 112, 0, 20, 255, 255, 143, 128, 1, 24, 255, 255, 129, 112, 0, 29, 76, 77, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 80, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/St_Barthelemy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/St_Barthelemy": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/St_Johns": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 128, 0, 0, 0, 156, 207, 98, 12, 157, 164, 230, 252, 158, 184, 126, 140, 159, 186, 214, 124, 160, 182, 136, 220, 161, 56, 255, 76, 162, 149, 25, 92, 163, 132, 252, 76, 164, 116, 251, 92, 165, 100, 222, 76, 166, 94, 23, 220, 167, 68, 192, 76, 168, 61, 249, 220, 169, 36, 162, 76, 170, 29, 219, 220, 171, 4, 132, 76, 171, 253, 189, 220, 172, 228, 102, 76, 173, 221, 159, 220, 174, 205, 130, 204, 175, 189, 129, 220, 176, 173, 100, 204, 177, 166, 158, 92, 178, 141, 70, 204, 179, 134, 128, 92, 180, 109, 40, 204, 181, 102, 98, 92, 182, 77, 10, 204, 183, 70, 68, 92, 184, 44, 236, 204, 185, 38, 38, 92, 186, 22, 9, 76, 187, 15, 66, 220, 187, 245, 235, 76, 188, 239, 36, 220, 189, 213, 205, 76, 190, 158, 77, 108, 190, 207, 6, 168, 191, 181, 175, 24, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 249, 15, 39, 88, 250, 8, 68, 200, 250, 248, 67, 216, 251, 232, 38, 200, 252, 216, 37, 216, 253, 200, 8, 200, 254, 184, 7, 216, 255, 167, 234, 200, 0, 151, 233, 216, 1, 135, 204, 200, 2, 119, 203, 216, 3, 112, 233, 72, 4, 96, 232, 88, 5, 80, 203, 72, 6, 64, 202, 88, 7, 48, 173, 72, 8, 32, 172, 88, 9, 16, 143, 72, 10, 0, 142, 88, 10, 240, 113, 72, 11, 224, 112, 88, 12, 217, 141, 200, 13, 192, 82, 88, 14, 185, 111, 200, 15, 169, 110, 216, 16, 153, 81, 200, 17, 137, 80, 216, 18, 121, 51, 200, 19, 105, 50, 216, 20, 89, 21, 200, 21, 73, 20, 216, 22, 56, 247, 200, 23, 40, 246, 216, 24, 34, 20, 72, 25, 8, 216, 216, 26, 1, 246, 72, 26, 241, 245, 88, 27, 225, 216, 72, 28, 209, 215, 88, 29, 193, 186, 72, 30, 177, 185, 88, 31, 161, 156, 72, 32, 117, 207, 244, 33, 129, 98, 100, 34, 85, 177, 244, 35, 106, 112, 212, 36, 53, 147, 244, 37, 74, 96, 228, 38, 21, 117, 244, 39, 42, 66, 228, 39, 254, 146, 116, 41, 10, 36, 228, 41, 222, 116, 116, 42, 234, 6, 228, 43, 190, 86, 116, 44, 211, 35, 100, 45, 158, 56, 116, 46, 179, 5, 100, 47, 126, 26, 116, 48, 146, 231, 100, 49, 103, 54, 244, 50, 114, 201, 100, 51, 71, 24, 244, 52, 82, 171, 100, 53, 38, 250, 244, 54, 50, 141, 100, 55, 6, 220, 244, 56, 27, 169, 228, 56, 230, 190, 244, 57, 251, 139, 228, 58, 198, 160, 244, 59, 219, 109, 228, 60, 175, 189, 116, 61, 187, 79, 228, 62, 143, 159, 116, 63, 155, 49, 228, 64, 111, 129, 116, 65, 132, 78, 100, 66, 79, 99, 116, 67, 100, 48, 100, 68, 47, 69, 116, 69, 68, 18, 100, 69, 243, 119, 244, 71, 45, 46, 228, 71, 211, 89, 244, 73, 13, 16, 228, 73, 179, 59, 244, 74, 236, 242, 228, 75, 156, 88, 116, 76, 214, 15, 100, 77, 124, 58, 116, 78, 182, 13, 72, 79, 92, 56, 88, 80, 149, 239, 72, 81, 60, 26, 88, 82, 117, 209, 72, 83, 27, 252, 88, 84, 85, 179, 72, 84, 251, 222, 88, 86, 53, 149, 72, 86, 228, 250, 216, 88, 30, 177, 200, 88, 196, 220, 216, 89, 254, 147, 200, 90, 164, 190, 216, 91, 222, 117, 200, 92, 132, 160, 216, 93, 190, 87, 200, 94, 100, 130, 216, 95, 158, 57, 200, 96, 77, 159, 88, 97, 135, 86, 72, 98, 45, 129, 88, 99, 103, 56, 72, 100, 13, 99, 88, 101, 71, 26, 72, 101, 237, 69, 88, 103, 38, 252, 72, 103, 205, 39, 88, 105, 6, 222, 72, 105, 173, 9, 88, 106, 230, 192, 72, 107, 150, 37, 216, 108, 207, 220, 200, 109, 118, 7, 216, 110, 175, 190, 200, 111, 85, 233, 216, 112, 143, 160, 200, 113, 53, 203, 216, 114, 111, 130, 200, 115, 21, 173, 216, 116, 79, 100, 200, 116, 254, 202, 88, 118, 56, 129, 72, 118, 222, 172, 88, 120, 24, 99, 72, 120, 190, 142, 88, 121, 248, 69, 72, 122, 158, 112, 88, 123, 216, 39, 72, 124, 126, 82, 88, 125, 184, 9, 72, 126, 94, 52, 88, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 78, 83, 84, 51, 58, 51, 48, 78, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/St_Johns": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 128, 0, 0, 0, 156, 207, 98, 12, 157, 164, 230, 252, 158, 184, 126, 140, 159, 186, 214, 124, 160, 182, 136, 220, 161, 56, 255, 76, 162, 149, 25, 92, 163, 132, 252, 76, 164, 116, 251, 92, 165, 100, 222, 76, 166, 94, 23, 220, 167, 68, 192, 76, 168, 61, 249, 220, 169, 36, 162, 76, 170, 29, 219, 220, 171, 4, 132, 76, 171, 253, 189, 220, 172, 228, 102, 76, 173, 221, 159, 220, 174, 205, 130, 204, 175, 189, 129, 220, 176, 173, 100, 204, 177, 166, 158, 92, 178, 141, 70, 204, 179, 134, 128, 92, 180, 109, 40, 204, 181, 102, 98, 92, 182, 77, 10, 204, 183, 70, 68, 92, 184, 44, 236, 204, 185, 38, 38, 92, 186, 22, 9, 76, 187, 15, 66, 220, 187, 245, 235, 76, 188, 239, 36, 220, 189, 213, 205, 76, 190, 158, 77, 108, 190, 207, 6, 168, 191, 181, 175, 24, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 249, 15, 39, 88, 250, 8, 68, 200, 250, 248, 67, 216, 251, 232, 38, 200, 252, 216, 37, 216, 253, 200, 8, 200, 254, 184, 7, 216, 255, 167, 234, 200, 0, 151, 233, 216, 1, 135, 204, 200, 2, 119, 203, 216, 3, 112, 233, 72, 4, 96, 232, 88, 5, 80, 203, 72, 6, 64, 202, 88, 7, 48, 173, 72, 8, 32, 172, 88, 9, 16, 143, 72, 10, 0, 142, 88, 10, 240, 113, 72, 11, 224, 112, 88, 12, 217, 141, 200, 13, 192, 82, 88, 14, 185, 111, 200, 15, 169, 110, 216, 16, 153, 81, 200, 17, 137, 80, 216, 18, 121, 51, 200, 19, 105, 50, 216, 20, 89, 21, 200, 21, 73, 20, 216, 22, 56, 247, 200, 23, 40, 246, 216, 24, 34, 20, 72, 25, 8, 216, 216, 26, 1, 246, 72, 26, 241, 245, 88, 27, 225, 216, 72, 28, 209, 215, 88, 29, 193, 186, 72, 30, 177, 185, 88, 31, 161, 156, 72, 32, 117, 207, 244, 33, 129, 98, 100, 34, 85, 177, 244, 35, 106, 112, 212, 36, 53, 147, 244, 37, 74, 96, 228, 38, 21, 117, 244, 39, 42, 66, 228, 39, 254, 146, 116, 41, 10, 36, 228, 41, 222, 116, 116, 42, 234, 6, 228, 43, 190, 86, 116, 44, 211, 35, 100, 45, 158, 56, 116, 46, 179, 5, 100, 47, 126, 26, 116, 48, 146, 231, 100, 49, 103, 54, 244, 50, 114, 201, 100, 51, 71, 24, 244, 52, 82, 171, 100, 53, 38, 250, 244, 54, 50, 141, 100, 55, 6, 220, 244, 56, 27, 169, 228, 56, 230, 190, 244, 57, 251, 139, 228, 58, 198, 160, 244, 59, 219, 109, 228, 60, 175, 189, 116, 61, 187, 79, 228, 62, 143, 159, 116, 63, 155, 49, 228, 64, 111, 129, 116, 65, 132, 78, 100, 66, 79, 99, 116, 67, 100, 48, 100, 68, 47, 69, 116, 69, 68, 18, 100, 69, 243, 119, 244, 71, 45, 46, 228, 71, 211, 89, 244, 73, 13, 16, 228, 73, 179, 59, 244, 74, 236, 242, 228, 75, 156, 88, 116, 76, 214, 15, 100, 77, 124, 58, 116, 78, 182, 13, 72, 79, 92, 56, 88, 80, 149, 239, 72, 81, 60, 26, 88, 82, 117, 209, 72, 83, 27, 252, 88, 84, 85, 179, 72, 84, 251, 222, 88, 86, 53, 149, 72, 86, 228, 250, 216, 88, 30, 177, 200, 88, 196, 220, 216, 89, 254, 147, 200, 90, 164, 190, 216, 91, 222, 117, 200, 92, 132, 160, 216, 93, 190, 87, 200, 94, 100, 130, 216, 95, 158, 57, 200, 96, 77, 159, 88, 97, 135, 86, 72, 98, 45, 129, 88, 99, 103, 56, 72, 100, 13, 99, 88, 101, 71, 26, 72, 101, 237, 69, 88, 103, 38, 252, 72, 103, 205, 39, 88, 105, 6, 222, 72, 105, 173, 9, 88, 106, 230, 192, 72, 107, 150, 37, 216, 108, 207, 220, 200, 109, 118, 7, 216, 110, 175, 190, 200, 111, 85, 233, 216, 112, 143, 160, 200, 113, 53, 203, 216, 114, 111, 130, 200, 115, 21, 173, 216, 116, 79, 100, 200, 116, 254, 202, 88, 118, 56, 129, 72, 118, 222, 172, 88, 120, 24, 99, 72, 120, 190, 142, 88, 121, 248, 69, 72, 122, 158, 112, 88, 123, 216, 39, 72, 124, 126, 82, 88, 125, 184, 9, 72, 126, 94, 52, 88, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 255, 255, 255, 255, 94, 61, 52, 236, 255, 255, 255, 255, 156, 207, 98, 12, 255, 255, 255, 255, 157, 164, 230, 252, 255, 255, 255, 255, 158, 184, 126, 140, 255, 255, 255, 255, 159, 186, 214, 124, 255, 255, 255, 255, 160, 182, 136, 220, 255, 255, 255, 255, 161, 56, 255, 76, 255, 255, 255, 255, 162, 149, 25, 92, 255, 255, 255, 255, 163, 132, 252, 76, 255, 255, 255, 255, 164, 116, 251, 92, 255, 255, 255, 255, 165, 100, 222, 76, 255, 255, 255, 255, 166, 94, 23, 220, 255, 255, 255, 255, 167, 68, 192, 76, 255, 255, 255, 255, 168, 61, 249, 220, 255, 255, 255, 255, 169, 36, 162, 76, 255, 255, 255, 255, 170, 29, 219, 220, 255, 255, 255, 255, 171, 4, 132, 76, 255, 255, 255, 255, 171, 253, 189, 220, 255, 255, 255, 255, 172, 228, 102, 76, 255, 255, 255, 255, 173, 221, 159, 220, 255, 255, 255, 255, 174, 205, 130, 204, 255, 255, 255, 255, 175, 189, 129, 220, 255, 255, 255, 255, 176, 173, 100, 204, 255, 255, 255, 255, 177, 166, 158, 92, 255, 255, 255, 255, 178, 141, 70, 204, 255, 255, 255, 255, 179, 134, 128, 92, 255, 255, 255, 255, 180, 109, 40, 204, 255, 255, 255, 255, 181, 102, 98, 92, 255, 255, 255, 255, 182, 77, 10, 204, 255, 255, 255, 255, 183, 70, 68, 92, 255, 255, 255, 255, 184, 44, 236, 204, 255, 255, 255, 255, 185, 38, 38, 92, 255, 255, 255, 255, 186, 22, 9, 76, 255, 255, 255, 255, 187, 15, 66, 220, 255, 255, 255, 255, 187, 245, 235, 76, 255, 255, 255, 255, 188, 239, 36, 220, 255, 255, 255, 255, 189, 213, 205, 76, 255, 255, 255, 255, 190, 158, 77, 108, 255, 255, 255, 255, 190, 207, 6, 168, 255, 255, 255, 255, 191, 181, 175, 24, 255, 255, 255, 255, 192, 184, 49, 56, 255, 255, 255, 255, 193, 121, 239, 168, 255, 255, 255, 255, 194, 152, 19, 56, 255, 255, 255, 255, 195, 89, 209, 168, 255, 255, 255, 255, 196, 119, 245, 56, 255, 255, 255, 255, 197, 57, 179, 168, 255, 255, 255, 255, 198, 97, 17, 184, 255, 255, 255, 255, 199, 25, 149, 168, 255, 255, 255, 255, 200, 64, 243, 184, 255, 255, 255, 255, 201, 2, 178, 40, 255, 255, 255, 255, 202, 32, 213, 184, 255, 255, 255, 255, 202, 226, 148, 40, 255, 255, 255, 255, 204, 0, 183, 184, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 230, 200, 255, 255, 255, 255, 211, 136, 68, 216, 255, 255, 255, 255, 212, 74, 3, 72, 255, 255, 255, 255, 213, 104, 38, 216, 255, 255, 255, 255, 214, 41, 229, 72, 255, 255, 255, 255, 215, 72, 8, 216, 255, 255, 255, 255, 216, 9, 199, 72, 255, 255, 255, 255, 217, 39, 234, 216, 255, 255, 255, 255, 217, 233, 169, 72, 255, 255, 255, 255, 219, 17, 7, 88, 255, 255, 255, 255, 219, 210, 197, 200, 255, 255, 255, 255, 220, 222, 116, 88, 255, 255, 255, 255, 221, 169, 109, 72, 255, 255, 255, 255, 222, 190, 86, 88, 255, 255, 255, 255, 223, 137, 79, 72, 255, 255, 255, 255, 224, 158, 56, 88, 255, 255, 255, 255, 225, 105, 49, 72, 255, 255, 255, 255, 226, 126, 26, 88, 255, 255, 255, 255, 227, 73, 19, 72, 255, 255, 255, 255, 228, 93, 252, 88, 255, 255, 255, 255, 229, 40, 245, 72, 255, 255, 255, 255, 230, 71, 24, 216, 255, 255, 255, 255, 231, 18, 17, 200, 255, 255, 255, 255, 232, 38, 250, 216, 255, 255, 255, 255, 232, 241, 243, 200, 255, 255, 255, 255, 234, 6, 220, 216, 255, 255, 255, 255, 234, 209, 213, 200, 255, 255, 255, 255, 235, 230, 190, 216, 255, 255, 255, 255, 236, 177, 183, 200, 255, 255, 255, 255, 237, 198, 160, 216, 255, 255, 255, 255, 238, 191, 190, 72, 255, 255, 255, 255, 239, 175, 189, 88, 255, 255, 255, 255, 240, 159, 160, 72, 255, 255, 255, 255, 241, 143, 159, 88, 255, 255, 255, 255, 242, 127, 130, 72, 255, 255, 255, 255, 243, 111, 129, 88, 255, 255, 255, 255, 244, 95, 100, 72, 255, 255, 255, 255, 245, 79, 99, 88, 255, 255, 255, 255, 246, 63, 70, 72, 255, 255, 255, 255, 247, 47, 69, 88, 255, 255, 255, 255, 248, 40, 98, 200, 255, 255, 255, 255, 249, 15, 39, 88, 255, 255, 255, 255, 250, 8, 68, 200, 255, 255, 255, 255, 250, 248, 67, 216, 255, 255, 255, 255, 251, 232, 38, 200, 255, 255, 255, 255, 252, 216, 37, 216, 255, 255, 255, 255, 253, 200, 8, 200, 255, 255, 255, 255, 254, 184, 7, 216, 255, 255, 255, 255, 255, 167, 234, 200, 0, 0, 0, 0, 0, 151, 233, 216, 0, 0, 0, 0, 1, 135, 204, 200, 0, 0, 0, 0, 2, 119, 203, 216, 0, 0, 0, 0, 3, 112, 233, 72, 0, 0, 0, 0, 4, 96, 232, 88, 0, 0, 0, 0, 5, 80, 203, 72, 0, 0, 0, 0, 6, 64, 202, 88, 0, 0, 0, 0, 7, 48, 173, 72, 0, 0, 0, 0, 8, 32, 172, 88, 0, 0, 0, 0, 9, 16, 143, 72, 0, 0, 0, 0, 10, 0, 142, 88, 0, 0, 0, 0, 10, 240, 113, 72, 0, 0, 0, 0, 11, 224, 112, 88, 0, 0, 0, 0, 12, 217, 141, 200, 0, 0, 0, 0, 13, 192, 82, 88, 0, 0, 0, 0, 14, 185, 111, 200, 0, 0, 0, 0, 15, 169, 110, 216, 0, 0, 0, 0, 16, 153, 81, 200, 0, 0, 0, 0, 17, 137, 80, 216, 0, 0, 0, 0, 18, 121, 51, 200, 0, 0, 0, 0, 19, 105, 50, 216, 0, 0, 0, 0, 20, 89, 21, 200, 0, 0, 0, 0, 21, 73, 20, 216, 0, 0, 0, 0, 22, 56, 247, 200, 0, 0, 0, 0, 23, 40, 246, 216, 0, 0, 0, 0, 24, 34, 20, 72, 0, 0, 0, 0, 25, 8, 216, 216, 0, 0, 0, 0, 26, 1, 246, 72, 0, 0, 0, 0, 26, 241, 245, 88, 0, 0, 0, 0, 27, 225, 216, 72, 0, 0, 0, 0, 28, 209, 215, 88, 0, 0, 0, 0, 29, 193, 186, 72, 0, 0, 0, 0, 30, 177, 185, 88, 0, 0, 0, 0, 31, 161, 156, 72, 0, 0, 0, 0, 32, 117, 207, 244, 0, 0, 0, 0, 33, 129, 98, 100, 0, 0, 0, 0, 34, 85, 177, 244, 0, 0, 0, 0, 35, 106, 112, 212, 0, 0, 0, 0, 36, 53, 147, 244, 0, 0, 0, 0, 37, 74, 96, 228, 0, 0, 0, 0, 38, 21, 117, 244, 0, 0, 0, 0, 39, 42, 66, 228, 0, 0, 0, 0, 39, 254, 146, 116, 0, 0, 0, 0, 41, 10, 36, 228, 0, 0, 0, 0, 41, 222, 116, 116, 0, 0, 0, 0, 42, 234, 6, 228, 0, 0, 0, 0, 43, 190, 86, 116, 0, 0, 0, 0, 44, 211, 35, 100, 0, 0, 0, 0, 45, 158, 56, 116, 0, 0, 0, 0, 46, 179, 5, 100, 0, 0, 0, 0, 47, 126, 26, 116, 0, 0, 0, 0, 48, 146, 231, 100, 0, 0, 0, 0, 49, 103, 54, 244, 0, 0, 0, 0, 50, 114, 201, 100, 0, 0, 0, 0, 51, 71, 24, 244, 0, 0, 0, 0, 52, 82, 171, 100, 0, 0, 0, 0, 53, 38, 250, 244, 0, 0, 0, 0, 54, 50, 141, 100, 0, 0, 0, 0, 55, 6, 220, 244, 0, 0, 0, 0, 56, 27, 169, 228, 0, 0, 0, 0, 56, 230, 190, 244, 0, 0, 0, 0, 57, 251, 139, 228, 0, 0, 0, 0, 58, 198, 160, 244, 0, 0, 0, 0, 59, 219, 109, 228, 0, 0, 0, 0, 60, 175, 189, 116, 0, 0, 0, 0, 61, 187, 79, 228, 0, 0, 0, 0, 62, 143, 159, 116, 0, 0, 0, 0, 63, 155, 49, 228, 0, 0, 0, 0, 64, 111, 129, 116, 0, 0, 0, 0, 65, 132, 78, 100, 0, 0, 0, 0, 66, 79, 99, 116, 0, 0, 0, 0, 67, 100, 48, 100, 0, 0, 0, 0, 68, 47, 69, 116, 0, 0, 0, 0, 69, 68, 18, 100, 0, 0, 0, 0, 69, 243, 119, 244, 0, 0, 0, 0, 71, 45, 46, 228, 0, 0, 0, 0, 71, 211, 89, 244, 0, 0, 0, 0, 73, 13, 16, 228, 0, 0, 0, 0, 73, 179, 59, 244, 0, 0, 0, 0, 74, 236, 242, 228, 0, 0, 0, 0, 75, 156, 88, 116, 0, 0, 0, 0, 76, 214, 15, 100, 0, 0, 0, 0, 77, 124, 58, 116, 0, 0, 0, 0, 78, 182, 13, 72, 0, 0, 0, 0, 79, 92, 56, 88, 0, 0, 0, 0, 80, 149, 239, 72, 0, 0, 0, 0, 81, 60, 26, 88, 0, 0, 0, 0, 82, 117, 209, 72, 0, 0, 0, 0, 83, 27, 252, 88, 0, 0, 0, 0, 84, 85, 179, 72, 0, 0, 0, 0, 84, 251, 222, 88, 0, 0, 0, 0, 86, 53, 149, 72, 0, 0, 0, 0, 86, 228, 250, 216, 0, 0, 0, 0, 88, 30, 177, 200, 0, 0, 0, 0, 88, 196, 220, 216, 0, 0, 0, 0, 89, 254, 147, 200, 0, 0, 0, 0, 90, 164, 190, 216, 0, 0, 0, 0, 91, 222, 117, 200, 0, 0, 0, 0, 92, 132, 160, 216, 0, 0, 0, 0, 93, 190, 87, 200, 0, 0, 0, 0, 94, 100, 130, 216, 0, 0, 0, 0, 95, 158, 57, 200, 0, 0, 0, 0, 96, 77, 159, 88, 0, 0, 0, 0, 97, 135, 86, 72, 0, 0, 0, 0, 98, 45, 129, 88, 0, 0, 0, 0, 99, 103, 56, 72, 0, 0, 0, 0, 100, 13, 99, 88, 0, 0, 0, 0, 101, 71, 26, 72, 0, 0, 0, 0, 101, 237, 69, 88, 0, 0, 0, 0, 103, 38, 252, 72, 0, 0, 0, 0, 103, 205, 39, 88, 0, 0, 0, 0, 105, 6, 222, 72, 0, 0, 0, 0, 105, 173, 9, 88, 0, 0, 0, 0, 106, 230, 192, 72, 0, 0, 0, 0, 107, 150, 37, 216, 0, 0, 0, 0, 108, 207, 220, 200, 0, 0, 0, 0, 109, 118, 7, 216, 0, 0, 0, 0, 110, 175, 190, 200, 0, 0, 0, 0, 111, 85, 233, 216, 0, 0, 0, 0, 112, 143, 160, 200, 0, 0, 0, 0, 113, 53, 203, 216, 0, 0, 0, 0, 114, 111, 130, 200, 0, 0, 0, 0, 115, 21, 173, 216, 0, 0, 0, 0, 116, 79, 100, 200, 0, 0, 0, 0, 116, 254, 202, 88, 0, 0, 0, 0, 118, 56, 129, 72, 0, 0, 0, 0, 118, 222, 172, 88, 0, 0, 0, 0, 120, 24, 99, 72, 0, 0, 0, 0, 120, 190, 142, 88, 0, 0, 0, 0, 121, 248, 69, 72, 0, 0, 0, 0, 122, 158, 112, 88, 0, 0, 0, 0, 123, 216, 39, 72, 0, 0, 0, 0, 124, 126, 82, 88, 0, 0, 0, 0, 125, 184, 9, 72, 0, 0, 0, 0, 126, 94, 52, 88, 0, 0, 0, 0, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 78, 83, 84, 51, 58, 51, 48, 78, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/St_Kitts": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/St_Kitts": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/St_Lucia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/St_Lucia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/St_Thomas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/St_Thomas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/St_Vincent": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/St_Vincent": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Swift_Current": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0, 0, 24, 134, 253, 150, 24, 158, 184, 175, 144, 159, 187, 7, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 118, 1, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 232, 39, 44, 16, 233, 23, 15, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 238, 145, 203, 0, 239, 175, 238, 144, 240, 113, 173, 0, 4, 97, 25, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 154, 232, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Swift_Current": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0, 0, 24, 134, 253, 150, 24, 158, 184, 175, 144, 159, 187, 7, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 118, 1, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 232, 39, 44, 16, 233, 23, 15, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 238, 145, 203, 0, 239, 175, 238, 144, 240, 113, 173, 0, 4, 97, 25, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 154, 232, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 134, 253, 150, 24, 255, 255, 255, 255, 158, 184, 175, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 211, 118, 1, 16, 255, 255, 255, 255, 212, 83, 111, 0, 255, 255, 255, 255, 213, 85, 227, 16, 255, 255, 255, 255, 214, 32, 220, 0, 255, 255, 255, 255, 215, 53, 197, 16, 255, 255, 255, 255, 216, 0, 190, 0, 255, 255, 255, 255, 217, 21, 167, 16, 255, 255, 255, 255, 217, 224, 160, 0, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 233, 23, 15, 0, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 214, 211, 0, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 203, 0, 255, 255, 255, 255, 239, 175, 238, 144, 255, 255, 255, 255, 240, 113, 173, 0, 0, 0, 0, 0, 4, 97, 25, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 154, 232, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Tegucigalpa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 12, 164, 76, 75, 68, 32, 154, 220, 224, 33, 92, 155, 80, 34, 122, 190, 224, 35, 60, 125, 80, 68, 93, 140, 224, 68, 214, 200, 208, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 60, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/America/Tegucigalpa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 12, 164, 76, 75, 68, 32, 154, 220, 224, 33, 92, 155, 80, 34, 122, 190, 224, 35, 60, 125, 80, 68, 93, 140, 224, 68, 214, 200, 208, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 60, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 164, 76, 75, 68, 0, 0, 0, 0, 32, 154, 220, 224, 0, 0, 0, 0, 33, 92, 155, 80, 0, 0, 0, 0, 34, 122, 190, 224, 0, 0, 0, 0, 35, 60, 125, 80, 0, 0, 0, 0, 68, 93, 140, 224, 0, 0, 0, 0, 68, 214, 200, 208, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 60, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/America/Thule": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 3, 0, 0, 0, 12, 155, 128, 119, 252, 39, 245, 122, 224, 40, 229, 93, 208, 41, 213, 92, 224, 42, 197, 63, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 191, 132, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Thule": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 3, 0, 0, 0, 12, 155, 128, 119, 252, 39, 245, 122, 224, 40, 229, 93, 208, 41, 213, 92, 224, 42, 197, 63, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 191, 132, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 155, 128, 119, 252, 0, 0, 0, 0, 39, 245, 122, 224, 0, 0, 0, 0, 40, 229, 93, 208, 0, 0, 0, 0, 41, 213, 92, 224, 0, 0, 0, 0, 42, 197, 63, 208, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 70, 80, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 40, 80, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 10, 80, 0, 0, 0, 0, 49, 103, 89, 224, 0, 0, 0, 0, 50, 114, 236, 80, 0, 0, 0, 0, 51, 71, 59, 224, 0, 0, 0, 0, 52, 82, 206, 80, 0, 0, 0, 0, 53, 39, 29, 224, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 55, 6, 255, 224, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 225, 224, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 195, 224, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 224, 96, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 194, 96, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 111, 164, 96, 0, 0, 0, 0, 65, 132, 113, 80, 0, 0, 0, 0, 66, 79, 134, 96, 0, 0, 0, 0, 67, 100, 83, 80, 0, 0, 0, 0, 68, 47, 104, 96, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 154, 224, 0, 0, 0, 0, 71, 45, 81, 208, 0, 0, 0, 0, 71, 211, 124, 224, 0, 0, 0, 0, 73, 13, 51, 208, 0, 0, 0, 0, 73, 179, 94, 224, 0, 0, 0, 0, 74, 237, 21, 208, 0, 0, 0, 0, 75, 156, 123, 96, 0, 0, 0, 0, 76, 214, 50, 80, 0, 0, 0, 0, 77, 124, 93, 96, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 191, 132, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Thunder_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 143, 36, 123, 224, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 172, 84, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Thunder_Bay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 143, 36, 123, 224, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 172, 84, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 114, 238, 130, 44, 255, 255, 255, 255, 143, 36, 123, 224, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 8, 32, 193, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 172, 84, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Tijuana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Tijuana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 165, 182, 246, 128, 255, 255, 255, 255, 169, 121, 79, 112, 255, 255, 255, 255, 175, 242, 124, 240, 255, 255, 255, 255, 182, 102, 100, 112, 255, 255, 255, 255, 183, 27, 16, 0, 255, 255, 255, 255, 184, 10, 242, 240, 255, 255, 255, 255, 203, 234, 141, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 153, 186, 112, 255, 255, 255, 255, 215, 27, 89, 0, 255, 255, 255, 255, 216, 145, 180, 240, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 14, 16, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 217, 16, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 70, 15, 130, 160, 0, 0, 0, 0, 71, 36, 79, 144, 0, 0, 0, 0, 71, 248, 159, 32, 0, 0, 0, 0, 73, 4, 49, 144, 0, 0, 0, 0, 73, 216, 129, 32, 0, 0, 0, 0, 74, 228, 19, 144, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Toronto": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Toronto": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 114, 238, 120, 236, 255, 255, 255, 255, 158, 184, 147, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 160, 135, 46, 200, 255, 255, 255, 255, 161, 154, 177, 64, 255, 255, 255, 255, 162, 148, 6, 240, 255, 255, 255, 255, 163, 85, 169, 64, 255, 255, 255, 255, 164, 134, 93, 240, 255, 255, 255, 255, 165, 40, 120, 96, 255, 255, 255, 255, 166, 102, 63, 240, 255, 255, 255, 255, 167, 12, 78, 224, 255, 255, 255, 255, 168, 70, 33, 240, 255, 255, 255, 255, 168, 236, 48, 224, 255, 255, 255, 255, 170, 28, 201, 112, 255, 255, 255, 255, 170, 213, 77, 96, 255, 255, 255, 255, 171, 252, 171, 112, 255, 255, 255, 255, 172, 181, 47, 96, 255, 255, 255, 255, 173, 220, 141, 112, 255, 255, 255, 255, 174, 149, 17, 96, 255, 255, 255, 255, 175, 188, 111, 112, 255, 255, 255, 255, 176, 126, 45, 224, 255, 255, 255, 255, 177, 156, 81, 112, 255, 255, 255, 255, 178, 103, 74, 96, 255, 255, 255, 255, 179, 124, 51, 112, 255, 255, 255, 255, 180, 71, 44, 96, 255, 255, 255, 255, 181, 92, 21, 112, 255, 255, 255, 255, 182, 39, 14, 96, 255, 255, 255, 255, 183, 59, 247, 112, 255, 255, 255, 255, 184, 6, 240, 96, 255, 255, 255, 255, 185, 37, 19, 240, 255, 255, 255, 255, 185, 230, 210, 96, 255, 255, 255, 255, 187, 4, 245, 240, 255, 255, 255, 255, 187, 207, 238, 224, 255, 255, 255, 255, 188, 228, 215, 240, 255, 255, 255, 255, 189, 175, 208, 224, 255, 255, 255, 255, 190, 196, 185, 240, 255, 255, 255, 255, 191, 143, 178, 224, 255, 255, 255, 255, 192, 164, 155, 240, 255, 255, 255, 255, 193, 111, 148, 224, 255, 255, 255, 255, 194, 132, 125, 240, 255, 255, 255, 255, 195, 79, 118, 224, 255, 255, 255, 255, 196, 100, 95, 240, 255, 255, 255, 255, 197, 47, 88, 224, 255, 255, 255, 255, 198, 77, 124, 112, 255, 255, 255, 255, 199, 15, 58, 224, 255, 255, 255, 255, 200, 45, 94, 112, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 211, 117, 228, 240, 255, 255, 255, 255, 212, 64, 221, 224, 255, 255, 255, 255, 213, 85, 170, 208, 255, 255, 255, 255, 214, 32, 163, 192, 255, 255, 255, 255, 215, 53, 140, 208, 255, 255, 255, 255, 216, 0, 133, 192, 255, 255, 255, 255, 217, 21, 110, 208, 255, 255, 255, 255, 218, 51, 118, 64, 255, 255, 255, 255, 218, 254, 167, 112, 255, 255, 255, 255, 220, 19, 116, 96, 255, 255, 255, 255, 220, 222, 137, 112, 255, 255, 255, 255, 221, 169, 130, 96, 255, 255, 255, 255, 222, 190, 107, 112, 255, 255, 255, 255, 223, 137, 100, 96, 255, 255, 255, 255, 224, 158, 77, 112, 255, 255, 255, 255, 225, 105, 70, 96, 255, 255, 255, 255, 226, 126, 47, 112, 255, 255, 255, 255, 227, 73, 40, 96, 255, 255, 255, 255, 228, 94, 17, 112, 255, 255, 255, 255, 229, 41, 10, 96, 255, 255, 255, 255, 230, 71, 45, 240, 255, 255, 255, 255, 231, 18, 38, 224, 255, 255, 255, 255, 232, 39, 15, 240, 255, 255, 255, 255, 233, 22, 242, 224, 255, 255, 255, 255, 234, 6, 241, 240, 255, 255, 255, 255, 234, 246, 212, 224, 255, 255, 255, 255, 235, 230, 211, 240, 255, 255, 255, 255, 236, 214, 182, 224, 255, 255, 255, 255, 237, 198, 181, 240, 255, 255, 255, 255, 238, 191, 211, 96, 255, 255, 255, 255, 239, 175, 210, 112, 255, 255, 255, 255, 240, 159, 181, 96, 255, 255, 255, 255, 241, 143, 180, 112, 255, 255, 255, 255, 242, 127, 151, 96, 255, 255, 255, 255, 243, 111, 150, 112, 255, 255, 255, 255, 244, 95, 121, 96, 255, 255, 255, 255, 245, 79, 120, 112, 255, 255, 255, 255, 246, 63, 91, 96, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 119, 224, 255, 255, 255, 255, 249, 15, 60, 112, 255, 255, 255, 255, 250, 8, 89, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 8, 32, 193, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Tortola": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Tortola": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Vancouver": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 211, 118, 15, 32, 212, 83, 125, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Vancouver": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 211, 118, 15, 32, 212, 83, 125, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 61, 118, 236, 255, 255, 255, 255, 158, 184, 189, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 211, 118, 15, 32, 255, 255, 255, 255, 212, 83, 125, 16, 255, 255, 255, 255, 213, 85, 241, 32, 255, 255, 255, 255, 214, 32, 234, 16, 255, 255, 255, 255, 215, 53, 211, 32, 255, 255, 255, 255, 216, 0, 204, 16, 255, 255, 255, 255, 217, 21, 181, 32, 255, 255, 255, 255, 217, 224, 174, 16, 255, 255, 255, 255, 218, 254, 209, 160, 255, 255, 255, 255, 219, 192, 144, 16, 255, 255, 255, 255, 220, 222, 179, 160, 255, 255, 255, 255, 221, 169, 172, 144, 255, 255, 255, 255, 222, 190, 149, 160, 255, 255, 255, 255, 223, 137, 142, 144, 255, 255, 255, 255, 224, 158, 119, 160, 255, 255, 255, 255, 225, 105, 112, 144, 255, 255, 255, 255, 226, 126, 89, 160, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 59, 160, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 88, 32, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 58, 32, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 28, 32, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 254, 32, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 224, 32, 255, 255, 255, 255, 238, 145, 217, 16, 255, 255, 255, 255, 239, 175, 252, 160, 255, 255, 255, 255, 240, 113, 187, 16, 255, 255, 255, 255, 241, 143, 222, 160, 255, 255, 255, 255, 242, 127, 193, 144, 255, 255, 255, 255, 243, 111, 192, 160, 255, 255, 255, 255, 244, 95, 163, 144, 255, 255, 255, 255, 245, 79, 162, 160, 255, 255, 255, 255, 246, 63, 133, 144, 255, 255, 255, 255, 247, 47, 132, 160, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 249, 15, 102, 160, 255, 255, 255, 255, 250, 8, 132, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 8, 32, 235, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 10, 0, 205, 160, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Virgin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 10}, + "zoneinfo/America/Virgin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 147, 55, 51, 172, 1, 255, 255, 198, 84, 0, 0, 255, 255, 199, 192, 0, 4, 76, 77, 84, 0, 65, 83, 84, 0, 10, 65, 83, 84, 52, 10}, - "zoneinfo/America/Whitehorse": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 251, 29, 95, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Whitehorse": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 251, 29, 95, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 255, 255, 255, 255, 125, 134, 138, 156, 255, 255, 255, 255, 158, 184, 203, 176, 255, 255, 255, 255, 159, 187, 35, 160, 255, 255, 255, 255, 160, 208, 12, 176, 255, 255, 255, 255, 161, 162, 210, 128, 255, 255, 255, 255, 203, 137, 40, 176, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 52, 32, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 251, 29, 95, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Winnipeg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 155, 1, 251, 224, 155, 195, 186, 80, 158, 184, 161, 128, 159, 186, 249, 112, 194, 160, 59, 128, 195, 79, 132, 240, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 136, 104, 0, 212, 83, 96, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 219, 0, 7, 0, 219, 200, 92, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 145, 188, 240, 243, 111, 164, 128, 244, 49, 98, 240, 249, 15, 74, 128, 250, 8, 118, 0, 250, 248, 103, 0, 251, 232, 88, 0, 252, 216, 73, 0, 253, 200, 58, 0, 254, 184, 43, 0, 255, 168, 28, 0, 0, 152, 13, 0, 1, 135, 254, 0, 2, 119, 239, 0, 3, 113, 26, 128, 4, 97, 11, 128, 5, 80, 252, 128, 6, 64, 237, 128, 7, 48, 222, 128, 8, 32, 207, 128, 9, 16, 192, 128, 10, 0, 177, 128, 10, 240, 162, 128, 11, 224, 147, 128, 12, 217, 191, 0, 13, 192, 117, 128, 14, 185, 161, 0, 15, 169, 146, 0, 16, 153, 131, 0, 17, 137, 116, 0, 18, 121, 101, 0, 19, 105, 86, 0, 20, 89, 71, 0, 21, 73, 56, 0, 22, 57, 41, 0, 23, 41, 26, 0, 24, 34, 69, 128, 25, 8, 252, 0, 26, 2, 39, 128, 26, 242, 24, 128, 27, 226, 9, 128, 28, 209, 250, 128, 29, 193, 235, 128, 30, 177, 220, 128, 31, 161, 205, 128, 32, 118, 15, 0, 33, 129, 175, 128, 34, 85, 241, 0, 35, 106, 204, 0, 36, 53, 211, 0, 37, 74, 174, 0, 38, 21, 181, 0, 39, 42, 144, 0, 39, 254, 209, 128, 41, 10, 114, 0, 41, 222, 179, 128, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 112, 128, 45, 158, 119, 128, 46, 179, 82, 128, 47, 126, 89, 128, 48, 147, 52, 128, 49, 103, 118, 0, 50, 115, 22, 128, 51, 71, 88, 0, 52, 82, 248, 128, 53, 39, 58, 0, 54, 50, 218, 128, 55, 7, 28, 0, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 217, 0, 58, 198, 224, 0, 59, 219, 187, 0, 60, 175, 252, 128, 61, 187, 157, 0, 62, 143, 222, 128, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 155, 128, 66, 79, 162, 128, 67, 100, 125, 128, 67, 183, 111, 224, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Winnipeg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 155, 1, 251, 224, 155, 195, 186, 80, 158, 184, 161, 128, 159, 186, 249, 112, 194, 160, 59, 128, 195, 79, 132, 240, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 136, 104, 0, 212, 83, 96, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 219, 0, 7, 0, 219, 200, 92, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 145, 188, 240, 243, 111, 164, 128, 244, 49, 98, 240, 249, 15, 74, 128, 250, 8, 118, 0, 250, 248, 103, 0, 251, 232, 88, 0, 252, 216, 73, 0, 253, 200, 58, 0, 254, 184, 43, 0, 255, 168, 28, 0, 0, 152, 13, 0, 1, 135, 254, 0, 2, 119, 239, 0, 3, 113, 26, 128, 4, 97, 11, 128, 5, 80, 252, 128, 6, 64, 237, 128, 7, 48, 222, 128, 8, 32, 207, 128, 9, 16, 192, 128, 10, 0, 177, 128, 10, 240, 162, 128, 11, 224, 147, 128, 12, 217, 191, 0, 13, 192, 117, 128, 14, 185, 161, 0, 15, 169, 146, 0, 16, 153, 131, 0, 17, 137, 116, 0, 18, 121, 101, 0, 19, 105, 86, 0, 20, 89, 71, 0, 21, 73, 56, 0, 22, 57, 41, 0, 23, 41, 26, 0, 24, 34, 69, 128, 25, 8, 252, 0, 26, 2, 39, 128, 26, 242, 24, 128, 27, 226, 9, 128, 28, 209, 250, 128, 29, 193, 235, 128, 30, 177, 220, 128, 31, 161, 205, 128, 32, 118, 15, 0, 33, 129, 175, 128, 34, 85, 241, 0, 35, 106, 204, 0, 36, 53, 211, 0, 37, 74, 174, 0, 38, 21, 181, 0, 39, 42, 144, 0, 39, 254, 209, 128, 41, 10, 114, 0, 41, 222, 179, 128, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 112, 128, 45, 158, 119, 128, 46, 179, 82, 128, 47, 126, 89, 128, 48, 147, 52, 128, 49, 103, 118, 0, 50, 115, 22, 128, 51, 71, 88, 0, 52, 82, 248, 128, 53, 39, 58, 0, 54, 50, 218, 128, 55, 7, 28, 0, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 217, 0, 58, 198, 224, 0, 59, 219, 187, 0, 60, 175, 252, 128, 61, 187, 157, 0, 62, 143, 222, 128, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 155, 128, 66, 79, 162, 128, 67, 100, 125, 128, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 100, 228, 176, 148, 255, 255, 255, 255, 155, 1, 251, 224, 255, 255, 255, 255, 155, 195, 186, 80, 255, 255, 255, 255, 158, 184, 161, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 194, 160, 59, 128, 255, 255, 255, 255, 195, 79, 132, 240, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 136, 104, 0, 255, 255, 255, 255, 212, 83, 96, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 219, 0, 7, 0, 255, 255, 255, 255, 219, 200, 92, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 18, 52, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 145, 188, 240, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 49, 98, 240, 255, 255, 255, 255, 249, 15, 74, 128, 255, 255, 255, 255, 250, 8, 118, 0, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 8, 32, 207, 128, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 10, 0, 177, 128, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Yakutat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 30, 128, 0, 0, 0, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 254, 184, 85, 48, 255, 168, 56, 32, 0, 152, 55, 48, 1, 136, 26, 32, 2, 120, 25, 48, 3, 113, 54, 160, 4, 97, 53, 176, 5, 81, 24, 160, 6, 65, 23, 176, 7, 48, 250, 160, 7, 141, 81, 176, 9, 16, 220, 160, 9, 173, 205, 48, 10, 240, 190, 160, 11, 224, 189, 176, 12, 217, 219, 32, 13, 192, 159, 176, 14, 185, 189, 32, 15, 169, 188, 48, 16, 153, 159, 32, 17, 137, 158, 48, 18, 121, 129, 32, 19, 105, 128, 48, 20, 89, 99, 32, 21, 73, 98, 48, 22, 57, 69, 32, 23, 41, 68, 48, 24, 34, 97, 160, 25, 9, 38, 48, 26, 2, 67, 160, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 206, 129, 0, 0, 255, 255, 129, 112, 0, 4, 255, 255, 143, 128, 1, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 25, 76, 77, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Yakutat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 30, 128, 0, 0, 0, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 254, 184, 85, 48, 255, 168, 56, 32, 0, 152, 55, 48, 1, 136, 26, 32, 2, 120, 25, 48, 3, 113, 54, 160, 4, 97, 53, 176, 5, 81, 24, 160, 6, 65, 23, 176, 7, 48, 250, 160, 7, 141, 81, 176, 9, 16, 220, 160, 9, 173, 205, 48, 10, 240, 190, 160, 11, 224, 189, 176, 12, 217, 219, 32, 13, 192, 159, 176, 14, 185, 189, 32, 15, 169, 188, 48, 16, 153, 159, 32, 17, 137, 158, 48, 18, 121, 129, 32, 19, 105, 128, 48, 20, 89, 99, 32, 21, 73, 98, 48, 22, 57, 69, 32, 23, 41, 68, 48, 24, 34, 97, 160, 25, 9, 38, 48, 26, 2, 67, 160, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 206, 129, 0, 0, 255, 255, 129, 112, 0, 4, 255, 255, 143, 128, 1, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 25, 76, 77, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 8, 0, 0, 0, 30, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 55, 191, 255, 255, 255, 255, 203, 137, 40, 176, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 52, 32, 255, 255, 255, 255, 254, 184, 85, 48, 255, 255, 255, 255, 255, 168, 56, 32, 0, 0, 0, 0, 0, 152, 55, 48, 0, 0, 0, 0, 1, 136, 26, 32, 0, 0, 0, 0, 2, 120, 25, 48, 0, 0, 0, 0, 3, 113, 54, 160, 0, 0, 0, 0, 4, 97, 53, 176, 0, 0, 0, 0, 5, 81, 24, 160, 0, 0, 0, 0, 6, 65, 23, 176, 0, 0, 0, 0, 7, 48, 250, 160, 0, 0, 0, 0, 7, 141, 81, 176, 0, 0, 0, 0, 9, 16, 220, 160, 0, 0, 0, 0, 9, 173, 205, 48, 0, 0, 0, 0, 10, 240, 190, 160, 0, 0, 0, 0, 11, 224, 189, 176, 0, 0, 0, 0, 12, 217, 219, 32, 0, 0, 0, 0, 13, 192, 159, 176, 0, 0, 0, 0, 14, 185, 189, 32, 0, 0, 0, 0, 15, 169, 188, 48, 0, 0, 0, 0, 16, 153, 159, 32, 0, 0, 0, 0, 17, 137, 158, 48, 0, 0, 0, 0, 18, 121, 129, 32, 0, 0, 0, 0, 19, 105, 128, 48, 0, 0, 0, 0, 20, 89, 99, 32, 0, 0, 0, 0, 21, 73, 98, 48, 0, 0, 0, 0, 22, 57, 69, 32, 0, 0, 0, 0, 23, 41, 68, 48, 0, 0, 0, 0, 24, 34, 97, 160, 0, 0, 0, 0, 25, 9, 38, 48, 0, 0, 0, 0, 26, 2, 67, 160, 0, 0, 0, 0, 26, 43, 20, 16, 0, 0, 0, 0, 26, 242, 66, 176, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 210, 36, 176, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 178, 6, 176, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 118, 57, 48, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 86, 27, 48, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 53, 253, 48, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 38, 21, 223, 48, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 254, 251, 176, 0, 0, 0, 0, 41, 10, 142, 32, 0, 0, 0, 0, 41, 222, 221, 176, 0, 0, 0, 0, 42, 234, 112, 32, 0, 0, 0, 0, 43, 190, 191, 176, 0, 0, 0, 0, 44, 211, 140, 160, 0, 0, 0, 0, 45, 158, 161, 176, 0, 0, 0, 0, 46, 179, 110, 160, 0, 0, 0, 0, 47, 126, 131, 176, 0, 0, 0, 0, 48, 147, 80, 160, 0, 0, 0, 0, 49, 103, 160, 48, 0, 0, 0, 0, 50, 115, 50, 160, 0, 0, 0, 0, 51, 71, 130, 48, 0, 0, 0, 0, 52, 83, 20, 160, 0, 0, 0, 0, 53, 39, 100, 48, 0, 0, 0, 0, 54, 50, 246, 160, 0, 0, 0, 0, 55, 7, 70, 48, 0, 0, 0, 0, 56, 28, 19, 32, 0, 0, 0, 0, 56, 231, 40, 48, 0, 0, 0, 0, 57, 251, 245, 32, 0, 0, 0, 0, 58, 199, 10, 48, 0, 0, 0, 0, 59, 219, 215, 32, 0, 0, 0, 0, 60, 176, 38, 176, 0, 0, 0, 0, 61, 187, 185, 32, 0, 0, 0, 0, 62, 144, 8, 176, 0, 0, 0, 0, 63, 155, 155, 32, 0, 0, 0, 0, 64, 111, 234, 176, 0, 0, 0, 0, 65, 132, 183, 160, 0, 0, 0, 0, 66, 79, 204, 176, 0, 0, 0, 0, 67, 100, 153, 160, 0, 0, 0, 0, 68, 47, 174, 176, 0, 0, 0, 0, 69, 68, 123, 160, 0, 0, 0, 0, 69, 243, 225, 48, 0, 0, 0, 0, 71, 45, 152, 32, 0, 0, 0, 0, 71, 211, 195, 48, 0, 0, 0, 0, 73, 13, 122, 32, 0, 0, 0, 0, 73, 179, 165, 48, 0, 0, 0, 0, 74, 237, 92, 32, 0, 0, 0, 0, 75, 156, 193, 176, 0, 0, 0, 0, 76, 214, 120, 160, 0, 0, 0, 0, 77, 124, 163, 176, 0, 0, 0, 0, 78, 182, 90, 160, 0, 0, 0, 0, 79, 92, 133, 176, 0, 0, 0, 0, 80, 150, 60, 160, 0, 0, 0, 0, 81, 60, 103, 176, 0, 0, 0, 0, 82, 118, 30, 160, 0, 0, 0, 0, 83, 28, 73, 176, 0, 0, 0, 0, 84, 86, 0, 160, 0, 0, 0, 0, 84, 252, 43, 176, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 206, 129, 0, 0, 255, 255, 125, 1, 0, 0, 255, 255, 129, 112, 0, 4, 255, 255, 143, 128, 1, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 143, 128, 1, 20, 255, 255, 129, 112, 0, 25, 76, 77, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/America/Yellowknife": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 6, 0, 0, 0, 25, 190, 42, 24, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 90, 112, 248, 40, 133, 240, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/America/Yellowknife": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 6, 0, 0, 0, 25, 190, 42, 24, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 90, 112, 248, 40, 133, 240, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 6, 0, 0, 0, 25, 255, 255, 255, 255, 190, 42, 24, 0, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 133, 240, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 3, 1, 2, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 0, 0, 0, 0, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 171, 160, 1, 21, 45, 48, 48, 0, 77, 87, 84, 0, 77, 80, 84, 0, 77, 83, 84, 0, 77, 68, 68, 84, 0, 77, 68, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Antarctica/Casey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 254, 30, 204, 128, 74, 218, 6, 32, 75, 143, 202, 240, 78, 169, 156, 32, 79, 67, 205, 144, 88, 10, 59, 128, 90, 164, 15, 16, 127, 255, 255, 255, 1, 2, 1, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 112, 128, 0, 4, 45, 48, 48, 0, 43, 48, 56, 0, 43, 49, 49, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Antarctica/Casey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 254, 30, 204, 128, 74, 218, 6, 32, 75, 143, 202, 240, 78, 169, 156, 32, 79, 67, 205, 144, 88, 10, 59, 128, 90, 164, 15, 16, 127, 255, 255, 255, 1, 2, 1, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 112, 128, 0, 4, 45, 48, 48, 0, 43, 48, 56, 0, 43, 49, 49, 0, 0, 0, 0, 1, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 254, 30, 204, 128, 0, 0, 0, 0, 74, 218, 6, 32, 0, 0, 0, 0, 75, 143, 202, 240, 0, 0, 0, 0, 78, 169, 156, 32, 0, 0, 0, 0, 79, 67, 205, 144, 0, 0, 0, 0, 88, 10, 59, 128, 0, 0, 0, 0, 90, 164, 15, 16, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 112, 128, 0, 4, 45, 48, 48, 0, 43, 48, 56, 0, 43, 49, 49, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Antarctica/Davis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 231, 156, 64, 0, 246, 71, 223, 16, 254, 71, 171, 0, 74, 218, 20, 48, 75, 151, 250, 64, 78, 169, 170, 48, 79, 67, 247, 192, 127, 255, 255, 255, 1, 0, 1, 2, 3, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 98, 112, 0, 4, 45, 48, 48, 0, 43, 48, 55, 0, 43, 48, 53, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Antarctica/Davis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 231, 156, 64, 0, 246, 71, 223, 16, 254, 71, 171, 0, 74, 218, 20, 48, 75, 151, 250, 64, 78, 169, 170, 48, 79, 67, 247, 192, 127, 255, 255, 255, 1, 0, 1, 2, 3, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 98, 112, 0, 4, 45, 48, 48, 0, 43, 48, 55, 0, 43, 48, 53, 0, 0, 0, 0, 1, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 231, 156, 64, 0, 255, 255, 255, 255, 246, 71, 223, 16, 255, 255, 255, 255, 254, 71, 171, 0, 0, 0, 0, 0, 74, 218, 20, 48, 0, 0, 0, 0, 75, 151, 250, 64, 0, 0, 0, 0, 78, 169, 170, 48, 0, 0, 0, 0, 79, 67, 247, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 0, 1, 2, 3, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 98, 112, 0, 4, 45, 48, 48, 0, 43, 48, 55, 0, 43, 48, 53, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Antarctica/DumontDUrville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 8, 212, 188, 118, 128, 222, 52, 96, 96, 231, 60, 2, 128, 127, 255, 255, 255, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 45, 48, 48, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Antarctica/DumontDUrville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 8, 212, 188, 118, 128, 222, 52, 96, 96, 231, 60, 2, 128, 127, 255, 255, 255, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 45, 48, 48, 0, 43, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 212, 188, 118, 128, 255, 255, 255, 255, 222, 52, 96, 96, 255, 255, 255, 255, 231, 60, 2, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 45, 48, 48, 0, 43, 49, 48, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Antarctica/Macquarie": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 7, 0, 0, 0, 18, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 160, 135, 180, 96, 215, 12, 104, 0, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 0, 14, 45, 48, 48, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Antarctica/Macquarie": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 7, 0, 0, 0, 18, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 160, 135, 180, 96, 215, 12, 104, 0, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 0, 14, 45, 48, 48, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 7, 0, 0, 0, 18, 255, 255, 255, 255, 124, 5, 22, 0, 255, 255, 255, 255, 155, 213, 120, 128, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 160, 135, 180, 96, 255, 255, 255, 255, 215, 12, 104, 0, 255, 255, 255, 255, 251, 194, 141, 0, 255, 255, 255, 255, 252, 178, 126, 0, 255, 255, 255, 255, 253, 199, 89, 0, 255, 255, 255, 255, 254, 118, 176, 128, 255, 255, 255, 255, 255, 167, 59, 0, 0, 0, 0, 0, 0, 86, 146, 128, 0, 0, 0, 0, 1, 135, 29, 0, 0, 0, 0, 0, 2, 63, 175, 0, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 3, 79, 0, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 227, 49, 0, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 103, 39, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 38, 2, 95, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 237, 225, 128, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 205, 195, 128, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 173, 165, 128, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 141, 135, 128, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 109, 105, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 86, 134, 0, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 54, 104, 0, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 22, 74, 0, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 55, 246, 44, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 191, 42, 128, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 159, 12, 128, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 126, 238, 128, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 94, 208, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 62, 178, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 30, 148, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 7, 177, 0, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 0, 14, 45, 48, 48, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 1, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Antarctica/Mawson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 226, 32, 50, 128, 74, 218, 34, 64, 127, 255, 255, 255, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 70, 80, 0, 8, 45, 48, 48, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Antarctica/Mawson": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 226, 32, 50, 128, 74, 218, 34, 64, 127, 255, 255, 255, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 70, 80, 0, 8, 45, 48, 48, 0, 43, 48, 54, 0, 43, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 226, 32, 50, 128, 0, 0, 0, 0, 74, 218, 34, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 70, 80, 0, 8, 45, 48, 48, 0, 43, 48, 54, 0, 43, 48, 53, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Antarctica/McMurdo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Antarctica/McMurdo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 255, 255, 255, 255, 65, 183, 76, 168, 255, 255, 255, 255, 176, 180, 178, 232, 255, 255, 255, 255, 177, 81, 135, 88, 255, 255, 255, 255, 178, 120, 229, 104, 255, 255, 255, 255, 179, 67, 229, 96, 255, 255, 255, 255, 180, 88, 199, 104, 255, 255, 255, 255, 181, 35, 199, 96, 255, 255, 255, 255, 182, 56, 169, 104, 255, 255, 255, 255, 183, 3, 169, 96, 255, 255, 255, 255, 184, 24, 139, 104, 255, 255, 255, 255, 184, 236, 197, 224, 255, 255, 255, 255, 185, 248, 109, 104, 255, 255, 255, 255, 186, 204, 167, 224, 255, 255, 255, 255, 187, 216, 79, 104, 255, 255, 255, 255, 188, 227, 232, 224, 255, 255, 255, 255, 189, 174, 246, 232, 255, 255, 255, 255, 190, 195, 202, 224, 255, 255, 255, 255, 191, 142, 216, 232, 255, 255, 255, 255, 192, 163, 172, 224, 255, 255, 255, 255, 193, 110, 186, 232, 255, 255, 255, 255, 194, 131, 142, 224, 255, 255, 255, 255, 195, 78, 156, 232, 255, 255, 255, 255, 196, 99, 112, 224, 255, 255, 255, 255, 197, 46, 126, 232, 255, 255, 255, 255, 198, 76, 141, 96, 255, 255, 255, 255, 199, 14, 96, 232, 255, 255, 255, 255, 200, 44, 111, 96, 255, 255, 255, 255, 200, 247, 125, 104, 255, 255, 255, 255, 210, 218, 154, 64, 0, 0, 0, 0, 9, 24, 253, 224, 0, 0, 0, 0, 9, 172, 165, 224, 0, 0, 0, 0, 10, 239, 165, 96, 0, 0, 0, 0, 11, 158, 252, 224, 0, 0, 0, 0, 12, 216, 193, 224, 0, 0, 0, 0, 13, 126, 222, 224, 0, 0, 0, 0, 14, 184, 163, 224, 0, 0, 0, 0, 15, 94, 192, 224, 0, 0, 0, 0, 16, 152, 133, 224, 0, 0, 0, 0, 17, 62, 162, 224, 0, 0, 0, 0, 18, 120, 103, 224, 0, 0, 0, 0, 19, 30, 132, 224, 0, 0, 0, 0, 20, 88, 73, 224, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 43, 224, 0, 0, 0, 0, 22, 231, 131, 96, 0, 0, 0, 0, 24, 33, 72, 96, 0, 0, 0, 0, 24, 199, 101, 96, 0, 0, 0, 0, 26, 1, 42, 96, 0, 0, 0, 0, 26, 167, 71, 96, 0, 0, 0, 0, 27, 225, 12, 96, 0, 0, 0, 0, 28, 135, 41, 96, 0, 0, 0, 0, 29, 192, 238, 96, 0, 0, 0, 0, 30, 103, 11, 96, 0, 0, 0, 0, 31, 160, 208, 96, 0, 0, 0, 0, 32, 70, 237, 96, 0, 0, 0, 0, 33, 128, 178, 96, 0, 0, 0, 0, 34, 48, 9, 224, 0, 0, 0, 0, 35, 105, 206, 224, 0, 0, 0, 0, 36, 15, 235, 224, 0, 0, 0, 0, 37, 46, 1, 96, 0, 0, 0, 0, 38, 2, 66, 224, 0, 0, 0, 0, 39, 13, 227, 96, 0, 0, 0, 0, 39, 226, 36, 224, 0, 0, 0, 0, 40, 237, 197, 96, 0, 0, 0, 0, 41, 194, 6, 224, 0, 0, 0, 0, 42, 205, 167, 96, 0, 0, 0, 0, 43, 171, 35, 96, 0, 0, 0, 0, 44, 173, 137, 96, 0, 0, 0, 0, 45, 139, 5, 96, 0, 0, 0, 0, 46, 141, 107, 96, 0, 0, 0, 0, 47, 106, 231, 96, 0, 0, 0, 0, 48, 109, 77, 96, 0, 0, 0, 0, 49, 74, 201, 96, 0, 0, 0, 0, 50, 86, 105, 224, 0, 0, 0, 0, 51, 42, 171, 96, 0, 0, 0, 0, 52, 54, 75, 224, 0, 0, 0, 0, 53, 10, 141, 96, 0, 0, 0, 0, 54, 22, 45, 224, 0, 0, 0, 0, 54, 243, 169, 224, 0, 0, 0, 0, 55, 246, 15, 224, 0, 0, 0, 0, 56, 211, 139, 224, 0, 0, 0, 0, 57, 213, 241, 224, 0, 0, 0, 0, 58, 179, 109, 224, 0, 0, 0, 0, 59, 191, 14, 96, 0, 0, 0, 0, 60, 147, 79, 224, 0, 0, 0, 0, 61, 158, 240, 96, 0, 0, 0, 0, 62, 115, 49, 224, 0, 0, 0, 0, 63, 126, 210, 96, 0, 0, 0, 0, 64, 92, 78, 96, 0, 0, 0, 0, 65, 94, 180, 96, 0, 0, 0, 0, 66, 60, 48, 96, 0, 0, 0, 0, 67, 62, 150, 96, 0, 0, 0, 0, 68, 28, 18, 96, 0, 0, 0, 0, 69, 30, 120, 96, 0, 0, 0, 0, 69, 251, 244, 96, 0, 0, 0, 0, 70, 254, 90, 96, 0, 0, 0, 0, 71, 247, 133, 224, 0, 0, 0, 0, 72, 222, 60, 96, 0, 0, 0, 0, 73, 215, 103, 224, 0, 0, 0, 0, 74, 190, 30, 96, 0, 0, 0, 0, 75, 183, 73, 224, 0, 0, 0, 0, 76, 158, 0, 96, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Antarctica/Palmer": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 8, 0, 0, 0, 16, 246, 152, 173, 0, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 23, 48, 188, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 88, 67, 134, 176, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 4, 4, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 227, 224, 1, 12, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 45, 48, 48, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/Antarctica/Palmer": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 8, 0, 0, 0, 16, 246, 152, 173, 0, 246, 230, 159, 176, 248, 19, 67, 192, 248, 199, 211, 48, 249, 244, 119, 64, 250, 211, 54, 176, 251, 195, 53, 192, 252, 188, 83, 48, 253, 172, 82, 64, 254, 156, 53, 48, 255, 140, 52, 64, 7, 163, 74, 176, 8, 36, 111, 160, 23, 48, 188, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 88, 67, 134, 176, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 4, 4, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 227, 224, 1, 12, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 45, 48, 48, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 8, 0, 0, 0, 16, 255, 255, 255, 255, 246, 152, 173, 0, 255, 255, 255, 255, 246, 230, 159, 176, 255, 255, 255, 255, 248, 19, 67, 192, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 249, 244, 119, 64, 255, 255, 255, 255, 250, 211, 54, 176, 255, 255, 255, 255, 251, 195, 53, 192, 255, 255, 255, 255, 252, 188, 83, 48, 255, 255, 255, 255, 253, 172, 82, 64, 255, 255, 255, 255, 254, 156, 53, 48, 255, 255, 255, 255, 255, 140, 52, 64, 0, 0, 0, 0, 7, 163, 74, 176, 0, 0, 0, 0, 8, 36, 111, 160, 0, 0, 0, 0, 23, 48, 188, 176, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 24, 209, 86, 176, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 177, 56, 176, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 145, 26, 176, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 112, 252, 176, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 127, 3, 48, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 57, 251, 48, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 25, 221, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 249, 191, 48, 0, 0, 0, 0, 38, 242, 248, 192, 0, 0, 0, 0, 39, 217, 161, 48, 0, 0, 0, 0, 40, 247, 196, 192, 0, 0, 0, 0, 41, 194, 189, 176, 0, 0, 0, 0, 42, 215, 166, 192, 0, 0, 0, 0, 43, 162, 159, 176, 0, 0, 0, 0, 44, 183, 136, 192, 0, 0, 0, 0, 45, 130, 129, 176, 0, 0, 0, 0, 46, 151, 106, 192, 0, 0, 0, 0, 47, 98, 99, 176, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 66, 69, 176, 0, 0, 0, 0, 50, 96, 105, 64, 0, 0, 0, 0, 51, 61, 215, 48, 0, 0, 0, 0, 52, 64, 75, 64, 0, 0, 0, 0, 53, 11, 68, 48, 0, 0, 0, 0, 54, 13, 184, 64, 0, 0, 0, 0, 55, 6, 213, 176, 0, 0, 0, 0, 56, 0, 15, 64, 0, 0, 0, 0, 56, 203, 8, 48, 0, 0, 0, 0, 57, 233, 43, 192, 0, 0, 0, 0, 58, 170, 234, 48, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 138, 204, 48, 0, 0, 0, 0, 61, 168, 239, 192, 0, 0, 0, 0, 62, 106, 174, 48, 0, 0, 0, 0, 63, 136, 209, 192, 0, 0, 0, 0, 64, 83, 202, 176, 0, 0, 0, 0, 65, 104, 179, 192, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 72, 149, 192, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 239, 2, 48, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 188, 111, 48, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 75, 184, 0, 176, 0, 0, 0, 0, 76, 177, 58, 64, 0, 0, 0, 0, 77, 198, 7, 48, 0, 0, 0, 0, 78, 80, 130, 192, 0, 0, 0, 0, 79, 156, 174, 176, 0, 0, 0, 0, 80, 66, 217, 192, 0, 0, 0, 0, 81, 124, 144, 176, 0, 0, 0, 0, 82, 43, 246, 64, 0, 0, 0, 0, 83, 92, 114, 176, 0, 0, 0, 0, 84, 11, 216, 64, 0, 0, 0, 0, 87, 55, 230, 48, 0, 0, 0, 0, 87, 175, 236, 192, 0, 0, 0, 0, 88, 67, 134, 176, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 4, 4, 0, 0, 0, 0, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 227, 224, 1, 12, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 0, 8, 45, 48, 48, 0, 45, 48, 52, 0, 45, 48, 51, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/Antarctica/Rothera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 13, 2, 45, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 0, 4, 45, 48, 48, 0, 45, 48, 51, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/Antarctica/Rothera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 13, 2, 45, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 0, 4, 45, 48, 48, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 13, 2, 45, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 255, 255, 213, 208, 0, 4, 45, 48, 48, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/Antarctica/South_Pole": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Antarctica/South_Pole": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 255, 255, 255, 255, 65, 183, 76, 168, 255, 255, 255, 255, 176, 180, 178, 232, 255, 255, 255, 255, 177, 81, 135, 88, 255, 255, 255, 255, 178, 120, 229, 104, 255, 255, 255, 255, 179, 67, 229, 96, 255, 255, 255, 255, 180, 88, 199, 104, 255, 255, 255, 255, 181, 35, 199, 96, 255, 255, 255, 255, 182, 56, 169, 104, 255, 255, 255, 255, 183, 3, 169, 96, 255, 255, 255, 255, 184, 24, 139, 104, 255, 255, 255, 255, 184, 236, 197, 224, 255, 255, 255, 255, 185, 248, 109, 104, 255, 255, 255, 255, 186, 204, 167, 224, 255, 255, 255, 255, 187, 216, 79, 104, 255, 255, 255, 255, 188, 227, 232, 224, 255, 255, 255, 255, 189, 174, 246, 232, 255, 255, 255, 255, 190, 195, 202, 224, 255, 255, 255, 255, 191, 142, 216, 232, 255, 255, 255, 255, 192, 163, 172, 224, 255, 255, 255, 255, 193, 110, 186, 232, 255, 255, 255, 255, 194, 131, 142, 224, 255, 255, 255, 255, 195, 78, 156, 232, 255, 255, 255, 255, 196, 99, 112, 224, 255, 255, 255, 255, 197, 46, 126, 232, 255, 255, 255, 255, 198, 76, 141, 96, 255, 255, 255, 255, 199, 14, 96, 232, 255, 255, 255, 255, 200, 44, 111, 96, 255, 255, 255, 255, 200, 247, 125, 104, 255, 255, 255, 255, 210, 218, 154, 64, 0, 0, 0, 0, 9, 24, 253, 224, 0, 0, 0, 0, 9, 172, 165, 224, 0, 0, 0, 0, 10, 239, 165, 96, 0, 0, 0, 0, 11, 158, 252, 224, 0, 0, 0, 0, 12, 216, 193, 224, 0, 0, 0, 0, 13, 126, 222, 224, 0, 0, 0, 0, 14, 184, 163, 224, 0, 0, 0, 0, 15, 94, 192, 224, 0, 0, 0, 0, 16, 152, 133, 224, 0, 0, 0, 0, 17, 62, 162, 224, 0, 0, 0, 0, 18, 120, 103, 224, 0, 0, 0, 0, 19, 30, 132, 224, 0, 0, 0, 0, 20, 88, 73, 224, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 43, 224, 0, 0, 0, 0, 22, 231, 131, 96, 0, 0, 0, 0, 24, 33, 72, 96, 0, 0, 0, 0, 24, 199, 101, 96, 0, 0, 0, 0, 26, 1, 42, 96, 0, 0, 0, 0, 26, 167, 71, 96, 0, 0, 0, 0, 27, 225, 12, 96, 0, 0, 0, 0, 28, 135, 41, 96, 0, 0, 0, 0, 29, 192, 238, 96, 0, 0, 0, 0, 30, 103, 11, 96, 0, 0, 0, 0, 31, 160, 208, 96, 0, 0, 0, 0, 32, 70, 237, 96, 0, 0, 0, 0, 33, 128, 178, 96, 0, 0, 0, 0, 34, 48, 9, 224, 0, 0, 0, 0, 35, 105, 206, 224, 0, 0, 0, 0, 36, 15, 235, 224, 0, 0, 0, 0, 37, 46, 1, 96, 0, 0, 0, 0, 38, 2, 66, 224, 0, 0, 0, 0, 39, 13, 227, 96, 0, 0, 0, 0, 39, 226, 36, 224, 0, 0, 0, 0, 40, 237, 197, 96, 0, 0, 0, 0, 41, 194, 6, 224, 0, 0, 0, 0, 42, 205, 167, 96, 0, 0, 0, 0, 43, 171, 35, 96, 0, 0, 0, 0, 44, 173, 137, 96, 0, 0, 0, 0, 45, 139, 5, 96, 0, 0, 0, 0, 46, 141, 107, 96, 0, 0, 0, 0, 47, 106, 231, 96, 0, 0, 0, 0, 48, 109, 77, 96, 0, 0, 0, 0, 49, 74, 201, 96, 0, 0, 0, 0, 50, 86, 105, 224, 0, 0, 0, 0, 51, 42, 171, 96, 0, 0, 0, 0, 52, 54, 75, 224, 0, 0, 0, 0, 53, 10, 141, 96, 0, 0, 0, 0, 54, 22, 45, 224, 0, 0, 0, 0, 54, 243, 169, 224, 0, 0, 0, 0, 55, 246, 15, 224, 0, 0, 0, 0, 56, 211, 139, 224, 0, 0, 0, 0, 57, 213, 241, 224, 0, 0, 0, 0, 58, 179, 109, 224, 0, 0, 0, 0, 59, 191, 14, 96, 0, 0, 0, 0, 60, 147, 79, 224, 0, 0, 0, 0, 61, 158, 240, 96, 0, 0, 0, 0, 62, 115, 49, 224, 0, 0, 0, 0, 63, 126, 210, 96, 0, 0, 0, 0, 64, 92, 78, 96, 0, 0, 0, 0, 65, 94, 180, 96, 0, 0, 0, 0, 66, 60, 48, 96, 0, 0, 0, 0, 67, 62, 150, 96, 0, 0, 0, 0, 68, 28, 18, 96, 0, 0, 0, 0, 69, 30, 120, 96, 0, 0, 0, 0, 69, 251, 244, 96, 0, 0, 0, 0, 70, 254, 90, 96, 0, 0, 0, 0, 71, 247, 133, 224, 0, 0, 0, 0, 72, 222, 60, 96, 0, 0, 0, 0, 73, 215, 103, 224, 0, 0, 0, 0, 74, 190, 30, 96, 0, 0, 0, 0, 75, 183, 73, 224, 0, 0, 0, 0, 76, 158, 0, 96, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Antarctica/Syowa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 231, 177, 88, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 42, 48, 0, 4, 45, 48, 48, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Antarctica/Syowa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 231, 177, 88, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 42, 48, 0, 4, 45, 48, 48, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 231, 177, 88, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 42, 48, 0, 4, 45, 48, 48, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Antarctica/Troll": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 4, 0, 0, 0, 12, 66, 13, 71, 0, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 45, 48, 48, 0, 43, 48, 50, 0, 43, 48, 48, 0, 0, 1, 1, 0, 0, 1, 1, 0, 10, 60, 43, 48, 48, 62, 48, 60, 43, 48, 50, 62, 45, 50, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Antarctica/Troll": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 4, 0, 0, 0, 12, 66, 13, 71, 0, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 45, 48, 48, 0, 43, 48, 50, 0, 43, 48, 48, 0, 0, 1, 1, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 0, 66, 13, 71, 0, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 0, 0, 0, 0, 127, 255, 255, 255, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 45, 48, 48, 0, 43, 48, 50, 0, 43, 48, 48, 0, 0, 1, 1, 0, 0, 1, 1, 0, 10, 60, 43, 48, 48, 62, 48, 60, 43, 48, 50, 62, 45, 50, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Antarctica/Vostok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 233, 88, 137, 128, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 45, 48, 48, 0, 43, 48, 54, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Antarctica/Vostok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 233, 88, 137, 128, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 45, 48, 48, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 233, 88, 137, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 84, 96, 0, 4, 45, 48, 48, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Arctic/Longyearbyen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Arctic/Longyearbyen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 114, 238, 36, 108, 255, 255, 255, 255, 155, 39, 227, 0, 255, 255, 255, 255, 155, 212, 123, 96, 255, 255, 255, 255, 200, 183, 77, 96, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 98, 7, 16, 255, 255, 255, 255, 235, 175, 32, 144, 255, 255, 255, 255, 236, 168, 76, 16, 255, 255, 255, 255, 237, 152, 61, 16, 255, 255, 255, 255, 238, 136, 46, 16, 255, 255, 255, 255, 239, 120, 31, 16, 255, 255, 255, 255, 240, 104, 16, 16, 255, 255, 255, 255, 241, 88, 1, 16, 255, 255, 255, 255, 242, 71, 242, 16, 255, 255, 255, 255, 243, 55, 227, 16, 255, 255, 255, 255, 244, 39, 212, 16, 255, 255, 255, 255, 245, 23, 197, 16, 255, 255, 255, 255, 246, 16, 240, 144, 255, 255, 255, 255, 247, 47, 6, 16, 255, 255, 255, 255, 247, 240, 210, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Asia/Aden": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 213, 27, 54, 180, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Aden": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 213, 27, 54, 180, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 213, 27, 54, 180, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Almaty": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 123, 220, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 193, 64, 43, 180, 178, 64, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 72, 36, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Almaty": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 123, 220, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 193, 64, 43, 180, 178, 64, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 72, 36, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 123, 220, 255, 255, 255, 255, 181, 163, 239, 48, 0, 0, 0, 0, 21, 39, 125, 160, 0, 0, 0, 0, 22, 24, 178, 16, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 229, 144, 0, 0, 0, 0, 24, 233, 228, 160, 0, 0, 0, 0, 25, 219, 25, 16, 0, 0, 0, 0, 26, 204, 105, 160, 0, 0, 0, 0, 27, 188, 118, 192, 0, 0, 0, 0, 28, 172, 103, 192, 0, 0, 0, 0, 29, 156, 88, 192, 0, 0, 0, 0, 30, 140, 73, 192, 0, 0, 0, 0, 31, 124, 58, 192, 0, 0, 0, 0, 32, 108, 43, 192, 0, 0, 0, 0, 33, 92, 28, 192, 0, 0, 0, 0, 34, 76, 13, 192, 0, 0, 0, 0, 35, 59, 254, 192, 0, 0, 0, 0, 36, 43, 239, 192, 0, 0, 0, 0, 37, 27, 224, 192, 0, 0, 0, 0, 38, 11, 209, 192, 0, 0, 0, 0, 39, 4, 253, 64, 0, 0, 0, 0, 39, 244, 238, 64, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 120, 149, 80, 0, 0, 0, 0, 41, 212, 208, 64, 0, 0, 0, 0, 42, 196, 193, 64, 0, 0, 0, 0, 43, 180, 178, 64, 0, 0, 0, 0, 44, 164, 163, 64, 0, 0, 0, 0, 45, 148, 148, 64, 0, 0, 0, 0, 46, 132, 133, 64, 0, 0, 0, 0, 47, 116, 118, 64, 0, 0, 0, 0, 48, 100, 103, 64, 0, 0, 0, 0, 49, 93, 146, 192, 0, 0, 0, 0, 50, 114, 109, 192, 0, 0, 0, 0, 51, 61, 116, 192, 0, 0, 0, 0, 52, 82, 79, 192, 0, 0, 0, 0, 53, 29, 86, 192, 0, 0, 0, 0, 54, 50, 49, 192, 0, 0, 0, 0, 54, 253, 56, 192, 0, 0, 0, 0, 56, 27, 78, 64, 0, 0, 0, 0, 56, 221, 26, 192, 0, 0, 0, 0, 57, 251, 48, 64, 0, 0, 0, 0, 58, 188, 252, 192, 0, 0, 0, 0, 59, 219, 18, 64, 0, 0, 0, 0, 60, 166, 25, 64, 0, 0, 0, 0, 61, 186, 244, 64, 0, 0, 0, 0, 62, 133, 251, 64, 0, 0, 0, 0, 63, 154, 214, 64, 0, 0, 0, 0, 64, 101, 221, 64, 0, 0, 0, 0, 65, 131, 242, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 72, 36, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Amman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 5, 0, 0, 0, 13, 182, 163, 214, 208, 6, 114, 121, 224, 7, 12, 171, 80, 8, 36, 55, 96, 8, 237, 222, 208, 10, 5, 106, 224, 10, 207, 18, 80, 11, 231, 239, 224, 12, 218, 117, 208, 13, 201, 35, 96, 14, 146, 202, 208, 15, 169, 5, 96, 16, 114, 172, 208, 28, 173, 213, 96, 29, 159, 9, 208, 30, 146, 253, 96, 31, 130, 224, 80, 32, 114, 223, 96, 33, 98, 194, 80, 34, 82, 193, 96, 35, 75, 222, 208, 36, 100, 188, 96, 37, 43, 192, 208, 38, 55, 111, 96, 39, 11, 162, 208, 40, 11, 115, 224, 40, 226, 74, 80, 41, 228, 190, 96, 42, 203, 102, 208, 43, 187, 101, 224, 44, 171, 72, 208, 45, 155, 71, 224, 46, 120, 181, 208, 47, 132, 100, 96, 48, 88, 165, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 55, 122, 147, 96, 55, 234, 162, 224, 56, 226, 124, 224, 57, 211, 191, 96, 58, 194, 94, 224, 59, 179, 161, 96, 60, 163, 146, 96, 61, 147, 131, 96, 62, 131, 116, 96, 63, 152, 79, 96, 64, 99, 86, 96, 65, 110, 246, 224, 66, 76, 114, 224, 67, 60, 99, 224, 68, 44, 84, 224, 69, 65, 47, 224, 70, 12, 54, 224, 71, 33, 17, 224, 71, 236, 24, 224, 73, 10, 46, 96, 73, 203, 250, 224, 74, 234, 16, 96, 75, 171, 220, 224, 76, 201, 242, 96, 77, 148, 249, 96, 78, 169, 212, 96, 79, 116, 219, 96, 82, 179, 94, 80, 83, 52, 159, 96, 84, 82, 180, 224, 85, 20, 129, 96, 86, 50, 150, 224, 86, 253, 157, 224, 88, 18, 120, 224, 88, 221, 127, 224, 89, 242, 90, 224, 90, 189, 97, 224, 91, 210, 60, 224, 92, 157, 67, 224, 93, 178, 30, 224, 94, 125, 37, 224, 95, 155, 59, 96, 96, 93, 7, 224, 97, 123, 29, 96, 98, 70, 36, 96, 99, 90, 255, 96, 100, 38, 6, 96, 101, 58, 225, 96, 102, 5, 232, 96, 103, 26, 195, 96, 103, 229, 202, 96, 105, 3, 223, 224, 105, 197, 172, 96, 106, 227, 193, 224, 107, 165, 142, 96, 108, 195, 163, 224, 109, 142, 170, 224, 110, 163, 133, 224, 111, 110, 140, 224, 112, 131, 103, 224, 113, 78, 110, 224, 114, 99, 73, 224, 115, 46, 80, 224, 116, 76, 102, 96, 117, 14, 50, 224, 118, 44, 72, 96, 118, 247, 79, 96, 120, 12, 42, 96, 120, 215, 49, 96, 121, 236, 12, 96, 122, 183, 19, 96, 123, 203, 238, 96, 124, 150, 245, 96, 125, 181, 10, 224, 126, 118, 215, 96, 127, 148, 236, 224, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 4, 3, 4, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 0, 0, 33, 176, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 52, 47, 50, 52, 44, 77, 49, 48, 46, 53, 46, 53, 47, 49, 10}, + "zoneinfo/Asia/Amman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 5, 0, 0, 0, 13, 182, 163, 214, 208, 6, 114, 121, 224, 7, 12, 171, 80, 8, 36, 55, 96, 8, 237, 222, 208, 10, 5, 106, 224, 10, 207, 18, 80, 11, 231, 239, 224, 12, 218, 117, 208, 13, 201, 35, 96, 14, 146, 202, 208, 15, 169, 5, 96, 16, 114, 172, 208, 28, 173, 213, 96, 29, 159, 9, 208, 30, 146, 253, 96, 31, 130, 224, 80, 32, 114, 223, 96, 33, 98, 194, 80, 34, 82, 193, 96, 35, 75, 222, 208, 36, 100, 188, 96, 37, 43, 192, 208, 38, 55, 111, 96, 39, 11, 162, 208, 40, 11, 115, 224, 40, 226, 74, 80, 41, 228, 190, 96, 42, 203, 102, 208, 43, 187, 101, 224, 44, 171, 72, 208, 45, 155, 71, 224, 46, 120, 181, 208, 47, 132, 100, 96, 48, 88, 165, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 55, 122, 147, 96, 55, 234, 162, 224, 56, 226, 124, 224, 57, 211, 191, 96, 58, 194, 94, 224, 59, 179, 161, 96, 60, 163, 146, 96, 61, 147, 131, 96, 62, 131, 116, 96, 63, 152, 79, 96, 64, 99, 86, 96, 65, 110, 246, 224, 66, 76, 114, 224, 67, 60, 99, 224, 68, 44, 84, 224, 69, 65, 47, 224, 70, 12, 54, 224, 71, 33, 17, 224, 71, 236, 24, 224, 73, 10, 46, 96, 73, 203, 250, 224, 74, 234, 16, 96, 75, 171, 220, 224, 76, 201, 242, 96, 77, 148, 249, 96, 78, 169, 212, 96, 79, 116, 219, 96, 82, 179, 94, 80, 83, 52, 159, 96, 84, 82, 180, 224, 85, 20, 129, 96, 86, 50, 150, 224, 86, 253, 157, 224, 88, 18, 120, 224, 88, 221, 127, 224, 89, 242, 90, 224, 90, 189, 97, 224, 91, 210, 60, 224, 92, 157, 67, 224, 93, 178, 30, 224, 94, 125, 37, 224, 95, 155, 59, 96, 96, 93, 7, 224, 97, 123, 29, 96, 98, 70, 36, 96, 99, 90, 255, 96, 100, 38, 6, 96, 101, 58, 225, 96, 102, 5, 232, 96, 103, 26, 195, 96, 103, 229, 202, 96, 105, 3, 223, 224, 105, 197, 172, 96, 106, 227, 193, 224, 107, 165, 142, 96, 108, 195, 163, 224, 109, 142, 170, 224, 110, 163, 133, 224, 111, 110, 140, 224, 112, 131, 103, 224, 113, 78, 110, 224, 114, 99, 73, 224, 115, 46, 80, 224, 116, 76, 102, 96, 117, 14, 50, 224, 118, 44, 72, 96, 118, 247, 79, 96, 120, 12, 42, 96, 120, 215, 49, 96, 121, 236, 12, 96, 122, 183, 19, 96, 123, 203, 238, 96, 124, 150, 245, 96, 125, 181, 10, 224, 126, 118, 215, 96, 127, 148, 236, 224, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 4, 3, 4, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 0, 0, 33, 176, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 5, 0, 0, 0, 13, 255, 255, 255, 255, 182, 163, 214, 208, 0, 0, 0, 0, 6, 114, 121, 224, 0, 0, 0, 0, 7, 12, 171, 80, 0, 0, 0, 0, 8, 36, 55, 96, 0, 0, 0, 0, 8, 237, 222, 208, 0, 0, 0, 0, 10, 5, 106, 224, 0, 0, 0, 0, 10, 207, 18, 80, 0, 0, 0, 0, 11, 231, 239, 224, 0, 0, 0, 0, 12, 218, 117, 208, 0, 0, 0, 0, 13, 201, 35, 96, 0, 0, 0, 0, 14, 146, 202, 208, 0, 0, 0, 0, 15, 169, 5, 96, 0, 0, 0, 0, 16, 114, 172, 208, 0, 0, 0, 0, 28, 173, 213, 96, 0, 0, 0, 0, 29, 159, 9, 208, 0, 0, 0, 0, 30, 146, 253, 96, 0, 0, 0, 0, 31, 130, 224, 80, 0, 0, 0, 0, 32, 114, 223, 96, 0, 0, 0, 0, 33, 98, 194, 80, 0, 0, 0, 0, 34, 82, 193, 96, 0, 0, 0, 0, 35, 75, 222, 208, 0, 0, 0, 0, 36, 100, 188, 96, 0, 0, 0, 0, 37, 43, 192, 208, 0, 0, 0, 0, 38, 55, 111, 96, 0, 0, 0, 0, 39, 11, 162, 208, 0, 0, 0, 0, 40, 11, 115, 224, 0, 0, 0, 0, 40, 226, 74, 80, 0, 0, 0, 0, 41, 228, 190, 96, 0, 0, 0, 0, 42, 203, 102, 208, 0, 0, 0, 0, 43, 187, 101, 224, 0, 0, 0, 0, 44, 171, 72, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 120, 181, 208, 0, 0, 0, 0, 47, 132, 100, 96, 0, 0, 0, 0, 48, 88, 165, 224, 0, 0, 0, 0, 49, 100, 70, 96, 0, 0, 0, 0, 50, 65, 194, 96, 0, 0, 0, 0, 51, 68, 40, 96, 0, 0, 0, 0, 52, 33, 164, 96, 0, 0, 0, 0, 53, 36, 10, 96, 0, 0, 0, 0, 54, 1, 134, 96, 0, 0, 0, 0, 55, 122, 147, 96, 0, 0, 0, 0, 55, 234, 162, 224, 0, 0, 0, 0, 56, 226, 124, 224, 0, 0, 0, 0, 57, 211, 191, 96, 0, 0, 0, 0, 58, 194, 94, 224, 0, 0, 0, 0, 59, 179, 161, 96, 0, 0, 0, 0, 60, 163, 146, 96, 0, 0, 0, 0, 61, 147, 131, 96, 0, 0, 0, 0, 62, 131, 116, 96, 0, 0, 0, 0, 63, 152, 79, 96, 0, 0, 0, 0, 64, 99, 86, 96, 0, 0, 0, 0, 65, 110, 246, 224, 0, 0, 0, 0, 66, 76, 114, 224, 0, 0, 0, 0, 67, 60, 99, 224, 0, 0, 0, 0, 68, 44, 84, 224, 0, 0, 0, 0, 69, 65, 47, 224, 0, 0, 0, 0, 70, 12, 54, 224, 0, 0, 0, 0, 71, 33, 17, 224, 0, 0, 0, 0, 71, 236, 24, 224, 0, 0, 0, 0, 73, 10, 46, 96, 0, 0, 0, 0, 73, 203, 250, 224, 0, 0, 0, 0, 74, 234, 16, 96, 0, 0, 0, 0, 75, 171, 220, 224, 0, 0, 0, 0, 76, 201, 242, 96, 0, 0, 0, 0, 77, 148, 249, 96, 0, 0, 0, 0, 78, 169, 212, 96, 0, 0, 0, 0, 79, 116, 219, 96, 0, 0, 0, 0, 82, 179, 94, 80, 0, 0, 0, 0, 83, 52, 159, 96, 0, 0, 0, 0, 84, 82, 180, 224, 0, 0, 0, 0, 85, 20, 129, 96, 0, 0, 0, 0, 86, 50, 150, 224, 0, 0, 0, 0, 86, 253, 157, 224, 0, 0, 0, 0, 88, 18, 120, 224, 0, 0, 0, 0, 88, 221, 127, 224, 0, 0, 0, 0, 89, 242, 90, 224, 0, 0, 0, 0, 90, 189, 97, 224, 0, 0, 0, 0, 91, 210, 60, 224, 0, 0, 0, 0, 92, 157, 67, 224, 0, 0, 0, 0, 93, 178, 30, 224, 0, 0, 0, 0, 94, 125, 37, 224, 0, 0, 0, 0, 95, 155, 59, 96, 0, 0, 0, 0, 96, 93, 7, 224, 0, 0, 0, 0, 97, 123, 29, 96, 0, 0, 0, 0, 98, 70, 36, 96, 0, 0, 0, 0, 99, 90, 255, 96, 0, 0, 0, 0, 100, 38, 6, 96, 0, 0, 0, 0, 101, 58, 225, 96, 0, 0, 0, 0, 102, 5, 232, 96, 0, 0, 0, 0, 103, 26, 195, 96, 0, 0, 0, 0, 103, 229, 202, 96, 0, 0, 0, 0, 105, 3, 223, 224, 0, 0, 0, 0, 105, 197, 172, 96, 0, 0, 0, 0, 106, 227, 193, 224, 0, 0, 0, 0, 107, 165, 142, 96, 0, 0, 0, 0, 108, 195, 163, 224, 0, 0, 0, 0, 109, 142, 170, 224, 0, 0, 0, 0, 110, 163, 133, 224, 0, 0, 0, 0, 111, 110, 140, 224, 0, 0, 0, 0, 112, 131, 103, 224, 0, 0, 0, 0, 113, 78, 110, 224, 0, 0, 0, 0, 114, 99, 73, 224, 0, 0, 0, 0, 115, 46, 80, 224, 0, 0, 0, 0, 116, 76, 102, 96, 0, 0, 0, 0, 117, 14, 50, 224, 0, 0, 0, 0, 118, 44, 72, 96, 0, 0, 0, 0, 118, 247, 79, 96, 0, 0, 0, 0, 120, 12, 42, 96, 0, 0, 0, 0, 120, 215, 49, 96, 0, 0, 0, 0, 121, 236, 12, 96, 0, 0, 0, 0, 122, 183, 19, 96, 0, 0, 0, 0, 123, 203, 238, 96, 0, 0, 0, 0, 124, 150, 245, 96, 0, 0, 0, 0, 125, 181, 10, 224, 0, 0, 0, 0, 126, 118, 215, 96, 0, 0, 0, 0, 127, 148, 236, 224, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 4, 3, 4, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 0, 0, 33, 176, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 52, 47, 50, 52, 44, 77, 49, 48, 46, 53, 46, 53, 47, 49, 10}, - "zoneinfo/Asia/Anadyr": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 20, 170, 25, 29, 156, 181, 163, 140, 192, 21, 39, 27, 48, 22, 24, 79, 160, 23, 8, 78, 176, 23, 249, 145, 48, 24, 233, 144, 64, 25, 218, 196, 176, 26, 204, 21, 64, 27, 188, 34, 96, 28, 172, 19, 96, 29, 156, 4, 96, 30, 139, 245, 96, 31, 123, 230, 96, 32, 107, 215, 96, 33, 91, 200, 96, 34, 75, 185, 96, 35, 59, 170, 96, 36, 43, 155, 96, 37, 27, 140, 96, 38, 11, 125, 96, 39, 4, 168, 224, 39, 244, 153, 224, 40, 228, 152, 240, 41, 120, 64, 240, 41, 212, 123, 224, 42, 196, 108, 224, 43, 180, 93, 224, 44, 164, 78, 224, 45, 148, 63, 224, 46, 132, 48, 224, 47, 116, 33, 224, 48, 100, 18, 224, 49, 93, 62, 96, 50, 114, 25, 96, 51, 61, 32, 96, 52, 81, 251, 96, 53, 29, 2, 96, 54, 49, 221, 96, 54, 252, 228, 96, 56, 26, 249, 224, 56, 220, 198, 96, 57, 250, 219, 224, 58, 188, 168, 96, 59, 218, 189, 224, 60, 165, 196, 224, 61, 186, 159, 224, 62, 133, 166, 224, 63, 154, 129, 224, 64, 101, 136, 224, 65, 131, 158, 96, 66, 69, 106, 224, 67, 99, 128, 96, 68, 37, 76, 224, 69, 67, 98, 96, 70, 5, 46, 224, 71, 35, 68, 96, 71, 238, 75, 96, 73, 3, 38, 96, 73, 206, 45, 96, 74, 227, 8, 96, 75, 174, 15, 96, 76, 204, 50, 240, 77, 141, 255, 112, 127, 255, 255, 255, 1, 3, 2, 3, 4, 1, 4, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 5, 0, 0, 166, 100, 0, 0, 0, 0, 168, 192, 0, 4, 0, 0, 196, 224, 1, 8, 0, 0, 182, 208, 0, 12, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 0, 4, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 16, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 52, 0, 43, 49, 51, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Asia/Anadyr": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 20, 170, 25, 29, 156, 181, 163, 140, 192, 21, 39, 27, 48, 22, 24, 79, 160, 23, 8, 78, 176, 23, 249, 145, 48, 24, 233, 144, 64, 25, 218, 196, 176, 26, 204, 21, 64, 27, 188, 34, 96, 28, 172, 19, 96, 29, 156, 4, 96, 30, 139, 245, 96, 31, 123, 230, 96, 32, 107, 215, 96, 33, 91, 200, 96, 34, 75, 185, 96, 35, 59, 170, 96, 36, 43, 155, 96, 37, 27, 140, 96, 38, 11, 125, 96, 39, 4, 168, 224, 39, 244, 153, 224, 40, 228, 152, 240, 41, 120, 64, 240, 41, 212, 123, 224, 42, 196, 108, 224, 43, 180, 93, 224, 44, 164, 78, 224, 45, 148, 63, 224, 46, 132, 48, 224, 47, 116, 33, 224, 48, 100, 18, 224, 49, 93, 62, 96, 50, 114, 25, 96, 51, 61, 32, 96, 52, 81, 251, 96, 53, 29, 2, 96, 54, 49, 221, 96, 54, 252, 228, 96, 56, 26, 249, 224, 56, 220, 198, 96, 57, 250, 219, 224, 58, 188, 168, 96, 59, 218, 189, 224, 60, 165, 196, 224, 61, 186, 159, 224, 62, 133, 166, 224, 63, 154, 129, 224, 64, 101, 136, 224, 65, 131, 158, 96, 66, 69, 106, 224, 67, 99, 128, 96, 68, 37, 76, 224, 69, 67, 98, 96, 70, 5, 46, 224, 71, 35, 68, 96, 71, 238, 75, 96, 73, 3, 38, 96, 73, 206, 45, 96, 74, 227, 8, 96, 75, 174, 15, 96, 76, 204, 50, 240, 77, 141, 255, 112, 127, 255, 255, 255, 1, 3, 2, 3, 4, 1, 4, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 5, 0, 0, 166, 100, 0, 0, 0, 0, 168, 192, 0, 4, 0, 0, 196, 224, 1, 8, 0, 0, 182, 208, 0, 12, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 0, 4, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 16, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 52, 0, 43, 49, 51, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 20, 255, 255, 255, 255, 170, 25, 29, 156, 255, 255, 255, 255, 181, 163, 140, 192, 0, 0, 0, 0, 21, 39, 27, 48, 0, 0, 0, 0, 22, 24, 79, 160, 0, 0, 0, 0, 23, 8, 78, 176, 0, 0, 0, 0, 23, 249, 145, 48, 0, 0, 0, 0, 24, 233, 144, 64, 0, 0, 0, 0, 25, 218, 196, 176, 0, 0, 0, 0, 26, 204, 21, 64, 0, 0, 0, 0, 27, 188, 34, 96, 0, 0, 0, 0, 28, 172, 19, 96, 0, 0, 0, 0, 29, 156, 4, 96, 0, 0, 0, 0, 30, 139, 245, 96, 0, 0, 0, 0, 31, 123, 230, 96, 0, 0, 0, 0, 32, 107, 215, 96, 0, 0, 0, 0, 33, 91, 200, 96, 0, 0, 0, 0, 34, 75, 185, 96, 0, 0, 0, 0, 35, 59, 170, 96, 0, 0, 0, 0, 36, 43, 155, 96, 0, 0, 0, 0, 37, 27, 140, 96, 0, 0, 0, 0, 38, 11, 125, 96, 0, 0, 0, 0, 39, 4, 168, 224, 0, 0, 0, 0, 39, 244, 153, 224, 0, 0, 0, 0, 40, 228, 152, 240, 0, 0, 0, 0, 41, 120, 64, 240, 0, 0, 0, 0, 41, 212, 123, 224, 0, 0, 0, 0, 42, 196, 108, 224, 0, 0, 0, 0, 43, 180, 93, 224, 0, 0, 0, 0, 44, 164, 78, 224, 0, 0, 0, 0, 45, 148, 63, 224, 0, 0, 0, 0, 46, 132, 48, 224, 0, 0, 0, 0, 47, 116, 33, 224, 0, 0, 0, 0, 48, 100, 18, 224, 0, 0, 0, 0, 49, 93, 62, 96, 0, 0, 0, 0, 50, 114, 25, 96, 0, 0, 0, 0, 51, 61, 32, 96, 0, 0, 0, 0, 52, 81, 251, 96, 0, 0, 0, 0, 53, 29, 2, 96, 0, 0, 0, 0, 54, 49, 221, 96, 0, 0, 0, 0, 54, 252, 228, 96, 0, 0, 0, 0, 56, 26, 249, 224, 0, 0, 0, 0, 56, 220, 198, 96, 0, 0, 0, 0, 57, 250, 219, 224, 0, 0, 0, 0, 58, 188, 168, 96, 0, 0, 0, 0, 59, 218, 189, 224, 0, 0, 0, 0, 60, 165, 196, 224, 0, 0, 0, 0, 61, 186, 159, 224, 0, 0, 0, 0, 62, 133, 166, 224, 0, 0, 0, 0, 63, 154, 129, 224, 0, 0, 0, 0, 64, 101, 136, 224, 0, 0, 0, 0, 65, 131, 158, 96, 0, 0, 0, 0, 66, 69, 106, 224, 0, 0, 0, 0, 67, 99, 128, 96, 0, 0, 0, 0, 68, 37, 76, 224, 0, 0, 0, 0, 69, 67, 98, 96, 0, 0, 0, 0, 70, 5, 46, 224, 0, 0, 0, 0, 71, 35, 68, 96, 0, 0, 0, 0, 71, 238, 75, 96, 0, 0, 0, 0, 73, 3, 38, 96, 0, 0, 0, 0, 73, 206, 45, 96, 0, 0, 0, 0, 74, 227, 8, 96, 0, 0, 0, 0, 75, 174, 15, 96, 0, 0, 0, 0, 76, 204, 50, 240, 0, 0, 0, 0, 77, 141, 255, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 4, 1, 4, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 5, 0, 0, 166, 100, 0, 0, 0, 0, 168, 192, 0, 4, 0, 0, 196, 224, 1, 8, 0, 0, 182, 208, 0, 12, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 0, 4, 0, 0, 182, 208, 1, 12, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 16, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 52, 0, 43, 49, 51, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Asia/Aqtau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 148, 224, 181, 163, 253, 64, 22, 24, 206, 48, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 47, 32, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Aqtau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 148, 224, 181, 163, 253, 64, 22, 24, 206, 48, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 47, 32, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 148, 224, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 131, 96, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 137, 224, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 82, 107, 224, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 77, 224, 0, 0, 0, 0, 54, 253, 84, 224, 0, 0, 0, 0, 56, 27, 106, 96, 0, 0, 0, 0, 56, 221, 54, 224, 0, 0, 0, 0, 57, 251, 76, 96, 0, 0, 0, 0, 58, 189, 24, 224, 0, 0, 0, 0, 59, 219, 46, 96, 0, 0, 0, 0, 60, 166, 53, 96, 0, 0, 0, 0, 61, 187, 16, 96, 0, 0, 0, 0, 62, 134, 23, 96, 0, 0, 0, 0, 63, 154, 242, 96, 0, 0, 0, 0, 64, 101, 249, 96, 0, 0, 0, 0, 65, 132, 14, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 47, 32, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Aqtobe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 142, 104, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 0, 0, 53, 152, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Aqtobe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 142, 104, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 0, 0, 53, 152, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 142, 104, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 132, 80, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 160, 208, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 130, 208, 0, 0, 0, 0, 52, 82, 93, 208, 0, 0, 0, 0, 53, 29, 100, 208, 0, 0, 0, 0, 54, 50, 63, 208, 0, 0, 0, 0, 54, 253, 70, 208, 0, 0, 0, 0, 56, 27, 92, 80, 0, 0, 0, 0, 56, 221, 40, 208, 0, 0, 0, 0, 57, 251, 62, 80, 0, 0, 0, 0, 58, 189, 10, 208, 0, 0, 0, 0, 59, 219, 32, 80, 0, 0, 0, 0, 60, 166, 39, 80, 0, 0, 0, 0, 61, 187, 2, 80, 0, 0, 0, 0, 62, 134, 9, 80, 0, 0, 0, 0, 63, 154, 228, 80, 0, 0, 0, 0, 64, 101, 235, 80, 0, 0, 0, 0, 65, 132, 0, 208, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 0, 0, 53, 152, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Ashgabat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 16, 170, 25, 141, 68, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Ashgabat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 16, 170, 25, 141, 68, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 141, 68, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 191, 48, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Ashkhabad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 16, 170, 25, 141, 68, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Ashkhabad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 16, 170, 25, 141, 68, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 141, 68, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 191, 48, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 3, 3, 0, 0, 54, 188, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 0, 12, 0, 0, 70, 80, 0, 12, 0, 0, 84, 96, 1, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Atyrau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 20, 170, 25, 147, 80, 181, 164, 11, 80, 22, 24, 206, 48, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 176, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Atyrau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 20, 170, 25, 147, 80, 181, 164, 11, 80, 22, 24, 206, 48, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 176, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 10, 0, 0, 0, 20, 255, 255, 255, 255, 170, 25, 147, 80, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 132, 80, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 160, 208, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 130, 208, 0, 0, 0, 0, 52, 82, 93, 208, 0, 0, 0, 0, 53, 29, 100, 208, 0, 0, 0, 0, 54, 50, 63, 208, 0, 0, 0, 0, 54, 253, 70, 208, 0, 0, 0, 0, 56, 27, 106, 96, 0, 0, 0, 0, 56, 221, 54, 224, 0, 0, 0, 0, 57, 251, 76, 96, 0, 0, 0, 0, 58, 189, 24, 224, 0, 0, 0, 0, 59, 219, 46, 96, 0, 0, 0, 0, 60, 166, 53, 96, 0, 0, 0, 0, 61, 187, 16, 96, 0, 0, 0, 0, 62, 134, 23, 96, 0, 0, 0, 0, 63, 154, 242, 96, 0, 0, 0, 0, 64, 101, 249, 96, 0, 0, 0, 0, 65, 132, 14, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 4, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 176, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Baghdad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 158, 48, 60, 224, 23, 48, 104, 80, 23, 250, 15, 192, 24, 232, 189, 80, 25, 219, 67, 64, 26, 204, 147, 208, 27, 189, 200, 64, 28, 173, 199, 80, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 246, 120, 0, 40, 231, 186, 128, 41, 216, 253, 0, 42, 202, 63, 128, 43, 186, 48, 128, 44, 171, 115, 0, 45, 155, 100, 0, 46, 140, 166, 128, 47, 124, 151, 128, 48, 109, 218, 0, 49, 95, 28, 128, 50, 80, 95, 0, 51, 64, 80, 0, 52, 49, 146, 128, 53, 33, 131, 128, 54, 18, 198, 0, 55, 2, 183, 0, 55, 243, 249, 128, 56, 229, 60, 0, 57, 214, 126, 128, 58, 198, 111, 128, 59, 183, 178, 0, 60, 167, 163, 0, 61, 152, 229, 128, 62, 136, 214, 128, 63, 122, 25, 0, 64, 107, 91, 128, 65, 92, 158, 0, 66, 76, 143, 0, 67, 61, 209, 128, 68, 45, 194, 128, 69, 31, 5, 0, 70, 14, 246, 0, 71, 0, 56, 128, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 41, 160, 0, 4, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Baghdad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 158, 48, 60, 224, 23, 48, 104, 80, 23, 250, 15, 192, 24, 232, 189, 80, 25, 219, 67, 64, 26, 204, 147, 208, 27, 189, 200, 64, 28, 173, 199, 80, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 246, 120, 0, 40, 231, 186, 128, 41, 216, 253, 0, 42, 202, 63, 128, 43, 186, 48, 128, 44, 171, 115, 0, 45, 155, 100, 0, 46, 140, 166, 128, 47, 124, 151, 128, 48, 109, 218, 0, 49, 95, 28, 128, 50, 80, 95, 0, 51, 64, 80, 0, 52, 49, 146, 128, 53, 33, 131, 128, 54, 18, 198, 0, 55, 2, 183, 0, 55, 243, 249, 128, 56, 229, 60, 0, 57, 214, 126, 128, 58, 198, 111, 128, 59, 183, 178, 0, 60, 167, 163, 0, 61, 152, 229, 128, 62, 136, 214, 128, 63, 122, 25, 0, 64, 107, 91, 128, 65, 92, 158, 0, 66, 76, 143, 0, 67, 61, 209, 128, 68, 45, 194, 128, 69, 31, 5, 0, 70, 14, 246, 0, 71, 0, 56, 128, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 41, 160, 0, 4, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 105, 134, 177, 220, 255, 255, 255, 255, 158, 48, 60, 224, 0, 0, 0, 0, 23, 48, 104, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 232, 189, 80, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 189, 200, 64, 0, 0, 0, 0, 28, 173, 199, 80, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 252, 224, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 25, 96, 0, 0, 0, 0, 39, 246, 120, 0, 0, 0, 0, 0, 40, 231, 186, 128, 0, 0, 0, 0, 41, 216, 253, 0, 0, 0, 0, 0, 42, 202, 63, 128, 0, 0, 0, 0, 43, 186, 48, 128, 0, 0, 0, 0, 44, 171, 115, 0, 0, 0, 0, 0, 45, 155, 100, 0, 0, 0, 0, 0, 46, 140, 166, 128, 0, 0, 0, 0, 47, 124, 151, 128, 0, 0, 0, 0, 48, 109, 218, 0, 0, 0, 0, 0, 49, 95, 28, 128, 0, 0, 0, 0, 50, 80, 95, 0, 0, 0, 0, 0, 51, 64, 80, 0, 0, 0, 0, 0, 52, 49, 146, 128, 0, 0, 0, 0, 53, 33, 131, 128, 0, 0, 0, 0, 54, 18, 198, 0, 0, 0, 0, 0, 55, 2, 183, 0, 0, 0, 0, 0, 55, 243, 249, 128, 0, 0, 0, 0, 56, 229, 60, 0, 0, 0, 0, 0, 57, 214, 126, 128, 0, 0, 0, 0, 58, 198, 111, 128, 0, 0, 0, 0, 59, 183, 178, 0, 0, 0, 0, 0, 60, 167, 163, 0, 0, 0, 0, 0, 61, 152, 229, 128, 0, 0, 0, 0, 62, 136, 214, 128, 0, 0, 0, 0, 63, 122, 25, 0, 0, 0, 0, 0, 64, 107, 91, 128, 0, 0, 0, 0, 65, 92, 158, 0, 0, 0, 0, 0, 66, 76, 143, 0, 0, 0, 0, 0, 67, 61, 209, 128, 0, 0, 0, 0, 68, 45, 194, 128, 0, 0, 0, 0, 69, 31, 5, 0, 0, 0, 0, 0, 70, 14, 246, 0, 0, 0, 0, 0, 71, 0, 56, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 41, 160, 0, 4, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 8, 0, 0, 56, 64, 1, 12, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Bahrain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 161, 242, 157, 48, 4, 138, 146, 192, 127, 255, 255, 255, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Bahrain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 161, 242, 157, 48, 4, 138, 146, 192, 127, 255, 255, 255, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 161, 242, 157, 48, 0, 0, 0, 0, 4, 138, 146, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Baku": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 149, 68, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 48, 230, 235, 192, 49, 93, 217, 16, 50, 114, 180, 16, 50, 201, 112, 192, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 4, 3, 8, 9, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 46, 188, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Asia/Baku": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 149, 68, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 4, 8, 9, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 46, 188, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 149, 68, 255, 255, 255, 255, 231, 218, 12, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 252, 224, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 25, 96, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 229, 9, 112, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 143, 0, 0, 0, 0, 0, 54, 50, 106, 0, 0, 0, 0, 0, 54, 253, 113, 0, 0, 0, 0, 0, 56, 27, 134, 128, 0, 0, 0, 0, 56, 221, 83, 0, 0, 0, 0, 0, 57, 251, 104, 128, 0, 0, 0, 0, 58, 189, 53, 0, 0, 0, 0, 0, 59, 219, 74, 128, 0, 0, 0, 0, 60, 166, 81, 128, 0, 0, 0, 0, 61, 187, 44, 128, 0, 0, 0, 0, 62, 134, 51, 128, 0, 0, 0, 0, 63, 155, 14, 128, 0, 0, 0, 0, 64, 102, 21, 128, 0, 0, 0, 0, 65, 132, 43, 0, 0, 0, 0, 0, 66, 69, 247, 128, 0, 0, 0, 0, 67, 100, 13, 0, 0, 0, 0, 0, 68, 37, 217, 128, 0, 0, 0, 0, 69, 67, 239, 0, 0, 0, 0, 0, 70, 5, 187, 128, 0, 0, 0, 0, 71, 35, 209, 0, 0, 0, 0, 0, 71, 238, 216, 0, 0, 0, 0, 0, 73, 3, 179, 0, 0, 0, 0, 0, 73, 206, 186, 0, 0, 0, 0, 0, 74, 227, 149, 0, 0, 0, 0, 0, 75, 174, 156, 0, 0, 0, 0, 0, 76, 204, 177, 128, 0, 0, 0, 0, 77, 142, 126, 0, 0, 0, 0, 0, 78, 172, 147, 128, 0, 0, 0, 0, 79, 110, 96, 0, 0, 0, 0, 0, 80, 140, 117, 128, 0, 0, 0, 0, 81, 87, 124, 128, 0, 0, 0, 0, 82, 108, 87, 128, 0, 0, 0, 0, 83, 55, 94, 128, 0, 0, 0, 0, 84, 76, 57, 128, 0, 0, 0, 0, 85, 23, 64, 128, 0, 0, 0, 0, 86, 44, 27, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 4, 8, 9, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 46, 188, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Asia/Bangkok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Bangkok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 86, 182, 133, 196, 255, 255, 255, 255, 162, 106, 103, 196, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Barnaul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 161, 213, 125, 252, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 47, 199, 76, 128, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 86, 246, 234, 64, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 78, 132, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Barnaul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 161, 213, 125, 252, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 47, 199, 76, 128, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 86, 246, 234, 64, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 78, 132, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 161, 213, 125, 252, 255, 255, 255, 255, 181, 163, 225, 32, 0, 0, 0, 0, 21, 39, 111, 144, 0, 0, 0, 0, 22, 24, 164, 0, 0, 0, 0, 0, 23, 8, 163, 16, 0, 0, 0, 0, 23, 249, 215, 128, 0, 0, 0, 0, 24, 233, 214, 144, 0, 0, 0, 0, 25, 219, 11, 0, 0, 0, 0, 0, 26, 204, 91, 144, 0, 0, 0, 0, 27, 188, 104, 176, 0, 0, 0, 0, 28, 172, 89, 176, 0, 0, 0, 0, 29, 156, 74, 176, 0, 0, 0, 0, 30, 140, 59, 176, 0, 0, 0, 0, 31, 124, 44, 176, 0, 0, 0, 0, 32, 108, 29, 176, 0, 0, 0, 0, 33, 92, 14, 176, 0, 0, 0, 0, 34, 75, 255, 176, 0, 0, 0, 0, 35, 59, 240, 176, 0, 0, 0, 0, 36, 43, 225, 176, 0, 0, 0, 0, 37, 27, 210, 176, 0, 0, 0, 0, 38, 11, 195, 176, 0, 0, 0, 0, 39, 4, 239, 48, 0, 0, 0, 0, 39, 244, 224, 48, 0, 0, 0, 0, 40, 228, 223, 64, 0, 0, 0, 0, 41, 120, 135, 64, 0, 0, 0, 0, 41, 212, 194, 48, 0, 0, 0, 0, 42, 196, 179, 48, 0, 0, 0, 0, 43, 180, 164, 48, 0, 0, 0, 0, 44, 164, 149, 48, 0, 0, 0, 0, 45, 148, 134, 48, 0, 0, 0, 0, 46, 132, 119, 48, 0, 0, 0, 0, 47, 116, 104, 48, 0, 0, 0, 0, 47, 199, 76, 128, 0, 0, 0, 0, 48, 100, 103, 64, 0, 0, 0, 0, 49, 93, 146, 192, 0, 0, 0, 0, 50, 114, 109, 192, 0, 0, 0, 0, 51, 61, 116, 192, 0, 0, 0, 0, 52, 82, 79, 192, 0, 0, 0, 0, 53, 29, 86, 192, 0, 0, 0, 0, 54, 50, 49, 192, 0, 0, 0, 0, 54, 253, 56, 192, 0, 0, 0, 0, 56, 27, 78, 64, 0, 0, 0, 0, 56, 221, 26, 192, 0, 0, 0, 0, 57, 251, 48, 64, 0, 0, 0, 0, 58, 188, 252, 192, 0, 0, 0, 0, 59, 219, 18, 64, 0, 0, 0, 0, 60, 166, 25, 64, 0, 0, 0, 0, 61, 186, 244, 64, 0, 0, 0, 0, 62, 133, 251, 64, 0, 0, 0, 0, 63, 154, 214, 64, 0, 0, 0, 0, 64, 101, 221, 64, 0, 0, 0, 0, 65, 131, 242, 192, 0, 0, 0, 0, 66, 69, 191, 64, 0, 0, 0, 0, 67, 99, 212, 192, 0, 0, 0, 0, 68, 37, 161, 64, 0, 0, 0, 0, 69, 67, 182, 192, 0, 0, 0, 0, 70, 5, 131, 64, 0, 0, 0, 0, 71, 35, 152, 192, 0, 0, 0, 0, 71, 238, 159, 192, 0, 0, 0, 0, 73, 3, 122, 192, 0, 0, 0, 0, 73, 206, 129, 192, 0, 0, 0, 0, 74, 227, 92, 192, 0, 0, 0, 0, 75, 174, 99, 192, 0, 0, 0, 0, 76, 204, 121, 64, 0, 0, 0, 0, 77, 142, 69, 192, 0, 0, 0, 0, 84, 75, 243, 48, 0, 0, 0, 0, 86, 246, 234, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 78, 132, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Beirut": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 168, 41, 243, 224, 168, 235, 178, 80, 232, 42, 133, 224, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 236, 224, 236, 182, 148, 80, 237, 207, 113, 224, 238, 153, 25, 80, 239, 176, 165, 96, 240, 122, 76, 208, 4, 166, 94, 96, 5, 43, 119, 208, 6, 67, 3, 224, 7, 12, 171, 80, 8, 36, 55, 96, 8, 237, 222, 208, 10, 5, 106, 224, 10, 207, 18, 80, 11, 231, 239, 224, 12, 177, 151, 80, 13, 201, 35, 96, 14, 146, 202, 208, 15, 169, 5, 96, 16, 114, 172, 208, 26, 244, 46, 224, 27, 209, 156, 208, 28, 213, 98, 96, 29, 178, 208, 80, 30, 182, 149, 224, 31, 148, 3, 208, 32, 151, 201, 96, 33, 117, 55, 80, 34, 163, 44, 224, 35, 87, 188, 80, 36, 103, 95, 96, 37, 56, 239, 208, 38, 60, 181, 96, 39, 26, 35, 80, 40, 29, 232, 224, 40, 251, 86, 208, 42, 0, 109, 224, 42, 206, 9, 208, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 13, 85, 208, 54, 253, 84, 224, 56, 27, 92, 80, 56, 221, 54, 224, 57, 251, 62, 80, 58, 189, 24, 224, 59, 219, 32, 80, 60, 166, 53, 96, 61, 187, 2, 80, 62, 134, 23, 96, 63, 154, 228, 80, 64, 101, 249, 96, 65, 132, 0, 208, 66, 69, 219, 96, 67, 99, 226, 208, 68, 37, 189, 96, 69, 67, 196, 208, 70, 5, 159, 96, 71, 35, 166, 208, 71, 238, 187, 224, 73, 3, 136, 208, 73, 206, 157, 224, 74, 227, 106, 208, 75, 174, 127, 224, 76, 204, 135, 80, 77, 142, 97, 224, 78, 172, 105, 80, 79, 110, 67, 224, 80, 140, 75, 80, 81, 87, 96, 96, 82, 108, 45, 80, 83, 55, 66, 96, 84, 76, 15, 80, 85, 23, 36, 96, 86, 43, 241, 80, 86, 247, 6, 96, 88, 21, 13, 208, 88, 214, 232, 96, 89, 244, 239, 208, 90, 182, 202, 96, 91, 212, 209, 208, 92, 159, 230, 224, 93, 180, 179, 208, 94, 127, 200, 224, 95, 148, 149, 208, 96, 95, 170, 224, 97, 125, 178, 80, 98, 63, 140, 224, 99, 93, 148, 80, 100, 31, 110, 224, 101, 61, 118, 80, 102, 8, 139, 96, 103, 29, 88, 80, 103, 232, 109, 96, 104, 253, 58, 80, 105, 200, 79, 96, 106, 221, 28, 80, 107, 168, 49, 96, 108, 198, 56, 208, 109, 136, 19, 96, 110, 166, 26, 208, 111, 103, 245, 96, 112, 133, 252, 208, 113, 81, 17, 224, 114, 101, 222, 208, 115, 48, 243, 224, 116, 69, 192, 208, 117, 16, 213, 224, 118, 46, 221, 80, 118, 240, 183, 224, 120, 14, 191, 80, 120, 208, 153, 224, 121, 238, 161, 80, 122, 176, 123, 224, 123, 206, 131, 80, 124, 153, 152, 96, 125, 174, 101, 80, 126, 121, 122, 96, 127, 142, 71, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 33, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 48, 10}, + "zoneinfo/Asia/Beirut": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 3, 0, 0, 0, 13, 128, 0, 0, 0, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 168, 41, 243, 224, 168, 235, 178, 80, 232, 42, 133, 224, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 236, 224, 236, 182, 148, 80, 237, 207, 113, 224, 238, 153, 25, 80, 239, 176, 165, 96, 240, 122, 76, 208, 4, 166, 94, 96, 5, 43, 119, 208, 6, 67, 3, 224, 7, 12, 171, 80, 8, 36, 55, 96, 8, 237, 222, 208, 10, 5, 106, 224, 10, 207, 18, 80, 11, 231, 239, 224, 12, 177, 151, 80, 13, 201, 35, 96, 14, 146, 202, 208, 15, 169, 5, 96, 16, 114, 172, 208, 26, 244, 46, 224, 27, 209, 156, 208, 28, 213, 98, 96, 29, 178, 208, 80, 30, 182, 149, 224, 31, 148, 3, 208, 32, 151, 201, 96, 33, 117, 55, 80, 34, 163, 44, 224, 35, 87, 188, 80, 36, 103, 95, 96, 37, 56, 239, 208, 38, 60, 181, 96, 39, 26, 35, 80, 40, 29, 232, 224, 40, 251, 86, 208, 42, 0, 109, 224, 42, 206, 9, 208, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 13, 85, 208, 54, 253, 84, 224, 56, 27, 92, 80, 56, 221, 54, 224, 57, 251, 62, 80, 58, 189, 24, 224, 59, 219, 32, 80, 60, 166, 53, 96, 61, 187, 2, 80, 62, 134, 23, 96, 63, 154, 228, 80, 64, 101, 249, 96, 65, 132, 0, 208, 66, 69, 219, 96, 67, 99, 226, 208, 68, 37, 189, 96, 69, 67, 196, 208, 70, 5, 159, 96, 71, 35, 166, 208, 71, 238, 187, 224, 73, 3, 136, 208, 73, 206, 157, 224, 74, 227, 106, 208, 75, 174, 127, 224, 76, 204, 135, 80, 77, 142, 97, 224, 78, 172, 105, 80, 79, 110, 67, 224, 80, 140, 75, 80, 81, 87, 96, 96, 82, 108, 45, 80, 83, 55, 66, 96, 84, 76, 15, 80, 85, 23, 36, 96, 86, 43, 241, 80, 86, 247, 6, 96, 88, 21, 13, 208, 88, 214, 232, 96, 89, 244, 239, 208, 90, 182, 202, 96, 91, 212, 209, 208, 92, 159, 230, 224, 93, 180, 179, 208, 94, 127, 200, 224, 95, 148, 149, 208, 96, 95, 170, 224, 97, 125, 178, 80, 98, 63, 140, 224, 99, 93, 148, 80, 100, 31, 110, 224, 101, 61, 118, 80, 102, 8, 139, 96, 103, 29, 88, 80, 103, 232, 109, 96, 104, 253, 58, 80, 105, 200, 79, 96, 106, 221, 28, 80, 107, 168, 49, 96, 108, 198, 56, 208, 109, 136, 19, 96, 110, 166, 26, 208, 111, 103, 245, 96, 112, 133, 252, 208, 113, 81, 17, 224, 114, 101, 222, 208, 115, 48, 243, 224, 116, 69, 192, 208, 117, 16, 213, 224, 118, 46, 221, 80, 118, 240, 183, 224, 120, 14, 191, 80, 120, 208, 153, 224, 121, 238, 161, 80, 122, 176, 123, 224, 123, 206, 131, 80, 124, 153, 152, 96, 125, 174, 101, 80, 126, 121, 122, 96, 127, 142, 71, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 33, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 3, 0, 0, 0, 13, 255, 255, 255, 255, 86, 182, 194, 184, 255, 255, 255, 255, 162, 101, 99, 224, 255, 255, 255, 255, 163, 123, 130, 80, 255, 255, 255, 255, 164, 78, 128, 96, 255, 255, 255, 255, 165, 63, 180, 208, 255, 255, 255, 255, 166, 37, 39, 224, 255, 255, 255, 255, 167, 39, 127, 208, 255, 255, 255, 255, 168, 41, 243, 224, 255, 255, 255, 255, 168, 235, 178, 80, 255, 255, 255, 255, 232, 42, 133, 224, 255, 255, 255, 255, 232, 244, 45, 80, 255, 255, 255, 255, 234, 11, 185, 96, 255, 255, 255, 255, 234, 213, 96, 208, 255, 255, 255, 255, 235, 236, 236, 224, 255, 255, 255, 255, 236, 182, 148, 80, 255, 255, 255, 255, 237, 207, 113, 224, 255, 255, 255, 255, 238, 153, 25, 80, 255, 255, 255, 255, 239, 176, 165, 96, 255, 255, 255, 255, 240, 122, 76, 208, 0, 0, 0, 0, 4, 166, 94, 96, 0, 0, 0, 0, 5, 43, 119, 208, 0, 0, 0, 0, 6, 67, 3, 224, 0, 0, 0, 0, 7, 12, 171, 80, 0, 0, 0, 0, 8, 36, 55, 96, 0, 0, 0, 0, 8, 237, 222, 208, 0, 0, 0, 0, 10, 5, 106, 224, 0, 0, 0, 0, 10, 207, 18, 80, 0, 0, 0, 0, 11, 231, 239, 224, 0, 0, 0, 0, 12, 177, 151, 80, 0, 0, 0, 0, 13, 201, 35, 96, 0, 0, 0, 0, 14, 146, 202, 208, 0, 0, 0, 0, 15, 169, 5, 96, 0, 0, 0, 0, 16, 114, 172, 208, 0, 0, 0, 0, 26, 244, 46, 224, 0, 0, 0, 0, 27, 209, 156, 208, 0, 0, 0, 0, 28, 213, 98, 96, 0, 0, 0, 0, 29, 178, 208, 80, 0, 0, 0, 0, 30, 182, 149, 224, 0, 0, 0, 0, 31, 148, 3, 208, 0, 0, 0, 0, 32, 151, 201, 96, 0, 0, 0, 0, 33, 117, 55, 80, 0, 0, 0, 0, 34, 163, 44, 224, 0, 0, 0, 0, 35, 87, 188, 80, 0, 0, 0, 0, 36, 103, 95, 96, 0, 0, 0, 0, 37, 56, 239, 208, 0, 0, 0, 0, 38, 60, 181, 96, 0, 0, 0, 0, 39, 26, 35, 80, 0, 0, 0, 0, 40, 29, 232, 224, 0, 0, 0, 0, 40, 251, 86, 208, 0, 0, 0, 0, 42, 0, 109, 224, 0, 0, 0, 0, 42, 206, 9, 208, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 77, 145, 208, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 45, 115, 208, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 13, 85, 208, 0, 0, 0, 0, 54, 253, 84, 224, 0, 0, 0, 0, 56, 27, 92, 80, 0, 0, 0, 0, 56, 221, 54, 224, 0, 0, 0, 0, 57, 251, 62, 80, 0, 0, 0, 0, 58, 189, 24, 224, 0, 0, 0, 0, 59, 219, 32, 80, 0, 0, 0, 0, 60, 166, 53, 96, 0, 0, 0, 0, 61, 187, 2, 80, 0, 0, 0, 0, 62, 134, 23, 96, 0, 0, 0, 0, 63, 154, 228, 80, 0, 0, 0, 0, 64, 101, 249, 96, 0, 0, 0, 0, 65, 132, 0, 208, 0, 0, 0, 0, 66, 69, 219, 96, 0, 0, 0, 0, 67, 99, 226, 208, 0, 0, 0, 0, 68, 37, 189, 96, 0, 0, 0, 0, 69, 67, 196, 208, 0, 0, 0, 0, 70, 5, 159, 96, 0, 0, 0, 0, 71, 35, 166, 208, 0, 0, 0, 0, 71, 238, 187, 224, 0, 0, 0, 0, 73, 3, 136, 208, 0, 0, 0, 0, 73, 206, 157, 224, 0, 0, 0, 0, 74, 227, 106, 208, 0, 0, 0, 0, 75, 174, 127, 224, 0, 0, 0, 0, 76, 204, 135, 80, 0, 0, 0, 0, 77, 142, 97, 224, 0, 0, 0, 0, 78, 172, 105, 80, 0, 0, 0, 0, 79, 110, 67, 224, 0, 0, 0, 0, 80, 140, 75, 80, 0, 0, 0, 0, 81, 87, 96, 96, 0, 0, 0, 0, 82, 108, 45, 80, 0, 0, 0, 0, 83, 55, 66, 96, 0, 0, 0, 0, 84, 76, 15, 80, 0, 0, 0, 0, 85, 23, 36, 96, 0, 0, 0, 0, 86, 43, 241, 80, 0, 0, 0, 0, 86, 247, 6, 96, 0, 0, 0, 0, 88, 21, 13, 208, 0, 0, 0, 0, 88, 214, 232, 96, 0, 0, 0, 0, 89, 244, 239, 208, 0, 0, 0, 0, 90, 182, 202, 96, 0, 0, 0, 0, 91, 212, 209, 208, 0, 0, 0, 0, 92, 159, 230, 224, 0, 0, 0, 0, 93, 180, 179, 208, 0, 0, 0, 0, 94, 127, 200, 224, 0, 0, 0, 0, 95, 148, 149, 208, 0, 0, 0, 0, 96, 95, 170, 224, 0, 0, 0, 0, 97, 125, 178, 80, 0, 0, 0, 0, 98, 63, 140, 224, 0, 0, 0, 0, 99, 93, 148, 80, 0, 0, 0, 0, 100, 31, 110, 224, 0, 0, 0, 0, 101, 61, 118, 80, 0, 0, 0, 0, 102, 8, 139, 96, 0, 0, 0, 0, 103, 29, 88, 80, 0, 0, 0, 0, 103, 232, 109, 96, 0, 0, 0, 0, 104, 253, 58, 80, 0, 0, 0, 0, 105, 200, 79, 96, 0, 0, 0, 0, 106, 221, 28, 80, 0, 0, 0, 0, 107, 168, 49, 96, 0, 0, 0, 0, 108, 198, 56, 208, 0, 0, 0, 0, 109, 136, 19, 96, 0, 0, 0, 0, 110, 166, 26, 208, 0, 0, 0, 0, 111, 103, 245, 96, 0, 0, 0, 0, 112, 133, 252, 208, 0, 0, 0, 0, 113, 81, 17, 224, 0, 0, 0, 0, 114, 101, 222, 208, 0, 0, 0, 0, 115, 48, 243, 224, 0, 0, 0, 0, 116, 69, 192, 208, 0, 0, 0, 0, 117, 16, 213, 224, 0, 0, 0, 0, 118, 46, 221, 80, 0, 0, 0, 0, 118, 240, 183, 224, 0, 0, 0, 0, 120, 14, 191, 80, 0, 0, 0, 0, 120, 208, 153, 224, 0, 0, 0, 0, 121, 238, 161, 80, 0, 0, 0, 0, 122, 176, 123, 224, 0, 0, 0, 0, 123, 206, 131, 80, 0, 0, 0, 0, 124, 153, 152, 96, 0, 0, 0, 0, 125, 174, 101, 80, 0, 0, 0, 0, 126, 121, 122, 96, 0, 0, 0, 0, 127, 142, 71, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 33, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 48, 10}, - "zoneinfo/Asia/Bishkek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 8, 0, 0, 0, 16, 170, 25, 126, 16, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 190, 163, 192, 41, 231, 55, 48, 42, 196, 165, 32, 43, 199, 25, 48, 44, 164, 135, 32, 45, 166, 251, 48, 46, 132, 105, 32, 47, 134, 221, 48, 48, 100, 75, 32, 49, 102, 191, 48, 50, 77, 103, 160, 51, 61, 137, 216, 52, 82, 86, 200, 53, 29, 107, 216, 54, 50, 56, 200, 54, 253, 77, 216, 56, 27, 85, 72, 56, 221, 47, 216, 57, 251, 55, 72, 58, 189, 17, 216, 59, 219, 25, 72, 60, 166, 46, 88, 61, 186, 251, 72, 62, 134, 16, 88, 63, 154, 221, 72, 64, 101, 242, 88, 65, 131, 249, 200, 66, 69, 212, 88, 66, 251, 146, 32, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 3, 0, 0, 69, 240, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Bishkek": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 8, 0, 0, 0, 16, 170, 25, 126, 16, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 190, 163, 192, 41, 231, 55, 48, 42, 196, 165, 32, 43, 199, 25, 48, 44, 164, 135, 32, 45, 166, 251, 48, 46, 132, 105, 32, 47, 134, 221, 48, 48, 100, 75, 32, 49, 102, 191, 48, 50, 77, 103, 160, 51, 61, 137, 216, 52, 82, 86, 200, 53, 29, 107, 216, 54, 50, 56, 200, 54, 253, 77, 216, 56, 27, 85, 72, 56, 221, 47, 216, 57, 251, 55, 72, 58, 189, 17, 216, 59, 219, 25, 72, 60, 166, 46, 88, 61, 186, 251, 72, 62, 134, 16, 88, 63, 154, 221, 72, 64, 101, 242, 88, 65, 131, 249, 200, 66, 69, 212, 88, 66, 251, 146, 32, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 3, 0, 0, 69, 240, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 8, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 126, 16, 255, 255, 255, 255, 181, 163, 239, 48, 0, 0, 0, 0, 21, 39, 125, 160, 0, 0, 0, 0, 22, 24, 178, 16, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 229, 144, 0, 0, 0, 0, 24, 233, 228, 160, 0, 0, 0, 0, 25, 219, 25, 16, 0, 0, 0, 0, 26, 204, 105, 160, 0, 0, 0, 0, 27, 188, 118, 192, 0, 0, 0, 0, 28, 172, 103, 192, 0, 0, 0, 0, 29, 156, 88, 192, 0, 0, 0, 0, 30, 140, 73, 192, 0, 0, 0, 0, 31, 124, 58, 192, 0, 0, 0, 0, 32, 108, 43, 192, 0, 0, 0, 0, 33, 92, 28, 192, 0, 0, 0, 0, 34, 76, 13, 192, 0, 0, 0, 0, 35, 59, 254, 192, 0, 0, 0, 0, 36, 43, 239, 192, 0, 0, 0, 0, 37, 27, 224, 192, 0, 0, 0, 0, 38, 11, 209, 192, 0, 0, 0, 0, 39, 4, 253, 64, 0, 0, 0, 0, 39, 244, 238, 64, 0, 0, 0, 0, 40, 190, 163, 192, 0, 0, 0, 0, 41, 231, 55, 48, 0, 0, 0, 0, 42, 196, 165, 32, 0, 0, 0, 0, 43, 199, 25, 48, 0, 0, 0, 0, 44, 164, 135, 32, 0, 0, 0, 0, 45, 166, 251, 48, 0, 0, 0, 0, 46, 132, 105, 32, 0, 0, 0, 0, 47, 134, 221, 48, 0, 0, 0, 0, 48, 100, 75, 32, 0, 0, 0, 0, 49, 102, 191, 48, 0, 0, 0, 0, 50, 77, 103, 160, 0, 0, 0, 0, 51, 61, 137, 216, 0, 0, 0, 0, 52, 82, 86, 200, 0, 0, 0, 0, 53, 29, 107, 216, 0, 0, 0, 0, 54, 50, 56, 200, 0, 0, 0, 0, 54, 253, 77, 216, 0, 0, 0, 0, 56, 27, 85, 72, 0, 0, 0, 0, 56, 221, 47, 216, 0, 0, 0, 0, 57, 251, 55, 72, 0, 0, 0, 0, 58, 189, 17, 216, 0, 0, 0, 0, 59, 219, 25, 72, 0, 0, 0, 0, 60, 166, 46, 88, 0, 0, 0, 0, 61, 186, 251, 72, 0, 0, 0, 0, 62, 134, 16, 88, 0, 0, 0, 0, 63, 154, 221, 72, 0, 0, 0, 0, 64, 101, 242, 88, 0, 0, 0, 0, 65, 131, 249, 200, 0, 0, 0, 0, 66, 69, 212, 88, 0, 0, 0, 0, 66, 251, 146, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 3, 0, 0, 69, 240, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Brunei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 173, 138, 2, 68, 186, 103, 71, 136, 127, 255, 255, 255, 1, 2, 2, 0, 0, 107, 188, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 112, 128, 0, 10, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Brunei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 173, 138, 2, 68, 186, 103, 71, 136, 127, 255, 255, 255, 1, 2, 2, 0, 0, 107, 188, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 112, 128, 0, 10, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 173, 138, 2, 68, 255, 255, 255, 255, 186, 103, 71, 136, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 107, 188, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 112, 128, 0, 10, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Calcutta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 135, 157, 188, 186, 202, 219, 140, 40, 204, 5, 113, 24, 204, 149, 50, 168, 210, 116, 18, 152, 1, 2, 3, 2, 3, 2, 0, 0, 82, 216, 0, 0, 0, 0, 75, 70, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 91, 104, 1, 12, 76, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 53, 58, 51, 48, 10}, + "zoneinfo/Asia/Calcutta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 135, 157, 188, 186, 202, 219, 140, 40, 204, 5, 113, 24, 204, 149, 50, 168, 210, 116, 18, 152, 1, 2, 3, 2, 3, 2, 0, 0, 82, 216, 0, 0, 0, 0, 75, 70, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 91, 104, 1, 12, 76, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 22, 255, 255, 255, 255, 38, 186, 24, 40, 255, 255, 255, 255, 67, 231, 235, 48, 255, 255, 255, 255, 135, 157, 188, 186, 255, 255, 255, 255, 202, 219, 140, 40, 255, 255, 255, 255, 204, 5, 113, 24, 255, 255, 255, 255, 204, 149, 50, 168, 255, 255, 255, 255, 210, 116, 18, 152, 1, 2, 3, 4, 3, 4, 3, 0, 0, 82, 216, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 75, 70, 0, 8, 0, 0, 77, 88, 0, 12, 0, 0, 91, 104, 1, 16, 76, 77, 84, 0, 72, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 10, 73, 83, 84, 45, 53, 58, 51, 48, 10}, - "zoneinfo/Asia/Chita": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 161, 219, 249, 160, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 64, 101, 179, 16, 65, 131, 200, 144, 66, 69, 149, 16, 67, 99, 170, 144, 68, 37, 119, 16, 69, 67, 140, 144, 70, 5, 89, 16, 71, 35, 110, 144, 71, 238, 117, 144, 73, 3, 80, 144, 73, 206, 87, 144, 74, 227, 50, 144, 75, 174, 57, 144, 76, 204, 79, 16, 77, 142, 27, 144, 84, 75, 201, 0, 86, 246, 206, 32, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 3, 3, 0, 0, 106, 96, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + "zoneinfo/Asia/Chita": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 161, 219, 249, 160, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 64, 101, 179, 16, 65, 131, 200, 144, 66, 69, 149, 16, 67, 99, 170, 144, 68, 37, 119, 16, 69, 67, 140, 144, 70, 5, 89, 16, 71, 35, 110, 144, 71, 238, 117, 144, 73, 3, 80, 144, 73, 206, 87, 144, 74, 227, 50, 144, 75, 174, 57, 144, 76, 204, 79, 16, 77, 142, 27, 144, 84, 75, 201, 0, 86, 246, 206, 32, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 3, 3, 0, 0, 106, 96, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 161, 219, 249, 160, 255, 255, 255, 255, 181, 163, 197, 0, 0, 0, 0, 0, 21, 39, 83, 112, 0, 0, 0, 0, 22, 24, 135, 224, 0, 0, 0, 0, 23, 8, 134, 240, 0, 0, 0, 0, 23, 249, 187, 96, 0, 0, 0, 0, 24, 233, 186, 112, 0, 0, 0, 0, 25, 218, 238, 224, 0, 0, 0, 0, 26, 204, 63, 112, 0, 0, 0, 0, 27, 188, 76, 144, 0, 0, 0, 0, 28, 172, 61, 144, 0, 0, 0, 0, 29, 156, 46, 144, 0, 0, 0, 0, 30, 140, 31, 144, 0, 0, 0, 0, 31, 124, 16, 144, 0, 0, 0, 0, 32, 108, 1, 144, 0, 0, 0, 0, 33, 91, 242, 144, 0, 0, 0, 0, 34, 75, 227, 144, 0, 0, 0, 0, 35, 59, 212, 144, 0, 0, 0, 0, 36, 43, 197, 144, 0, 0, 0, 0, 37, 27, 182, 144, 0, 0, 0, 0, 38, 11, 167, 144, 0, 0, 0, 0, 39, 4, 211, 16, 0, 0, 0, 0, 39, 244, 196, 16, 0, 0, 0, 0, 40, 228, 195, 32, 0, 0, 0, 0, 41, 120, 107, 32, 0, 0, 0, 0, 41, 212, 166, 16, 0, 0, 0, 0, 42, 196, 151, 16, 0, 0, 0, 0, 43, 180, 136, 16, 0, 0, 0, 0, 44, 164, 121, 16, 0, 0, 0, 0, 45, 148, 106, 16, 0, 0, 0, 0, 46, 132, 91, 16, 0, 0, 0, 0, 47, 116, 76, 16, 0, 0, 0, 0, 48, 100, 61, 16, 0, 0, 0, 0, 49, 93, 104, 144, 0, 0, 0, 0, 50, 114, 67, 144, 0, 0, 0, 0, 51, 61, 74, 144, 0, 0, 0, 0, 52, 82, 37, 144, 0, 0, 0, 0, 53, 29, 44, 144, 0, 0, 0, 0, 54, 50, 7, 144, 0, 0, 0, 0, 54, 253, 14, 144, 0, 0, 0, 0, 56, 27, 36, 16, 0, 0, 0, 0, 56, 220, 240, 144, 0, 0, 0, 0, 57, 251, 6, 16, 0, 0, 0, 0, 58, 188, 210, 144, 0, 0, 0, 0, 59, 218, 232, 16, 0, 0, 0, 0, 60, 165, 239, 16, 0, 0, 0, 0, 61, 186, 202, 16, 0, 0, 0, 0, 62, 133, 209, 16, 0, 0, 0, 0, 63, 154, 172, 16, 0, 0, 0, 0, 64, 101, 179, 16, 0, 0, 0, 0, 65, 131, 200, 144, 0, 0, 0, 0, 66, 69, 149, 16, 0, 0, 0, 0, 67, 99, 170, 144, 0, 0, 0, 0, 68, 37, 119, 16, 0, 0, 0, 0, 69, 67, 140, 144, 0, 0, 0, 0, 70, 5, 89, 16, 0, 0, 0, 0, 71, 35, 110, 144, 0, 0, 0, 0, 71, 238, 117, 144, 0, 0, 0, 0, 73, 3, 80, 144, 0, 0, 0, 0, 73, 206, 87, 144, 0, 0, 0, 0, 74, 227, 50, 144, 0, 0, 0, 0, 75, 174, 57, 144, 0, 0, 0, 0, 76, 204, 79, 16, 0, 0, 0, 0, 77, 142, 27, 144, 0, 0, 0, 0, 84, 75, 201, 0, 0, 0, 0, 0, 86, 246, 206, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 3, 3, 0, 0, 106, 96, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, - "zoneinfo/Asia/Choibalsan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 7, 0, 0, 0, 20, 134, 211, 231, 40, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 34, 96, 28, 172, 33, 112, 29, 156, 4, 96, 30, 140, 3, 112, 31, 123, 230, 96, 32, 107, 229, 112, 33, 91, 200, 96, 34, 75, 199, 112, 35, 59, 170, 96, 36, 43, 169, 112, 37, 27, 140, 96, 38, 11, 139, 112, 39, 4, 168, 224, 39, 244, 167, 240, 40, 228, 138, 224, 41, 212, 137, 240, 42, 196, 108, 224, 43, 180, 107, 240, 44, 164, 78, 224, 45, 148, 77, 240, 46, 132, 48, 224, 47, 116, 47, 240, 48, 100, 18, 224, 49, 93, 76, 112, 50, 77, 47, 96, 51, 61, 46, 112, 52, 45, 17, 96, 53, 29, 16, 112, 54, 12, 243, 96, 58, 233, 165, 144, 59, 180, 158, 128, 60, 164, 157, 144, 61, 148, 128, 128, 62, 132, 127, 144, 63, 116, 98, 128, 64, 100, 97, 144, 65, 84, 68, 128, 66, 68, 67, 144, 67, 52, 38, 128, 68, 36, 37, 144, 69, 29, 67, 0, 71, 239, 170, 240, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 2, 5, 2, 2, 0, 0, 107, 88, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Choibalsan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 7, 0, 0, 0, 20, 134, 211, 231, 40, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 34, 96, 28, 172, 33, 112, 29, 156, 4, 96, 30, 140, 3, 112, 31, 123, 230, 96, 32, 107, 229, 112, 33, 91, 200, 96, 34, 75, 199, 112, 35, 59, 170, 96, 36, 43, 169, 112, 37, 27, 140, 96, 38, 11, 139, 112, 39, 4, 168, 224, 39, 244, 167, 240, 40, 228, 138, 224, 41, 212, 137, 240, 42, 196, 108, 224, 43, 180, 107, 240, 44, 164, 78, 224, 45, 148, 77, 240, 46, 132, 48, 224, 47, 116, 47, 240, 48, 100, 18, 224, 49, 93, 76, 112, 50, 77, 47, 96, 51, 61, 46, 112, 52, 45, 17, 96, 53, 29, 16, 112, 54, 12, 243, 96, 58, 233, 165, 144, 59, 180, 158, 128, 60, 164, 157, 144, 61, 148, 128, 128, 62, 132, 127, 144, 63, 116, 98, 128, 64, 100, 97, 144, 65, 84, 68, 128, 66, 68, 67, 144, 67, 52, 38, 128, 68, 36, 37, 144, 69, 29, 67, 0, 71, 239, 170, 240, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 2, 5, 2, 2, 0, 0, 107, 88, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 134, 211, 231, 40, 0, 0, 0, 0, 15, 11, 220, 144, 0, 0, 0, 0, 24, 233, 200, 128, 0, 0, 0, 0, 25, 218, 238, 224, 0, 0, 0, 0, 26, 204, 63, 112, 0, 0, 0, 0, 27, 188, 34, 96, 0, 0, 0, 0, 28, 172, 33, 112, 0, 0, 0, 0, 29, 156, 4, 96, 0, 0, 0, 0, 30, 140, 3, 112, 0, 0, 0, 0, 31, 123, 230, 96, 0, 0, 0, 0, 32, 107, 229, 112, 0, 0, 0, 0, 33, 91, 200, 96, 0, 0, 0, 0, 34, 75, 199, 112, 0, 0, 0, 0, 35, 59, 170, 96, 0, 0, 0, 0, 36, 43, 169, 112, 0, 0, 0, 0, 37, 27, 140, 96, 0, 0, 0, 0, 38, 11, 139, 112, 0, 0, 0, 0, 39, 4, 168, 224, 0, 0, 0, 0, 39, 244, 167, 240, 0, 0, 0, 0, 40, 228, 138, 224, 0, 0, 0, 0, 41, 212, 137, 240, 0, 0, 0, 0, 42, 196, 108, 224, 0, 0, 0, 0, 43, 180, 107, 240, 0, 0, 0, 0, 44, 164, 78, 224, 0, 0, 0, 0, 45, 148, 77, 240, 0, 0, 0, 0, 46, 132, 48, 224, 0, 0, 0, 0, 47, 116, 47, 240, 0, 0, 0, 0, 48, 100, 18, 224, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 77, 47, 96, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 45, 17, 96, 0, 0, 0, 0, 53, 29, 16, 112, 0, 0, 0, 0, 54, 12, 243, 96, 0, 0, 0, 0, 58, 233, 165, 144, 0, 0, 0, 0, 59, 180, 158, 128, 0, 0, 0, 0, 60, 164, 157, 144, 0, 0, 0, 0, 61, 148, 128, 128, 0, 0, 0, 0, 62, 132, 127, 144, 0, 0, 0, 0, 63, 116, 98, 128, 0, 0, 0, 0, 64, 100, 97, 144, 0, 0, 0, 0, 65, 84, 68, 128, 0, 0, 0, 0, 66, 68, 67, 144, 0, 0, 0, 0, 67, 52, 38, 128, 0, 0, 0, 0, 68, 36, 37, 144, 0, 0, 0, 0, 69, 29, 67, 0, 0, 0, 0, 0, 71, 239, 170, 240, 0, 0, 0, 0, 85, 21, 154, 160, 0, 0, 0, 0, 86, 5, 97, 112, 0, 0, 0, 0, 86, 245, 124, 160, 0, 0, 0, 0, 87, 229, 67, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 2, 5, 2, 2, 0, 0, 107, 88, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 48, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Chongqing": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Chongqing": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 126, 54, 67, 41, 255, 255, 255, 255, 200, 89, 94, 128, 255, 255, 255, 255, 201, 9, 249, 112, 255, 255, 255, 255, 201, 211, 189, 0, 255, 255, 255, 255, 203, 5, 138, 240, 255, 255, 255, 255, 203, 124, 64, 0, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 65, 124, 240, 0, 0, 0, 0, 30, 186, 82, 32, 0, 0, 0, 0, 31, 105, 155, 144, 0, 0, 0, 0, 32, 126, 132, 160, 0, 0, 0, 0, 33, 73, 125, 144, 0, 0, 0, 0, 34, 103, 161, 32, 0, 0, 0, 0, 35, 41, 95, 144, 0, 0, 0, 0, 36, 71, 131, 32, 0, 0, 0, 0, 37, 18, 124, 16, 0, 0, 0, 0, 38, 39, 101, 32, 0, 0, 0, 0, 38, 242, 94, 16, 0, 0, 0, 0, 40, 7, 71, 32, 0, 0, 0, 0, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Chungking": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Chungking": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 126, 54, 67, 41, 255, 255, 255, 255, 200, 89, 94, 128, 255, 255, 255, 255, 201, 9, 249, 112, 255, 255, 255, 255, 201, 211, 189, 0, 255, 255, 255, 255, 203, 5, 138, 240, 255, 255, 255, 255, 203, 124, 64, 0, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 65, 124, 240, 0, 0, 0, 0, 30, 186, 82, 32, 0, 0, 0, 0, 31, 105, 155, 144, 0, 0, 0, 0, 32, 126, 132, 160, 0, 0, 0, 0, 33, 73, 125, 144, 0, 0, 0, 0, 34, 103, 161, 32, 0, 0, 0, 0, 35, 41, 95, 144, 0, 0, 0, 0, 36, 71, 131, 32, 0, 0, 0, 0, 37, 18, 124, 16, 0, 0, 0, 0, 38, 39, 101, 32, 0, 0, 0, 0, 38, 242, 94, 16, 0, 0, 0, 0, 40, 7, 71, 32, 0, 0, 0, 0, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Colombo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 24, 128, 0, 0, 0, 135, 157, 189, 28, 203, 90, 28, 40, 204, 149, 43, 160, 210, 117, 128, 56, 49, 166, 0, 40, 50, 113, 0, 32, 68, 63, 234, 40, 127, 255, 255, 255, 1, 2, 3, 4, 2, 5, 6, 2, 2, 0, 0, 74, 220, 0, 0, 0, 0, 74, 228, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 84, 96, 1, 14, 0, 0, 91, 104, 1, 18, 0, 0, 91, 104, 0, 18, 0, 0, 84, 96, 0, 14, 0, 0, 77, 88, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 51, 48, 62, 45, 53, 58, 51, 48, 10}, + "zoneinfo/Asia/Colombo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 24, 128, 0, 0, 0, 135, 157, 189, 28, 203, 90, 28, 40, 204, 149, 43, 160, 210, 117, 128, 56, 49, 166, 0, 40, 50, 113, 0, 32, 68, 63, 234, 40, 127, 255, 255, 255, 1, 2, 3, 4, 2, 5, 6, 2, 2, 0, 0, 74, 220, 0, 0, 0, 0, 74, 228, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 84, 96, 1, 14, 0, 0, 91, 104, 1, 18, 0, 0, 91, 104, 0, 18, 0, 0, 84, 96, 0, 14, 0, 0, 77, 88, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 54, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 24, 255, 255, 255, 255, 86, 182, 153, 36, 255, 255, 255, 255, 135, 157, 189, 28, 255, 255, 255, 255, 203, 90, 28, 40, 255, 255, 255, 255, 204, 149, 43, 160, 255, 255, 255, 255, 210, 117, 128, 56, 0, 0, 0, 0, 49, 166, 0, 40, 0, 0, 0, 0, 50, 113, 0, 32, 0, 0, 0, 0, 68, 63, 234, 40, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 5, 6, 2, 2, 0, 0, 74, 220, 0, 0, 0, 0, 74, 228, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 84, 96, 1, 14, 0, 0, 91, 104, 1, 18, 0, 0, 91, 104, 0, 18, 0, 0, 84, 96, 0, 14, 0, 0, 77, 88, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 54, 51, 48, 0, 10, 60, 43, 48, 53, 51, 48, 62, 45, 53, 58, 51, 48, 10}, - "zoneinfo/Asia/Dacca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 128, 0, 0, 0, 202, 219, 134, 176, 204, 5, 113, 24, 204, 149, 50, 168, 221, 168, 210, 152, 74, 59, 196, 16, 75, 60, 216, 144, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Dacca": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 128, 0, 0, 0, 202, 219, 134, 176, 204, 5, 113, 24, 204, 149, 50, 168, 221, 168, 210, 152, 74, 59, 196, 16, 75, 60, 216, 144, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 255, 255, 255, 255, 105, 134, 134, 188, 255, 255, 255, 255, 202, 219, 134, 176, 255, 255, 255, 255, 204, 5, 113, 24, 255, 255, 255, 255, 204, 149, 50, 168, 255, 255, 255, 255, 221, 168, 210, 152, 0, 0, 0, 0, 74, 59, 196, 16, 0, 0, 0, 0, 75, 60, 216, 144, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Damascus": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 3, 0, 0, 0, 13, 161, 242, 171, 120, 162, 129, 47, 128, 163, 94, 157, 112, 164, 97, 17, 128, 165, 62, 127, 112, 166, 64, 243, 128, 167, 30, 97, 112, 168, 32, 213, 128, 169, 7, 125, 240, 241, 143, 82, 0, 242, 91, 156, 112, 243, 115, 40, 128, 244, 59, 126, 112, 245, 85, 173, 128, 246, 31, 84, 240, 247, 54, 225, 0, 247, 255, 54, 240, 249, 14, 218, 0, 249, 225, 187, 240, 250, 249, 72, 0, 251, 194, 239, 112, 252, 219, 205, 0, 253, 165, 116, 112, 254, 189, 0, 128, 255, 134, 167, 240, 0, 158, 52, 0, 1, 103, 219, 112, 2, 127, 103, 128, 3, 73, 14, 240, 4, 97, 236, 128, 5, 43, 147, 240, 6, 67, 32, 0, 7, 12, 199, 112, 8, 36, 83, 128, 8, 237, 250, 240, 10, 5, 135, 0, 10, 207, 46, 112, 11, 232, 12, 0, 12, 177, 179, 112, 13, 201, 63, 128, 14, 107, 89, 240, 15, 170, 115, 0, 16, 76, 141, 112, 24, 244, 197, 0, 25, 219, 109, 112, 26, 215, 74, 0, 27, 189, 242, 112, 30, 85, 35, 0, 31, 138, 229, 112, 32, 71, 122, 0, 33, 137, 25, 240, 34, 60, 116, 0, 35, 107, 158, 240, 36, 50, 191, 128, 37, 37, 69, 112, 38, 21, 68, 128, 39, 5, 39, 112, 39, 246, 91, 224, 40, 231, 144, 80, 41, 226, 27, 96, 42, 202, 21, 80, 43, 178, 43, 96, 44, 163, 95, 208, 45, 155, 71, 224, 46, 140, 124, 80, 47, 124, 123, 96, 48, 109, 175, 208, 49, 95, 0, 96, 50, 80, 52, 208, 51, 62, 226, 96, 52, 49, 104, 80, 53, 30, 196, 96, 54, 18, 155, 208, 55, 2, 154, 224, 55, 243, 207, 80, 56, 229, 31, 224, 57, 214, 84, 80, 58, 198, 83, 96, 59, 183, 135, 208, 60, 167, 134, 224, 61, 152, 187, 80, 62, 136, 186, 96, 63, 121, 238, 208, 64, 107, 63, 96, 65, 92, 115, 208, 66, 76, 114, 224, 67, 61, 167, 80, 68, 45, 166, 96, 69, 18, 253, 80, 70, 12, 54, 224, 71, 42, 62, 80, 71, 245, 83, 96, 73, 11, 113, 208, 73, 203, 250, 224, 74, 234, 2, 80, 75, 181, 23, 96, 76, 201, 228, 80, 77, 148, 249, 96, 78, 169, 198, 80, 79, 116, 219, 96, 80, 137, 168, 80, 81, 84, 189, 96, 82, 105, 138, 80, 83, 52, 159, 96, 84, 82, 166, 208, 85, 20, 129, 96, 86, 50, 136, 208, 86, 244, 99, 96, 88, 18, 106, 208, 88, 221, 127, 224, 89, 242, 76, 208, 90, 189, 97, 224, 91, 210, 46, 208, 92, 157, 67, 224, 93, 178, 16, 208, 94, 125, 37, 224, 95, 155, 45, 80, 96, 93, 7, 224, 97, 123, 15, 80, 98, 60, 233, 224, 99, 90, 241, 80, 100, 38, 6, 96, 101, 58, 211, 80, 102, 5, 232, 96, 103, 26, 181, 80, 103, 229, 202, 96, 105, 3, 209, 208, 105, 197, 172, 96, 106, 227, 179, 208, 107, 165, 142, 96, 108, 195, 149, 208, 109, 142, 170, 224, 110, 163, 119, 208, 111, 110, 140, 224, 112, 131, 89, 208, 113, 78, 110, 224, 114, 99, 59, 208, 115, 46, 80, 224, 116, 76, 88, 80, 117, 14, 50, 224, 118, 44, 58, 80, 118, 238, 20, 224, 120, 12, 28, 80, 120, 215, 49, 96, 121, 235, 254, 80, 122, 183, 19, 96, 123, 203, 224, 80, 124, 150, 245, 96, 125, 180, 252, 208, 126, 118, 215, 96, 127, 148, 222, 208, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 34, 8, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 53, 47, 48, 44, 77, 49, 48, 46, 53, 46, 53, 47, 48, 10}, + "zoneinfo/Asia/Damascus": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 3, 0, 0, 0, 13, 161, 242, 171, 120, 162, 129, 47, 128, 163, 94, 157, 112, 164, 97, 17, 128, 165, 62, 127, 112, 166, 64, 243, 128, 167, 30, 97, 112, 168, 32, 213, 128, 169, 7, 125, 240, 241, 143, 82, 0, 242, 91, 156, 112, 243, 115, 40, 128, 244, 59, 126, 112, 245, 85, 173, 128, 246, 31, 84, 240, 247, 54, 225, 0, 247, 255, 54, 240, 249, 14, 218, 0, 249, 225, 187, 240, 250, 249, 72, 0, 251, 194, 239, 112, 252, 219, 205, 0, 253, 165, 116, 112, 254, 189, 0, 128, 255, 134, 167, 240, 0, 158, 52, 0, 1, 103, 219, 112, 2, 127, 103, 128, 3, 73, 14, 240, 4, 97, 236, 128, 5, 43, 147, 240, 6, 67, 32, 0, 7, 12, 199, 112, 8, 36, 83, 128, 8, 237, 250, 240, 10, 5, 135, 0, 10, 207, 46, 112, 11, 232, 12, 0, 12, 177, 179, 112, 13, 201, 63, 128, 14, 107, 89, 240, 15, 170, 115, 0, 16, 76, 141, 112, 24, 244, 197, 0, 25, 219, 109, 112, 26, 215, 74, 0, 27, 189, 242, 112, 30, 85, 35, 0, 31, 138, 229, 112, 32, 71, 122, 0, 33, 137, 25, 240, 34, 60, 116, 0, 35, 107, 158, 240, 36, 50, 191, 128, 37, 37, 69, 112, 38, 21, 68, 128, 39, 5, 39, 112, 39, 246, 91, 224, 40, 231, 144, 80, 41, 226, 27, 96, 42, 202, 21, 80, 43, 178, 43, 96, 44, 163, 95, 208, 45, 155, 71, 224, 46, 140, 124, 80, 47, 124, 123, 96, 48, 109, 175, 208, 49, 95, 0, 96, 50, 80, 52, 208, 51, 62, 226, 96, 52, 49, 104, 80, 53, 30, 196, 96, 54, 18, 155, 208, 55, 2, 154, 224, 55, 243, 207, 80, 56, 229, 31, 224, 57, 214, 84, 80, 58, 198, 83, 96, 59, 183, 135, 208, 60, 167, 134, 224, 61, 152, 187, 80, 62, 136, 186, 96, 63, 121, 238, 208, 64, 107, 63, 96, 65, 92, 115, 208, 66, 76, 114, 224, 67, 61, 167, 80, 68, 45, 166, 96, 69, 18, 253, 80, 70, 12, 54, 224, 71, 42, 62, 80, 71, 245, 83, 96, 73, 11, 113, 208, 73, 203, 250, 224, 74, 234, 2, 80, 75, 181, 23, 96, 76, 201, 228, 80, 77, 148, 249, 96, 78, 169, 198, 80, 79, 116, 219, 96, 80, 137, 168, 80, 81, 84, 189, 96, 82, 105, 138, 80, 83, 52, 159, 96, 84, 82, 166, 208, 85, 20, 129, 96, 86, 50, 136, 208, 86, 244, 99, 96, 88, 18, 106, 208, 88, 221, 127, 224, 89, 242, 76, 208, 90, 189, 97, 224, 91, 210, 46, 208, 92, 157, 67, 224, 93, 178, 16, 208, 94, 125, 37, 224, 95, 155, 45, 80, 96, 93, 7, 224, 97, 123, 15, 80, 98, 60, 233, 224, 99, 90, 241, 80, 100, 38, 6, 96, 101, 58, 211, 80, 102, 5, 232, 96, 103, 26, 181, 80, 103, 229, 202, 96, 105, 3, 209, 208, 105, 197, 172, 96, 106, 227, 179, 208, 107, 165, 142, 96, 108, 195, 149, 208, 109, 142, 170, 224, 110, 163, 119, 208, 111, 110, 140, 224, 112, 131, 89, 208, 113, 78, 110, 224, 114, 99, 59, 208, 115, 46, 80, 224, 116, 76, 88, 80, 117, 14, 50, 224, 118, 44, 58, 80, 118, 238, 20, 224, 120, 12, 28, 80, 120, 215, 49, 96, 121, 235, 254, 80, 122, 183, 19, 96, 123, 203, 224, 80, 124, 150, 245, 96, 125, 180, 252, 208, 126, 118, 215, 96, 127, 148, 222, 208, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 34, 8, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 3, 0, 0, 0, 13, 255, 255, 255, 255, 161, 242, 171, 120, 255, 255, 255, 255, 162, 129, 47, 128, 255, 255, 255, 255, 163, 94, 157, 112, 255, 255, 255, 255, 164, 97, 17, 128, 255, 255, 255, 255, 165, 62, 127, 112, 255, 255, 255, 255, 166, 64, 243, 128, 255, 255, 255, 255, 167, 30, 97, 112, 255, 255, 255, 255, 168, 32, 213, 128, 255, 255, 255, 255, 169, 7, 125, 240, 255, 255, 255, 255, 241, 143, 82, 0, 255, 255, 255, 255, 242, 91, 156, 112, 255, 255, 255, 255, 243, 115, 40, 128, 255, 255, 255, 255, 244, 59, 126, 112, 255, 255, 255, 255, 245, 85, 173, 128, 255, 255, 255, 255, 246, 31, 84, 240, 255, 255, 255, 255, 247, 54, 225, 0, 255, 255, 255, 255, 247, 255, 54, 240, 255, 255, 255, 255, 249, 14, 218, 0, 255, 255, 255, 255, 249, 225, 187, 240, 255, 255, 255, 255, 250, 249, 72, 0, 255, 255, 255, 255, 251, 194, 239, 112, 255, 255, 255, 255, 252, 219, 205, 0, 255, 255, 255, 255, 253, 165, 116, 112, 255, 255, 255, 255, 254, 189, 0, 128, 255, 255, 255, 255, 255, 134, 167, 240, 0, 0, 0, 0, 0, 158, 52, 0, 0, 0, 0, 0, 1, 103, 219, 112, 0, 0, 0, 0, 2, 127, 103, 128, 0, 0, 0, 0, 3, 73, 14, 240, 0, 0, 0, 0, 4, 97, 236, 128, 0, 0, 0, 0, 5, 43, 147, 240, 0, 0, 0, 0, 6, 67, 32, 0, 0, 0, 0, 0, 7, 12, 199, 112, 0, 0, 0, 0, 8, 36, 83, 128, 0, 0, 0, 0, 8, 237, 250, 240, 0, 0, 0, 0, 10, 5, 135, 0, 0, 0, 0, 0, 10, 207, 46, 112, 0, 0, 0, 0, 11, 232, 12, 0, 0, 0, 0, 0, 12, 177, 179, 112, 0, 0, 0, 0, 13, 201, 63, 128, 0, 0, 0, 0, 14, 107, 89, 240, 0, 0, 0, 0, 15, 170, 115, 0, 0, 0, 0, 0, 16, 76, 141, 112, 0, 0, 0, 0, 24, 244, 197, 0, 0, 0, 0, 0, 25, 219, 109, 112, 0, 0, 0, 0, 26, 215, 74, 0, 0, 0, 0, 0, 27, 189, 242, 112, 0, 0, 0, 0, 30, 85, 35, 0, 0, 0, 0, 0, 31, 138, 229, 112, 0, 0, 0, 0, 32, 71, 122, 0, 0, 0, 0, 0, 33, 137, 25, 240, 0, 0, 0, 0, 34, 60, 116, 0, 0, 0, 0, 0, 35, 107, 158, 240, 0, 0, 0, 0, 36, 50, 191, 128, 0, 0, 0, 0, 37, 37, 69, 112, 0, 0, 0, 0, 38, 21, 68, 128, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 246, 91, 224, 0, 0, 0, 0, 40, 231, 144, 80, 0, 0, 0, 0, 41, 226, 27, 96, 0, 0, 0, 0, 42, 202, 21, 80, 0, 0, 0, 0, 43, 178, 43, 96, 0, 0, 0, 0, 44, 163, 95, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 140, 124, 80, 0, 0, 0, 0, 47, 124, 123, 96, 0, 0, 0, 0, 48, 109, 175, 208, 0, 0, 0, 0, 49, 95, 0, 96, 0, 0, 0, 0, 50, 80, 52, 208, 0, 0, 0, 0, 51, 62, 226, 96, 0, 0, 0, 0, 52, 49, 104, 80, 0, 0, 0, 0, 53, 30, 196, 96, 0, 0, 0, 0, 54, 18, 155, 208, 0, 0, 0, 0, 55, 2, 154, 224, 0, 0, 0, 0, 55, 243, 207, 80, 0, 0, 0, 0, 56, 229, 31, 224, 0, 0, 0, 0, 57, 214, 84, 80, 0, 0, 0, 0, 58, 198, 83, 96, 0, 0, 0, 0, 59, 183, 135, 208, 0, 0, 0, 0, 60, 167, 134, 224, 0, 0, 0, 0, 61, 152, 187, 80, 0, 0, 0, 0, 62, 136, 186, 96, 0, 0, 0, 0, 63, 121, 238, 208, 0, 0, 0, 0, 64, 107, 63, 96, 0, 0, 0, 0, 65, 92, 115, 208, 0, 0, 0, 0, 66, 76, 114, 224, 0, 0, 0, 0, 67, 61, 167, 80, 0, 0, 0, 0, 68, 45, 166, 96, 0, 0, 0, 0, 69, 18, 253, 80, 0, 0, 0, 0, 70, 12, 54, 224, 0, 0, 0, 0, 71, 42, 62, 80, 0, 0, 0, 0, 71, 245, 83, 96, 0, 0, 0, 0, 73, 11, 113, 208, 0, 0, 0, 0, 73, 203, 250, 224, 0, 0, 0, 0, 74, 234, 2, 80, 0, 0, 0, 0, 75, 181, 23, 96, 0, 0, 0, 0, 76, 201, 228, 80, 0, 0, 0, 0, 77, 148, 249, 96, 0, 0, 0, 0, 78, 169, 198, 80, 0, 0, 0, 0, 79, 116, 219, 96, 0, 0, 0, 0, 80, 137, 168, 80, 0, 0, 0, 0, 81, 84, 189, 96, 0, 0, 0, 0, 82, 105, 138, 80, 0, 0, 0, 0, 83, 52, 159, 96, 0, 0, 0, 0, 84, 82, 166, 208, 0, 0, 0, 0, 85, 20, 129, 96, 0, 0, 0, 0, 86, 50, 136, 208, 0, 0, 0, 0, 86, 244, 99, 96, 0, 0, 0, 0, 88, 18, 106, 208, 0, 0, 0, 0, 88, 221, 127, 224, 0, 0, 0, 0, 89, 242, 76, 208, 0, 0, 0, 0, 90, 189, 97, 224, 0, 0, 0, 0, 91, 210, 46, 208, 0, 0, 0, 0, 92, 157, 67, 224, 0, 0, 0, 0, 93, 178, 16, 208, 0, 0, 0, 0, 94, 125, 37, 224, 0, 0, 0, 0, 95, 155, 45, 80, 0, 0, 0, 0, 96, 93, 7, 224, 0, 0, 0, 0, 97, 123, 15, 80, 0, 0, 0, 0, 98, 60, 233, 224, 0, 0, 0, 0, 99, 90, 241, 80, 0, 0, 0, 0, 100, 38, 6, 96, 0, 0, 0, 0, 101, 58, 211, 80, 0, 0, 0, 0, 102, 5, 232, 96, 0, 0, 0, 0, 103, 26, 181, 80, 0, 0, 0, 0, 103, 229, 202, 96, 0, 0, 0, 0, 105, 3, 209, 208, 0, 0, 0, 0, 105, 197, 172, 96, 0, 0, 0, 0, 106, 227, 179, 208, 0, 0, 0, 0, 107, 165, 142, 96, 0, 0, 0, 0, 108, 195, 149, 208, 0, 0, 0, 0, 109, 142, 170, 224, 0, 0, 0, 0, 110, 163, 119, 208, 0, 0, 0, 0, 111, 110, 140, 224, 0, 0, 0, 0, 112, 131, 89, 208, 0, 0, 0, 0, 113, 78, 110, 224, 0, 0, 0, 0, 114, 99, 59, 208, 0, 0, 0, 0, 115, 46, 80, 224, 0, 0, 0, 0, 116, 76, 88, 80, 0, 0, 0, 0, 117, 14, 50, 224, 0, 0, 0, 0, 118, 44, 58, 80, 0, 0, 0, 0, 118, 238, 20, 224, 0, 0, 0, 0, 120, 12, 28, 80, 0, 0, 0, 0, 120, 215, 49, 96, 0, 0, 0, 0, 121, 235, 254, 80, 0, 0, 0, 0, 122, 183, 19, 96, 0, 0, 0, 0, 123, 203, 224, 80, 0, 0, 0, 0, 124, 150, 245, 96, 0, 0, 0, 0, 125, 180, 252, 208, 0, 0, 0, 0, 126, 118, 215, 96, 0, 0, 0, 0, 127, 148, 222, 208, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 34, 8, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 53, 47, 48, 44, 77, 49, 48, 46, 53, 46, 53, 47, 48, 10}, - "zoneinfo/Asia/Dhaka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 128, 0, 0, 0, 202, 219, 134, 176, 204, 5, 113, 24, 204, 149, 50, 168, 221, 168, 210, 152, 74, 59, 196, 16, 75, 60, 216, 144, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Dhaka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 128, 0, 0, 0, 202, 219, 134, 176, 204, 5, 113, 24, 204, 149, 50, 168, 221, 168, 210, 152, 74, 59, 196, 16, 75, 60, 216, 144, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 28, 255, 255, 255, 255, 105, 134, 134, 188, 255, 255, 255, 255, 202, 219, 134, 176, 255, 255, 255, 255, 204, 5, 113, 24, 255, 255, 255, 255, 204, 149, 50, 168, 255, 255, 255, 255, 221, 168, 210, 152, 0, 0, 0, 0, 74, 59, 196, 16, 0, 0, 0, 0, 75, 60, 216, 144, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 5, 4, 4, 0, 0, 84, 196, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 77, 88, 0, 14, 0, 0, 84, 96, 0, 20, 0, 0, 98, 112, 1, 24, 76, 77, 84, 0, 72, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 43, 48, 55, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Dili": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 12, 146, 230, 24, 196, 203, 153, 50, 240, 11, 234, 48, 112, 57, 195, 153, 0, 127, 255, 255, 255, 1, 2, 1, 2, 2, 0, 0, 117, 188, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + "zoneinfo/Asia/Dili": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 12, 146, 230, 24, 196, 203, 153, 50, 240, 11, 234, 48, 112, 57, 195, 153, 0, 127, 255, 255, 255, 1, 2, 1, 2, 2, 0, 0, 117, 188, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 146, 230, 24, 196, 255, 255, 255, 255, 203, 153, 50, 240, 0, 0, 0, 0, 11, 234, 48, 112, 0, 0, 0, 0, 57, 195, 153, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 2, 2, 0, 0, 117, 188, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, - "zoneinfo/Asia/Dubai": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 161, 242, 153, 168, 127, 255, 255, 255, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Asia/Dubai": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 161, 242, 153, 168, 127, 255, 255, 255, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 242, 153, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Asia/Dushanbe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 8, 0, 0, 0, 16, 170, 25, 131, 128, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 202, 143, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 7, 0, 0, 64, 128, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Dushanbe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 8, 0, 0, 0, 16, 170, 25, 131, 128, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 202, 143, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 7, 0, 0, 64, 128, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 8, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 131, 128, 255, 255, 255, 255, 181, 163, 239, 48, 0, 0, 0, 0, 21, 39, 125, 160, 0, 0, 0, 0, 22, 24, 178, 16, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 229, 144, 0, 0, 0, 0, 24, 233, 228, 160, 0, 0, 0, 0, 25, 219, 25, 16, 0, 0, 0, 0, 26, 204, 105, 160, 0, 0, 0, 0, 27, 188, 118, 192, 0, 0, 0, 0, 28, 172, 103, 192, 0, 0, 0, 0, 29, 156, 88, 192, 0, 0, 0, 0, 30, 140, 73, 192, 0, 0, 0, 0, 31, 124, 58, 192, 0, 0, 0, 0, 32, 108, 43, 192, 0, 0, 0, 0, 33, 92, 28, 192, 0, 0, 0, 0, 34, 76, 13, 192, 0, 0, 0, 0, 35, 59, 254, 192, 0, 0, 0, 0, 36, 43, 239, 192, 0, 0, 0, 0, 37, 27, 224, 192, 0, 0, 0, 0, 38, 11, 209, 192, 0, 0, 0, 0, 39, 4, 253, 64, 0, 0, 0, 0, 39, 244, 238, 64, 0, 0, 0, 0, 40, 202, 143, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 7, 0, 0, 64, 128, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Famagusta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 7, 0, 0, 0, 17, 165, 119, 30, 44, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 87, 208, 127, 208, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 212, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Asia/Famagusta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 7, 0, 0, 0, 17, 165, 119, 30, 44, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 87, 208, 127, 208, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 212, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 165, 119, 30, 44, 0, 0, 0, 0, 9, 237, 175, 224, 0, 0, 0, 0, 10, 221, 146, 208, 0, 0, 0, 0, 11, 250, 100, 224, 0, 0, 0, 0, 12, 190, 198, 80, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 138, 225, 208, 0, 0, 0, 0, 15, 132, 27, 96, 0, 0, 0, 0, 16, 117, 79, 208, 0, 0, 0, 0, 17, 99, 253, 96, 0, 0, 0, 0, 18, 83, 224, 80, 0, 0, 0, 0, 19, 77, 25, 224, 0, 0, 0, 0, 20, 51, 194, 80, 0, 0, 0, 0, 21, 35, 193, 96, 0, 0, 0, 0, 22, 19, 164, 80, 0, 0, 0, 0, 23, 3, 163, 96, 0, 0, 0, 0, 23, 243, 134, 80, 0, 0, 0, 0, 24, 227, 133, 96, 0, 0, 0, 0, 25, 211, 104, 80, 0, 0, 0, 0, 26, 195, 103, 96, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 77, 145, 208, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 45, 115, 208, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 87, 208, 127, 208, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 212, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 42, 48, 0, 13, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Asia/Gaza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 39, 66, 80, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 48, 231, 7, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 54, 139, 243, 224, 55, 22, 97, 96, 56, 6, 68, 80, 56, 255, 125, 224, 57, 239, 96, 208, 58, 223, 95, 224, 59, 207, 66, 208, 60, 191, 65, 224, 61, 175, 36, 208, 62, 159, 35, 224, 63, 143, 6, 208, 64, 127, 5, 224, 65, 92, 129, 224, 66, 94, 231, 224, 67, 65, 183, 240, 68, 45, 166, 96, 69, 18, 253, 80, 70, 14, 217, 224, 70, 232, 111, 112, 71, 236, 24, 224, 72, 183, 17, 208, 73, 203, 250, 224, 74, 160, 60, 96, 75, 173, 46, 156, 76, 97, 189, 208, 77, 148, 249, 156, 78, 53, 194, 80, 79, 116, 219, 96, 80, 91, 145, 224, 81, 84, 189, 96, 82, 68, 160, 80, 83, 52, 159, 96, 84, 73, 108, 80, 85, 21, 210, 224, 86, 41, 78, 80, 86, 245, 194, 240, 88, 19, 202, 96, 88, 213, 164, 240, 89, 243, 172, 96, 90, 181, 134, 240, 91, 211, 142, 96, 92, 149, 104, 240, 93, 179, 112, 96, 94, 126, 133, 112, 95, 156, 140, 224, 96, 94, 103, 112, 97, 124, 110, 224, 98, 62, 73, 112, 99, 92, 80, 224, 100, 30, 43, 112, 101, 60, 50, 224, 101, 254, 13, 112, 103, 28, 20, 224, 103, 221, 239, 112, 104, 251, 246, 224, 105, 199, 11, 240, 106, 229, 19, 96, 107, 166, 237, 240, 108, 196, 245, 96, 109, 134, 207, 240, 110, 164, 215, 96, 111, 102, 177, 240, 112, 132, 185, 96, 113, 70, 147, 240, 114, 100, 155, 96, 115, 38, 117, 240, 116, 68, 125, 96, 117, 15, 146, 112, 118, 45, 153, 224, 118, 239, 116, 112, 120, 13, 123, 224, 120, 207, 86, 112, 121, 237, 93, 224, 122, 175, 56, 112, 123, 205, 63, 224, 124, 143, 26, 112, 125, 173, 33, 224, 126, 120, 54, 240, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 80, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 52, 46, 54, 47, 49, 44, 77, 49, 48, 46, 53, 46, 54, 47, 49, 10}, + "zoneinfo/Asia/Gaza": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 39, 66, 80, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 19, 232, 170, 224, 20, 32, 9, 224, 26, 249, 116, 224, 27, 141, 28, 224, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 48, 231, 7, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 55, 22, 97, 96, 56, 6, 68, 80, 56, 255, 125, 224, 57, 239, 96, 208, 58, 223, 95, 224, 59, 207, 66, 208, 60, 191, 65, 224, 61, 175, 36, 208, 62, 159, 35, 224, 63, 143, 6, 208, 64, 127, 5, 224, 65, 92, 129, 224, 66, 94, 231, 224, 67, 65, 183, 240, 68, 45, 166, 96, 69, 18, 253, 80, 70, 14, 217, 224, 70, 232, 111, 112, 71, 236, 24, 224, 72, 183, 17, 208, 73, 203, 250, 224, 74, 160, 60, 96, 75, 173, 46, 156, 76, 97, 189, 208, 77, 148, 249, 156, 78, 53, 194, 80, 79, 116, 219, 96, 80, 91, 145, 224, 81, 84, 189, 96, 82, 68, 160, 80, 83, 52, 159, 96, 84, 73, 108, 80, 85, 21, 210, 224, 86, 41, 78, 80, 86, 245, 194, 240, 88, 19, 202, 96, 88, 213, 164, 240, 89, 243, 172, 96, 90, 181, 134, 240, 91, 211, 142, 96, 92, 157, 67, 224, 93, 179, 112, 96, 94, 125, 37, 224, 95, 156, 140, 224, 96, 93, 7, 224, 97, 124, 110, 224, 98, 60, 233, 224, 99, 92, 80, 224, 100, 38, 6, 96, 101, 60, 50, 224, 102, 5, 232, 96, 103, 28, 20, 224, 103, 229, 202, 96, 104, 251, 246, 224, 105, 197, 172, 96, 106, 229, 19, 96, 107, 165, 142, 96, 108, 196, 245, 96, 109, 142, 170, 224, 110, 164, 215, 96, 111, 110, 140, 224, 112, 132, 185, 96, 113, 78, 110, 224, 114, 100, 155, 96, 115, 46, 80, 224, 116, 68, 125, 96, 117, 14, 50, 224, 118, 45, 153, 224, 118, 238, 20, 224, 120, 13, 123, 224, 120, 215, 49, 96, 121, 237, 93, 224, 122, 183, 19, 96, 123, 205, 63, 224, 124, 150, 245, 96, 125, 173, 33, 224, 126, 118, 215, 96, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 80, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 125, 189, 74, 176, 255, 255, 255, 255, 200, 89, 178, 224, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 205, 172, 254, 0, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 201, 112, 255, 255, 255, 255, 211, 101, 176, 128, 255, 255, 255, 255, 212, 107, 224, 208, 255, 255, 255, 255, 232, 54, 99, 96, 255, 255, 255, 255, 232, 244, 45, 80, 255, 255, 255, 255, 234, 11, 185, 96, 255, 255, 255, 255, 234, 213, 96, 208, 255, 255, 255, 255, 235, 236, 250, 240, 255, 255, 255, 255, 236, 181, 109, 0, 255, 255, 255, 255, 237, 207, 127, 240, 255, 255, 255, 255, 238, 151, 242, 0, 255, 255, 255, 255, 239, 176, 179, 112, 255, 255, 255, 255, 240, 121, 37, 128, 255, 255, 255, 255, 241, 145, 230, 240, 255, 255, 255, 255, 242, 90, 89, 0, 255, 255, 255, 255, 243, 115, 26, 112, 255, 255, 255, 255, 244, 59, 140, 128, 255, 255, 255, 255, 245, 85, 159, 112, 255, 255, 255, 255, 246, 30, 17, 128, 255, 255, 255, 255, 247, 54, 210, 240, 255, 255, 255, 255, 247, 255, 69, 0, 255, 255, 255, 255, 249, 24, 6, 112, 255, 255, 255, 255, 249, 225, 202, 0, 255, 255, 255, 255, 250, 249, 57, 240, 255, 255, 255, 255, 251, 39, 66, 80, 0, 0, 0, 0, 8, 124, 139, 224, 0, 0, 0, 0, 8, 253, 176, 208, 0, 0, 0, 0, 9, 246, 234, 96, 0, 0, 0, 0, 10, 166, 51, 208, 0, 0, 0, 0, 19, 232, 170, 224, 0, 0, 0, 0, 20, 32, 9, 224, 0, 0, 0, 0, 26, 249, 116, 224, 0, 0, 0, 0, 27, 141, 28, 224, 0, 0, 0, 0, 28, 190, 248, 224, 0, 0, 0, 0, 29, 137, 241, 208, 0, 0, 0, 0, 30, 204, 255, 96, 0, 0, 0, 0, 31, 96, 153, 80, 0, 0, 0, 0, 32, 130, 177, 96, 0, 0, 0, 0, 33, 73, 181, 208, 0, 0, 0, 0, 34, 94, 158, 224, 0, 0, 0, 0, 35, 32, 93, 80, 0, 0, 0, 0, 36, 90, 48, 96, 0, 0, 0, 0, 37, 0, 63, 80, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 38, 214, 230, 208, 0, 0, 0, 0, 39, 235, 207, 224, 0, 0, 0, 0, 40, 192, 3, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 169, 31, 208, 0, 0, 0, 0, 43, 187, 101, 224, 0, 0, 0, 0, 44, 137, 1, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 95, 169, 80, 0, 0, 0, 0, 47, 123, 41, 224, 0, 0, 0, 0, 48, 72, 197, 208, 0, 0, 0, 0, 48, 231, 7, 224, 0, 0, 0, 0, 49, 100, 70, 96, 0, 0, 0, 0, 50, 65, 194, 96, 0, 0, 0, 0, 51, 68, 40, 96, 0, 0, 0, 0, 52, 33, 164, 96, 0, 0, 0, 0, 53, 36, 10, 96, 0, 0, 0, 0, 54, 1, 134, 96, 0, 0, 0, 0, 55, 22, 97, 96, 0, 0, 0, 0, 56, 6, 68, 80, 0, 0, 0, 0, 56, 255, 125, 224, 0, 0, 0, 0, 57, 239, 96, 208, 0, 0, 0, 0, 58, 223, 95, 224, 0, 0, 0, 0, 59, 207, 66, 208, 0, 0, 0, 0, 60, 191, 65, 224, 0, 0, 0, 0, 61, 175, 36, 208, 0, 0, 0, 0, 62, 159, 35, 224, 0, 0, 0, 0, 63, 143, 6, 208, 0, 0, 0, 0, 64, 127, 5, 224, 0, 0, 0, 0, 65, 92, 129, 224, 0, 0, 0, 0, 66, 94, 231, 224, 0, 0, 0, 0, 67, 65, 183, 240, 0, 0, 0, 0, 68, 45, 166, 96, 0, 0, 0, 0, 69, 18, 253, 80, 0, 0, 0, 0, 70, 14, 217, 224, 0, 0, 0, 0, 70, 232, 111, 112, 0, 0, 0, 0, 71, 236, 24, 224, 0, 0, 0, 0, 72, 183, 17, 208, 0, 0, 0, 0, 73, 203, 250, 224, 0, 0, 0, 0, 74, 160, 60, 96, 0, 0, 0, 0, 75, 173, 46, 156, 0, 0, 0, 0, 76, 97, 189, 208, 0, 0, 0, 0, 77, 148, 249, 156, 0, 0, 0, 0, 78, 53, 194, 80, 0, 0, 0, 0, 79, 116, 219, 96, 0, 0, 0, 0, 80, 91, 145, 224, 0, 0, 0, 0, 81, 84, 189, 96, 0, 0, 0, 0, 82, 68, 160, 80, 0, 0, 0, 0, 83, 52, 159, 96, 0, 0, 0, 0, 84, 73, 108, 80, 0, 0, 0, 0, 85, 21, 210, 224, 0, 0, 0, 0, 86, 41, 78, 80, 0, 0, 0, 0, 86, 245, 194, 240, 0, 0, 0, 0, 88, 19, 202, 96, 0, 0, 0, 0, 88, 213, 164, 240, 0, 0, 0, 0, 89, 243, 172, 96, 0, 0, 0, 0, 90, 181, 134, 240, 0, 0, 0, 0, 91, 211, 142, 96, 0, 0, 0, 0, 92, 157, 67, 224, 0, 0, 0, 0, 93, 179, 112, 96, 0, 0, 0, 0, 94, 125, 37, 224, 0, 0, 0, 0, 95, 156, 140, 224, 0, 0, 0, 0, 96, 93, 7, 224, 0, 0, 0, 0, 97, 124, 110, 224, 0, 0, 0, 0, 98, 60, 233, 224, 0, 0, 0, 0, 99, 92, 80, 224, 0, 0, 0, 0, 100, 38, 6, 96, 0, 0, 0, 0, 101, 60, 50, 224, 0, 0, 0, 0, 102, 5, 232, 96, 0, 0, 0, 0, 103, 28, 20, 224, 0, 0, 0, 0, 103, 229, 202, 96, 0, 0, 0, 0, 104, 251, 246, 224, 0, 0, 0, 0, 105, 197, 172, 96, 0, 0, 0, 0, 106, 229, 19, 96, 0, 0, 0, 0, 107, 165, 142, 96, 0, 0, 0, 0, 108, 196, 245, 96, 0, 0, 0, 0, 109, 142, 170, 224, 0, 0, 0, 0, 110, 164, 215, 96, 0, 0, 0, 0, 111, 110, 140, 224, 0, 0, 0, 0, 112, 132, 185, 96, 0, 0, 0, 0, 113, 78, 110, 224, 0, 0, 0, 0, 114, 100, 155, 96, 0, 0, 0, 0, 115, 46, 80, 224, 0, 0, 0, 0, 116, 68, 125, 96, 0, 0, 0, 0, 117, 14, 50, 224, 0, 0, 0, 0, 118, 45, 153, 224, 0, 0, 0, 0, 118, 238, 20, 224, 0, 0, 0, 0, 120, 13, 123, 224, 0, 0, 0, 0, 120, 215, 49, 96, 0, 0, 0, 0, 121, 237, 93, 224, 0, 0, 0, 0, 122, 183, 19, 96, 0, 0, 0, 0, 123, 205, 63, 224, 0, 0, 0, 0, 124, 150, 245, 96, 0, 0, 0, 0, 125, 173, 33, 224, 0, 0, 0, 0, 126, 118, 215, 96, 0, 0, 0, 0, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 80, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 53, 47, 48, 44, 77, 49, 48, 46, 53, 46, 54, 47, 49, 10}, - "zoneinfo/Asia/Harbin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Harbin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 126, 54, 67, 41, 255, 255, 255, 255, 200, 89, 94, 128, 255, 255, 255, 255, 201, 9, 249, 112, 255, 255, 255, 255, 201, 211, 189, 0, 255, 255, 255, 255, 203, 5, 138, 240, 255, 255, 255, 255, 203, 124, 64, 0, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 65, 124, 240, 0, 0, 0, 0, 30, 186, 82, 32, 0, 0, 0, 0, 31, 105, 155, 144, 0, 0, 0, 0, 32, 126, 132, 160, 0, 0, 0, 0, 33, 73, 125, 144, 0, 0, 0, 0, 34, 103, 161, 32, 0, 0, 0, 0, 35, 41, 95, 144, 0, 0, 0, 0, 36, 71, 131, 32, 0, 0, 0, 0, 37, 18, 124, 16, 0, 0, 0, 0, 38, 39, 101, 32, 0, 0, 0, 0, 38, 242, 94, 16, 0, 0, 0, 0, 40, 7, 71, 32, 0, 0, 0, 0, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Hebron": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 39, 66, 80, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 48, 231, 7, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 54, 139, 243, 224, 55, 22, 97, 96, 56, 6, 68, 80, 56, 255, 125, 224, 57, 239, 96, 208, 58, 223, 95, 224, 59, 207, 66, 208, 60, 191, 65, 224, 61, 175, 36, 208, 62, 159, 35, 224, 63, 143, 6, 208, 64, 127, 5, 224, 65, 92, 129, 224, 66, 94, 231, 224, 67, 65, 183, 240, 68, 45, 166, 96, 69, 18, 253, 80, 70, 14, 217, 224, 70, 232, 111, 112, 71, 236, 24, 224, 72, 187, 6, 80, 73, 203, 250, 224, 74, 160, 60, 96, 75, 171, 220, 224, 76, 97, 189, 208, 77, 148, 249, 156, 78, 53, 194, 80, 78, 92, 11, 224, 78, 132, 220, 80, 79, 116, 219, 96, 80, 91, 145, 224, 81, 84, 189, 96, 82, 68, 160, 80, 83, 52, 159, 96, 84, 73, 108, 80, 85, 21, 210, 224, 86, 41, 78, 80, 86, 245, 194, 240, 88, 19, 202, 96, 88, 213, 164, 240, 89, 243, 172, 96, 90, 181, 134, 240, 91, 211, 142, 96, 92, 149, 104, 240, 93, 179, 112, 96, 94, 126, 133, 112, 95, 156, 140, 224, 96, 94, 103, 112, 97, 124, 110, 224, 98, 62, 73, 112, 99, 92, 80, 224, 100, 30, 43, 112, 101, 60, 50, 224, 101, 254, 13, 112, 103, 28, 20, 224, 103, 221, 239, 112, 104, 251, 246, 224, 105, 199, 11, 240, 106, 229, 19, 96, 107, 166, 237, 240, 108, 196, 245, 96, 109, 134, 207, 240, 110, 164, 215, 96, 111, 102, 177, 240, 112, 132, 185, 96, 113, 70, 147, 240, 114, 100, 155, 96, 115, 38, 117, 240, 116, 68, 125, 96, 117, 15, 146, 112, 118, 45, 153, 224, 118, 239, 116, 112, 120, 13, 123, 224, 120, 207, 86, 112, 121, 237, 93, 224, 122, 175, 56, 112, 123, 205, 63, 224, 124, 143, 26, 112, 125, 173, 33, 224, 126, 120, 54, 240, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 231, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 52, 46, 54, 47, 49, 44, 77, 49, 48, 46, 53, 46, 54, 47, 49, 10}, + "zoneinfo/Asia/Hebron": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 39, 66, 80, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 19, 232, 170, 224, 20, 32, 9, 224, 26, 249, 116, 224, 27, 141, 28, 224, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 48, 231, 7, 224, 49, 100, 70, 96, 50, 65, 194, 96, 51, 68, 40, 96, 52, 33, 164, 96, 53, 36, 10, 96, 54, 1, 134, 96, 55, 22, 97, 96, 56, 6, 68, 80, 56, 255, 125, 224, 57, 239, 96, 208, 58, 223, 95, 224, 59, 207, 66, 208, 60, 191, 65, 224, 61, 175, 36, 208, 62, 159, 35, 224, 63, 143, 6, 208, 64, 127, 5, 224, 65, 92, 129, 224, 66, 94, 231, 224, 67, 65, 183, 240, 68, 45, 166, 96, 69, 18, 253, 80, 70, 14, 217, 224, 70, 232, 111, 112, 71, 236, 24, 224, 72, 187, 6, 80, 73, 203, 250, 224, 74, 160, 60, 96, 75, 171, 220, 224, 76, 97, 189, 208, 77, 148, 249, 156, 78, 53, 194, 80, 78, 92, 11, 224, 78, 132, 220, 80, 79, 116, 219, 96, 80, 91, 145, 224, 81, 84, 189, 96, 82, 68, 160, 80, 83, 52, 159, 96, 84, 73, 108, 80, 85, 21, 210, 224, 86, 41, 78, 80, 86, 245, 194, 240, 88, 19, 202, 96, 88, 213, 164, 240, 89, 243, 172, 96, 90, 181, 134, 240, 91, 211, 142, 96, 92, 157, 67, 224, 93, 179, 112, 96, 94, 125, 37, 224, 95, 156, 140, 224, 96, 93, 7, 224, 97, 124, 110, 224, 98, 60, 233, 224, 99, 92, 80, 224, 100, 38, 6, 96, 101, 60, 50, 224, 102, 5, 232, 96, 103, 28, 20, 224, 103, 229, 202, 96, 104, 251, 246, 224, 105, 197, 172, 96, 106, 229, 19, 96, 107, 165, 142, 96, 108, 196, 245, 96, 109, 142, 170, 224, 110, 164, 215, 96, 111, 110, 140, 224, 112, 132, 185, 96, 113, 78, 110, 224, 114, 100, 155, 96, 115, 46, 80, 224, 116, 68, 125, 96, 117, 14, 50, 224, 118, 45, 153, 224, 118, 238, 20, 224, 120, 13, 123, 224, 120, 215, 49, 96, 121, 237, 93, 224, 122, 183, 19, 96, 123, 205, 63, 224, 124, 150, 245, 96, 125, 173, 33, 224, 126, 118, 215, 96, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 231, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 125, 189, 74, 25, 255, 255, 255, 255, 200, 89, 178, 224, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 205, 172, 254, 0, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 201, 112, 255, 255, 255, 255, 211, 101, 176, 128, 255, 255, 255, 255, 212, 107, 224, 208, 255, 255, 255, 255, 232, 54, 99, 96, 255, 255, 255, 255, 232, 244, 45, 80, 255, 255, 255, 255, 234, 11, 185, 96, 255, 255, 255, 255, 234, 213, 96, 208, 255, 255, 255, 255, 235, 236, 250, 240, 255, 255, 255, 255, 236, 181, 109, 0, 255, 255, 255, 255, 237, 207, 127, 240, 255, 255, 255, 255, 238, 151, 242, 0, 255, 255, 255, 255, 239, 176, 179, 112, 255, 255, 255, 255, 240, 121, 37, 128, 255, 255, 255, 255, 241, 145, 230, 240, 255, 255, 255, 255, 242, 90, 89, 0, 255, 255, 255, 255, 243, 115, 26, 112, 255, 255, 255, 255, 244, 59, 140, 128, 255, 255, 255, 255, 245, 85, 159, 112, 255, 255, 255, 255, 246, 30, 17, 128, 255, 255, 255, 255, 247, 54, 210, 240, 255, 255, 255, 255, 247, 255, 69, 0, 255, 255, 255, 255, 249, 24, 6, 112, 255, 255, 255, 255, 249, 225, 202, 0, 255, 255, 255, 255, 250, 249, 57, 240, 255, 255, 255, 255, 251, 39, 66, 80, 0, 0, 0, 0, 8, 124, 139, 224, 0, 0, 0, 0, 8, 253, 176, 208, 0, 0, 0, 0, 9, 246, 234, 96, 0, 0, 0, 0, 10, 166, 51, 208, 0, 0, 0, 0, 19, 232, 170, 224, 0, 0, 0, 0, 20, 32, 9, 224, 0, 0, 0, 0, 26, 249, 116, 224, 0, 0, 0, 0, 27, 141, 28, 224, 0, 0, 0, 0, 28, 190, 248, 224, 0, 0, 0, 0, 29, 137, 241, 208, 0, 0, 0, 0, 30, 204, 255, 96, 0, 0, 0, 0, 31, 96, 153, 80, 0, 0, 0, 0, 32, 130, 177, 96, 0, 0, 0, 0, 33, 73, 181, 208, 0, 0, 0, 0, 34, 94, 158, 224, 0, 0, 0, 0, 35, 32, 93, 80, 0, 0, 0, 0, 36, 90, 48, 96, 0, 0, 0, 0, 37, 0, 63, 80, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 38, 214, 230, 208, 0, 0, 0, 0, 39, 235, 207, 224, 0, 0, 0, 0, 40, 192, 3, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 169, 31, 208, 0, 0, 0, 0, 43, 187, 101, 224, 0, 0, 0, 0, 44, 137, 1, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 95, 169, 80, 0, 0, 0, 0, 47, 123, 41, 224, 0, 0, 0, 0, 48, 72, 197, 208, 0, 0, 0, 0, 48, 231, 7, 224, 0, 0, 0, 0, 49, 100, 70, 96, 0, 0, 0, 0, 50, 65, 194, 96, 0, 0, 0, 0, 51, 68, 40, 96, 0, 0, 0, 0, 52, 33, 164, 96, 0, 0, 0, 0, 53, 36, 10, 96, 0, 0, 0, 0, 54, 1, 134, 96, 0, 0, 0, 0, 55, 22, 97, 96, 0, 0, 0, 0, 56, 6, 68, 80, 0, 0, 0, 0, 56, 255, 125, 224, 0, 0, 0, 0, 57, 239, 96, 208, 0, 0, 0, 0, 58, 223, 95, 224, 0, 0, 0, 0, 59, 207, 66, 208, 0, 0, 0, 0, 60, 191, 65, 224, 0, 0, 0, 0, 61, 175, 36, 208, 0, 0, 0, 0, 62, 159, 35, 224, 0, 0, 0, 0, 63, 143, 6, 208, 0, 0, 0, 0, 64, 127, 5, 224, 0, 0, 0, 0, 65, 92, 129, 224, 0, 0, 0, 0, 66, 94, 231, 224, 0, 0, 0, 0, 67, 65, 183, 240, 0, 0, 0, 0, 68, 45, 166, 96, 0, 0, 0, 0, 69, 18, 253, 80, 0, 0, 0, 0, 70, 14, 217, 224, 0, 0, 0, 0, 70, 232, 111, 112, 0, 0, 0, 0, 71, 236, 24, 224, 0, 0, 0, 0, 72, 187, 6, 80, 0, 0, 0, 0, 73, 203, 250, 224, 0, 0, 0, 0, 74, 160, 60, 96, 0, 0, 0, 0, 75, 171, 220, 224, 0, 0, 0, 0, 76, 97, 189, 208, 0, 0, 0, 0, 77, 148, 249, 156, 0, 0, 0, 0, 78, 53, 194, 80, 0, 0, 0, 0, 78, 92, 11, 224, 0, 0, 0, 0, 78, 132, 220, 80, 0, 0, 0, 0, 79, 116, 219, 96, 0, 0, 0, 0, 80, 91, 145, 224, 0, 0, 0, 0, 81, 84, 189, 96, 0, 0, 0, 0, 82, 68, 160, 80, 0, 0, 0, 0, 83, 52, 159, 96, 0, 0, 0, 0, 84, 73, 108, 80, 0, 0, 0, 0, 85, 21, 210, 224, 0, 0, 0, 0, 86, 41, 78, 80, 0, 0, 0, 0, 86, 245, 194, 240, 0, 0, 0, 0, 88, 19, 202, 96, 0, 0, 0, 0, 88, 213, 164, 240, 0, 0, 0, 0, 89, 243, 172, 96, 0, 0, 0, 0, 90, 181, 134, 240, 0, 0, 0, 0, 91, 211, 142, 96, 0, 0, 0, 0, 92, 157, 67, 224, 0, 0, 0, 0, 93, 179, 112, 96, 0, 0, 0, 0, 94, 125, 37, 224, 0, 0, 0, 0, 95, 156, 140, 224, 0, 0, 0, 0, 96, 93, 7, 224, 0, 0, 0, 0, 97, 124, 110, 224, 0, 0, 0, 0, 98, 60, 233, 224, 0, 0, 0, 0, 99, 92, 80, 224, 0, 0, 0, 0, 100, 38, 6, 96, 0, 0, 0, 0, 101, 60, 50, 224, 0, 0, 0, 0, 102, 5, 232, 96, 0, 0, 0, 0, 103, 28, 20, 224, 0, 0, 0, 0, 103, 229, 202, 96, 0, 0, 0, 0, 104, 251, 246, 224, 0, 0, 0, 0, 105, 197, 172, 96, 0, 0, 0, 0, 106, 229, 19, 96, 0, 0, 0, 0, 107, 165, 142, 96, 0, 0, 0, 0, 108, 196, 245, 96, 0, 0, 0, 0, 109, 142, 170, 224, 0, 0, 0, 0, 110, 164, 215, 96, 0, 0, 0, 0, 111, 110, 140, 224, 0, 0, 0, 0, 112, 132, 185, 96, 0, 0, 0, 0, 113, 78, 110, 224, 0, 0, 0, 0, 114, 100, 155, 96, 0, 0, 0, 0, 115, 46, 80, 224, 0, 0, 0, 0, 116, 68, 125, 96, 0, 0, 0, 0, 117, 14, 50, 224, 0, 0, 0, 0, 118, 45, 153, 224, 0, 0, 0, 0, 118, 238, 20, 224, 0, 0, 0, 0, 120, 13, 123, 224, 0, 0, 0, 0, 120, 215, 49, 96, 0, 0, 0, 0, 121, 237, 93, 224, 0, 0, 0, 0, 122, 183, 19, 96, 0, 0, 0, 0, 123, 205, 63, 224, 0, 0, 0, 0, 124, 150, 245, 96, 0, 0, 0, 0, 125, 173, 33, 224, 0, 0, 0, 0, 126, 118, 215, 96, 0, 0, 0, 0, 127, 150, 62, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 1, 5, 1, 5, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 32, 231, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 9, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 0, 0, 0, 0, 0, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 53, 47, 48, 44, 77, 49, 48, 46, 53, 46, 54, 47, 49, 10}, - "zoneinfo/Asia/Ho_Chi_Minh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 21, 136, 140, 67, 128, 145, 163, 43, 10, 205, 53, 230, 128, 209, 89, 206, 112, 210, 59, 62, 240, 213, 50, 187, 16, 228, 182, 228, 128, 237, 47, 152, 0, 10, 61, 199, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Ho_Chi_Minh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 21, 136, 140, 67, 128, 145, 163, 43, 10, 205, 53, 230, 128, 209, 89, 206, 112, 210, 59, 62, 240, 213, 50, 187, 16, 228, 182, 228, 128, 237, 47, 152, 0, 10, 61, 199, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 136, 140, 67, 128, 255, 255, 255, 255, 145, 163, 43, 10, 255, 255, 255, 255, 205, 53, 230, 128, 255, 255, 255, 255, 209, 89, 206, 112, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 213, 50, 187, 16, 255, 255, 255, 255, 228, 182, 228, 128, 255, 255, 255, 255, 237, 47, 152, 0, 0, 0, 0, 0, 10, 61, 199, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Hong_Kong": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 6, 0, 0, 0, 17, 133, 105, 99, 144, 202, 77, 56, 56, 202, 219, 147, 48, 203, 75, 113, 120, 210, 77, 179, 240, 211, 106, 183, 56, 212, 147, 74, 168, 213, 66, 176, 56, 214, 154, 185, 168, 215, 62, 65, 184, 216, 46, 36, 168, 216, 249, 57, 184, 218, 14, 6, 168, 218, 217, 27, 184, 219, 237, 232, 168, 220, 184, 253, 184, 221, 205, 202, 168, 222, 162, 26, 56, 223, 182, 231, 40, 224, 129, 252, 56, 225, 150, 201, 40, 226, 79, 105, 56, 227, 118, 171, 40, 228, 47, 75, 56, 229, 95, 199, 168, 230, 15, 45, 56, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 97, 40, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 2, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 107, 10, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 72, 75, 84, 0, 72, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 75, 84, 45, 56, 10}, + "zoneinfo/Asia/Hong_Kong": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 7, 0, 0, 0, 17, 133, 105, 99, 144, 202, 77, 49, 48, 202, 219, 147, 48, 203, 75, 113, 120, 210, 160, 222, 144, 211, 107, 215, 128, 212, 147, 88, 184, 213, 66, 176, 56, 214, 115, 58, 184, 215, 62, 65, 184, 216, 46, 50, 184, 216, 249, 57, 184, 218, 14, 20, 184, 218, 217, 27, 184, 219, 237, 246, 184, 220, 184, 253, 184, 221, 205, 216, 184, 222, 162, 26, 56, 223, 182, 245, 56, 224, 129, 252, 56, 225, 150, 201, 40, 226, 79, 105, 56, 227, 118, 171, 40, 228, 47, 75, 56, 229, 95, 199, 168, 230, 15, 45, 56, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 97, 40, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 2, 3, 4, 1, 2, 5, 6, 5, 6, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 107, 10, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 76, 77, 84, 0, 72, 75, 84, 0, 72, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 133, 105, 99, 144, 255, 255, 255, 255, 202, 77, 49, 48, 255, 255, 255, 255, 202, 219, 147, 48, 255, 255, 255, 255, 203, 75, 113, 120, 255, 255, 255, 255, 210, 160, 222, 144, 255, 255, 255, 255, 211, 107, 215, 128, 255, 255, 255, 255, 212, 147, 88, 184, 255, 255, 255, 255, 213, 66, 176, 56, 255, 255, 255, 255, 214, 115, 58, 184, 255, 255, 255, 255, 215, 62, 65, 184, 255, 255, 255, 255, 216, 46, 50, 184, 255, 255, 255, 255, 216, 249, 57, 184, 255, 255, 255, 255, 218, 14, 20, 184, 255, 255, 255, 255, 218, 217, 27, 184, 255, 255, 255, 255, 219, 237, 246, 184, 255, 255, 255, 255, 220, 184, 253, 184, 255, 255, 255, 255, 221, 205, 216, 184, 255, 255, 255, 255, 222, 162, 26, 56, 255, 255, 255, 255, 223, 182, 245, 56, 255, 255, 255, 255, 224, 129, 252, 56, 255, 255, 255, 255, 225, 150, 201, 40, 255, 255, 255, 255, 226, 79, 105, 56, 255, 255, 255, 255, 227, 118, 171, 40, 255, 255, 255, 255, 228, 47, 75, 56, 255, 255, 255, 255, 229, 95, 199, 168, 255, 255, 255, 255, 230, 15, 45, 56, 255, 255, 255, 255, 231, 63, 169, 168, 255, 255, 255, 255, 231, 248, 73, 184, 255, 255, 255, 255, 233, 31, 139, 168, 255, 255, 255, 255, 233, 216, 43, 184, 255, 255, 255, 255, 234, 255, 109, 168, 255, 255, 255, 255, 235, 184, 13, 184, 255, 255, 255, 255, 236, 223, 79, 168, 255, 255, 255, 255, 237, 151, 239, 184, 255, 255, 255, 255, 238, 200, 108, 40, 255, 255, 255, 255, 239, 119, 209, 184, 255, 255, 255, 255, 240, 168, 78, 40, 255, 255, 255, 255, 241, 87, 179, 184, 255, 255, 255, 255, 242, 136, 48, 40, 255, 255, 255, 255, 243, 64, 208, 56, 255, 255, 255, 255, 244, 104, 18, 40, 255, 255, 255, 255, 245, 32, 178, 56, 255, 255, 255, 255, 246, 71, 244, 40, 255, 255, 255, 255, 247, 37, 126, 56, 255, 255, 255, 255, 248, 21, 97, 40, 255, 255, 255, 255, 249, 5, 96, 56, 255, 255, 255, 255, 249, 245, 67, 40, 255, 255, 255, 255, 250, 229, 66, 56, 255, 255, 255, 255, 251, 222, 95, 168, 255, 255, 255, 255, 252, 206, 94, 184, 255, 255, 255, 255, 253, 190, 65, 168, 255, 255, 255, 255, 254, 174, 64, 184, 255, 255, 255, 255, 255, 158, 35, 168, 0, 0, 0, 0, 0, 142, 34, 184, 0, 0, 0, 0, 1, 126, 5, 168, 0, 0, 0, 0, 2, 110, 4, 184, 0, 0, 0, 0, 3, 93, 231, 168, 0, 0, 0, 0, 4, 77, 230, 184, 0, 0, 0, 0, 5, 71, 4, 40, 0, 0, 0, 0, 6, 55, 3, 56, 0, 0, 0, 0, 7, 38, 230, 40, 0, 0, 0, 0, 7, 131, 61, 56, 0, 0, 0, 0, 9, 6, 200, 40, 0, 0, 0, 0, 9, 246, 199, 56, 0, 0, 0, 0, 10, 230, 170, 40, 0, 0, 0, 0, 11, 214, 169, 56, 0, 0, 0, 0, 12, 198, 140, 40, 0, 0, 0, 0, 17, 155, 57, 56, 0, 0, 0, 0, 18, 111, 108, 168, 1, 2, 3, 4, 1, 2, 5, 6, 5, 6, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 107, 10, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 76, 77, 84, 0, 72, 75, 84, 0, 72, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 10, 72, 75, 84, 45, 56, 10}, - "zoneinfo/Asia/Hovd": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 134, 211, 252, 148, 15, 11, 234, 160, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 62, 128, 28, 172, 61, 144, 29, 156, 32, 128, 30, 140, 31, 144, 31, 124, 2, 128, 32, 108, 1, 144, 33, 91, 228, 128, 34, 75, 227, 144, 35, 59, 198, 128, 36, 43, 197, 144, 37, 27, 168, 128, 38, 11, 167, 144, 39, 4, 197, 0, 39, 244, 196, 16, 40, 228, 167, 0, 41, 212, 166, 16, 42, 196, 137, 0, 43, 180, 136, 16, 44, 164, 107, 0, 45, 148, 106, 16, 46, 132, 77, 0, 47, 116, 76, 16, 48, 100, 47, 0, 49, 93, 104, 144, 50, 77, 75, 128, 51, 61, 74, 144, 52, 45, 45, 128, 53, 29, 44, 144, 54, 13, 15, 128, 58, 233, 193, 176, 59, 180, 186, 160, 60, 164, 185, 176, 61, 148, 156, 160, 62, 132, 155, 176, 63, 116, 126, 160, 64, 100, 125, 176, 65, 84, 96, 160, 66, 68, 95, 176, 67, 52, 66, 160, 68, 36, 65, 176, 69, 29, 95, 32, 85, 21, 168, 176, 86, 5, 111, 128, 86, 245, 138, 176, 87, 229, 81, 128, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 85, 236, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Hovd": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 134, 211, 252, 148, 15, 11, 234, 160, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 62, 128, 28, 172, 61, 144, 29, 156, 32, 128, 30, 140, 31, 144, 31, 124, 2, 128, 32, 108, 1, 144, 33, 91, 228, 128, 34, 75, 227, 144, 35, 59, 198, 128, 36, 43, 197, 144, 37, 27, 168, 128, 38, 11, 167, 144, 39, 4, 197, 0, 39, 244, 196, 16, 40, 228, 167, 0, 41, 212, 166, 16, 42, 196, 137, 0, 43, 180, 136, 16, 44, 164, 107, 0, 45, 148, 106, 16, 46, 132, 77, 0, 47, 116, 76, 16, 48, 100, 47, 0, 49, 93, 104, 144, 50, 77, 75, 128, 51, 61, 74, 144, 52, 45, 45, 128, 53, 29, 44, 144, 54, 13, 15, 128, 58, 233, 193, 176, 59, 180, 186, 160, 60, 164, 185, 176, 61, 148, 156, 160, 62, 132, 155, 176, 63, 116, 126, 160, 64, 100, 125, 176, 65, 84, 96, 160, 66, 68, 95, 176, 67, 52, 66, 160, 68, 36, 65, 176, 69, 29, 95, 32, 85, 21, 168, 176, 86, 5, 111, 128, 86, 245, 138, 176, 87, 229, 81, 128, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 85, 236, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 134, 211, 252, 148, 0, 0, 0, 0, 15, 11, 234, 160, 0, 0, 0, 0, 24, 233, 214, 144, 0, 0, 0, 0, 25, 219, 11, 0, 0, 0, 0, 0, 26, 204, 91, 144, 0, 0, 0, 0, 27, 188, 62, 128, 0, 0, 0, 0, 28, 172, 61, 144, 0, 0, 0, 0, 29, 156, 32, 128, 0, 0, 0, 0, 30, 140, 31, 144, 0, 0, 0, 0, 31, 124, 2, 128, 0, 0, 0, 0, 32, 108, 1, 144, 0, 0, 0, 0, 33, 91, 228, 128, 0, 0, 0, 0, 34, 75, 227, 144, 0, 0, 0, 0, 35, 59, 198, 128, 0, 0, 0, 0, 36, 43, 197, 144, 0, 0, 0, 0, 37, 27, 168, 128, 0, 0, 0, 0, 38, 11, 167, 144, 0, 0, 0, 0, 39, 4, 197, 0, 0, 0, 0, 0, 39, 244, 196, 16, 0, 0, 0, 0, 40, 228, 167, 0, 0, 0, 0, 0, 41, 212, 166, 16, 0, 0, 0, 0, 42, 196, 137, 0, 0, 0, 0, 0, 43, 180, 136, 16, 0, 0, 0, 0, 44, 164, 107, 0, 0, 0, 0, 0, 45, 148, 106, 16, 0, 0, 0, 0, 46, 132, 77, 0, 0, 0, 0, 0, 47, 116, 76, 16, 0, 0, 0, 0, 48, 100, 47, 0, 0, 0, 0, 0, 49, 93, 104, 144, 0, 0, 0, 0, 50, 77, 75, 128, 0, 0, 0, 0, 51, 61, 74, 144, 0, 0, 0, 0, 52, 45, 45, 128, 0, 0, 0, 0, 53, 29, 44, 144, 0, 0, 0, 0, 54, 13, 15, 128, 0, 0, 0, 0, 58, 233, 193, 176, 0, 0, 0, 0, 59, 180, 186, 160, 0, 0, 0, 0, 60, 164, 185, 176, 0, 0, 0, 0, 61, 148, 156, 160, 0, 0, 0, 0, 62, 132, 155, 176, 0, 0, 0, 0, 63, 116, 126, 160, 0, 0, 0, 0, 64, 100, 125, 176, 0, 0, 0, 0, 65, 84, 96, 160, 0, 0, 0, 0, 66, 68, 95, 176, 0, 0, 0, 0, 67, 52, 66, 160, 0, 0, 0, 0, 68, 36, 65, 176, 0, 0, 0, 0, 69, 29, 95, 32, 0, 0, 0, 0, 85, 21, 168, 176, 0, 0, 0, 0, 86, 5, 111, 128, 0, 0, 0, 0, 86, 245, 138, 176, 0, 0, 0, 0, 87, 229, 81, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 85, 236, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Irkutsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 128, 0, 0, 0, 162, 18, 15, 191, 181, 163, 211, 16, 21, 39, 97, 128, 22, 24, 149, 240, 23, 8, 149, 0, 23, 249, 201, 112, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 90, 160, 28, 172, 75, 160, 29, 156, 60, 160, 30, 140, 45, 160, 31, 124, 30, 160, 32, 108, 15, 160, 33, 92, 0, 160, 34, 75, 241, 160, 35, 59, 226, 160, 36, 43, 211, 160, 37, 27, 196, 160, 38, 11, 181, 160, 39, 4, 225, 32, 39, 244, 210, 32, 40, 228, 209, 48, 41, 120, 121, 48, 41, 212, 180, 32, 42, 196, 165, 32, 43, 180, 150, 32, 44, 164, 135, 32, 45, 148, 120, 32, 46, 132, 105, 32, 47, 116, 90, 32, 48, 100, 75, 32, 49, 93, 118, 160, 50, 114, 81, 160, 51, 61, 88, 160, 52, 82, 51, 160, 53, 29, 58, 160, 54, 50, 21, 160, 54, 253, 28, 160, 56, 27, 50, 32, 56, 220, 254, 160, 57, 251, 20, 32, 58, 188, 224, 160, 59, 218, 246, 32, 60, 165, 253, 32, 61, 186, 216, 32, 62, 133, 223, 32, 63, 154, 186, 32, 64, 101, 193, 32, 65, 131, 214, 160, 66, 69, 163, 32, 67, 99, 184, 160, 68, 37, 133, 32, 69, 67, 154, 160, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 74, 227, 64, 160, 75, 174, 71, 160, 76, 204, 93, 32, 77, 142, 41, 160, 84, 75, 215, 16, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 97, 193, 0, 0, 0, 0, 97, 193, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 1, 16, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 73, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Irkutsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 128, 0, 0, 0, 162, 18, 15, 191, 181, 163, 211, 16, 21, 39, 97, 128, 22, 24, 149, 240, 23, 8, 149, 0, 23, 249, 201, 112, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 90, 160, 28, 172, 75, 160, 29, 156, 60, 160, 30, 140, 45, 160, 31, 124, 30, 160, 32, 108, 15, 160, 33, 92, 0, 160, 34, 75, 241, 160, 35, 59, 226, 160, 36, 43, 211, 160, 37, 27, 196, 160, 38, 11, 181, 160, 39, 4, 225, 32, 39, 244, 210, 32, 40, 228, 209, 48, 41, 120, 121, 48, 41, 212, 180, 32, 42, 196, 165, 32, 43, 180, 150, 32, 44, 164, 135, 32, 45, 148, 120, 32, 46, 132, 105, 32, 47, 116, 90, 32, 48, 100, 75, 32, 49, 93, 118, 160, 50, 114, 81, 160, 51, 61, 88, 160, 52, 82, 51, 160, 53, 29, 58, 160, 54, 50, 21, 160, 54, 253, 28, 160, 56, 27, 50, 32, 56, 220, 254, 160, 57, 251, 20, 32, 58, 188, 224, 160, 59, 218, 246, 32, 60, 165, 253, 32, 61, 186, 216, 32, 62, 133, 223, 32, 63, 154, 186, 32, 64, 101, 193, 32, 65, 131, 214, 160, 66, 69, 163, 32, 67, 99, 184, 160, 68, 37, 133, 32, 69, 67, 154, 160, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 74, 227, 64, 160, 75, 174, 71, 160, 76, 204, 93, 32, 77, 142, 41, 160, 84, 75, 215, 16, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 97, 193, 0, 0, 0, 0, 97, 193, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 1, 16, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 73, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 255, 255, 255, 255, 86, 182, 130, 63, 255, 255, 255, 255, 162, 18, 15, 191, 255, 255, 255, 255, 181, 163, 211, 16, 0, 0, 0, 0, 21, 39, 97, 128, 0, 0, 0, 0, 22, 24, 149, 240, 0, 0, 0, 0, 23, 8, 149, 0, 0, 0, 0, 0, 23, 249, 201, 112, 0, 0, 0, 0, 24, 233, 200, 128, 0, 0, 0, 0, 25, 218, 252, 240, 0, 0, 0, 0, 26, 204, 77, 128, 0, 0, 0, 0, 27, 188, 90, 160, 0, 0, 0, 0, 28, 172, 75, 160, 0, 0, 0, 0, 29, 156, 60, 160, 0, 0, 0, 0, 30, 140, 45, 160, 0, 0, 0, 0, 31, 124, 30, 160, 0, 0, 0, 0, 32, 108, 15, 160, 0, 0, 0, 0, 33, 92, 0, 160, 0, 0, 0, 0, 34, 75, 241, 160, 0, 0, 0, 0, 35, 59, 226, 160, 0, 0, 0, 0, 36, 43, 211, 160, 0, 0, 0, 0, 37, 27, 196, 160, 0, 0, 0, 0, 38, 11, 181, 160, 0, 0, 0, 0, 39, 4, 225, 32, 0, 0, 0, 0, 39, 244, 210, 32, 0, 0, 0, 0, 40, 228, 209, 48, 0, 0, 0, 0, 41, 120, 121, 48, 0, 0, 0, 0, 41, 212, 180, 32, 0, 0, 0, 0, 42, 196, 165, 32, 0, 0, 0, 0, 43, 180, 150, 32, 0, 0, 0, 0, 44, 164, 135, 32, 0, 0, 0, 0, 45, 148, 120, 32, 0, 0, 0, 0, 46, 132, 105, 32, 0, 0, 0, 0, 47, 116, 90, 32, 0, 0, 0, 0, 48, 100, 75, 32, 0, 0, 0, 0, 49, 93, 118, 160, 0, 0, 0, 0, 50, 114, 81, 160, 0, 0, 0, 0, 51, 61, 88, 160, 0, 0, 0, 0, 52, 82, 51, 160, 0, 0, 0, 0, 53, 29, 58, 160, 0, 0, 0, 0, 54, 50, 21, 160, 0, 0, 0, 0, 54, 253, 28, 160, 0, 0, 0, 0, 56, 27, 50, 32, 0, 0, 0, 0, 56, 220, 254, 160, 0, 0, 0, 0, 57, 251, 20, 32, 0, 0, 0, 0, 58, 188, 224, 160, 0, 0, 0, 0, 59, 218, 246, 32, 0, 0, 0, 0, 60, 165, 253, 32, 0, 0, 0, 0, 61, 186, 216, 32, 0, 0, 0, 0, 62, 133, 223, 32, 0, 0, 0, 0, 63, 154, 186, 32, 0, 0, 0, 0, 64, 101, 193, 32, 0, 0, 0, 0, 65, 131, 214, 160, 0, 0, 0, 0, 66, 69, 163, 32, 0, 0, 0, 0, 67, 99, 184, 160, 0, 0, 0, 0, 68, 37, 133, 32, 0, 0, 0, 0, 69, 67, 154, 160, 0, 0, 0, 0, 70, 5, 103, 32, 0, 0, 0, 0, 71, 35, 124, 160, 0, 0, 0, 0, 71, 238, 131, 160, 0, 0, 0, 0, 73, 3, 94, 160, 0, 0, 0, 0, 73, 206, 101, 160, 0, 0, 0, 0, 74, 227, 64, 160, 0, 0, 0, 0, 75, 174, 71, 160, 0, 0, 0, 0, 76, 204, 93, 32, 0, 0, 0, 0, 77, 142, 41, 160, 0, 0, 0, 0, 84, 75, 215, 16, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 97, 193, 0, 0, 0, 0, 97, 193, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 1, 16, 0, 0, 98, 112, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 73, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Istanbul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 69, 152, 50, 224, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Istanbul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 11, 0, 0, 0, 25, 255, 255, 255, 255, 86, 182, 200, 216, 255, 255, 255, 255, 144, 139, 245, 152, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 190, 208, 255, 255, 255, 255, 162, 101, 99, 224, 255, 255, 255, 255, 163, 123, 130, 80, 255, 255, 255, 255, 164, 78, 128, 96, 255, 255, 255, 255, 165, 63, 180, 208, 255, 255, 255, 255, 166, 37, 39, 224, 255, 255, 255, 255, 167, 39, 127, 208, 255, 255, 255, 255, 170, 40, 40, 96, 255, 255, 255, 255, 170, 225, 253, 208, 255, 255, 255, 255, 171, 249, 137, 224, 255, 255, 255, 255, 172, 195, 49, 80, 255, 255, 255, 255, 200, 127, 238, 96, 255, 255, 255, 255, 200, 255, 193, 208, 255, 255, 255, 255, 201, 74, 245, 96, 255, 255, 255, 255, 202, 206, 128, 80, 255, 255, 255, 255, 203, 203, 174, 96, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 209, 113, 235, 224, 255, 255, 255, 255, 210, 107, 9, 80, 255, 255, 255, 255, 211, 162, 57, 96, 255, 255, 255, 255, 212, 67, 2, 80, 255, 255, 255, 255, 213, 76, 13, 224, 255, 255, 255, 255, 214, 41, 123, 208, 255, 255, 255, 255, 215, 43, 239, 224, 255, 255, 255, 255, 216, 9, 93, 208, 255, 255, 255, 255, 217, 2, 151, 96, 255, 255, 255, 255, 217, 233, 63, 208, 255, 255, 255, 255, 218, 239, 168, 96, 255, 255, 255, 255, 219, 210, 92, 80, 255, 255, 255, 255, 220, 212, 208, 96, 255, 255, 255, 255, 221, 179, 143, 208, 255, 255, 255, 255, 241, 244, 185, 96, 255, 255, 255, 255, 242, 100, 186, 208, 255, 255, 255, 255, 245, 104, 6, 96, 255, 255, 255, 255, 246, 31, 56, 208, 0, 0, 0, 0, 0, 160, 186, 224, 0, 0, 0, 0, 1, 107, 179, 208, 0, 0, 0, 0, 2, 128, 156, 224, 0, 0, 0, 0, 3, 75, 149, 208, 0, 0, 0, 0, 4, 105, 185, 96, 0, 0, 0, 0, 5, 52, 178, 80, 0, 0, 0, 0, 6, 110, 147, 112, 0, 0, 0, 0, 7, 57, 168, 128, 0, 0, 0, 0, 7, 251, 117, 0, 0, 0, 0, 0, 9, 25, 166, 160, 0, 0, 0, 0, 9, 219, 58, 224, 0, 0, 0, 0, 10, 240, 7, 208, 0, 0, 0, 0, 12, 16, 206, 96, 0, 0, 0, 0, 12, 217, 36, 80, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 166, 145, 80, 0, 0, 0, 0, 15, 132, 27, 96, 0, 0, 0, 0, 16, 134, 115, 80, 0, 0, 0, 0, 18, 103, 152, 192, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 71, 122, 192, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 39, 92, 192, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 24, 7, 62, 192, 0, 0, 0, 0, 25, 137, 148, 80, 0, 0, 0, 0, 25, 220, 148, 192, 0, 0, 0, 0, 28, 198, 211, 208, 0, 0, 0, 0, 29, 155, 21, 80, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 9, 112, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 139, 131, 240, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 143, 221, 144, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 56, 190, 16, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 62, 158, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 87, 207, 46, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Jakarta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 32, 128, 0, 0, 0, 169, 120, 133, 224, 186, 22, 222, 96, 203, 191, 131, 136, 210, 86, 238, 112, 215, 60, 198, 8, 218, 255, 38, 0, 244, 181, 190, 136, 1, 2, 3, 4, 3, 5, 3, 6, 0, 0, 100, 32, 0, 0, 0, 0, 100, 32, 0, 4, 0, 0, 103, 32, 0, 8, 0, 0, 105, 120, 0, 14, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 24, 0, 0, 98, 112, 0, 28, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 66, 45, 55, 10}, + "zoneinfo/Asia/Jakarta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 32, 128, 0, 0, 0, 169, 120, 133, 224, 186, 22, 222, 96, 203, 191, 131, 136, 210, 86, 238, 112, 215, 60, 198, 8, 218, 255, 38, 0, 244, 181, 190, 136, 1, 2, 3, 4, 3, 5, 3, 6, 0, 0, 100, 32, 0, 0, 0, 0, 100, 32, 0, 4, 0, 0, 103, 32, 0, 8, 0, 0, 105, 120, 0, 14, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 24, 0, 0, 98, 112, 0, 28, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 66, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 32, 255, 255, 255, 255, 63, 102, 73, 96, 255, 255, 255, 255, 169, 120, 133, 224, 255, 255, 255, 255, 186, 22, 222, 96, 255, 255, 255, 255, 203, 191, 131, 136, 255, 255, 255, 255, 210, 86, 238, 112, 255, 255, 255, 255, 215, 60, 198, 8, 255, 255, 255, 255, 218, 255, 38, 0, 255, 255, 255, 255, 244, 181, 190, 136, 1, 2, 3, 4, 3, 5, 3, 6, 0, 0, 100, 32, 0, 0, 0, 0, 100, 32, 0, 4, 0, 0, 103, 32, 0, 8, 0, 0, 105, 120, 0, 14, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 24, 0, 0, 98, 112, 0, 28, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 66, 0, 10, 87, 73, 66, 45, 55, 10}, - "zoneinfo/Asia/Jayapura": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 18, 186, 22, 193, 152, 208, 88, 185, 240, 244, 181, 162, 104, 1, 2, 3, 0, 0, 131, 232, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 0, 8, 0, 0, 126, 144, 0, 14, 76, 77, 84, 0, 43, 48, 57, 0, 43, 48, 57, 51, 48, 0, 87, 73, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 84, 45, 57, 10}, + "zoneinfo/Asia/Jayapura": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 18, 186, 22, 193, 152, 208, 88, 185, 240, 244, 181, 162, 104, 1, 2, 3, 0, 0, 131, 232, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 0, 8, 0, 0, 126, 144, 0, 14, 76, 77, 84, 0, 43, 48, 57, 0, 43, 48, 57, 51, 48, 0, 87, 73, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 18, 255, 255, 255, 255, 186, 22, 193, 152, 255, 255, 255, 255, 208, 88, 185, 240, 255, 255, 255, 255, 244, 181, 162, 104, 1, 2, 3, 0, 0, 131, 232, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 0, 8, 0, 0, 126, 144, 0, 14, 76, 77, 84, 0, 43, 48, 57, 0, 43, 48, 57, 51, 48, 0, 87, 73, 84, 0, 10, 87, 73, 84, 45, 57, 10}, - "zoneinfo/Asia/Jerusalem": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Asia/Jerusalem": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 19, 232, 170, 224, 20, 32, 9, 224, 26, 249, 116, 224, 27, 141, 28, 224, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 86, 182, 194, 250, 255, 255, 255, 255, 158, 48, 69, 136, 255, 255, 255, 255, 200, 89, 178, 224, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 205, 172, 254, 0, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 201, 112, 255, 255, 255, 255, 211, 101, 176, 128, 255, 255, 255, 255, 212, 107, 224, 208, 255, 255, 255, 255, 215, 90, 20, 96, 255, 255, 255, 255, 215, 223, 31, 192, 255, 255, 255, 255, 216, 47, 181, 112, 255, 255, 255, 255, 217, 30, 70, 224, 255, 255, 255, 255, 218, 16, 232, 240, 255, 255, 255, 255, 218, 235, 179, 224, 255, 255, 255, 255, 219, 180, 52, 0, 255, 255, 255, 255, 220, 185, 32, 224, 255, 255, 255, 255, 221, 224, 141, 0, 255, 255, 255, 255, 222, 180, 206, 128, 255, 255, 255, 255, 223, 164, 191, 128, 255, 255, 255, 255, 224, 139, 118, 0, 255, 255, 255, 255, 225, 86, 125, 0, 255, 255, 255, 255, 226, 190, 74, 96, 255, 255, 255, 255, 227, 54, 52, 208, 255, 255, 255, 255, 228, 156, 247, 0, 255, 255, 255, 255, 229, 22, 22, 208, 255, 255, 255, 255, 230, 116, 211, 224, 255, 255, 255, 255, 231, 17, 210, 128, 255, 255, 255, 255, 232, 39, 255, 0, 255, 255, 255, 255, 232, 232, 79, 208, 0, 0, 0, 0, 8, 124, 139, 224, 0, 0, 0, 0, 8, 253, 176, 208, 0, 0, 0, 0, 9, 246, 234, 96, 0, 0, 0, 0, 10, 166, 51, 208, 0, 0, 0, 0, 19, 232, 170, 224, 0, 0, 0, 0, 20, 32, 9, 224, 0, 0, 0, 0, 26, 249, 116, 224, 0, 0, 0, 0, 27, 141, 28, 224, 0, 0, 0, 0, 28, 190, 248, 224, 0, 0, 0, 0, 29, 137, 241, 208, 0, 0, 0, 0, 30, 204, 255, 96, 0, 0, 0, 0, 31, 96, 153, 80, 0, 0, 0, 0, 32, 130, 177, 96, 0, 0, 0, 0, 33, 73, 181, 208, 0, 0, 0, 0, 34, 94, 158, 224, 0, 0, 0, 0, 35, 32, 93, 80, 0, 0, 0, 0, 36, 90, 48, 96, 0, 0, 0, 0, 37, 0, 63, 80, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 38, 214, 230, 208, 0, 0, 0, 0, 39, 235, 207, 224, 0, 0, 0, 0, 40, 192, 3, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 169, 31, 208, 0, 0, 0, 0, 43, 187, 101, 224, 0, 0, 0, 0, 44, 137, 1, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 95, 169, 80, 0, 0, 0, 0, 47, 123, 41, 224, 0, 0, 0, 0, 48, 72, 197, 208, 0, 0, 0, 0, 49, 72, 150, 224, 0, 0, 0, 0, 50, 60, 110, 80, 0, 0, 0, 0, 51, 49, 179, 96, 0, 0, 0, 0, 52, 26, 254, 208, 0, 0, 0, 0, 53, 17, 149, 96, 0, 0, 0, 0, 53, 241, 166, 80, 0, 0, 0, 0, 55, 4, 8, 128, 0, 0, 0, 0, 55, 207, 1, 112, 0, 0, 0, 0, 56, 246, 95, 128, 0, 0, 0, 0, 57, 220, 249, 224, 0, 0, 0, 0, 58, 208, 237, 112, 0, 0, 0, 0, 59, 174, 91, 96, 0, 0, 0, 0, 60, 163, 160, 112, 0, 0, 0, 0, 61, 160, 178, 96, 0, 0, 0, 0, 62, 131, 130, 112, 0, 0, 0, 0, 63, 124, 159, 224, 0, 0, 0, 0, 64, 115, 54, 112, 0, 0, 0, 0, 65, 80, 164, 96, 0, 0, 0, 0, 66, 76, 143, 0, 0, 0, 0, 0, 67, 72, 79, 112, 0, 0, 0, 0, 68, 44, 113, 0, 0, 0, 0, 0, 69, 30, 246, 240, 0, 0, 0, 0, 70, 12, 83, 0, 0, 0, 0, 0, 70, 236, 99, 240, 0, 0, 0, 0, 71, 236, 53, 0, 0, 0, 0, 0, 72, 231, 245, 112, 0, 0, 0, 0, 73, 204, 23, 0, 0, 0, 0, 0, 74, 190, 156, 240, 0, 0, 0, 0, 75, 171, 249, 0, 0, 0, 0, 0, 76, 140, 9, 240, 0, 0, 0, 0, 77, 149, 21, 128, 0, 0, 0, 0, 78, 135, 155, 112, 0, 0, 0, 0, 79, 116, 247, 128, 0, 0, 0, 0, 80, 94, 66, 240, 0, 0, 0, 0, 81, 84, 217, 128, 0, 0, 0, 0, 82, 108, 73, 112, 0, 0, 0, 0, 83, 52, 187, 128, 0, 0, 0, 0, 84, 76, 43, 112, 0, 0, 0, 0, 85, 20, 157, 128, 0, 0, 0, 0, 86, 44, 13, 112, 0, 0, 0, 0, 86, 244, 127, 128, 0, 0, 0, 0, 88, 21, 41, 240, 0, 0, 0, 0, 88, 212, 97, 128, 0, 0, 0, 0, 89, 245, 11, 240, 0, 0, 0, 0, 90, 180, 67, 128, 0, 0, 0, 0, 91, 212, 237, 240, 0, 0, 0, 0, 92, 157, 96, 0, 0, 0, 0, 0, 93, 180, 207, 240, 0, 0, 0, 0, 94, 125, 66, 0, 0, 0, 0, 0, 95, 148, 177, 240, 0, 0, 0, 0, 96, 93, 36, 0, 0, 0, 0, 0, 97, 125, 206, 112, 0, 0, 0, 0, 98, 61, 6, 0, 0, 0, 0, 0, 99, 93, 176, 112, 0, 0, 0, 0, 100, 28, 232, 0, 0, 0, 0, 0, 101, 61, 146, 112, 0, 0, 0, 0, 102, 6, 4, 128, 0, 0, 0, 0, 103, 29, 116, 112, 0, 0, 0, 0, 103, 229, 230, 128, 0, 0, 0, 0, 104, 253, 86, 112, 0, 0, 0, 0, 105, 197, 200, 128, 0, 0, 0, 0, 106, 221, 56, 112, 0, 0, 0, 0, 107, 165, 170, 128, 0, 0, 0, 0, 108, 198, 84, 240, 0, 0, 0, 0, 109, 133, 140, 128, 0, 0, 0, 0, 110, 166, 54, 240, 0, 0, 0, 0, 111, 101, 110, 128, 0, 0, 0, 0, 112, 134, 24, 240, 0, 0, 0, 0, 113, 78, 139, 0, 0, 0, 0, 0, 114, 101, 250, 240, 0, 0, 0, 0, 115, 46, 109, 0, 0, 0, 0, 0, 116, 69, 220, 240, 0, 0, 0, 0, 117, 14, 79, 0, 0, 0, 0, 0, 118, 46, 249, 112, 0, 0, 0, 0, 118, 238, 49, 0, 0, 0, 0, 0, 120, 14, 219, 112, 0, 0, 0, 0, 120, 206, 19, 0, 0, 0, 0, 0, 121, 238, 189, 112, 0, 0, 0, 0, 122, 173, 245, 0, 0, 0, 0, 0, 123, 206, 159, 112, 0, 0, 0, 0, 124, 151, 17, 128, 0, 0, 0, 0, 125, 174, 129, 112, 0, 0, 0, 0, 126, 118, 243, 128, 0, 0, 0, 0, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Asia/Kabul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 208, 249, 215, 64, 127, 255, 255, 255, 1, 2, 2, 0, 0, 64, 224, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 63, 72, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 51, 48, 62, 45, 52, 58, 51, 48, 10}, + "zoneinfo/Asia/Kabul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 208, 249, 215, 64, 127, 255, 255, 255, 1, 2, 2, 0, 0, 64, 224, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 63, 72, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 105, 134, 154, 160, 255, 255, 255, 255, 208, 249, 215, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 64, 224, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 63, 72, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 10, 60, 43, 48, 52, 51, 48, 62, 45, 52, 58, 51, 48, 10}, - "zoneinfo/Asia/Kamchatka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 167, 82, 150, 196, 181, 163, 154, 208, 21, 39, 41, 64, 22, 24, 93, 176, 23, 8, 92, 192, 23, 249, 145, 48, 24, 233, 144, 64, 25, 218, 196, 176, 26, 204, 21, 64, 27, 188, 34, 96, 28, 172, 19, 96, 29, 156, 4, 96, 30, 139, 245, 96, 31, 123, 230, 96, 32, 107, 215, 96, 33, 91, 200, 96, 34, 75, 185, 96, 35, 59, 170, 96, 36, 43, 155, 96, 37, 27, 140, 96, 38, 11, 125, 96, 39, 4, 168, 224, 39, 244, 153, 224, 40, 228, 152, 240, 41, 120, 64, 240, 41, 212, 123, 224, 42, 196, 108, 224, 43, 180, 93, 224, 44, 164, 78, 224, 45, 148, 63, 224, 46, 132, 48, 224, 47, 116, 33, 224, 48, 100, 18, 224, 49, 93, 62, 96, 50, 114, 25, 96, 51, 61, 32, 96, 52, 81, 251, 96, 53, 29, 2, 96, 54, 49, 221, 96, 54, 252, 228, 96, 56, 26, 249, 224, 56, 220, 198, 96, 57, 250, 219, 224, 58, 188, 168, 96, 59, 218, 189, 224, 60, 165, 196, 224, 61, 186, 159, 224, 62, 133, 166, 224, 63, 154, 129, 224, 64, 101, 136, 224, 65, 131, 158, 96, 66, 69, 106, 224, 67, 99, 128, 96, 68, 37, 76, 224, 69, 67, 98, 96, 70, 5, 46, 224, 71, 35, 68, 96, 71, 238, 75, 96, 73, 3, 38, 96, 73, 206, 45, 96, 74, 227, 8, 96, 75, 174, 15, 96, 76, 204, 50, 240, 77, 141, 255, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 148, 188, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 0, 12, 0, 0, 168, 192, 0, 12, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 1, 12, 0, 0, 154, 176, 0, 4, 0, 0, 168, 192, 0, 12, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 51, 0, 43, 49, 50, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Asia/Kamchatka": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 167, 82, 150, 196, 181, 163, 154, 208, 21, 39, 41, 64, 22, 24, 93, 176, 23, 8, 92, 192, 23, 249, 145, 48, 24, 233, 144, 64, 25, 218, 196, 176, 26, 204, 21, 64, 27, 188, 34, 96, 28, 172, 19, 96, 29, 156, 4, 96, 30, 139, 245, 96, 31, 123, 230, 96, 32, 107, 215, 96, 33, 91, 200, 96, 34, 75, 185, 96, 35, 59, 170, 96, 36, 43, 155, 96, 37, 27, 140, 96, 38, 11, 125, 96, 39, 4, 168, 224, 39, 244, 153, 224, 40, 228, 152, 240, 41, 120, 64, 240, 41, 212, 123, 224, 42, 196, 108, 224, 43, 180, 93, 224, 44, 164, 78, 224, 45, 148, 63, 224, 46, 132, 48, 224, 47, 116, 33, 224, 48, 100, 18, 224, 49, 93, 62, 96, 50, 114, 25, 96, 51, 61, 32, 96, 52, 81, 251, 96, 53, 29, 2, 96, 54, 49, 221, 96, 54, 252, 228, 96, 56, 26, 249, 224, 56, 220, 198, 96, 57, 250, 219, 224, 58, 188, 168, 96, 59, 218, 189, 224, 60, 165, 196, 224, 61, 186, 159, 224, 62, 133, 166, 224, 63, 154, 129, 224, 64, 101, 136, 224, 65, 131, 158, 96, 66, 69, 106, 224, 67, 99, 128, 96, 68, 37, 76, 224, 69, 67, 98, 96, 70, 5, 46, 224, 71, 35, 68, 96, 71, 238, 75, 96, 73, 3, 38, 96, 73, 206, 45, 96, 74, 227, 8, 96, 75, 174, 15, 96, 76, 204, 50, 240, 77, 141, 255, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 148, 188, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 0, 12, 0, 0, 168, 192, 0, 12, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 1, 12, 0, 0, 154, 176, 0, 4, 0, 0, 168, 192, 0, 12, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 51, 0, 43, 49, 50, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 167, 82, 150, 196, 255, 255, 255, 255, 181, 163, 154, 208, 0, 0, 0, 0, 21, 39, 41, 64, 0, 0, 0, 0, 22, 24, 93, 176, 0, 0, 0, 0, 23, 8, 92, 192, 0, 0, 0, 0, 23, 249, 145, 48, 0, 0, 0, 0, 24, 233, 144, 64, 0, 0, 0, 0, 25, 218, 196, 176, 0, 0, 0, 0, 26, 204, 21, 64, 0, 0, 0, 0, 27, 188, 34, 96, 0, 0, 0, 0, 28, 172, 19, 96, 0, 0, 0, 0, 29, 156, 4, 96, 0, 0, 0, 0, 30, 139, 245, 96, 0, 0, 0, 0, 31, 123, 230, 96, 0, 0, 0, 0, 32, 107, 215, 96, 0, 0, 0, 0, 33, 91, 200, 96, 0, 0, 0, 0, 34, 75, 185, 96, 0, 0, 0, 0, 35, 59, 170, 96, 0, 0, 0, 0, 36, 43, 155, 96, 0, 0, 0, 0, 37, 27, 140, 96, 0, 0, 0, 0, 38, 11, 125, 96, 0, 0, 0, 0, 39, 4, 168, 224, 0, 0, 0, 0, 39, 244, 153, 224, 0, 0, 0, 0, 40, 228, 152, 240, 0, 0, 0, 0, 41, 120, 64, 240, 0, 0, 0, 0, 41, 212, 123, 224, 0, 0, 0, 0, 42, 196, 108, 224, 0, 0, 0, 0, 43, 180, 93, 224, 0, 0, 0, 0, 44, 164, 78, 224, 0, 0, 0, 0, 45, 148, 63, 224, 0, 0, 0, 0, 46, 132, 48, 224, 0, 0, 0, 0, 47, 116, 33, 224, 0, 0, 0, 0, 48, 100, 18, 224, 0, 0, 0, 0, 49, 93, 62, 96, 0, 0, 0, 0, 50, 114, 25, 96, 0, 0, 0, 0, 51, 61, 32, 96, 0, 0, 0, 0, 52, 81, 251, 96, 0, 0, 0, 0, 53, 29, 2, 96, 0, 0, 0, 0, 54, 49, 221, 96, 0, 0, 0, 0, 54, 252, 228, 96, 0, 0, 0, 0, 56, 26, 249, 224, 0, 0, 0, 0, 56, 220, 198, 96, 0, 0, 0, 0, 57, 250, 219, 224, 0, 0, 0, 0, 58, 188, 168, 96, 0, 0, 0, 0, 59, 218, 189, 224, 0, 0, 0, 0, 60, 165, 196, 224, 0, 0, 0, 0, 61, 186, 159, 224, 0, 0, 0, 0, 62, 133, 166, 224, 0, 0, 0, 0, 63, 154, 129, 224, 0, 0, 0, 0, 64, 101, 136, 224, 0, 0, 0, 0, 65, 131, 158, 96, 0, 0, 0, 0, 66, 69, 106, 224, 0, 0, 0, 0, 67, 99, 128, 96, 0, 0, 0, 0, 68, 37, 76, 224, 0, 0, 0, 0, 69, 67, 98, 96, 0, 0, 0, 0, 70, 5, 46, 224, 0, 0, 0, 0, 71, 35, 68, 96, 0, 0, 0, 0, 71, 238, 75, 96, 0, 0, 0, 0, 73, 3, 38, 96, 0, 0, 0, 0, 73, 206, 45, 96, 0, 0, 0, 0, 74, 227, 8, 96, 0, 0, 0, 0, 75, 174, 15, 96, 0, 0, 0, 0, 76, 204, 50, 240, 0, 0, 0, 0, 77, 141, 255, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 148, 188, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 0, 12, 0, 0, 168, 192, 0, 12, 0, 0, 182, 208, 1, 8, 0, 0, 168, 192, 1, 12, 0, 0, 154, 176, 0, 4, 0, 0, 168, 192, 0, 12, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 51, 0, 43, 49, 50, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Asia/Karachi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 29, 137, 126, 252, 164, 204, 149, 50, 168, 210, 116, 18, 152, 221, 168, 224, 168, 2, 79, 171, 48, 60, 175, 69, 176, 61, 159, 40, 160, 72, 65, 160, 48, 73, 11, 71, 160, 73, 228, 221, 48, 74, 236, 123, 32, 1, 2, 1, 3, 5, 4, 5, 4, 5, 4, 5, 0, 0, 62, 220, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 91, 104, 1, 10, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 20, 0, 0, 70, 80, 0, 25, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 0, 80, 75, 83, 84, 0, 80, 75, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 80, 75, 84, 45, 53, 10}, + "zoneinfo/Asia/Karachi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 29, 137, 126, 252, 164, 204, 149, 50, 168, 210, 116, 18, 152, 221, 168, 224, 168, 2, 79, 171, 48, 60, 175, 69, 176, 61, 159, 40, 160, 72, 65, 160, 48, 73, 11, 71, 160, 73, 228, 221, 48, 74, 236, 123, 32, 1, 2, 1, 3, 5, 4, 5, 4, 5, 4, 5, 0, 0, 62, 220, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 91, 104, 1, 10, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 20, 0, 0, 70, 80, 0, 25, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 0, 80, 75, 83, 84, 0, 80, 75, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 29, 255, 255, 255, 255, 137, 126, 252, 164, 255, 255, 255, 255, 204, 149, 50, 168, 255, 255, 255, 255, 210, 116, 18, 152, 255, 255, 255, 255, 221, 168, 224, 168, 0, 0, 0, 0, 2, 79, 171, 48, 0, 0, 0, 0, 60, 175, 69, 176, 0, 0, 0, 0, 61, 159, 40, 160, 0, 0, 0, 0, 72, 65, 160, 48, 0, 0, 0, 0, 73, 11, 71, 160, 0, 0, 0, 0, 73, 228, 221, 48, 0, 0, 0, 0, 74, 236, 123, 32, 1, 2, 1, 3, 5, 4, 5, 4, 5, 4, 5, 0, 0, 62, 220, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 91, 104, 1, 10, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 20, 0, 0, 70, 80, 0, 25, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 51, 48, 0, 43, 48, 53, 0, 80, 75, 83, 84, 0, 80, 75, 84, 0, 10, 80, 75, 84, 45, 53, 10}, - "zoneinfo/Asia/Kashgar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 176, 254, 186, 100, 127, 255, 255, 255, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Kashgar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 176, 254, 186, 100, 127, 255, 255, 255, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 176, 254, 186, 100, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Kathmandu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 161, 242, 125, 132, 30, 24, 48, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 52, 53, 62, 45, 53, 58, 52, 53, 10}, + "zoneinfo/Asia/Kathmandu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 161, 242, 125, 132, 30, 24, 48, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 255, 255, 255, 255, 161, 242, 125, 132, 0, 0, 0, 0, 30, 24, 48, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 10, 60, 43, 48, 53, 52, 53, 62, 45, 53, 58, 52, 53, 10}, - "zoneinfo/Asia/Katmandu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 161, 242, 125, 132, 30, 24, 48, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 52, 53, 62, 45, 53, 58, 52, 53, 10}, + "zoneinfo/Asia/Katmandu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 161, 242, 125, 132, 30, 24, 48, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 16, 255, 255, 255, 255, 161, 242, 125, 132, 0, 0, 0, 0, 30, 24, 48, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 79, 252, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 80, 220, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 53, 52, 53, 0, 10, 60, 43, 48, 53, 52, 53, 62, 45, 53, 58, 52, 53, 10}, - "zoneinfo/Asia/Khandyga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 13, 0, 0, 0, 20, 161, 219, 228, 235, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 63, 242, 228, 112, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 78, 110, 2, 80, 84, 75, 201, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 11, 9, 4, 4, 0, 0, 127, 21, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 1, 16, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 0, 8, 0, 0, 154, 176, 0, 16, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + "zoneinfo/Asia/Khandyga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 13, 0, 0, 0, 20, 161, 219, 228, 235, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 63, 242, 228, 112, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 78, 110, 2, 80, 84, 75, 201, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 11, 9, 4, 4, 0, 0, 127, 21, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 1, 16, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 0, 8, 0, 0, 154, 176, 0, 16, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 13, 0, 0, 0, 20, 255, 255, 255, 255, 161, 219, 228, 235, 255, 255, 255, 255, 181, 163, 197, 0, 0, 0, 0, 0, 21, 39, 83, 112, 0, 0, 0, 0, 22, 24, 135, 224, 0, 0, 0, 0, 23, 8, 134, 240, 0, 0, 0, 0, 23, 249, 187, 96, 0, 0, 0, 0, 24, 233, 186, 112, 0, 0, 0, 0, 25, 218, 238, 224, 0, 0, 0, 0, 26, 204, 63, 112, 0, 0, 0, 0, 27, 188, 76, 144, 0, 0, 0, 0, 28, 172, 61, 144, 0, 0, 0, 0, 29, 156, 46, 144, 0, 0, 0, 0, 30, 140, 31, 144, 0, 0, 0, 0, 31, 124, 16, 144, 0, 0, 0, 0, 32, 108, 1, 144, 0, 0, 0, 0, 33, 91, 242, 144, 0, 0, 0, 0, 34, 75, 227, 144, 0, 0, 0, 0, 35, 59, 212, 144, 0, 0, 0, 0, 36, 43, 197, 144, 0, 0, 0, 0, 37, 27, 182, 144, 0, 0, 0, 0, 38, 11, 167, 144, 0, 0, 0, 0, 39, 4, 211, 16, 0, 0, 0, 0, 39, 244, 196, 16, 0, 0, 0, 0, 40, 228, 195, 32, 0, 0, 0, 0, 41, 120, 107, 32, 0, 0, 0, 0, 41, 212, 166, 16, 0, 0, 0, 0, 42, 196, 151, 16, 0, 0, 0, 0, 43, 180, 136, 16, 0, 0, 0, 0, 44, 164, 121, 16, 0, 0, 0, 0, 45, 148, 106, 16, 0, 0, 0, 0, 46, 132, 91, 16, 0, 0, 0, 0, 47, 116, 76, 16, 0, 0, 0, 0, 48, 100, 61, 16, 0, 0, 0, 0, 49, 93, 104, 144, 0, 0, 0, 0, 50, 114, 67, 144, 0, 0, 0, 0, 51, 61, 74, 144, 0, 0, 0, 0, 52, 82, 37, 144, 0, 0, 0, 0, 53, 29, 44, 144, 0, 0, 0, 0, 54, 50, 7, 144, 0, 0, 0, 0, 54, 253, 14, 144, 0, 0, 0, 0, 56, 27, 36, 16, 0, 0, 0, 0, 56, 220, 240, 144, 0, 0, 0, 0, 57, 251, 6, 16, 0, 0, 0, 0, 58, 188, 210, 144, 0, 0, 0, 0, 59, 218, 232, 16, 0, 0, 0, 0, 60, 165, 239, 16, 0, 0, 0, 0, 61, 186, 202, 16, 0, 0, 0, 0, 62, 133, 209, 16, 0, 0, 0, 0, 63, 154, 172, 16, 0, 0, 0, 0, 63, 242, 228, 112, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 37, 105, 0, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 238, 103, 128, 0, 0, 0, 0, 73, 3, 66, 128, 0, 0, 0, 0, 73, 206, 73, 128, 0, 0, 0, 0, 74, 227, 36, 128, 0, 0, 0, 0, 75, 174, 43, 128, 0, 0, 0, 0, 76, 204, 65, 0, 0, 0, 0, 0, 77, 142, 13, 128, 0, 0, 0, 0, 78, 110, 2, 80, 0, 0, 0, 0, 84, 75, 201, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 11, 9, 4, 4, 0, 0, 127, 21, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 154, 176, 1, 16, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 0, 8, 0, 0, 154, 176, 0, 16, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 10, 60, 43, 48, 57, 62, 45, 57, 10}, - "zoneinfo/Asia/Kolkata": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 135, 157, 188, 186, 202, 219, 140, 40, 204, 5, 113, 24, 204, 149, 50, 168, 210, 116, 18, 152, 1, 2, 3, 2, 3, 2, 0, 0, 82, 216, 0, 0, 0, 0, 75, 70, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 91, 104, 1, 12, 76, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 53, 58, 51, 48, 10}, + "zoneinfo/Asia/Kolkata": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 135, 157, 188, 186, 202, 219, 140, 40, 204, 5, 113, 24, 204, 149, 50, 168, 210, 116, 18, 152, 1, 2, 3, 2, 3, 2, 0, 0, 82, 216, 0, 0, 0, 0, 75, 70, 0, 4, 0, 0, 77, 88, 0, 8, 0, 0, 91, 104, 1, 12, 76, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 22, 255, 255, 255, 255, 38, 186, 24, 40, 255, 255, 255, 255, 67, 231, 235, 48, 255, 255, 255, 255, 135, 157, 188, 186, 255, 255, 255, 255, 202, 219, 140, 40, 255, 255, 255, 255, 204, 5, 113, 24, 255, 255, 255, 255, 204, 149, 50, 168, 255, 255, 255, 255, 210, 116, 18, 152, 1, 2, 3, 4, 3, 4, 3, 0, 0, 82, 216, 0, 0, 0, 0, 82, 208, 0, 4, 0, 0, 75, 70, 0, 8, 0, 0, 77, 88, 0, 12, 0, 0, 91, 104, 1, 16, 76, 77, 84, 0, 72, 77, 84, 0, 77, 77, 84, 0, 73, 83, 84, 0, 43, 48, 54, 51, 48, 0, 10, 73, 83, 84, 45, 53, 58, 51, 48, 10}, - "zoneinfo/Asia/Krasnoyarsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 161, 249, 13, 242, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 61, 186, 230, 48, 62, 133, 237, 48, 63, 154, 200, 48, 64, 101, 207, 48, 65, 131, 228, 176, 66, 69, 177, 48, 67, 99, 198, 176, 68, 37, 147, 48, 69, 67, 168, 176, 70, 5, 117, 48, 71, 35, 138, 176, 71, 238, 145, 176, 73, 3, 108, 176, 73, 206, 115, 176, 74, 227, 78, 176, 75, 174, 85, 176, 76, 204, 107, 48, 77, 142, 55, 176, 84, 75, 229, 32, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 87, 14, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Krasnoyarsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 161, 249, 13, 242, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 61, 186, 230, 48, 62, 133, 237, 48, 63, 154, 200, 48, 64, 101, 207, 48, 65, 131, 228, 176, 66, 69, 177, 48, 67, 99, 198, 176, 68, 37, 147, 48, 69, 67, 168, 176, 70, 5, 117, 48, 71, 35, 138, 176, 71, 238, 145, 176, 73, 3, 108, 176, 73, 206, 115, 176, 74, 227, 78, 176, 75, 174, 85, 176, 76, 204, 107, 48, 77, 142, 55, 176, 84, 75, 229, 32, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 87, 14, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 161, 249, 13, 242, 255, 255, 255, 255, 181, 163, 225, 32, 0, 0, 0, 0, 21, 39, 111, 144, 0, 0, 0, 0, 22, 24, 164, 0, 0, 0, 0, 0, 23, 8, 163, 16, 0, 0, 0, 0, 23, 249, 215, 128, 0, 0, 0, 0, 24, 233, 214, 144, 0, 0, 0, 0, 25, 219, 11, 0, 0, 0, 0, 0, 26, 204, 91, 144, 0, 0, 0, 0, 27, 188, 104, 176, 0, 0, 0, 0, 28, 172, 89, 176, 0, 0, 0, 0, 29, 156, 74, 176, 0, 0, 0, 0, 30, 140, 59, 176, 0, 0, 0, 0, 31, 124, 44, 176, 0, 0, 0, 0, 32, 108, 29, 176, 0, 0, 0, 0, 33, 92, 14, 176, 0, 0, 0, 0, 34, 75, 255, 176, 0, 0, 0, 0, 35, 59, 240, 176, 0, 0, 0, 0, 36, 43, 225, 176, 0, 0, 0, 0, 37, 27, 210, 176, 0, 0, 0, 0, 38, 11, 195, 176, 0, 0, 0, 0, 39, 4, 239, 48, 0, 0, 0, 0, 39, 244, 224, 48, 0, 0, 0, 0, 40, 228, 223, 64, 0, 0, 0, 0, 41, 120, 135, 64, 0, 0, 0, 0, 41, 212, 194, 48, 0, 0, 0, 0, 42, 196, 179, 48, 0, 0, 0, 0, 43, 180, 164, 48, 0, 0, 0, 0, 44, 164, 149, 48, 0, 0, 0, 0, 45, 148, 134, 48, 0, 0, 0, 0, 46, 132, 119, 48, 0, 0, 0, 0, 47, 116, 104, 48, 0, 0, 0, 0, 48, 100, 89, 48, 0, 0, 0, 0, 49, 93, 132, 176, 0, 0, 0, 0, 50, 114, 95, 176, 0, 0, 0, 0, 51, 61, 102, 176, 0, 0, 0, 0, 52, 82, 65, 176, 0, 0, 0, 0, 53, 29, 72, 176, 0, 0, 0, 0, 54, 50, 35, 176, 0, 0, 0, 0, 54, 253, 42, 176, 0, 0, 0, 0, 56, 27, 64, 48, 0, 0, 0, 0, 56, 221, 12, 176, 0, 0, 0, 0, 57, 251, 34, 48, 0, 0, 0, 0, 58, 188, 238, 176, 0, 0, 0, 0, 59, 219, 4, 48, 0, 0, 0, 0, 60, 166, 11, 48, 0, 0, 0, 0, 61, 186, 230, 48, 0, 0, 0, 0, 62, 133, 237, 48, 0, 0, 0, 0, 63, 154, 200, 48, 0, 0, 0, 0, 64, 101, 207, 48, 0, 0, 0, 0, 65, 131, 228, 176, 0, 0, 0, 0, 66, 69, 177, 48, 0, 0, 0, 0, 67, 99, 198, 176, 0, 0, 0, 0, 68, 37, 147, 48, 0, 0, 0, 0, 69, 67, 168, 176, 0, 0, 0, 0, 70, 5, 117, 48, 0, 0, 0, 0, 71, 35, 138, 176, 0, 0, 0, 0, 71, 238, 145, 176, 0, 0, 0, 0, 73, 3, 108, 176, 0, 0, 0, 0, 73, 206, 115, 176, 0, 0, 0, 0, 74, 227, 78, 176, 0, 0, 0, 0, 75, 174, 85, 176, 0, 0, 0, 0, 76, 204, 107, 48, 0, 0, 0, 0, 77, 142, 55, 176, 0, 0, 0, 0, 84, 75, 229, 32, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 87, 14, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Kuala_Lumpur": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 95, 86, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Kuala_Lumpur": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 95, 86, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 255, 255, 255, 255, 126, 54, 85, 170, 255, 255, 255, 255, 134, 131, 133, 163, 255, 255, 255, 255, 186, 103, 78, 144, 255, 255, 255, 255, 192, 10, 228, 96, 255, 255, 255, 255, 202, 179, 229, 96, 255, 255, 255, 255, 203, 145, 95, 8, 255, 255, 255, 255, 210, 72, 109, 240, 0, 0, 0, 0, 22, 145, 245, 8, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 95, 86, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Kuching": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 24, 173, 138, 6, 144, 186, 103, 71, 136, 191, 123, 39, 128, 191, 243, 27, 80, 193, 93, 172, 128, 193, 213, 160, 80, 195, 62, 224, 0, 195, 182, 211, 208, 197, 32, 19, 128, 197, 152, 7, 80, 199, 1, 71, 0, 199, 121, 58, 208, 200, 227, 204, 0, 201, 91, 191, 208, 202, 196, 255, 128, 203, 60, 243, 80, 203, 145, 88, 0, 210, 72, 109, 240, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 3, 0, 0, 103, 112, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 117, 48, 1, 10, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 50, 48, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Kuching": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 24, 173, 138, 6, 144, 186, 103, 71, 136, 191, 123, 39, 128, 191, 243, 27, 80, 193, 93, 172, 128, 193, 213, 160, 80, 195, 62, 224, 0, 195, 182, 211, 208, 197, 32, 19, 128, 197, 152, 7, 80, 199, 1, 71, 0, 199, 121, 58, 208, 200, 227, 204, 0, 201, 91, 191, 208, 202, 196, 255, 128, 203, 60, 243, 80, 203, 145, 88, 0, 210, 72, 109, 240, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 3, 0, 0, 103, 112, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 117, 48, 1, 10, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 50, 48, 0, 43, 48, 56, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 173, 138, 6, 144, 255, 255, 255, 255, 186, 103, 71, 136, 255, 255, 255, 255, 191, 123, 39, 128, 255, 255, 255, 255, 191, 243, 27, 80, 255, 255, 255, 255, 193, 93, 172, 128, 255, 255, 255, 255, 193, 213, 160, 80, 255, 255, 255, 255, 195, 62, 224, 0, 255, 255, 255, 255, 195, 182, 211, 208, 255, 255, 255, 255, 197, 32, 19, 128, 255, 255, 255, 255, 197, 152, 7, 80, 255, 255, 255, 255, 199, 1, 71, 0, 255, 255, 255, 255, 199, 121, 58, 208, 255, 255, 255, 255, 200, 227, 204, 0, 255, 255, 255, 255, 201, 91, 191, 208, 255, 255, 255, 255, 202, 196, 255, 128, 255, 255, 255, 255, 203, 60, 243, 80, 255, 255, 255, 255, 203, 145, 88, 0, 255, 255, 255, 255, 210, 72, 109, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 3, 0, 0, 103, 112, 0, 0, 0, 0, 105, 120, 0, 4, 0, 0, 117, 48, 1, 10, 0, 0, 112, 128, 0, 16, 0, 0, 126, 144, 0, 20, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 56, 50, 48, 0, 43, 48, 56, 0, 43, 48, 57, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Kuwait": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 213, 27, 54, 180, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Kuwait": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 213, 27, 54, 180, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 213, 27, 54, 180, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Macao": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 133, 105, 91, 142, 203, 71, 117, 240, 203, 242, 202, 224, 204, 251, 186, 80, 205, 211, 254, 96, 206, 157, 165, 208, 210, 97, 122, 112, 211, 120, 248, 112, 212, 66, 173, 240, 213, 75, 171, 112, 214, 116, 76, 240, 215, 63, 83, 240, 216, 47, 68, 240, 216, 248, 250, 112, 218, 13, 213, 112, 218, 216, 220, 112, 219, 237, 183, 112, 220, 184, 190, 112, 221, 206, 234, 240, 222, 161, 218, 240, 223, 182, 181, 240, 224, 129, 188, 240, 225, 150, 151, 240, 226, 79, 41, 240, 227, 118, 121, 240, 228, 47, 11, 240, 229, 95, 150, 112, 230, 14, 237, 240, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 83, 24, 249, 5, 96, 56, 249, 245, 53, 24, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 3, 2, 3, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 0, 0, 106, 114, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 16, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Macao": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 133, 105, 91, 142, 203, 71, 117, 240, 203, 242, 202, 224, 204, 251, 186, 80, 205, 211, 254, 96, 206, 157, 165, 208, 210, 97, 122, 112, 211, 120, 248, 112, 212, 66, 173, 240, 213, 75, 171, 112, 214, 116, 76, 240, 215, 63, 83, 240, 216, 47, 68, 240, 216, 248, 250, 112, 218, 13, 213, 112, 218, 216, 220, 112, 219, 237, 183, 112, 220, 184, 190, 112, 221, 206, 234, 240, 222, 161, 218, 240, 223, 182, 181, 240, 224, 129, 188, 240, 225, 150, 151, 240, 226, 79, 41, 240, 227, 118, 121, 240, 228, 47, 11, 240, 229, 95, 150, 112, 230, 14, 237, 240, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 83, 24, 249, 5, 96, 56, 249, 245, 53, 24, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 3, 2, 3, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 0, 0, 106, 114, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 16, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 133, 105, 91, 142, 255, 255, 255, 255, 203, 71, 117, 240, 255, 255, 255, 255, 203, 242, 202, 224, 255, 255, 255, 255, 204, 251, 186, 80, 255, 255, 255, 255, 205, 211, 254, 96, 255, 255, 255, 255, 206, 157, 165, 208, 255, 255, 255, 255, 210, 97, 122, 112, 255, 255, 255, 255, 211, 120, 248, 112, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 75, 171, 112, 255, 255, 255, 255, 214, 116, 76, 240, 255, 255, 255, 255, 215, 63, 83, 240, 255, 255, 255, 255, 216, 47, 68, 240, 255, 255, 255, 255, 216, 248, 250, 112, 255, 255, 255, 255, 218, 13, 213, 112, 255, 255, 255, 255, 218, 216, 220, 112, 255, 255, 255, 255, 219, 237, 183, 112, 255, 255, 255, 255, 220, 184, 190, 112, 255, 255, 255, 255, 221, 206, 234, 240, 255, 255, 255, 255, 222, 161, 218, 240, 255, 255, 255, 255, 223, 182, 181, 240, 255, 255, 255, 255, 224, 129, 188, 240, 255, 255, 255, 255, 225, 150, 151, 240, 255, 255, 255, 255, 226, 79, 41, 240, 255, 255, 255, 255, 227, 118, 121, 240, 255, 255, 255, 255, 228, 47, 11, 240, 255, 255, 255, 255, 229, 95, 150, 112, 255, 255, 255, 255, 230, 14, 237, 240, 255, 255, 255, 255, 231, 63, 169, 168, 255, 255, 255, 255, 231, 248, 73, 184, 255, 255, 255, 255, 233, 31, 139, 168, 255, 255, 255, 255, 233, 216, 43, 184, 255, 255, 255, 255, 234, 255, 109, 168, 255, 255, 255, 255, 235, 184, 13, 184, 255, 255, 255, 255, 236, 223, 79, 168, 255, 255, 255, 255, 237, 151, 239, 184, 255, 255, 255, 255, 238, 200, 108, 40, 255, 255, 255, 255, 239, 119, 209, 184, 255, 255, 255, 255, 240, 168, 78, 40, 255, 255, 255, 255, 241, 87, 179, 184, 255, 255, 255, 255, 242, 136, 48, 40, 255, 255, 255, 255, 243, 64, 208, 56, 255, 255, 255, 255, 244, 104, 18, 40, 255, 255, 255, 255, 245, 32, 178, 56, 255, 255, 255, 255, 246, 71, 244, 40, 255, 255, 255, 255, 247, 37, 126, 56, 255, 255, 255, 255, 248, 21, 83, 24, 255, 255, 255, 255, 249, 5, 96, 56, 255, 255, 255, 255, 249, 245, 53, 24, 255, 255, 255, 255, 250, 229, 66, 56, 255, 255, 255, 255, 251, 222, 95, 168, 255, 255, 255, 255, 252, 206, 94, 184, 255, 255, 255, 255, 253, 190, 65, 168, 255, 255, 255, 255, 254, 174, 64, 184, 255, 255, 255, 255, 255, 158, 35, 168, 0, 0, 0, 0, 0, 142, 34, 184, 0, 0, 0, 0, 1, 126, 5, 168, 0, 0, 0, 0, 2, 110, 4, 184, 0, 0, 0, 0, 3, 93, 231, 168, 0, 0, 0, 0, 4, 77, 230, 184, 0, 0, 0, 0, 5, 71, 4, 40, 0, 0, 0, 0, 6, 55, 3, 56, 0, 0, 0, 0, 7, 38, 230, 40, 0, 0, 0, 0, 7, 131, 61, 56, 0, 0, 0, 0, 9, 6, 200, 40, 0, 0, 0, 0, 9, 246, 199, 56, 0, 0, 0, 0, 10, 230, 170, 40, 0, 0, 0, 0, 11, 214, 169, 56, 0, 0, 0, 0, 12, 198, 140, 40, 0, 0, 0, 0, 17, 155, 57, 56, 0, 0, 0, 0, 18, 111, 108, 168, 1, 3, 2, 3, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 0, 0, 106, 114, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 16, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Macau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 133, 105, 91, 142, 203, 71, 117, 240, 203, 242, 202, 224, 204, 251, 186, 80, 205, 211, 254, 96, 206, 157, 165, 208, 210, 97, 122, 112, 211, 120, 248, 112, 212, 66, 173, 240, 213, 75, 171, 112, 214, 116, 76, 240, 215, 63, 83, 240, 216, 47, 68, 240, 216, 248, 250, 112, 218, 13, 213, 112, 218, 216, 220, 112, 219, 237, 183, 112, 220, 184, 190, 112, 221, 206, 234, 240, 222, 161, 218, 240, 223, 182, 181, 240, 224, 129, 188, 240, 225, 150, 151, 240, 226, 79, 41, 240, 227, 118, 121, 240, 228, 47, 11, 240, 229, 95, 150, 112, 230, 14, 237, 240, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 83, 24, 249, 5, 96, 56, 249, 245, 53, 24, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 3, 2, 3, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 0, 0, 106, 114, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 16, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Macau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 133, 105, 91, 142, 203, 71, 117, 240, 203, 242, 202, 224, 204, 251, 186, 80, 205, 211, 254, 96, 206, 157, 165, 208, 210, 97, 122, 112, 211, 120, 248, 112, 212, 66, 173, 240, 213, 75, 171, 112, 214, 116, 76, 240, 215, 63, 83, 240, 216, 47, 68, 240, 216, 248, 250, 112, 218, 13, 213, 112, 218, 216, 220, 112, 219, 237, 183, 112, 220, 184, 190, 112, 221, 206, 234, 240, 222, 161, 218, 240, 223, 182, 181, 240, 224, 129, 188, 240, 225, 150, 151, 240, 226, 79, 41, 240, 227, 118, 121, 240, 228, 47, 11, 240, 229, 95, 150, 112, 230, 14, 237, 240, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 83, 24, 249, 5, 96, 56, 249, 245, 53, 24, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 3, 2, 3, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 0, 0, 106, 114, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 16, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 133, 105, 91, 142, 255, 255, 255, 255, 203, 71, 117, 240, 255, 255, 255, 255, 203, 242, 202, 224, 255, 255, 255, 255, 204, 251, 186, 80, 255, 255, 255, 255, 205, 211, 254, 96, 255, 255, 255, 255, 206, 157, 165, 208, 255, 255, 255, 255, 210, 97, 122, 112, 255, 255, 255, 255, 211, 120, 248, 112, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 75, 171, 112, 255, 255, 255, 255, 214, 116, 76, 240, 255, 255, 255, 255, 215, 63, 83, 240, 255, 255, 255, 255, 216, 47, 68, 240, 255, 255, 255, 255, 216, 248, 250, 112, 255, 255, 255, 255, 218, 13, 213, 112, 255, 255, 255, 255, 218, 216, 220, 112, 255, 255, 255, 255, 219, 237, 183, 112, 255, 255, 255, 255, 220, 184, 190, 112, 255, 255, 255, 255, 221, 206, 234, 240, 255, 255, 255, 255, 222, 161, 218, 240, 255, 255, 255, 255, 223, 182, 181, 240, 255, 255, 255, 255, 224, 129, 188, 240, 255, 255, 255, 255, 225, 150, 151, 240, 255, 255, 255, 255, 226, 79, 41, 240, 255, 255, 255, 255, 227, 118, 121, 240, 255, 255, 255, 255, 228, 47, 11, 240, 255, 255, 255, 255, 229, 95, 150, 112, 255, 255, 255, 255, 230, 14, 237, 240, 255, 255, 255, 255, 231, 63, 169, 168, 255, 255, 255, 255, 231, 248, 73, 184, 255, 255, 255, 255, 233, 31, 139, 168, 255, 255, 255, 255, 233, 216, 43, 184, 255, 255, 255, 255, 234, 255, 109, 168, 255, 255, 255, 255, 235, 184, 13, 184, 255, 255, 255, 255, 236, 223, 79, 168, 255, 255, 255, 255, 237, 151, 239, 184, 255, 255, 255, 255, 238, 200, 108, 40, 255, 255, 255, 255, 239, 119, 209, 184, 255, 255, 255, 255, 240, 168, 78, 40, 255, 255, 255, 255, 241, 87, 179, 184, 255, 255, 255, 255, 242, 136, 48, 40, 255, 255, 255, 255, 243, 64, 208, 56, 255, 255, 255, 255, 244, 104, 18, 40, 255, 255, 255, 255, 245, 32, 178, 56, 255, 255, 255, 255, 246, 71, 244, 40, 255, 255, 255, 255, 247, 37, 126, 56, 255, 255, 255, 255, 248, 21, 83, 24, 255, 255, 255, 255, 249, 5, 96, 56, 255, 255, 255, 255, 249, 245, 53, 24, 255, 255, 255, 255, 250, 229, 66, 56, 255, 255, 255, 255, 251, 222, 95, 168, 255, 255, 255, 255, 252, 206, 94, 184, 255, 255, 255, 255, 253, 190, 65, 168, 255, 255, 255, 255, 254, 174, 64, 184, 255, 255, 255, 255, 255, 158, 35, 168, 0, 0, 0, 0, 0, 142, 34, 184, 0, 0, 0, 0, 1, 126, 5, 168, 0, 0, 0, 0, 2, 110, 4, 184, 0, 0, 0, 0, 3, 93, 231, 168, 0, 0, 0, 0, 4, 77, 230, 184, 0, 0, 0, 0, 5, 71, 4, 40, 0, 0, 0, 0, 6, 55, 3, 56, 0, 0, 0, 0, 7, 38, 230, 40, 0, 0, 0, 0, 7, 131, 61, 56, 0, 0, 0, 0, 9, 6, 200, 40, 0, 0, 0, 0, 9, 246, 199, 56, 0, 0, 0, 0, 10, 230, 170, 40, 0, 0, 0, 0, 11, 214, 169, 56, 0, 0, 0, 0, 12, 198, 140, 40, 0, 0, 0, 0, 17, 155, 57, 56, 0, 0, 0, 0, 18, 111, 108, 168, 1, 3, 2, 3, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 0, 0, 106, 114, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 1, 16, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 16, 76, 77, 84, 0, 67, 83, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Magadan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 54, 160, 181, 163, 168, 224, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 84, 75, 172, 224, 87, 27, 156, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 4, 4, 0, 0, 141, 96, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Asia/Magadan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 54, 160, 181, 163, 168, 224, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 84, 75, 172, 224, 87, 27, 156, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 4, 4, 0, 0, 141, 96, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 54, 160, 255, 255, 255, 255, 181, 163, 168, 224, 0, 0, 0, 0, 21, 39, 55, 80, 0, 0, 0, 0, 22, 24, 107, 192, 0, 0, 0, 0, 23, 8, 106, 208, 0, 0, 0, 0, 23, 249, 159, 64, 0, 0, 0, 0, 24, 233, 158, 80, 0, 0, 0, 0, 25, 218, 210, 192, 0, 0, 0, 0, 26, 204, 35, 80, 0, 0, 0, 0, 27, 188, 48, 112, 0, 0, 0, 0, 28, 172, 33, 112, 0, 0, 0, 0, 29, 156, 18, 112, 0, 0, 0, 0, 30, 140, 3, 112, 0, 0, 0, 0, 31, 123, 244, 112, 0, 0, 0, 0, 32, 107, 229, 112, 0, 0, 0, 0, 33, 91, 214, 112, 0, 0, 0, 0, 34, 75, 199, 112, 0, 0, 0, 0, 35, 59, 184, 112, 0, 0, 0, 0, 36, 43, 169, 112, 0, 0, 0, 0, 37, 27, 154, 112, 0, 0, 0, 0, 38, 11, 139, 112, 0, 0, 0, 0, 39, 4, 182, 240, 0, 0, 0, 0, 39, 244, 167, 240, 0, 0, 0, 0, 40, 228, 167, 0, 0, 0, 0, 0, 41, 120, 79, 0, 0, 0, 0, 0, 41, 212, 137, 240, 0, 0, 0, 0, 42, 196, 122, 240, 0, 0, 0, 0, 43, 180, 107, 240, 0, 0, 0, 0, 44, 164, 92, 240, 0, 0, 0, 0, 45, 148, 77, 240, 0, 0, 0, 0, 46, 132, 62, 240, 0, 0, 0, 0, 47, 116, 47, 240, 0, 0, 0, 0, 48, 100, 32, 240, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 114, 39, 112, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 82, 9, 112, 0, 0, 0, 0, 53, 29, 16, 112, 0, 0, 0, 0, 54, 49, 235, 112, 0, 0, 0, 0, 54, 252, 242, 112, 0, 0, 0, 0, 56, 27, 7, 240, 0, 0, 0, 0, 56, 220, 212, 112, 0, 0, 0, 0, 57, 250, 233, 240, 0, 0, 0, 0, 58, 188, 182, 112, 0, 0, 0, 0, 59, 218, 203, 240, 0, 0, 0, 0, 60, 165, 210, 240, 0, 0, 0, 0, 61, 186, 173, 240, 0, 0, 0, 0, 62, 133, 180, 240, 0, 0, 0, 0, 63, 154, 143, 240, 0, 0, 0, 0, 64, 101, 150, 240, 0, 0, 0, 0, 65, 131, 172, 112, 0, 0, 0, 0, 66, 69, 120, 240, 0, 0, 0, 0, 67, 99, 142, 112, 0, 0, 0, 0, 68, 37, 90, 240, 0, 0, 0, 0, 69, 67, 112, 112, 0, 0, 0, 0, 70, 5, 60, 240, 0, 0, 0, 0, 71, 35, 82, 112, 0, 0, 0, 0, 71, 238, 89, 112, 0, 0, 0, 0, 73, 3, 52, 112, 0, 0, 0, 0, 73, 206, 59, 112, 0, 0, 0, 0, 74, 227, 22, 112, 0, 0, 0, 0, 75, 174, 29, 112, 0, 0, 0, 0, 76, 204, 50, 240, 0, 0, 0, 0, 77, 141, 255, 112, 0, 0, 0, 0, 84, 75, 172, 224, 0, 0, 0, 0, 87, 27, 156, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 7, 4, 4, 0, 0, 141, 96, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Asia/Makassar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 21, 161, 242, 93, 144, 186, 22, 213, 144, 203, 136, 29, 128, 210, 86, 238, 112, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 84, 65, 45, 56, 10}, + "zoneinfo/Asia/Makassar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 21, 161, 242, 93, 144, 186, 22, 213, 144, 203, 136, 29, 128, 210, 86, 238, 112, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 21, 255, 255, 255, 255, 161, 242, 93, 144, 255, 255, 255, 255, 186, 22, 213, 144, 255, 255, 255, 255, 203, 136, 29, 128, 255, 255, 255, 255, 210, 86, 238, 112, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 10, 87, 73, 84, 65, 45, 56, 10}, - "zoneinfo/Asia/Manila": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 193, 156, 244, 128, 194, 22, 48, 112, 203, 242, 231, 0, 208, 169, 37, 112, 226, 108, 57, 0, 226, 213, 162, 240, 15, 117, 70, 128, 16, 102, 122, 240, 2, 1, 2, 3, 2, 1, 2, 1, 2, 255, 255, 31, 240, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 80, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Manila": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 193, 156, 244, 128, 194, 22, 48, 112, 203, 242, 231, 0, 208, 169, 37, 112, 226, 108, 57, 0, 226, 213, 162, 240, 15, 117, 70, 128, 16, 102, 122, 240, 2, 1, 2, 3, 2, 1, 2, 1, 2, 255, 255, 31, 240, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 74, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 20, 225, 220, 16, 255, 255, 255, 255, 123, 31, 63, 144, 255, 255, 255, 255, 193, 156, 244, 128, 255, 255, 255, 255, 194, 22, 48, 112, 255, 255, 255, 255, 203, 242, 231, 0, 255, 255, 255, 255, 208, 169, 37, 112, 255, 255, 255, 255, 226, 108, 57, 0, 255, 255, 255, 255, 226, 213, 162, 240, 0, 0, 0, 0, 15, 117, 70, 128, 0, 0, 0, 0, 16, 102, 122, 240, 1, 3, 2, 3, 4, 3, 2, 3, 2, 3, 255, 255, 31, 240, 0, 0, 0, 0, 113, 112, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 74, 83, 84, 0, 10, 80, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Muscat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 161, 242, 153, 168, 127, 255, 255, 255, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Asia/Muscat": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 161, 242, 153, 168, 127, 255, 255, 255, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 161, 242, 153, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 51, 216, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Asia/Nicosia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 5, 0, 0, 0, 13, 165, 119, 30, 184, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Asia/Nicosia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 5, 0, 0, 0, 13, 165, 119, 30, 184, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 5, 0, 0, 0, 13, 255, 255, 255, 255, 165, 119, 30, 184, 0, 0, 0, 0, 9, 237, 175, 224, 0, 0, 0, 0, 10, 221, 146, 208, 0, 0, 0, 0, 11, 250, 100, 224, 0, 0, 0, 0, 12, 190, 198, 80, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 138, 225, 208, 0, 0, 0, 0, 15, 132, 27, 96, 0, 0, 0, 0, 16, 117, 79, 208, 0, 0, 0, 0, 17, 99, 253, 96, 0, 0, 0, 0, 18, 83, 224, 80, 0, 0, 0, 0, 19, 77, 25, 224, 0, 0, 0, 0, 20, 51, 194, 80, 0, 0, 0, 0, 21, 35, 193, 96, 0, 0, 0, 0, 22, 19, 164, 80, 0, 0, 0, 0, 23, 3, 163, 96, 0, 0, 0, 0, 23, 243, 134, 80, 0, 0, 0, 0, 24, 227, 133, 96, 0, 0, 0, 0, 25, 211, 104, 80, 0, 0, 0, 0, 26, 195, 103, 96, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 77, 145, 208, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 45, 115, 208, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Asia/Novokuznetsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 170, 24, 32, 192, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 61, 186, 230, 48, 62, 133, 237, 48, 63, 154, 200, 48, 64, 101, 207, 48, 65, 131, 228, 176, 66, 69, 177, 48, 67, 99, 198, 176, 68, 37, 147, 48, 69, 67, 168, 176, 70, 5, 117, 48, 71, 35, 138, 176, 71, 238, 145, 176, 73, 3, 108, 176, 73, 206, 115, 176, 74, 227, 78, 176, 75, 174, 85, 176, 76, 204, 121, 64, 77, 142, 69, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 81, 192, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Novokuznetsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 170, 24, 32, 192, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 61, 186, 230, 48, 62, 133, 237, 48, 63, 154, 200, 48, 64, 101, 207, 48, 65, 131, 228, 176, 66, 69, 177, 48, 67, 99, 198, 176, 68, 37, 147, 48, 69, 67, 168, 176, 70, 5, 117, 48, 71, 35, 138, 176, 71, 238, 145, 176, 73, 3, 108, 176, 73, 206, 115, 176, 74, 227, 78, 176, 75, 174, 85, 176, 76, 204, 121, 64, 77, 142, 69, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 81, 192, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 170, 24, 32, 192, 255, 255, 255, 255, 181, 163, 225, 32, 0, 0, 0, 0, 21, 39, 111, 144, 0, 0, 0, 0, 22, 24, 164, 0, 0, 0, 0, 0, 23, 8, 163, 16, 0, 0, 0, 0, 23, 249, 215, 128, 0, 0, 0, 0, 24, 233, 214, 144, 0, 0, 0, 0, 25, 219, 11, 0, 0, 0, 0, 0, 26, 204, 91, 144, 0, 0, 0, 0, 27, 188, 104, 176, 0, 0, 0, 0, 28, 172, 89, 176, 0, 0, 0, 0, 29, 156, 74, 176, 0, 0, 0, 0, 30, 140, 59, 176, 0, 0, 0, 0, 31, 124, 44, 176, 0, 0, 0, 0, 32, 108, 29, 176, 0, 0, 0, 0, 33, 92, 14, 176, 0, 0, 0, 0, 34, 75, 255, 176, 0, 0, 0, 0, 35, 59, 240, 176, 0, 0, 0, 0, 36, 43, 225, 176, 0, 0, 0, 0, 37, 27, 210, 176, 0, 0, 0, 0, 38, 11, 195, 176, 0, 0, 0, 0, 39, 4, 239, 48, 0, 0, 0, 0, 39, 244, 224, 48, 0, 0, 0, 0, 40, 228, 223, 64, 0, 0, 0, 0, 41, 120, 135, 64, 0, 0, 0, 0, 41, 212, 194, 48, 0, 0, 0, 0, 42, 196, 179, 48, 0, 0, 0, 0, 43, 180, 164, 48, 0, 0, 0, 0, 44, 164, 149, 48, 0, 0, 0, 0, 45, 148, 134, 48, 0, 0, 0, 0, 46, 132, 119, 48, 0, 0, 0, 0, 47, 116, 104, 48, 0, 0, 0, 0, 48, 100, 89, 48, 0, 0, 0, 0, 49, 93, 132, 176, 0, 0, 0, 0, 50, 114, 95, 176, 0, 0, 0, 0, 51, 61, 102, 176, 0, 0, 0, 0, 52, 82, 65, 176, 0, 0, 0, 0, 53, 29, 72, 176, 0, 0, 0, 0, 54, 50, 35, 176, 0, 0, 0, 0, 54, 253, 42, 176, 0, 0, 0, 0, 56, 27, 64, 48, 0, 0, 0, 0, 56, 221, 12, 176, 0, 0, 0, 0, 57, 251, 34, 48, 0, 0, 0, 0, 58, 188, 238, 176, 0, 0, 0, 0, 59, 219, 4, 48, 0, 0, 0, 0, 60, 166, 11, 48, 0, 0, 0, 0, 61, 186, 230, 48, 0, 0, 0, 0, 62, 133, 237, 48, 0, 0, 0, 0, 63, 154, 200, 48, 0, 0, 0, 0, 64, 101, 207, 48, 0, 0, 0, 0, 65, 131, 228, 176, 0, 0, 0, 0, 66, 69, 177, 48, 0, 0, 0, 0, 67, 99, 198, 176, 0, 0, 0, 0, 68, 37, 147, 48, 0, 0, 0, 0, 69, 67, 168, 176, 0, 0, 0, 0, 70, 5, 117, 48, 0, 0, 0, 0, 71, 35, 138, 176, 0, 0, 0, 0, 71, 238, 145, 176, 0, 0, 0, 0, 73, 3, 108, 176, 0, 0, 0, 0, 73, 206, 115, 176, 0, 0, 0, 0, 74, 227, 78, 176, 0, 0, 0, 0, 75, 174, 85, 176, 0, 0, 0, 0, 76, 204, 121, 64, 0, 0, 0, 0, 77, 142, 69, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 81, 192, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Novosibirsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 161, 219, 25, 36, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 43, 254, 78, 0, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 87, 147, 204, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 77, 188, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Novosibirsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 161, 219, 25, 36, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 43, 254, 78, 0, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 87, 147, 204, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 77, 188, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 161, 219, 25, 36, 255, 255, 255, 255, 181, 163, 225, 32, 0, 0, 0, 0, 21, 39, 111, 144, 0, 0, 0, 0, 22, 24, 164, 0, 0, 0, 0, 0, 23, 8, 163, 16, 0, 0, 0, 0, 23, 249, 215, 128, 0, 0, 0, 0, 24, 233, 214, 144, 0, 0, 0, 0, 25, 219, 11, 0, 0, 0, 0, 0, 26, 204, 91, 144, 0, 0, 0, 0, 27, 188, 104, 176, 0, 0, 0, 0, 28, 172, 89, 176, 0, 0, 0, 0, 29, 156, 74, 176, 0, 0, 0, 0, 30, 140, 59, 176, 0, 0, 0, 0, 31, 124, 44, 176, 0, 0, 0, 0, 32, 108, 29, 176, 0, 0, 0, 0, 33, 92, 14, 176, 0, 0, 0, 0, 34, 75, 255, 176, 0, 0, 0, 0, 35, 59, 240, 176, 0, 0, 0, 0, 36, 43, 225, 176, 0, 0, 0, 0, 37, 27, 210, 176, 0, 0, 0, 0, 38, 11, 195, 176, 0, 0, 0, 0, 39, 4, 239, 48, 0, 0, 0, 0, 39, 244, 224, 48, 0, 0, 0, 0, 40, 228, 223, 64, 0, 0, 0, 0, 41, 120, 135, 64, 0, 0, 0, 0, 41, 212, 194, 48, 0, 0, 0, 0, 42, 196, 179, 48, 0, 0, 0, 0, 43, 180, 164, 48, 0, 0, 0, 0, 43, 254, 78, 0, 0, 0, 0, 0, 44, 164, 163, 64, 0, 0, 0, 0, 45, 148, 148, 64, 0, 0, 0, 0, 46, 132, 133, 64, 0, 0, 0, 0, 47, 116, 118, 64, 0, 0, 0, 0, 48, 100, 103, 64, 0, 0, 0, 0, 49, 93, 146, 192, 0, 0, 0, 0, 50, 114, 109, 192, 0, 0, 0, 0, 51, 61, 116, 192, 0, 0, 0, 0, 52, 82, 79, 192, 0, 0, 0, 0, 53, 29, 86, 192, 0, 0, 0, 0, 54, 50, 49, 192, 0, 0, 0, 0, 54, 253, 56, 192, 0, 0, 0, 0, 56, 27, 78, 64, 0, 0, 0, 0, 56, 221, 26, 192, 0, 0, 0, 0, 57, 251, 48, 64, 0, 0, 0, 0, 58, 188, 252, 192, 0, 0, 0, 0, 59, 219, 18, 64, 0, 0, 0, 0, 60, 166, 25, 64, 0, 0, 0, 0, 61, 186, 244, 64, 0, 0, 0, 0, 62, 133, 251, 64, 0, 0, 0, 0, 63, 154, 214, 64, 0, 0, 0, 0, 64, 101, 221, 64, 0, 0, 0, 0, 65, 131, 242, 192, 0, 0, 0, 0, 66, 69, 191, 64, 0, 0, 0, 0, 67, 99, 212, 192, 0, 0, 0, 0, 68, 37, 161, 64, 0, 0, 0, 0, 69, 67, 182, 192, 0, 0, 0, 0, 70, 5, 131, 64, 0, 0, 0, 0, 71, 35, 152, 192, 0, 0, 0, 0, 71, 238, 159, 192, 0, 0, 0, 0, 73, 3, 122, 192, 0, 0, 0, 0, 73, 206, 129, 192, 0, 0, 0, 0, 74, 227, 92, 192, 0, 0, 0, 0, 75, 174, 99, 192, 0, 0, 0, 0, 76, 204, 121, 64, 0, 0, 0, 0, 77, 142, 69, 192, 0, 0, 0, 0, 84, 75, 243, 48, 0, 0, 0, 0, 87, 147, 204, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 77, 188, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Omsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 161, 179, 64, 182, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 193, 64, 43, 180, 178, 64, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 68, 202, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Omsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 161, 179, 64, 182, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 193, 64, 43, 180, 178, 64, 44, 164, 163, 64, 45, 148, 148, 64, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 103, 64, 49, 93, 146, 192, 50, 114, 109, 192, 51, 61, 116, 192, 52, 82, 79, 192, 53, 29, 86, 192, 54, 50, 49, 192, 54, 253, 56, 192, 56, 27, 78, 64, 56, 221, 26, 192, 57, 251, 48, 64, 58, 188, 252, 192, 59, 219, 18, 64, 60, 166, 25, 64, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 68, 202, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 161, 179, 64, 182, 255, 255, 255, 255, 181, 163, 239, 48, 0, 0, 0, 0, 21, 39, 125, 160, 0, 0, 0, 0, 22, 24, 178, 16, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 229, 144, 0, 0, 0, 0, 24, 233, 228, 160, 0, 0, 0, 0, 25, 219, 25, 16, 0, 0, 0, 0, 26, 204, 105, 160, 0, 0, 0, 0, 27, 188, 118, 192, 0, 0, 0, 0, 28, 172, 103, 192, 0, 0, 0, 0, 29, 156, 88, 192, 0, 0, 0, 0, 30, 140, 73, 192, 0, 0, 0, 0, 31, 124, 58, 192, 0, 0, 0, 0, 32, 108, 43, 192, 0, 0, 0, 0, 33, 92, 28, 192, 0, 0, 0, 0, 34, 76, 13, 192, 0, 0, 0, 0, 35, 59, 254, 192, 0, 0, 0, 0, 36, 43, 239, 192, 0, 0, 0, 0, 37, 27, 224, 192, 0, 0, 0, 0, 38, 11, 209, 192, 0, 0, 0, 0, 39, 4, 253, 64, 0, 0, 0, 0, 39, 244, 238, 64, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 120, 149, 80, 0, 0, 0, 0, 41, 212, 208, 64, 0, 0, 0, 0, 42, 196, 193, 64, 0, 0, 0, 0, 43, 180, 178, 64, 0, 0, 0, 0, 44, 164, 163, 64, 0, 0, 0, 0, 45, 148, 148, 64, 0, 0, 0, 0, 46, 132, 133, 64, 0, 0, 0, 0, 47, 116, 118, 64, 0, 0, 0, 0, 48, 100, 103, 64, 0, 0, 0, 0, 49, 93, 146, 192, 0, 0, 0, 0, 50, 114, 109, 192, 0, 0, 0, 0, 51, 61, 116, 192, 0, 0, 0, 0, 52, 82, 79, 192, 0, 0, 0, 0, 53, 29, 86, 192, 0, 0, 0, 0, 54, 50, 49, 192, 0, 0, 0, 0, 54, 253, 56, 192, 0, 0, 0, 0, 56, 27, 78, 64, 0, 0, 0, 0, 56, 221, 26, 192, 0, 0, 0, 0, 57, 251, 48, 64, 0, 0, 0, 0, 58, 188, 252, 192, 0, 0, 0, 0, 59, 219, 18, 64, 0, 0, 0, 0, 60, 166, 25, 64, 0, 0, 0, 0, 61, 186, 244, 64, 0, 0, 0, 0, 62, 133, 251, 64, 0, 0, 0, 0, 63, 154, 214, 64, 0, 0, 0, 0, 64, 101, 221, 64, 0, 0, 0, 0, 65, 131, 242, 192, 0, 0, 0, 0, 66, 69, 191, 64, 0, 0, 0, 0, 67, 99, 212, 192, 0, 0, 0, 0, 68, 37, 161, 64, 0, 0, 0, 0, 69, 67, 182, 192, 0, 0, 0, 0, 70, 5, 131, 64, 0, 0, 0, 0, 71, 35, 152, 192, 0, 0, 0, 0, 71, 238, 159, 192, 0, 0, 0, 0, 73, 3, 122, 192, 0, 0, 0, 0, 73, 206, 129, 192, 0, 0, 0, 0, 74, 227, 92, 192, 0, 0, 0, 0, 75, 174, 99, 192, 0, 0, 0, 0, 76, 204, 121, 64, 0, 0, 0, 0, 77, 142, 69, 192, 0, 0, 0, 0, 84, 75, 243, 48, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 68, 202, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Oral": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 20, 170, 25, 147, 220, 181, 164, 11, 80, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 161, 96, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 36, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Oral": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 20, 170, 25, 147, 220, 181, 164, 11, 80, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 161, 96, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 36, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, 20, 255, 255, 255, 255, 170, 25, 147, 220, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 252, 224, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 25, 96, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 221, 96, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 191, 96, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 161, 96, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 131, 96, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 137, 224, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 82, 107, 224, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 77, 224, 0, 0, 0, 0, 54, 253, 84, 224, 0, 0, 0, 0, 56, 27, 106, 96, 0, 0, 0, 0, 56, 221, 54, 224, 0, 0, 0, 0, 57, 251, 76, 96, 0, 0, 0, 0, 58, 189, 24, 224, 0, 0, 0, 0, 59, 219, 46, 96, 0, 0, 0, 0, 60, 166, 53, 96, 0, 0, 0, 0, 61, 187, 16, 96, 0, 0, 0, 0, 62, 134, 23, 96, 0, 0, 0, 0, 63, 154, 242, 96, 0, 0, 0, 0, 64, 101, 249, 96, 0, 0, 0, 0, 65, 132, 14, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 5, 5, 0, 0, 48, 36, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 16, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 54, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Phnom_Penh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Phnom_Penh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 86, 182, 133, 196, 255, 255, 255, 255, 162, 106, 103, 196, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Pontianak": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 31, 139, 255, 142, 0, 186, 22, 223, 0, 203, 121, 164, 8, 210, 86, 238, 112, 215, 60, 198, 8, 218, 255, 38, 0, 244, 181, 190, 136, 33, 218, 116, 128, 1, 2, 3, 2, 4, 2, 5, 6, 0, 0, 102, 128, 0, 0, 0, 0, 102, 128, 0, 4, 0, 0, 105, 120, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 112, 128, 0, 18, 0, 0, 112, 128, 0, 22, 0, 0, 98, 112, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 84, 65, 0, 87, 73, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 66, 45, 55, 10}, + "zoneinfo/Asia/Pontianak": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 31, 139, 255, 142, 0, 186, 22, 223, 0, 203, 121, 164, 8, 210, 86, 238, 112, 215, 60, 198, 8, 218, 255, 38, 0, 244, 181, 190, 136, 33, 218, 116, 128, 1, 2, 3, 2, 4, 2, 5, 6, 0, 0, 102, 128, 0, 0, 0, 0, 102, 128, 0, 4, 0, 0, 105, 120, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 112, 128, 0, 18, 0, 0, 112, 128, 0, 22, 0, 0, 98, 112, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 84, 65, 0, 87, 73, 66, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 31, 255, 255, 255, 255, 139, 255, 142, 0, 255, 255, 255, 255, 186, 22, 223, 0, 255, 255, 255, 255, 203, 121, 164, 8, 255, 255, 255, 255, 210, 86, 238, 112, 255, 255, 255, 255, 215, 60, 198, 8, 255, 255, 255, 255, 218, 255, 38, 0, 255, 255, 255, 255, 244, 181, 190, 136, 0, 0, 0, 0, 33, 218, 116, 128, 1, 2, 3, 2, 4, 2, 5, 6, 0, 0, 102, 128, 0, 0, 0, 0, 102, 128, 0, 4, 0, 0, 105, 120, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 112, 128, 0, 18, 0, 0, 112, 128, 0, 22, 0, 0, 98, 112, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 87, 73, 84, 65, 0, 87, 73, 66, 0, 10, 87, 73, 66, 45, 55, 10}, - "zoneinfo/Asia/Pyongyang": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 12, 139, 215, 241, 156, 146, 230, 22, 248, 210, 47, 97, 112, 85, 206, 2, 112, 90, 236, 117, 112, 1, 2, 3, 1, 3, 0, 0, 117, 228, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 75, 83, 84, 45, 57, 10}, + "zoneinfo/Asia/Pyongyang": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 12, 139, 215, 241, 156, 146, 230, 22, 248, 210, 47, 97, 112, 85, 206, 2, 112, 90, 236, 117, 112, 1, 2, 3, 1, 3, 0, 0, 117, 228, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 139, 215, 241, 156, 255, 255, 255, 255, 146, 230, 22, 248, 255, 255, 255, 255, 210, 47, 97, 112, 0, 0, 0, 0, 85, 206, 2, 112, 0, 0, 0, 0, 90, 236, 117, 112, 1, 2, 3, 1, 3, 0, 0, 117, 228, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 10, 75, 83, 84, 45, 57, 10}, - "zoneinfo/Asia/Qatar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 161, 242, 157, 48, 4, 138, 146, 192, 127, 255, 255, 255, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Qatar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 161, 242, 157, 48, 4, 138, 146, 192, 127, 255, 255, 255, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 161, 242, 157, 48, 0, 0, 0, 0, 4, 138, 146, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 48, 80, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 42, 48, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Qostanay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 136, 92, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 9, 9, 0, 0, 59, 164, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Qostanay": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 136, 92, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 9, 9, 0, 0, 59, 164, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 136, 92, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 132, 80, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 160, 208, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 130, 208, 0, 0, 0, 0, 52, 82, 93, 208, 0, 0, 0, 0, 53, 29, 100, 208, 0, 0, 0, 0, 54, 50, 63, 208, 0, 0, 0, 0, 54, 253, 70, 208, 0, 0, 0, 0, 56, 27, 92, 80, 0, 0, 0, 0, 56, 221, 40, 208, 0, 0, 0, 0, 57, 251, 62, 80, 0, 0, 0, 0, 58, 189, 10, 208, 0, 0, 0, 0, 59, 219, 32, 80, 0, 0, 0, 0, 60, 166, 39, 80, 0, 0, 0, 0, 61, 187, 2, 80, 0, 0, 0, 0, 62, 134, 9, 80, 0, 0, 0, 0, 63, 154, 228, 80, 0, 0, 0, 0, 64, 101, 235, 80, 0, 0, 0, 0, 65, 132, 0, 208, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 9, 9, 0, 0, 59, 164, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 4, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Qyzylorda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 134, 160, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 92, 27, 216, 160, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 8, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 8, 2, 2, 0, 0, 61, 96, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Qyzylorda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 134, 160, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 149, 80, 41, 212, 208, 64, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 92, 27, 216, 160, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 8, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 8, 2, 2, 0, 0, 61, 96, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 134, 160, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 149, 80, 0, 0, 0, 0, 41, 212, 208, 64, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 132, 80, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 160, 208, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 130, 208, 0, 0, 0, 0, 52, 82, 93, 208, 0, 0, 0, 0, 53, 29, 100, 208, 0, 0, 0, 0, 54, 50, 63, 208, 0, 0, 0, 0, 54, 253, 70, 208, 0, 0, 0, 0, 56, 27, 92, 80, 0, 0, 0, 0, 56, 221, 40, 208, 0, 0, 0, 0, 57, 251, 62, 80, 0, 0, 0, 0, 58, 189, 10, 208, 0, 0, 0, 0, 59, 219, 32, 80, 0, 0, 0, 0, 60, 166, 39, 80, 0, 0, 0, 0, 61, 187, 2, 80, 0, 0, 0, 0, 62, 134, 9, 80, 0, 0, 0, 0, 63, 154, 228, 80, 0, 0, 0, 0, 64, 101, 235, 80, 0, 0, 0, 0, 65, 132, 0, 208, 0, 0, 0, 0, 92, 27, 216, 160, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 8, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 8, 2, 2, 0, 0, 61, 96, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Rangoon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 161, 242, 115, 81, 203, 242, 252, 24, 209, 154, 103, 240, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, + "zoneinfo/Asia/Rangoon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 161, 242, 115, 81, 203, 242, 252, 24, 209, 154, 103, 240, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 255, 255, 255, 255, 86, 182, 137, 209, 255, 255, 255, 255, 161, 242, 115, 81, 255, 255, 255, 255, 203, 242, 252, 24, 255, 255, 255, 255, 209, 154, 103, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, - "zoneinfo/Asia/Riyadh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 213, 27, 54, 180, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Asia/Riyadh": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 213, 27, 54, 180, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 213, 27, 54, 180, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 43, 204, 0, 0, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Asia/Saigon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 21, 136, 140, 67, 128, 145, 163, 43, 10, 205, 53, 230, 128, 209, 89, 206, 112, 210, 59, 62, 240, 213, 50, 187, 16, 228, 182, 228, 128, 237, 47, 152, 0, 10, 61, 199, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Saigon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 21, 136, 140, 67, 128, 145, 163, 43, 10, 205, 53, 230, 128, 209, 89, 206, 112, 210, 59, 62, 240, 213, 50, 187, 16, 228, 182, 228, 128, 237, 47, 152, 0, 10, 61, 199, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 136, 140, 67, 128, 255, 255, 255, 255, 145, 163, 43, 10, 255, 255, 255, 255, 205, 53, 230, 128, 255, 255, 255, 255, 209, 89, 206, 112, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 213, 50, 187, 16, 255, 255, 255, 255, 228, 182, 228, 128, 255, 255, 255, 255, 237, 47, 152, 0, 0, 0, 0, 0, 10, 61, 199, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 2, 3, 2, 3, 2, 2, 0, 0, 100, 0, 0, 0, 0, 0, 99, 246, 0, 4, 0, 0, 98, 112, 0, 9, 0, 0, 112, 128, 0, 13, 0, 0, 126, 144, 0, 17, 0, 0, 98, 112, 0, 9, 76, 77, 84, 0, 80, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 56, 0, 43, 48, 57, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Sakhalin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 9, 0, 0, 0, 20, 134, 240, 205, 184, 210, 48, 178, 240, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 250, 248, 0, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 84, 75, 186, 240, 86, 246, 178, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 133, 200, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 50, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Asia/Sakhalin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 9, 0, 0, 0, 20, 134, 240, 205, 184, 210, 48, 178, 240, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 250, 248, 0, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 84, 75, 186, 240, 86, 246, 178, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 133, 200, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 50, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 9, 0, 0, 0, 20, 255, 255, 255, 255, 134, 240, 205, 184, 255, 255, 255, 255, 210, 48, 178, 240, 0, 0, 0, 0, 21, 39, 55, 80, 0, 0, 0, 0, 22, 24, 107, 192, 0, 0, 0, 0, 23, 8, 106, 208, 0, 0, 0, 0, 23, 249, 159, 64, 0, 0, 0, 0, 24, 233, 158, 80, 0, 0, 0, 0, 25, 218, 210, 192, 0, 0, 0, 0, 26, 204, 35, 80, 0, 0, 0, 0, 27, 188, 48, 112, 0, 0, 0, 0, 28, 172, 33, 112, 0, 0, 0, 0, 29, 156, 18, 112, 0, 0, 0, 0, 30, 140, 3, 112, 0, 0, 0, 0, 31, 123, 244, 112, 0, 0, 0, 0, 32, 107, 229, 112, 0, 0, 0, 0, 33, 91, 214, 112, 0, 0, 0, 0, 34, 75, 199, 112, 0, 0, 0, 0, 35, 59, 184, 112, 0, 0, 0, 0, 36, 43, 169, 112, 0, 0, 0, 0, 37, 27, 154, 112, 0, 0, 0, 0, 38, 11, 139, 112, 0, 0, 0, 0, 39, 4, 182, 240, 0, 0, 0, 0, 39, 244, 167, 240, 0, 0, 0, 0, 40, 228, 167, 0, 0, 0, 0, 0, 41, 120, 79, 0, 0, 0, 0, 0, 41, 212, 137, 240, 0, 0, 0, 0, 42, 196, 122, 240, 0, 0, 0, 0, 43, 180, 107, 240, 0, 0, 0, 0, 44, 164, 92, 240, 0, 0, 0, 0, 45, 148, 77, 240, 0, 0, 0, 0, 46, 132, 62, 240, 0, 0, 0, 0, 47, 116, 47, 240, 0, 0, 0, 0, 48, 100, 32, 240, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 114, 39, 112, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 250, 248, 0, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 37, 105, 0, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 238, 103, 128, 0, 0, 0, 0, 73, 3, 66, 128, 0, 0, 0, 0, 73, 206, 73, 128, 0, 0, 0, 0, 74, 227, 36, 128, 0, 0, 0, 0, 75, 174, 43, 128, 0, 0, 0, 0, 76, 204, 65, 0, 0, 0, 0, 0, 77, 142, 13, 128, 0, 0, 0, 0, 84, 75, 186, 240, 0, 0, 0, 0, 86, 246, 178, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 133, 200, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 50, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Asia/Samarkand": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 7, 0, 0, 0, 16, 170, 25, 133, 55, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 237, 80, 41, 96, 190, 48, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 2, 2, 0, 0, 62, 201, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Samarkand": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 7, 0, 0, 0, 16, 170, 25, 133, 55, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 177, 32, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 237, 80, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 0, 0, 62, 201, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 7, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 133, 55, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 3, 2, 3, 2, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 5, 0, 0, 62, 201, 0, 0, 0, 0, 56, 64, 0, 4, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 84, 96, 0, 12, 0, 0, 70, 80, 0, 8, 0, 0, 84, 96, 1, 12, 76, 77, 84, 0, 43, 48, 52, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Seoul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 16, 139, 215, 240, 120, 146, 230, 22, 248, 210, 67, 39, 240, 226, 79, 41, 240, 228, 107, 183, 248, 229, 19, 24, 104, 230, 98, 3, 120, 231, 17, 76, 232, 232, 47, 112, 120, 232, 231, 244, 104, 234, 15, 82, 120, 234, 199, 214, 104, 235, 239, 52, 120, 236, 167, 184, 104, 237, 207, 22, 120, 238, 135, 154, 104, 240, 53, 113, 120, 32, 163, 96, 144, 33, 110, 103, 144, 34, 131, 66, 144, 35, 78, 73, 144, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 75, 83, 84, 45, 57, 10}, + "zoneinfo/Asia/Seoul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 16, 139, 215, 240, 120, 146, 230, 22, 248, 210, 67, 39, 240, 226, 79, 41, 240, 228, 107, 183, 248, 229, 19, 24, 104, 230, 98, 3, 120, 231, 17, 76, 232, 232, 47, 112, 120, 232, 231, 244, 104, 234, 15, 82, 120, 234, 199, 214, 104, 235, 239, 52, 120, 236, 167, 184, 104, 237, 207, 22, 120, 238, 135, 154, 104, 240, 53, 113, 120, 32, 163, 96, 144, 33, 110, 103, 144, 34, 131, 66, 144, 35, 78, 73, 144, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 139, 215, 240, 120, 255, 255, 255, 255, 146, 230, 22, 248, 255, 255, 255, 255, 210, 67, 39, 240, 255, 255, 255, 255, 226, 79, 41, 240, 255, 255, 255, 255, 228, 107, 183, 248, 255, 255, 255, 255, 229, 19, 24, 104, 255, 255, 255, 255, 230, 98, 3, 120, 255, 255, 255, 255, 231, 17, 76, 232, 255, 255, 255, 255, 232, 47, 112, 120, 255, 255, 255, 255, 232, 231, 244, 104, 255, 255, 255, 255, 234, 15, 82, 120, 255, 255, 255, 255, 234, 199, 214, 104, 255, 255, 255, 255, 235, 239, 52, 120, 255, 255, 255, 255, 236, 167, 184, 104, 255, 255, 255, 255, 237, 207, 22, 120, 255, 255, 255, 255, 238, 135, 154, 104, 255, 255, 255, 255, 240, 53, 113, 120, 0, 0, 0, 0, 32, 163, 96, 144, 0, 0, 0, 0, 33, 110, 103, 144, 0, 0, 0, 0, 34, 131, 66, 144, 0, 0, 0, 0, 35, 78, 73, 144, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 10, 75, 83, 84, 45, 57, 10}, - "zoneinfo/Asia/Shanghai": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Shanghai": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 126, 54, 67, 41, 255, 255, 255, 255, 200, 89, 94, 128, 255, 255, 255, 255, 201, 9, 249, 112, 255, 255, 255, 255, 201, 211, 189, 0, 255, 255, 255, 255, 203, 5, 138, 240, 255, 255, 255, 255, 203, 124, 64, 0, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 65, 124, 240, 0, 0, 0, 0, 30, 186, 82, 32, 0, 0, 0, 0, 31, 105, 155, 144, 0, 0, 0, 0, 32, 126, 132, 160, 0, 0, 0, 0, 33, 73, 125, 144, 0, 0, 0, 0, 34, 103, 161, 32, 0, 0, 0, 0, 35, 41, 95, 144, 0, 0, 0, 0, 36, 71, 131, 32, 0, 0, 0, 0, 37, 18, 124, 16, 0, 0, 0, 0, 38, 39, 101, 32, 0, 0, 0, 0, 38, 242, 94, 16, 0, 0, 0, 0, 40, 7, 71, 32, 0, 0, 0, 0, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Singapore": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Singapore": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 255, 255, 255, 255, 126, 54, 83, 163, 255, 255, 255, 255, 134, 131, 133, 163, 255, 255, 255, 255, 186, 103, 78, 144, 255, 255, 255, 255, 192, 10, 228, 96, 255, 255, 255, 255, 202, 179, 229, 96, 255, 255, 255, 255, 203, 145, 95, 8, 255, 255, 255, 255, 210, 72, 109, 240, 0, 0, 0, 0, 22, 145, 245, 8, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Srednekolymsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 51, 228, 181, 163, 168, 224, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 84, 75, 172, 224, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 144, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Asia/Srednekolymsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 170, 25, 51, 228, 181, 163, 168, 224, 21, 39, 55, 80, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 84, 75, 172, 224, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 144, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 51, 228, 255, 255, 255, 255, 181, 163, 168, 224, 0, 0, 0, 0, 21, 39, 55, 80, 0, 0, 0, 0, 22, 24, 107, 192, 0, 0, 0, 0, 23, 8, 106, 208, 0, 0, 0, 0, 23, 249, 159, 64, 0, 0, 0, 0, 24, 233, 158, 80, 0, 0, 0, 0, 25, 218, 210, 192, 0, 0, 0, 0, 26, 204, 35, 80, 0, 0, 0, 0, 27, 188, 48, 112, 0, 0, 0, 0, 28, 172, 33, 112, 0, 0, 0, 0, 29, 156, 18, 112, 0, 0, 0, 0, 30, 140, 3, 112, 0, 0, 0, 0, 31, 123, 244, 112, 0, 0, 0, 0, 32, 107, 229, 112, 0, 0, 0, 0, 33, 91, 214, 112, 0, 0, 0, 0, 34, 75, 199, 112, 0, 0, 0, 0, 35, 59, 184, 112, 0, 0, 0, 0, 36, 43, 169, 112, 0, 0, 0, 0, 37, 27, 154, 112, 0, 0, 0, 0, 38, 11, 139, 112, 0, 0, 0, 0, 39, 4, 182, 240, 0, 0, 0, 0, 39, 244, 167, 240, 0, 0, 0, 0, 40, 228, 167, 0, 0, 0, 0, 0, 41, 120, 79, 0, 0, 0, 0, 0, 41, 212, 137, 240, 0, 0, 0, 0, 42, 196, 122, 240, 0, 0, 0, 0, 43, 180, 107, 240, 0, 0, 0, 0, 44, 164, 92, 240, 0, 0, 0, 0, 45, 148, 77, 240, 0, 0, 0, 0, 46, 132, 62, 240, 0, 0, 0, 0, 47, 116, 47, 240, 0, 0, 0, 0, 48, 100, 32, 240, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 114, 39, 112, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 82, 9, 112, 0, 0, 0, 0, 53, 29, 16, 112, 0, 0, 0, 0, 54, 49, 235, 112, 0, 0, 0, 0, 54, 252, 242, 112, 0, 0, 0, 0, 56, 27, 7, 240, 0, 0, 0, 0, 56, 220, 212, 112, 0, 0, 0, 0, 57, 250, 233, 240, 0, 0, 0, 0, 58, 188, 182, 112, 0, 0, 0, 0, 59, 218, 203, 240, 0, 0, 0, 0, 60, 165, 210, 240, 0, 0, 0, 0, 61, 186, 173, 240, 0, 0, 0, 0, 62, 133, 180, 240, 0, 0, 0, 0, 63, 154, 143, 240, 0, 0, 0, 0, 64, 101, 150, 240, 0, 0, 0, 0, 65, 131, 172, 112, 0, 0, 0, 0, 66, 69, 120, 240, 0, 0, 0, 0, 67, 99, 142, 112, 0, 0, 0, 0, 68, 37, 90, 240, 0, 0, 0, 0, 69, 67, 112, 112, 0, 0, 0, 0, 70, 5, 60, 240, 0, 0, 0, 0, 71, 35, 82, 112, 0, 0, 0, 0, 71, 238, 89, 112, 0, 0, 0, 0, 73, 3, 52, 112, 0, 0, 0, 0, 73, 206, 59, 112, 0, 0, 0, 0, 74, 227, 22, 112, 0, 0, 0, 0, 75, 174, 29, 112, 0, 0, 0, 0, 76, 204, 50, 240, 0, 0, 0, 0, 77, 141, 255, 112, 0, 0, 0, 0, 84, 75, 172, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 144, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 4, 0, 0, 168, 192, 0, 8, 0, 0, 168, 192, 1, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Asia/Taipei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 195, 85, 73, 128, 210, 84, 89, 128, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 231, 153, 240, 218, 255, 38, 0, 219, 200, 205, 112, 220, 224, 89, 128, 221, 170, 0, 240, 222, 114, 115, 0, 223, 181, 100, 112, 224, 124, 133, 0, 225, 150, 151, 240, 226, 93, 184, 128, 227, 119, 203, 112, 228, 62, 236, 0, 229, 48, 32, 112, 230, 33, 113, 0, 231, 18, 165, 112, 232, 2, 164, 128, 232, 243, 216, 240, 233, 227, 216, 0, 234, 213, 12, 112, 235, 197, 11, 128, 236, 182, 63, 240, 237, 247, 252, 0, 238, 152, 196, 240, 239, 217, 47, 128, 240, 121, 248, 112, 7, 252, 86, 0, 8, 237, 138, 112, 9, 221, 137, 128, 10, 206, 189, 240, 17, 219, 161, 128, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/Asia/Taipei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 195, 85, 73, 128, 210, 84, 89, 128, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 231, 153, 240, 218, 255, 38, 0, 219, 200, 205, 112, 220, 224, 89, 128, 221, 170, 0, 240, 222, 114, 115, 0, 223, 181, 100, 112, 224, 124, 133, 0, 225, 150, 151, 240, 226, 93, 184, 128, 227, 119, 203, 112, 228, 62, 236, 0, 229, 48, 32, 112, 230, 33, 113, 0, 231, 18, 165, 112, 232, 2, 164, 128, 232, 243, 216, 240, 233, 227, 216, 0, 234, 213, 12, 112, 235, 197, 11, 128, 236, 182, 63, 240, 237, 247, 252, 0, 238, 152, 196, 240, 239, 217, 47, 128, 240, 121, 248, 112, 7, 252, 86, 0, 8, 237, 138, 112, 9, 221, 137, 128, 10, 206, 189, 240, 17, 219, 161, 128, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 116, 206, 240, 24, 255, 255, 255, 255, 195, 85, 73, 128, 255, 255, 255, 255, 210, 84, 89, 128, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 231, 153, 240, 255, 255, 255, 255, 218, 255, 38, 0, 255, 255, 255, 255, 219, 200, 205, 112, 255, 255, 255, 255, 220, 224, 89, 128, 255, 255, 255, 255, 221, 170, 0, 240, 255, 255, 255, 255, 222, 114, 115, 0, 255, 255, 255, 255, 223, 181, 100, 112, 255, 255, 255, 255, 224, 124, 133, 0, 255, 255, 255, 255, 225, 150, 151, 240, 255, 255, 255, 255, 226, 93, 184, 128, 255, 255, 255, 255, 227, 119, 203, 112, 255, 255, 255, 255, 228, 62, 236, 0, 255, 255, 255, 255, 229, 48, 32, 112, 255, 255, 255, 255, 230, 33, 113, 0, 255, 255, 255, 255, 231, 18, 165, 112, 255, 255, 255, 255, 232, 2, 164, 128, 255, 255, 255, 255, 232, 243, 216, 240, 255, 255, 255, 255, 233, 227, 216, 0, 255, 255, 255, 255, 234, 213, 12, 112, 255, 255, 255, 255, 235, 197, 11, 128, 255, 255, 255, 255, 236, 182, 63, 240, 255, 255, 255, 255, 237, 247, 252, 0, 255, 255, 255, 255, 238, 152, 196, 240, 255, 255, 255, 255, 239, 217, 47, 128, 255, 255, 255, 255, 240, 121, 248, 112, 0, 0, 0, 0, 7, 252, 86, 0, 0, 0, 0, 0, 8, 237, 138, 112, 0, 0, 0, 0, 9, 221, 137, 128, 0, 0, 0, 0, 10, 206, 189, 240, 0, 0, 0, 0, 17, 219, 161, 128, 0, 0, 0, 0, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/Asia/Tashkent": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 8, 0, 0, 0, 16, 170, 25, 131, 9, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 41, 96, 190, 48, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 1, 1, 0, 0, 64, 247, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Tashkent": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 8, 0, 0, 0, 16, 170, 25, 131, 9, 181, 163, 239, 48, 21, 39, 125, 160, 22, 24, 178, 16, 23, 8, 177, 32, 23, 249, 229, 144, 24, 233, 228, 160, 25, 219, 25, 16, 26, 204, 105, 160, 27, 188, 118, 192, 28, 172, 103, 192, 29, 156, 88, 192, 30, 140, 73, 192, 31, 124, 58, 192, 32, 108, 43, 192, 33, 92, 28, 192, 34, 76, 13, 192, 35, 59, 254, 192, 36, 43, 239, 192, 37, 27, 224, 192, 38, 11, 209, 192, 39, 4, 253, 64, 39, 244, 238, 64, 40, 228, 237, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 7, 0, 0, 64, 247, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 8, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 131, 9, 255, 255, 255, 255, 181, 163, 239, 48, 0, 0, 0, 0, 21, 39, 125, 160, 0, 0, 0, 0, 22, 24, 178, 16, 0, 0, 0, 0, 23, 8, 177, 32, 0, 0, 0, 0, 23, 249, 229, 144, 0, 0, 0, 0, 24, 233, 228, 160, 0, 0, 0, 0, 25, 219, 25, 16, 0, 0, 0, 0, 26, 204, 105, 160, 0, 0, 0, 0, 27, 188, 118, 192, 0, 0, 0, 0, 28, 172, 103, 192, 0, 0, 0, 0, 29, 156, 88, 192, 0, 0, 0, 0, 30, 140, 73, 192, 0, 0, 0, 0, 31, 124, 58, 192, 0, 0, 0, 0, 32, 108, 43, 192, 0, 0, 0, 0, 33, 92, 28, 192, 0, 0, 0, 0, 34, 76, 13, 192, 0, 0, 0, 0, 35, 59, 254, 192, 0, 0, 0, 0, 36, 43, 239, 192, 0, 0, 0, 0, 37, 27, 224, 192, 0, 0, 0, 0, 38, 11, 209, 192, 0, 0, 0, 0, 39, 4, 253, 64, 0, 0, 0, 0, 39, 244, 238, 64, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 7, 0, 0, 64, 247, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 0, 12, 0, 0, 98, 112, 1, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 4, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 55, 0, 43, 48, 54, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Tbilisi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 11, 0, 0, 0, 21, 128, 0, 0, 0, 170, 25, 154, 1, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 96, 218, 80, 41, 212, 222, 80, 42, 196, 193, 64, 43, 180, 192, 80, 44, 164, 163, 64, 45, 148, 162, 80, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 89, 48, 49, 93, 146, 192, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 86, 192, 54, 50, 35, 176, 54, 253, 56, 192, 56, 27, 64, 48, 56, 221, 26, 192, 57, 251, 34, 48, 58, 188, 252, 192, 59, 219, 4, 48, 60, 166, 25, 64, 61, 186, 230, 48, 62, 133, 251, 64, 63, 154, 200, 48, 64, 101, 221, 64, 64, 221, 199, 176, 65, 132, 28, 240, 66, 69, 233, 112, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 2, 9, 2, 9, 2, 9, 4, 3, 4, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 9, 8, 4, 4, 0, 0, 41, 255, 0, 0, 0, 0, 41, 255, 0, 4, 0, 0, 42, 48, 0, 9, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 0, 17, 0, 0, 56, 64, 0, 17, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 9, 0, 0, 56, 64, 1, 17, 0, 0, 56, 64, 0, 17, 76, 77, 84, 0, 84, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Asia/Tbilisi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 21, 128, 0, 0, 0, 170, 25, 154, 1, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 222, 80, 42, 196, 193, 64, 43, 180, 192, 80, 44, 164, 163, 64, 45, 148, 162, 80, 46, 132, 133, 64, 47, 116, 118, 64, 48, 100, 89, 48, 49, 93, 146, 192, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 86, 192, 54, 50, 35, 176, 54, 253, 56, 192, 56, 27, 64, 48, 56, 221, 26, 192, 57, 251, 34, 48, 58, 188, 252, 192, 59, 219, 4, 48, 60, 166, 25, 64, 61, 186, 230, 48, 62, 133, 251, 64, 63, 154, 200, 48, 64, 101, 221, 64, 64, 221, 199, 176, 65, 132, 28, 240, 66, 69, 233, 112, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 9, 2, 9, 2, 9, 4, 3, 4, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 9, 8, 4, 4, 0, 0, 41, 255, 0, 0, 0, 0, 41, 255, 0, 4, 0, 0, 42, 48, 0, 9, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 0, 17, 0, 0, 56, 64, 0, 17, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 9, 0, 0, 56, 64, 1, 17, 0, 0, 56, 64, 0, 17, 76, 77, 84, 0, 84, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 11, 0, 0, 0, 21, 255, 255, 255, 255, 86, 182, 186, 1, 255, 255, 255, 255, 170, 25, 154, 1, 255, 255, 255, 255, 231, 218, 12, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 252, 224, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 25, 96, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 229, 9, 112, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 193, 64, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 163, 64, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 133, 64, 0, 0, 0, 0, 47, 116, 118, 64, 0, 0, 0, 0, 48, 100, 89, 48, 0, 0, 0, 0, 49, 93, 146, 192, 0, 0, 0, 0, 51, 61, 102, 176, 0, 0, 0, 0, 52, 82, 65, 176, 0, 0, 0, 0, 53, 29, 86, 192, 0, 0, 0, 0, 54, 50, 35, 176, 0, 0, 0, 0, 54, 253, 56, 192, 0, 0, 0, 0, 56, 27, 64, 48, 0, 0, 0, 0, 56, 221, 26, 192, 0, 0, 0, 0, 57, 251, 34, 48, 0, 0, 0, 0, 58, 188, 252, 192, 0, 0, 0, 0, 59, 219, 4, 48, 0, 0, 0, 0, 60, 166, 25, 64, 0, 0, 0, 0, 61, 186, 230, 48, 0, 0, 0, 0, 62, 133, 251, 64, 0, 0, 0, 0, 63, 154, 200, 48, 0, 0, 0, 0, 64, 101, 221, 64, 0, 0, 0, 0, 64, 221, 199, 176, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 9, 2, 9, 2, 9, 4, 3, 4, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 9, 8, 4, 4, 0, 0, 41, 255, 0, 0, 0, 0, 41, 255, 0, 4, 0, 0, 42, 48, 0, 9, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 0, 17, 0, 0, 56, 64, 0, 17, 0, 0, 70, 80, 1, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 9, 0, 0, 56, 64, 1, 17, 0, 0, 56, 64, 0, 17, 76, 77, 84, 0, 84, 66, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Asia/Tehran": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 7, 0, 0, 0, 28, 154, 108, 125, 200, 210, 219, 18, 200, 14, 187, 162, 72, 15, 116, 45, 64, 16, 142, 64, 48, 16, 237, 58, 64, 17, 85, 103, 200, 18, 69, 74, 184, 19, 55, 236, 200, 20, 45, 21, 184, 40, 32, 118, 200, 40, 219, 157, 184, 41, 203, 156, 200, 42, 190, 34, 184, 43, 172, 208, 72, 44, 159, 86, 56, 45, 142, 3, 200, 46, 128, 137, 184, 47, 111, 55, 72, 48, 97, 189, 56, 49, 80, 106, 200, 50, 66, 240, 184, 51, 50, 239, 200, 52, 37, 117, 184, 53, 20, 35, 72, 54, 6, 169, 56, 54, 245, 86, 200, 55, 231, 220, 184, 56, 214, 138, 72, 57, 201, 16, 56, 58, 185, 15, 72, 59, 171, 149, 56, 60, 154, 66, 200, 61, 140, 200, 184, 62, 123, 118, 72, 63, 109, 252, 56, 64, 92, 169, 200, 65, 79, 47, 184, 66, 63, 46, 200, 67, 49, 180, 184, 71, 226, 201, 72, 72, 213, 79, 56, 73, 197, 78, 72, 74, 183, 212, 56, 75, 166, 129, 200, 76, 153, 7, 184, 77, 135, 181, 72, 78, 122, 59, 56, 79, 104, 232, 200, 80, 91, 110, 184, 81, 75, 109, 200, 82, 61, 243, 184, 83, 44, 161, 72, 84, 31, 39, 56, 85, 13, 212, 200, 86, 0, 90, 184, 86, 239, 8, 72, 87, 225, 142, 56, 88, 209, 141, 72, 89, 196, 19, 56, 90, 178, 192, 200, 91, 165, 70, 184, 92, 147, 244, 72, 93, 134, 122, 56, 94, 117, 39, 200, 95, 103, 173, 184, 96, 87, 172, 200, 97, 74, 50, 184, 98, 56, 224, 72, 99, 43, 102, 56, 100, 26, 19, 200, 101, 12, 153, 184, 101, 251, 71, 72, 102, 237, 205, 56, 103, 221, 204, 72, 104, 208, 82, 56, 105, 190, 255, 200, 106, 177, 133, 184, 107, 160, 51, 72, 108, 146, 185, 56, 109, 129, 102, 200, 110, 115, 236, 184, 111, 98, 154, 72, 112, 85, 32, 56, 113, 69, 31, 72, 114, 55, 165, 56, 115, 38, 82, 200, 116, 24, 216, 184, 117, 7, 134, 72, 117, 250, 12, 56, 118, 232, 185, 200, 119, 219, 63, 184, 120, 203, 62, 200, 121, 189, 196, 184, 122, 172, 114, 72, 123, 158, 248, 56, 124, 141, 165, 200, 125, 128, 43, 184, 126, 110, 217, 72, 127, 97, 95, 56, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 51, 48, 62, 45, 51, 58, 51, 48, 60, 43, 48, 52, 51, 48, 62, 44, 74, 55, 57, 47, 50, 52, 44, 74, 50, 54, 51, 47, 50, 52, 10}, + "zoneinfo/Asia/Tehran": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 7, 0, 0, 0, 28, 154, 108, 125, 200, 210, 219, 18, 200, 14, 187, 162, 72, 15, 116, 45, 64, 16, 142, 64, 48, 16, 237, 58, 64, 17, 85, 103, 200, 18, 69, 74, 184, 19, 55, 236, 200, 20, 45, 21, 184, 40, 32, 118, 200, 40, 219, 157, 184, 41, 203, 156, 200, 42, 190, 34, 184, 43, 172, 208, 72, 44, 159, 86, 56, 45, 142, 3, 200, 46, 128, 137, 184, 47, 111, 55, 72, 48, 97, 189, 56, 49, 80, 106, 200, 50, 66, 240, 184, 51, 50, 239, 200, 52, 37, 117, 184, 53, 20, 35, 72, 54, 6, 169, 56, 54, 245, 86, 200, 55, 231, 220, 184, 56, 214, 138, 72, 57, 201, 16, 56, 58, 185, 15, 72, 59, 171, 149, 56, 60, 154, 66, 200, 61, 140, 200, 184, 62, 123, 118, 72, 63, 109, 252, 56, 64, 92, 169, 200, 65, 79, 47, 184, 66, 63, 46, 200, 67, 49, 180, 184, 71, 226, 201, 72, 72, 213, 79, 56, 73, 197, 78, 72, 74, 183, 212, 56, 75, 166, 129, 200, 76, 153, 7, 184, 77, 135, 181, 72, 78, 122, 59, 56, 79, 104, 232, 200, 80, 91, 110, 184, 81, 75, 109, 200, 82, 61, 243, 184, 83, 44, 161, 72, 84, 31, 39, 56, 85, 13, 212, 200, 86, 0, 90, 184, 86, 239, 8, 72, 87, 225, 142, 56, 88, 209, 141, 72, 89, 196, 19, 56, 90, 178, 192, 200, 91, 165, 70, 184, 92, 147, 244, 72, 93, 134, 122, 56, 94, 117, 39, 200, 95, 103, 173, 184, 96, 87, 172, 200, 97, 74, 50, 184, 98, 56, 224, 72, 99, 43, 102, 56, 100, 26, 19, 200, 101, 12, 153, 184, 101, 251, 71, 72, 102, 237, 205, 56, 103, 221, 204, 72, 104, 208, 82, 56, 105, 190, 255, 200, 106, 177, 133, 184, 107, 160, 51, 72, 108, 146, 185, 56, 109, 129, 102, 200, 110, 115, 236, 184, 111, 98, 154, 72, 112, 85, 32, 56, 113, 69, 31, 72, 114, 55, 165, 56, 115, 38, 82, 200, 116, 24, 216, 184, 117, 7, 134, 72, 117, 250, 12, 56, 118, 232, 185, 200, 119, 219, 63, 184, 120, 203, 62, 200, 121, 189, 196, 184, 122, 172, 114, 72, 123, 158, 248, 56, 124, 141, 165, 200, 125, 128, 43, 184, 126, 110, 217, 72, 127, 97, 95, 56, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 154, 108, 125, 200, 255, 255, 255, 255, 210, 219, 18, 200, 0, 0, 0, 0, 14, 187, 162, 72, 0, 0, 0, 0, 15, 116, 45, 64, 0, 0, 0, 0, 16, 142, 64, 48, 0, 0, 0, 0, 16, 237, 58, 64, 0, 0, 0, 0, 17, 85, 103, 200, 0, 0, 0, 0, 18, 69, 74, 184, 0, 0, 0, 0, 19, 55, 236, 200, 0, 0, 0, 0, 20, 45, 21, 184, 0, 0, 0, 0, 40, 32, 118, 200, 0, 0, 0, 0, 40, 219, 157, 184, 0, 0, 0, 0, 41, 203, 156, 200, 0, 0, 0, 0, 42, 190, 34, 184, 0, 0, 0, 0, 43, 172, 208, 72, 0, 0, 0, 0, 44, 159, 86, 56, 0, 0, 0, 0, 45, 142, 3, 200, 0, 0, 0, 0, 46, 128, 137, 184, 0, 0, 0, 0, 47, 111, 55, 72, 0, 0, 0, 0, 48, 97, 189, 56, 0, 0, 0, 0, 49, 80, 106, 200, 0, 0, 0, 0, 50, 66, 240, 184, 0, 0, 0, 0, 51, 50, 239, 200, 0, 0, 0, 0, 52, 37, 117, 184, 0, 0, 0, 0, 53, 20, 35, 72, 0, 0, 0, 0, 54, 6, 169, 56, 0, 0, 0, 0, 54, 245, 86, 200, 0, 0, 0, 0, 55, 231, 220, 184, 0, 0, 0, 0, 56, 214, 138, 72, 0, 0, 0, 0, 57, 201, 16, 56, 0, 0, 0, 0, 58, 185, 15, 72, 0, 0, 0, 0, 59, 171, 149, 56, 0, 0, 0, 0, 60, 154, 66, 200, 0, 0, 0, 0, 61, 140, 200, 184, 0, 0, 0, 0, 62, 123, 118, 72, 0, 0, 0, 0, 63, 109, 252, 56, 0, 0, 0, 0, 64, 92, 169, 200, 0, 0, 0, 0, 65, 79, 47, 184, 0, 0, 0, 0, 66, 63, 46, 200, 0, 0, 0, 0, 67, 49, 180, 184, 0, 0, 0, 0, 71, 226, 201, 72, 0, 0, 0, 0, 72, 213, 79, 56, 0, 0, 0, 0, 73, 197, 78, 72, 0, 0, 0, 0, 74, 183, 212, 56, 0, 0, 0, 0, 75, 166, 129, 200, 0, 0, 0, 0, 76, 153, 7, 184, 0, 0, 0, 0, 77, 135, 181, 72, 0, 0, 0, 0, 78, 122, 59, 56, 0, 0, 0, 0, 79, 104, 232, 200, 0, 0, 0, 0, 80, 91, 110, 184, 0, 0, 0, 0, 81, 75, 109, 200, 0, 0, 0, 0, 82, 61, 243, 184, 0, 0, 0, 0, 83, 44, 161, 72, 0, 0, 0, 0, 84, 31, 39, 56, 0, 0, 0, 0, 85, 13, 212, 200, 0, 0, 0, 0, 86, 0, 90, 184, 0, 0, 0, 0, 86, 239, 8, 72, 0, 0, 0, 0, 87, 225, 142, 56, 0, 0, 0, 0, 88, 209, 141, 72, 0, 0, 0, 0, 89, 196, 19, 56, 0, 0, 0, 0, 90, 178, 192, 200, 0, 0, 0, 0, 91, 165, 70, 184, 0, 0, 0, 0, 92, 147, 244, 72, 0, 0, 0, 0, 93, 134, 122, 56, 0, 0, 0, 0, 94, 117, 39, 200, 0, 0, 0, 0, 95, 103, 173, 184, 0, 0, 0, 0, 96, 87, 172, 200, 0, 0, 0, 0, 97, 74, 50, 184, 0, 0, 0, 0, 98, 56, 224, 72, 0, 0, 0, 0, 99, 43, 102, 56, 0, 0, 0, 0, 100, 26, 19, 200, 0, 0, 0, 0, 101, 12, 153, 184, 0, 0, 0, 0, 101, 251, 71, 72, 0, 0, 0, 0, 102, 237, 205, 56, 0, 0, 0, 0, 103, 221, 204, 72, 0, 0, 0, 0, 104, 208, 82, 56, 0, 0, 0, 0, 105, 190, 255, 200, 0, 0, 0, 0, 106, 177, 133, 184, 0, 0, 0, 0, 107, 160, 51, 72, 0, 0, 0, 0, 108, 146, 185, 56, 0, 0, 0, 0, 109, 129, 102, 200, 0, 0, 0, 0, 110, 115, 236, 184, 0, 0, 0, 0, 111, 98, 154, 72, 0, 0, 0, 0, 112, 85, 32, 56, 0, 0, 0, 0, 113, 69, 31, 72, 0, 0, 0, 0, 114, 55, 165, 56, 0, 0, 0, 0, 115, 38, 82, 200, 0, 0, 0, 0, 116, 24, 216, 184, 0, 0, 0, 0, 117, 7, 134, 72, 0, 0, 0, 0, 117, 250, 12, 56, 0, 0, 0, 0, 118, 232, 185, 200, 0, 0, 0, 0, 119, 219, 63, 184, 0, 0, 0, 0, 120, 203, 62, 200, 0, 0, 0, 0, 121, 189, 196, 184, 0, 0, 0, 0, 122, 172, 114, 72, 0, 0, 0, 0, 123, 158, 248, 56, 0, 0, 0, 0, 124, 141, 165, 200, 0, 0, 0, 0, 125, 128, 43, 184, 0, 0, 0, 0, 126, 110, 217, 72, 0, 0, 0, 0, 127, 97, 95, 56, 0, 0, 0, 0, 128, 81, 94, 72, 0, 0, 0, 0, 129, 67, 228, 56, 0, 0, 0, 0, 130, 50, 145, 200, 0, 0, 0, 0, 131, 37, 23, 184, 0, 0, 0, 0, 132, 19, 197, 72, 0, 0, 0, 0, 133, 6, 75, 56, 0, 0, 0, 0, 133, 244, 248, 200, 0, 0, 0, 0, 134, 231, 126, 184, 0, 0, 0, 0, 135, 215, 125, 200, 0, 0, 0, 0, 136, 202, 3, 184, 0, 0, 0, 0, 137, 184, 177, 72, 0, 0, 0, 0, 138, 171, 55, 56, 0, 0, 0, 0, 139, 153, 228, 200, 0, 0, 0, 0, 140, 140, 106, 184, 0, 0, 0, 0, 141, 123, 24, 72, 0, 0, 0, 0, 142, 109, 158, 56, 0, 0, 0, 0, 143, 93, 157, 72, 0, 0, 0, 0, 144, 80, 35, 56, 0, 0, 0, 0, 145, 62, 208, 200, 0, 0, 0, 0, 146, 49, 86, 184, 0, 0, 0, 0, 147, 32, 4, 72, 0, 0, 0, 0, 148, 18, 138, 56, 0, 0, 0, 0, 149, 1, 55, 200, 0, 0, 0, 0, 149, 243, 189, 184, 0, 0, 0, 0, 150, 227, 188, 200, 0, 0, 0, 0, 151, 214, 66, 184, 0, 0, 0, 0, 152, 196, 240, 72, 0, 0, 0, 0, 153, 183, 118, 56, 0, 0, 0, 0, 154, 166, 35, 200, 0, 0, 0, 0, 155, 152, 169, 184, 0, 0, 0, 0, 156, 135, 87, 72, 0, 0, 0, 0, 157, 121, 221, 56, 0, 0, 0, 0, 158, 105, 220, 72, 0, 0, 0, 0, 159, 92, 98, 56, 0, 0, 0, 0, 160, 75, 15, 200, 0, 0, 0, 0, 161, 61, 149, 184, 0, 0, 0, 0, 162, 44, 67, 72, 0, 0, 0, 0, 163, 30, 201, 56, 0, 0, 0, 0, 164, 13, 118, 200, 0, 0, 0, 0, 164, 255, 252, 184, 0, 0, 0, 0, 165, 239, 251, 200, 0, 0, 0, 0, 166, 226, 129, 184, 0, 0, 0, 0, 167, 209, 47, 72, 0, 0, 0, 0, 168, 195, 181, 56, 0, 0, 0, 0, 169, 178, 98, 200, 0, 0, 0, 0, 170, 164, 232, 184, 0, 0, 0, 0, 171, 147, 150, 72, 0, 0, 0, 0, 172, 134, 28, 56, 0, 0, 0, 0, 173, 116, 201, 200, 0, 0, 0, 0, 174, 103, 79, 184, 0, 0, 0, 0, 175, 87, 78, 200, 0, 0, 0, 0, 176, 73, 212, 184, 0, 0, 0, 0, 177, 56, 130, 72, 0, 0, 0, 0, 178, 43, 8, 56, 0, 0, 0, 0, 179, 25, 181, 200, 0, 0, 0, 0, 180, 12, 59, 184, 0, 0, 0, 0, 180, 250, 233, 72, 0, 0, 0, 0, 181, 237, 111, 56, 0, 0, 0, 0, 182, 221, 110, 72, 0, 0, 0, 0, 183, 207, 244, 56, 0, 0, 0, 0, 184, 190, 161, 200, 0, 0, 0, 0, 185, 177, 39, 184, 0, 0, 0, 0, 186, 159, 213, 72, 0, 0, 0, 0, 187, 146, 91, 56, 0, 0, 0, 0, 188, 129, 8, 200, 0, 0, 0, 0, 189, 115, 142, 184, 0, 0, 0, 0, 190, 99, 141, 200, 0, 0, 0, 0, 191, 86, 19, 184, 0, 0, 0, 0, 192, 68, 193, 72, 0, 0, 0, 0, 193, 55, 71, 56, 0, 0, 0, 0, 194, 37, 244, 200, 0, 0, 0, 0, 195, 24, 122, 184, 0, 0, 0, 0, 196, 7, 40, 72, 0, 0, 0, 0, 196, 249, 174, 56, 0, 0, 0, 0, 197, 233, 173, 72, 0, 0, 0, 0, 198, 220, 51, 56, 0, 0, 0, 0, 199, 202, 224, 200, 0, 0, 0, 0, 200, 189, 102, 184, 0, 0, 0, 0, 201, 172, 20, 72, 0, 0, 0, 0, 202, 158, 154, 56, 0, 0, 0, 0, 203, 141, 71, 200, 0, 0, 0, 0, 204, 127, 205, 184, 0, 0, 0, 0, 205, 111, 204, 200, 0, 0, 0, 0, 206, 98, 82, 184, 0, 0, 0, 0, 207, 81, 0, 72, 0, 0, 0, 0, 208, 67, 134, 56, 0, 0, 0, 0, 209, 50, 51, 200, 0, 0, 0, 0, 210, 36, 185, 184, 0, 0, 0, 0, 211, 19, 103, 72, 0, 0, 0, 0, 212, 5, 237, 56, 0, 0, 0, 0, 212, 245, 236, 72, 0, 0, 0, 0, 213, 232, 114, 56, 0, 0, 0, 0, 214, 215, 31, 200, 0, 0, 0, 0, 215, 201, 165, 184, 0, 0, 0, 0, 216, 184, 83, 72, 0, 0, 0, 0, 217, 170, 217, 56, 0, 0, 0, 0, 218, 153, 134, 200, 0, 0, 0, 0, 219, 140, 12, 184, 0, 0, 0, 0, 220, 124, 11, 200, 0, 0, 0, 0, 221, 110, 145, 184, 0, 0, 0, 0, 222, 93, 63, 72, 0, 0, 0, 0, 223, 79, 197, 56, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 10, 60, 43, 48, 51, 51, 48, 62, 45, 51, 58, 51, 48, 60, 43, 48, 52, 51, 48, 62, 44, 74, 55, 57, 47, 50, 52, 44, 74, 50, 54, 51, 47, 50, 52, 10}, - "zoneinfo/Asia/Tel_Aviv": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Asia/Tel_Aviv": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 19, 232, 170, 224, 20, 32, 9, 224, 26, 249, 116, 224, 27, 141, 28, 224, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 86, 182, 194, 250, 255, 255, 255, 255, 158, 48, 69, 136, 255, 255, 255, 255, 200, 89, 178, 224, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 205, 172, 254, 0, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 201, 112, 255, 255, 255, 255, 211, 101, 176, 128, 255, 255, 255, 255, 212, 107, 224, 208, 255, 255, 255, 255, 215, 90, 20, 96, 255, 255, 255, 255, 215, 223, 31, 192, 255, 255, 255, 255, 216, 47, 181, 112, 255, 255, 255, 255, 217, 30, 70, 224, 255, 255, 255, 255, 218, 16, 232, 240, 255, 255, 255, 255, 218, 235, 179, 224, 255, 255, 255, 255, 219, 180, 52, 0, 255, 255, 255, 255, 220, 185, 32, 224, 255, 255, 255, 255, 221, 224, 141, 0, 255, 255, 255, 255, 222, 180, 206, 128, 255, 255, 255, 255, 223, 164, 191, 128, 255, 255, 255, 255, 224, 139, 118, 0, 255, 255, 255, 255, 225, 86, 125, 0, 255, 255, 255, 255, 226, 190, 74, 96, 255, 255, 255, 255, 227, 54, 52, 208, 255, 255, 255, 255, 228, 156, 247, 0, 255, 255, 255, 255, 229, 22, 22, 208, 255, 255, 255, 255, 230, 116, 211, 224, 255, 255, 255, 255, 231, 17, 210, 128, 255, 255, 255, 255, 232, 39, 255, 0, 255, 255, 255, 255, 232, 232, 79, 208, 0, 0, 0, 0, 8, 124, 139, 224, 0, 0, 0, 0, 8, 253, 176, 208, 0, 0, 0, 0, 9, 246, 234, 96, 0, 0, 0, 0, 10, 166, 51, 208, 0, 0, 0, 0, 19, 232, 170, 224, 0, 0, 0, 0, 20, 32, 9, 224, 0, 0, 0, 0, 26, 249, 116, 224, 0, 0, 0, 0, 27, 141, 28, 224, 0, 0, 0, 0, 28, 190, 248, 224, 0, 0, 0, 0, 29, 137, 241, 208, 0, 0, 0, 0, 30, 204, 255, 96, 0, 0, 0, 0, 31, 96, 153, 80, 0, 0, 0, 0, 32, 130, 177, 96, 0, 0, 0, 0, 33, 73, 181, 208, 0, 0, 0, 0, 34, 94, 158, 224, 0, 0, 0, 0, 35, 32, 93, 80, 0, 0, 0, 0, 36, 90, 48, 96, 0, 0, 0, 0, 37, 0, 63, 80, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 38, 214, 230, 208, 0, 0, 0, 0, 39, 235, 207, 224, 0, 0, 0, 0, 40, 192, 3, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 169, 31, 208, 0, 0, 0, 0, 43, 187, 101, 224, 0, 0, 0, 0, 44, 137, 1, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 95, 169, 80, 0, 0, 0, 0, 47, 123, 41, 224, 0, 0, 0, 0, 48, 72, 197, 208, 0, 0, 0, 0, 49, 72, 150, 224, 0, 0, 0, 0, 50, 60, 110, 80, 0, 0, 0, 0, 51, 49, 179, 96, 0, 0, 0, 0, 52, 26, 254, 208, 0, 0, 0, 0, 53, 17, 149, 96, 0, 0, 0, 0, 53, 241, 166, 80, 0, 0, 0, 0, 55, 4, 8, 128, 0, 0, 0, 0, 55, 207, 1, 112, 0, 0, 0, 0, 56, 246, 95, 128, 0, 0, 0, 0, 57, 220, 249, 224, 0, 0, 0, 0, 58, 208, 237, 112, 0, 0, 0, 0, 59, 174, 91, 96, 0, 0, 0, 0, 60, 163, 160, 112, 0, 0, 0, 0, 61, 160, 178, 96, 0, 0, 0, 0, 62, 131, 130, 112, 0, 0, 0, 0, 63, 124, 159, 224, 0, 0, 0, 0, 64, 115, 54, 112, 0, 0, 0, 0, 65, 80, 164, 96, 0, 0, 0, 0, 66, 76, 143, 0, 0, 0, 0, 0, 67, 72, 79, 112, 0, 0, 0, 0, 68, 44, 113, 0, 0, 0, 0, 0, 69, 30, 246, 240, 0, 0, 0, 0, 70, 12, 83, 0, 0, 0, 0, 0, 70, 236, 99, 240, 0, 0, 0, 0, 71, 236, 53, 0, 0, 0, 0, 0, 72, 231, 245, 112, 0, 0, 0, 0, 73, 204, 23, 0, 0, 0, 0, 0, 74, 190, 156, 240, 0, 0, 0, 0, 75, 171, 249, 0, 0, 0, 0, 0, 76, 140, 9, 240, 0, 0, 0, 0, 77, 149, 21, 128, 0, 0, 0, 0, 78, 135, 155, 112, 0, 0, 0, 0, 79, 116, 247, 128, 0, 0, 0, 0, 80, 94, 66, 240, 0, 0, 0, 0, 81, 84, 217, 128, 0, 0, 0, 0, 82, 108, 73, 112, 0, 0, 0, 0, 83, 52, 187, 128, 0, 0, 0, 0, 84, 76, 43, 112, 0, 0, 0, 0, 85, 20, 157, 128, 0, 0, 0, 0, 86, 44, 13, 112, 0, 0, 0, 0, 86, 244, 127, 128, 0, 0, 0, 0, 88, 21, 41, 240, 0, 0, 0, 0, 88, 212, 97, 128, 0, 0, 0, 0, 89, 245, 11, 240, 0, 0, 0, 0, 90, 180, 67, 128, 0, 0, 0, 0, 91, 212, 237, 240, 0, 0, 0, 0, 92, 157, 96, 0, 0, 0, 0, 0, 93, 180, 207, 240, 0, 0, 0, 0, 94, 125, 66, 0, 0, 0, 0, 0, 95, 148, 177, 240, 0, 0, 0, 0, 96, 93, 36, 0, 0, 0, 0, 0, 97, 125, 206, 112, 0, 0, 0, 0, 98, 61, 6, 0, 0, 0, 0, 0, 99, 93, 176, 112, 0, 0, 0, 0, 100, 28, 232, 0, 0, 0, 0, 0, 101, 61, 146, 112, 0, 0, 0, 0, 102, 6, 4, 128, 0, 0, 0, 0, 103, 29, 116, 112, 0, 0, 0, 0, 103, 229, 230, 128, 0, 0, 0, 0, 104, 253, 86, 112, 0, 0, 0, 0, 105, 197, 200, 128, 0, 0, 0, 0, 106, 221, 56, 112, 0, 0, 0, 0, 107, 165, 170, 128, 0, 0, 0, 0, 108, 198, 84, 240, 0, 0, 0, 0, 109, 133, 140, 128, 0, 0, 0, 0, 110, 166, 54, 240, 0, 0, 0, 0, 111, 101, 110, 128, 0, 0, 0, 0, 112, 134, 24, 240, 0, 0, 0, 0, 113, 78, 139, 0, 0, 0, 0, 0, 114, 101, 250, 240, 0, 0, 0, 0, 115, 46, 109, 0, 0, 0, 0, 0, 116, 69, 220, 240, 0, 0, 0, 0, 117, 14, 79, 0, 0, 0, 0, 0, 118, 46, 249, 112, 0, 0, 0, 0, 118, 238, 49, 0, 0, 0, 0, 0, 120, 14, 219, 112, 0, 0, 0, 0, 120, 206, 19, 0, 0, 0, 0, 0, 121, 238, 189, 112, 0, 0, 0, 0, 122, 173, 245, 0, 0, 0, 0, 0, 123, 206, 159, 112, 0, 0, 0, 0, 124, 151, 17, 128, 0, 0, 0, 0, 125, 174, 129, 112, 0, 0, 0, 0, 126, 118, 243, 128, 0, 0, 0, 0, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Asia/Thimbu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 213, 230, 21, 116, 33, 97, 77, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Thimbu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 213, 230, 21, 116, 33, 97, 77, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 213, 230, 21, 116, 0, 0, 0, 0, 33, 97, 77, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Thimphu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 213, 230, 21, 116, 33, 97, 77, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Thimphu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 213, 230, 21, 116, 33, 97, 77, 168, 127, 255, 255, 255, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 213, 230, 21, 116, 0, 0, 0, 0, 33, 97, 77, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 84, 12, 0, 0, 0, 0, 77, 88, 0, 4, 0, 0, 84, 96, 0, 10, 76, 77, 84, 0, 43, 48, 53, 51, 48, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Tokyo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 215, 62, 2, 112, 215, 237, 89, 240, 216, 248, 250, 112, 217, 205, 59, 240, 219, 7, 0, 240, 219, 173, 29, 240, 220, 230, 226, 240, 221, 140, 255, 240, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 74, 83, 84, 45, 57, 10}, + "zoneinfo/Asia/Tokyo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 215, 62, 2, 112, 215, 237, 89, 240, 216, 248, 250, 112, 217, 205, 59, 240, 219, 7, 0, 240, 219, 173, 29, 240, 220, 230, 226, 240, 221, 140, 255, 240, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 101, 194, 164, 112, 255, 255, 255, 255, 215, 62, 2, 112, 255, 255, 255, 255, 215, 237, 89, 240, 255, 255, 255, 255, 216, 248, 250, 112, 255, 255, 255, 255, 217, 205, 59, 240, 255, 255, 255, 255, 219, 7, 0, 240, 255, 255, 255, 255, 219, 173, 29, 240, 255, 255, 255, 255, 220, 230, 226, 240, 255, 255, 255, 255, 221, 140, 255, 240, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 74, 83, 84, 45, 57, 10}, - "zoneinfo/Asia/Tomsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 161, 229, 78, 217, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 60, 206, 233, 176, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 87, 73, 248, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 79, 167, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Tomsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 161, 229, 78, 217, 181, 163, 225, 32, 21, 39, 111, 144, 22, 24, 164, 0, 23, 8, 163, 16, 23, 249, 215, 128, 24, 233, 214, 144, 25, 219, 11, 0, 26, 204, 91, 144, 27, 188, 104, 176, 28, 172, 89, 176, 29, 156, 74, 176, 30, 140, 59, 176, 31, 124, 44, 176, 32, 108, 29, 176, 33, 92, 14, 176, 34, 75, 255, 176, 35, 59, 240, 176, 36, 43, 225, 176, 37, 27, 210, 176, 38, 11, 195, 176, 39, 4, 239, 48, 39, 244, 224, 48, 40, 228, 223, 64, 41, 120, 135, 64, 41, 212, 194, 48, 42, 196, 179, 48, 43, 180, 164, 48, 44, 164, 149, 48, 45, 148, 134, 48, 46, 132, 119, 48, 47, 116, 104, 48, 48, 100, 89, 48, 49, 93, 132, 176, 50, 114, 95, 176, 51, 61, 102, 176, 52, 82, 65, 176, 53, 29, 72, 176, 54, 50, 35, 176, 54, 253, 42, 176, 56, 27, 64, 48, 56, 221, 12, 176, 57, 251, 34, 48, 58, 188, 238, 176, 59, 219, 4, 48, 60, 166, 11, 48, 60, 206, 233, 176, 61, 186, 244, 64, 62, 133, 251, 64, 63, 154, 214, 64, 64, 101, 221, 64, 65, 131, 242, 192, 66, 69, 191, 64, 67, 99, 212, 192, 68, 37, 161, 64, 69, 67, 182, 192, 70, 5, 131, 64, 71, 35, 152, 192, 71, 238, 159, 192, 73, 3, 122, 192, 73, 206, 129, 192, 74, 227, 92, 192, 75, 174, 99, 192, 76, 204, 121, 64, 77, 142, 69, 192, 84, 75, 243, 48, 87, 73, 248, 192, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 79, 167, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 161, 229, 78, 217, 255, 255, 255, 255, 181, 163, 225, 32, 0, 0, 0, 0, 21, 39, 111, 144, 0, 0, 0, 0, 22, 24, 164, 0, 0, 0, 0, 0, 23, 8, 163, 16, 0, 0, 0, 0, 23, 249, 215, 128, 0, 0, 0, 0, 24, 233, 214, 144, 0, 0, 0, 0, 25, 219, 11, 0, 0, 0, 0, 0, 26, 204, 91, 144, 0, 0, 0, 0, 27, 188, 104, 176, 0, 0, 0, 0, 28, 172, 89, 176, 0, 0, 0, 0, 29, 156, 74, 176, 0, 0, 0, 0, 30, 140, 59, 176, 0, 0, 0, 0, 31, 124, 44, 176, 0, 0, 0, 0, 32, 108, 29, 176, 0, 0, 0, 0, 33, 92, 14, 176, 0, 0, 0, 0, 34, 75, 255, 176, 0, 0, 0, 0, 35, 59, 240, 176, 0, 0, 0, 0, 36, 43, 225, 176, 0, 0, 0, 0, 37, 27, 210, 176, 0, 0, 0, 0, 38, 11, 195, 176, 0, 0, 0, 0, 39, 4, 239, 48, 0, 0, 0, 0, 39, 244, 224, 48, 0, 0, 0, 0, 40, 228, 223, 64, 0, 0, 0, 0, 41, 120, 135, 64, 0, 0, 0, 0, 41, 212, 194, 48, 0, 0, 0, 0, 42, 196, 179, 48, 0, 0, 0, 0, 43, 180, 164, 48, 0, 0, 0, 0, 44, 164, 149, 48, 0, 0, 0, 0, 45, 148, 134, 48, 0, 0, 0, 0, 46, 132, 119, 48, 0, 0, 0, 0, 47, 116, 104, 48, 0, 0, 0, 0, 48, 100, 89, 48, 0, 0, 0, 0, 49, 93, 132, 176, 0, 0, 0, 0, 50, 114, 95, 176, 0, 0, 0, 0, 51, 61, 102, 176, 0, 0, 0, 0, 52, 82, 65, 176, 0, 0, 0, 0, 53, 29, 72, 176, 0, 0, 0, 0, 54, 50, 35, 176, 0, 0, 0, 0, 54, 253, 42, 176, 0, 0, 0, 0, 56, 27, 64, 48, 0, 0, 0, 0, 56, 221, 12, 176, 0, 0, 0, 0, 57, 251, 34, 48, 0, 0, 0, 0, 58, 188, 238, 176, 0, 0, 0, 0, 59, 219, 4, 48, 0, 0, 0, 0, 60, 166, 11, 48, 0, 0, 0, 0, 60, 206, 233, 176, 0, 0, 0, 0, 61, 186, 244, 64, 0, 0, 0, 0, 62, 133, 251, 64, 0, 0, 0, 0, 63, 154, 214, 64, 0, 0, 0, 0, 64, 101, 221, 64, 0, 0, 0, 0, 65, 131, 242, 192, 0, 0, 0, 0, 66, 69, 191, 64, 0, 0, 0, 0, 67, 99, 212, 192, 0, 0, 0, 0, 68, 37, 161, 64, 0, 0, 0, 0, 69, 67, 182, 192, 0, 0, 0, 0, 70, 5, 131, 64, 0, 0, 0, 0, 71, 35, 152, 192, 0, 0, 0, 0, 71, 238, 159, 192, 0, 0, 0, 0, 73, 3, 122, 192, 0, 0, 0, 0, 73, 206, 129, 192, 0, 0, 0, 0, 74, 227, 92, 192, 0, 0, 0, 0, 75, 174, 99, 192, 0, 0, 0, 0, 76, 204, 121, 64, 0, 0, 0, 0, 77, 142, 69, 192, 0, 0, 0, 0, 84, 75, 243, 48, 0, 0, 0, 0, 87, 73, 248, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 79, 167, 0, 0, 0, 0, 84, 96, 0, 4, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 0, 12, 0, 0, 98, 112, 0, 12, 0, 0, 112, 128, 1, 8, 0, 0, 98, 112, 1, 12, 0, 0, 84, 96, 0, 4, 0, 0, 98, 112, 1, 12, 0, 0, 98, 112, 0, 12, 76, 77, 84, 0, 43, 48, 54, 0, 43, 48, 56, 0, 43, 48, 55, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Ujung_Pandang": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 21, 161, 242, 93, 144, 186, 22, 213, 144, 203, 136, 29, 128, 210, 86, 238, 112, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 87, 73, 84, 65, 45, 56, 10}, + "zoneinfo/Asia/Ujung_Pandang": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 21, 161, 242, 93, 144, 186, 22, 213, 144, 203, 136, 29, 128, 210, 86, 238, 112, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 21, 255, 255, 255, 255, 161, 242, 93, 144, 255, 255, 255, 255, 186, 22, 213, 144, 255, 255, 255, 255, 203, 136, 29, 128, 255, 255, 255, 255, 210, 86, 238, 112, 1, 2, 3, 4, 0, 0, 111, 240, 0, 0, 0, 0, 111, 240, 0, 4, 0, 0, 112, 128, 0, 8, 0, 0, 126, 144, 0, 12, 0, 0, 112, 128, 0, 16, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 87, 73, 84, 65, 0, 10, 87, 73, 84, 65, 45, 56, 10}, - "zoneinfo/Asia/Ulaanbaatar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 134, 211, 238, 76, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 48, 112, 28, 172, 47, 128, 29, 156, 18, 112, 30, 140, 17, 128, 31, 123, 244, 112, 32, 107, 243, 128, 33, 91, 214, 112, 34, 75, 213, 128, 35, 59, 184, 112, 36, 43, 183, 128, 37, 27, 154, 112, 38, 11, 153, 128, 39, 4, 182, 240, 39, 244, 182, 0, 40, 228, 152, 240, 41, 212, 152, 0, 42, 196, 122, 240, 43, 180, 122, 0, 44, 164, 92, 240, 45, 148, 92, 0, 46, 132, 62, 240, 47, 116, 62, 0, 48, 100, 32, 240, 49, 93, 90, 128, 50, 77, 61, 112, 51, 61, 60, 128, 52, 45, 31, 112, 53, 29, 30, 128, 54, 13, 1, 112, 58, 233, 179, 160, 59, 180, 172, 144, 60, 164, 171, 160, 61, 148, 142, 144, 62, 132, 141, 160, 63, 116, 112, 144, 64, 100, 111, 160, 65, 84, 82, 144, 66, 68, 81, 160, 67, 52, 52, 144, 68, 36, 51, 160, 69, 29, 81, 16, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Ulaanbaatar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 134, 211, 238, 76, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 48, 112, 28, 172, 47, 128, 29, 156, 18, 112, 30, 140, 17, 128, 31, 123, 244, 112, 32, 107, 243, 128, 33, 91, 214, 112, 34, 75, 213, 128, 35, 59, 184, 112, 36, 43, 183, 128, 37, 27, 154, 112, 38, 11, 153, 128, 39, 4, 182, 240, 39, 244, 182, 0, 40, 228, 152, 240, 41, 212, 152, 0, 42, 196, 122, 240, 43, 180, 122, 0, 44, 164, 92, 240, 45, 148, 92, 0, 46, 132, 62, 240, 47, 116, 62, 0, 48, 100, 32, 240, 49, 93, 90, 128, 50, 77, 61, 112, 51, 61, 60, 128, 52, 45, 31, 112, 53, 29, 30, 128, 54, 13, 1, 112, 58, 233, 179, 160, 59, 180, 172, 144, 60, 164, 171, 160, 61, 148, 142, 144, 62, 132, 141, 160, 63, 116, 112, 144, 64, 100, 111, 160, 65, 84, 82, 144, 66, 68, 81, 160, 67, 52, 52, 144, 68, 36, 51, 160, 69, 29, 81, 16, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 134, 211, 238, 76, 0, 0, 0, 0, 15, 11, 220, 144, 0, 0, 0, 0, 24, 233, 200, 128, 0, 0, 0, 0, 25, 218, 252, 240, 0, 0, 0, 0, 26, 204, 77, 128, 0, 0, 0, 0, 27, 188, 48, 112, 0, 0, 0, 0, 28, 172, 47, 128, 0, 0, 0, 0, 29, 156, 18, 112, 0, 0, 0, 0, 30, 140, 17, 128, 0, 0, 0, 0, 31, 123, 244, 112, 0, 0, 0, 0, 32, 107, 243, 128, 0, 0, 0, 0, 33, 91, 214, 112, 0, 0, 0, 0, 34, 75, 213, 128, 0, 0, 0, 0, 35, 59, 184, 112, 0, 0, 0, 0, 36, 43, 183, 128, 0, 0, 0, 0, 37, 27, 154, 112, 0, 0, 0, 0, 38, 11, 153, 128, 0, 0, 0, 0, 39, 4, 182, 240, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 228, 152, 240, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 196, 122, 240, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 164, 92, 240, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 132, 62, 240, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 100, 32, 240, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 77, 61, 112, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 45, 31, 112, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 13, 1, 112, 0, 0, 0, 0, 58, 233, 179, 160, 0, 0, 0, 0, 59, 180, 172, 144, 0, 0, 0, 0, 60, 164, 171, 160, 0, 0, 0, 0, 61, 148, 142, 144, 0, 0, 0, 0, 62, 132, 141, 160, 0, 0, 0, 0, 63, 116, 112, 144, 0, 0, 0, 0, 64, 100, 111, 160, 0, 0, 0, 0, 65, 84, 82, 144, 0, 0, 0, 0, 66, 68, 81, 160, 0, 0, 0, 0, 67, 52, 52, 144, 0, 0, 0, 0, 68, 36, 51, 160, 0, 0, 0, 0, 69, 29, 81, 16, 0, 0, 0, 0, 85, 21, 154, 160, 0, 0, 0, 0, 86, 5, 97, 112, 0, 0, 0, 0, 86, 245, 124, 160, 0, 0, 0, 0, 87, 229, 67, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Ulan_Bator": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 134, 211, 238, 76, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 48, 112, 28, 172, 47, 128, 29, 156, 18, 112, 30, 140, 17, 128, 31, 123, 244, 112, 32, 107, 243, 128, 33, 91, 214, 112, 34, 75, 213, 128, 35, 59, 184, 112, 36, 43, 183, 128, 37, 27, 154, 112, 38, 11, 153, 128, 39, 4, 182, 240, 39, 244, 182, 0, 40, 228, 152, 240, 41, 212, 152, 0, 42, 196, 122, 240, 43, 180, 122, 0, 44, 164, 92, 240, 45, 148, 92, 0, 46, 132, 62, 240, 47, 116, 62, 0, 48, 100, 32, 240, 49, 93, 90, 128, 50, 77, 61, 112, 51, 61, 60, 128, 52, 45, 31, 112, 53, 29, 30, 128, 54, 13, 1, 112, 58, 233, 179, 160, 59, 180, 172, 144, 60, 164, 171, 160, 61, 148, 142, 144, 62, 132, 141, 160, 63, 116, 112, 144, 64, 100, 111, 160, 65, 84, 82, 144, 66, 68, 81, 160, 67, 52, 52, 144, 68, 36, 51, 160, 69, 29, 81, 16, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Asia/Ulan_Bator": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 134, 211, 238, 76, 15, 11, 220, 144, 24, 233, 200, 128, 25, 218, 252, 240, 26, 204, 77, 128, 27, 188, 48, 112, 28, 172, 47, 128, 29, 156, 18, 112, 30, 140, 17, 128, 31, 123, 244, 112, 32, 107, 243, 128, 33, 91, 214, 112, 34, 75, 213, 128, 35, 59, 184, 112, 36, 43, 183, 128, 37, 27, 154, 112, 38, 11, 153, 128, 39, 4, 182, 240, 39, 244, 182, 0, 40, 228, 152, 240, 41, 212, 152, 0, 42, 196, 122, 240, 43, 180, 122, 0, 44, 164, 92, 240, 45, 148, 92, 0, 46, 132, 62, 240, 47, 116, 62, 0, 48, 100, 32, 240, 49, 93, 90, 128, 50, 77, 61, 112, 51, 61, 60, 128, 52, 45, 31, 112, 53, 29, 30, 128, 54, 13, 1, 112, 58, 233, 179, 160, 59, 180, 172, 144, 60, 164, 171, 160, 61, 148, 142, 144, 62, 132, 141, 160, 63, 116, 112, 144, 64, 100, 111, 160, 65, 84, 82, 144, 66, 68, 81, 160, 67, 52, 52, 144, 68, 36, 51, 160, 69, 29, 81, 16, 85, 21, 154, 160, 86, 5, 97, 112, 86, 245, 124, 160, 87, 229, 67, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 134, 211, 238, 76, 0, 0, 0, 0, 15, 11, 220, 144, 0, 0, 0, 0, 24, 233, 200, 128, 0, 0, 0, 0, 25, 218, 252, 240, 0, 0, 0, 0, 26, 204, 77, 128, 0, 0, 0, 0, 27, 188, 48, 112, 0, 0, 0, 0, 28, 172, 47, 128, 0, 0, 0, 0, 29, 156, 18, 112, 0, 0, 0, 0, 30, 140, 17, 128, 0, 0, 0, 0, 31, 123, 244, 112, 0, 0, 0, 0, 32, 107, 243, 128, 0, 0, 0, 0, 33, 91, 214, 112, 0, 0, 0, 0, 34, 75, 213, 128, 0, 0, 0, 0, 35, 59, 184, 112, 0, 0, 0, 0, 36, 43, 183, 128, 0, 0, 0, 0, 37, 27, 154, 112, 0, 0, 0, 0, 38, 11, 153, 128, 0, 0, 0, 0, 39, 4, 182, 240, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 228, 152, 240, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 196, 122, 240, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 164, 92, 240, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 132, 62, 240, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 100, 32, 240, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 77, 61, 112, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 45, 31, 112, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 13, 1, 112, 0, 0, 0, 0, 58, 233, 179, 160, 0, 0, 0, 0, 59, 180, 172, 144, 0, 0, 0, 0, 60, 164, 171, 160, 0, 0, 0, 0, 61, 148, 142, 144, 0, 0, 0, 0, 62, 132, 141, 160, 0, 0, 0, 0, 63, 116, 112, 144, 0, 0, 0, 0, 64, 100, 111, 160, 0, 0, 0, 0, 65, 84, 82, 144, 0, 0, 0, 0, 66, 68, 81, 160, 0, 0, 0, 0, 67, 52, 52, 144, 0, 0, 0, 0, 68, 36, 51, 160, 0, 0, 0, 0, 69, 29, 81, 16, 0, 0, 0, 0, 85, 21, 154, 160, 0, 0, 0, 0, 86, 5, 97, 112, 0, 0, 0, 0, 86, 245, 124, 160, 0, 0, 0, 0, 87, 229, 67, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 0, 0, 100, 52, 0, 0, 0, 0, 98, 112, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 112, 128, 0, 12, 76, 77, 84, 0, 43, 48, 55, 0, 43, 48, 57, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Asia/Urumqi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 176, 254, 186, 100, 127, 255, 255, 255, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Asia/Urumqi": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 176, 254, 186, 100, 127, 255, 255, 255, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 176, 254, 186, 100, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 82, 28, 0, 0, 0, 0, 84, 96, 0, 4, 76, 77, 84, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Asia/Ust-Nera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 24, 161, 219, 221, 186, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 78, 109, 244, 64, 84, 75, 186, 240, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 8, 8, 0, 0, 134, 70, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 20, 0, 0, 168, 192, 0, 16, 0, 0, 168, 192, 1, 16, 0, 0, 140, 160, 0, 20, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 50, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Asia/Ust-Nera": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 24, 161, 219, 221, 186, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 107, 192, 23, 8, 106, 208, 23, 249, 159, 64, 24, 233, 158, 80, 25, 218, 210, 192, 26, 204, 35, 80, 27, 188, 48, 112, 28, 172, 33, 112, 29, 156, 18, 112, 30, 140, 3, 112, 31, 123, 244, 112, 32, 107, 229, 112, 33, 91, 214, 112, 34, 75, 199, 112, 35, 59, 184, 112, 36, 43, 169, 112, 37, 27, 154, 112, 38, 11, 139, 112, 39, 4, 182, 240, 39, 244, 167, 240, 40, 228, 167, 0, 41, 120, 79, 0, 41, 212, 137, 240, 42, 196, 122, 240, 43, 180, 107, 240, 44, 164, 92, 240, 45, 148, 77, 240, 46, 132, 62, 240, 47, 116, 47, 240, 48, 100, 32, 240, 49, 93, 76, 112, 50, 114, 39, 112, 51, 61, 46, 112, 52, 82, 9, 112, 53, 29, 16, 112, 54, 49, 235, 112, 54, 252, 242, 112, 56, 27, 7, 240, 56, 220, 212, 112, 57, 250, 233, 240, 58, 188, 182, 112, 59, 218, 203, 240, 60, 165, 210, 240, 61, 186, 173, 240, 62, 133, 180, 240, 63, 154, 143, 240, 64, 101, 150, 240, 65, 131, 172, 112, 66, 69, 120, 240, 67, 99, 142, 112, 68, 37, 90, 240, 69, 67, 112, 112, 70, 5, 60, 240, 71, 35, 82, 112, 71, 238, 89, 112, 73, 3, 52, 112, 73, 206, 59, 112, 74, 227, 22, 112, 75, 174, 29, 112, 76, 204, 50, 240, 77, 141, 255, 112, 78, 109, 244, 64, 84, 75, 186, 240, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 8, 8, 0, 0, 134, 70, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 20, 0, 0, 168, 192, 0, 16, 0, 0, 168, 192, 1, 16, 0, 0, 140, 160, 0, 20, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 50, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 24, 255, 255, 255, 255, 161, 219, 221, 186, 255, 255, 255, 255, 181, 163, 197, 0, 0, 0, 0, 0, 21, 39, 83, 112, 0, 0, 0, 0, 22, 24, 107, 192, 0, 0, 0, 0, 23, 8, 106, 208, 0, 0, 0, 0, 23, 249, 159, 64, 0, 0, 0, 0, 24, 233, 158, 80, 0, 0, 0, 0, 25, 218, 210, 192, 0, 0, 0, 0, 26, 204, 35, 80, 0, 0, 0, 0, 27, 188, 48, 112, 0, 0, 0, 0, 28, 172, 33, 112, 0, 0, 0, 0, 29, 156, 18, 112, 0, 0, 0, 0, 30, 140, 3, 112, 0, 0, 0, 0, 31, 123, 244, 112, 0, 0, 0, 0, 32, 107, 229, 112, 0, 0, 0, 0, 33, 91, 214, 112, 0, 0, 0, 0, 34, 75, 199, 112, 0, 0, 0, 0, 35, 59, 184, 112, 0, 0, 0, 0, 36, 43, 169, 112, 0, 0, 0, 0, 37, 27, 154, 112, 0, 0, 0, 0, 38, 11, 139, 112, 0, 0, 0, 0, 39, 4, 182, 240, 0, 0, 0, 0, 39, 244, 167, 240, 0, 0, 0, 0, 40, 228, 167, 0, 0, 0, 0, 0, 41, 120, 79, 0, 0, 0, 0, 0, 41, 212, 137, 240, 0, 0, 0, 0, 42, 196, 122, 240, 0, 0, 0, 0, 43, 180, 107, 240, 0, 0, 0, 0, 44, 164, 92, 240, 0, 0, 0, 0, 45, 148, 77, 240, 0, 0, 0, 0, 46, 132, 62, 240, 0, 0, 0, 0, 47, 116, 47, 240, 0, 0, 0, 0, 48, 100, 32, 240, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 114, 39, 112, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 82, 9, 112, 0, 0, 0, 0, 53, 29, 16, 112, 0, 0, 0, 0, 54, 49, 235, 112, 0, 0, 0, 0, 54, 252, 242, 112, 0, 0, 0, 0, 56, 27, 7, 240, 0, 0, 0, 0, 56, 220, 212, 112, 0, 0, 0, 0, 57, 250, 233, 240, 0, 0, 0, 0, 58, 188, 182, 112, 0, 0, 0, 0, 59, 218, 203, 240, 0, 0, 0, 0, 60, 165, 210, 240, 0, 0, 0, 0, 61, 186, 173, 240, 0, 0, 0, 0, 62, 133, 180, 240, 0, 0, 0, 0, 63, 154, 143, 240, 0, 0, 0, 0, 64, 101, 150, 240, 0, 0, 0, 0, 65, 131, 172, 112, 0, 0, 0, 0, 66, 69, 120, 240, 0, 0, 0, 0, 67, 99, 142, 112, 0, 0, 0, 0, 68, 37, 90, 240, 0, 0, 0, 0, 69, 67, 112, 112, 0, 0, 0, 0, 70, 5, 60, 240, 0, 0, 0, 0, 71, 35, 82, 112, 0, 0, 0, 0, 71, 238, 89, 112, 0, 0, 0, 0, 73, 3, 52, 112, 0, 0, 0, 0, 73, 206, 59, 112, 0, 0, 0, 0, 74, 227, 22, 112, 0, 0, 0, 0, 75, 174, 29, 112, 0, 0, 0, 0, 76, 204, 50, 240, 0, 0, 0, 0, 77, 141, 255, 112, 0, 0, 0, 0, 78, 109, 244, 64, 0, 0, 0, 0, 84, 75, 186, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 8, 8, 0, 0, 134, 70, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 0, 12, 0, 0, 168, 192, 1, 16, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 20, 0, 0, 168, 192, 0, 16, 0, 0, 168, 192, 1, 16, 0, 0, 140, 160, 0, 20, 76, 77, 84, 0, 43, 48, 56, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 50, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Asia/Vientiane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Asia/Vientiane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 162, 106, 103, 196, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 86, 182, 133, 196, 255, 255, 255, 255, 162, 106, 103, 196, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 94, 60, 0, 0, 0, 0, 94, 60, 0, 4, 0, 0, 98, 112, 0, 8, 76, 77, 84, 0, 66, 77, 84, 0, 43, 48, 55, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Asia/Vladivostok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 167, 89, 71, 93, 181, 163, 182, 240, 21, 39, 69, 96, 22, 24, 121, 208, 23, 8, 120, 224, 23, 249, 173, 80, 24, 233, 172, 96, 25, 218, 224, 208, 26, 204, 49, 96, 27, 188, 62, 128, 28, 172, 47, 128, 29, 156, 32, 128, 30, 140, 17, 128, 31, 124, 2, 128, 32, 107, 243, 128, 33, 91, 228, 128, 34, 75, 213, 128, 35, 59, 198, 128, 36, 43, 183, 128, 37, 27, 168, 128, 38, 11, 153, 128, 39, 4, 197, 0, 39, 244, 182, 0, 40, 228, 181, 16, 41, 120, 93, 16, 41, 212, 152, 0, 42, 196, 137, 0, 43, 180, 122, 0, 44, 164, 107, 0, 45, 148, 92, 0, 46, 132, 77, 0, 47, 116, 62, 0, 48, 100, 47, 0, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 250, 248, 0, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 84, 75, 186, 240, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 123, 163, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 1, 12, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Asia/Vladivostok": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 167, 89, 71, 93, 181, 163, 182, 240, 21, 39, 69, 96, 22, 24, 121, 208, 23, 8, 120, 224, 23, 249, 173, 80, 24, 233, 172, 96, 25, 218, 224, 208, 26, 204, 49, 96, 27, 188, 62, 128, 28, 172, 47, 128, 29, 156, 32, 128, 30, 140, 17, 128, 31, 124, 2, 128, 32, 107, 243, 128, 33, 91, 228, 128, 34, 75, 213, 128, 35, 59, 198, 128, 36, 43, 183, 128, 37, 27, 168, 128, 38, 11, 153, 128, 39, 4, 197, 0, 39, 244, 182, 0, 40, 228, 181, 16, 41, 120, 93, 16, 41, 212, 152, 0, 42, 196, 137, 0, 43, 180, 122, 0, 44, 164, 107, 0, 45, 148, 92, 0, 46, 132, 77, 0, 47, 116, 62, 0, 48, 100, 47, 0, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 250, 248, 0, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 37, 105, 0, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 238, 103, 128, 73, 3, 66, 128, 73, 206, 73, 128, 74, 227, 36, 128, 75, 174, 43, 128, 76, 204, 65, 0, 77, 142, 13, 128, 84, 75, 186, 240, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 123, 163, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 1, 12, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 167, 89, 71, 93, 255, 255, 255, 255, 181, 163, 182, 240, 0, 0, 0, 0, 21, 39, 69, 96, 0, 0, 0, 0, 22, 24, 121, 208, 0, 0, 0, 0, 23, 8, 120, 224, 0, 0, 0, 0, 23, 249, 173, 80, 0, 0, 0, 0, 24, 233, 172, 96, 0, 0, 0, 0, 25, 218, 224, 208, 0, 0, 0, 0, 26, 204, 49, 96, 0, 0, 0, 0, 27, 188, 62, 128, 0, 0, 0, 0, 28, 172, 47, 128, 0, 0, 0, 0, 29, 156, 32, 128, 0, 0, 0, 0, 30, 140, 17, 128, 0, 0, 0, 0, 31, 124, 2, 128, 0, 0, 0, 0, 32, 107, 243, 128, 0, 0, 0, 0, 33, 91, 228, 128, 0, 0, 0, 0, 34, 75, 213, 128, 0, 0, 0, 0, 35, 59, 198, 128, 0, 0, 0, 0, 36, 43, 183, 128, 0, 0, 0, 0, 37, 27, 168, 128, 0, 0, 0, 0, 38, 11, 153, 128, 0, 0, 0, 0, 39, 4, 197, 0, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 228, 181, 16, 0, 0, 0, 0, 41, 120, 93, 16, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 196, 137, 0, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 164, 107, 0, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 132, 77, 0, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 100, 47, 0, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 250, 248, 0, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 37, 105, 0, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 238, 103, 128, 0, 0, 0, 0, 73, 3, 66, 128, 0, 0, 0, 0, 73, 206, 73, 128, 0, 0, 0, 0, 74, 227, 36, 128, 0, 0, 0, 0, 75, 174, 43, 128, 0, 0, 0, 0, 76, 204, 65, 0, 0, 0, 0, 0, 77, 142, 13, 128, 0, 0, 0, 0, 84, 75, 186, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 123, 163, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 1, 12, 0, 0, 126, 144, 0, 4, 0, 0, 154, 176, 0, 8, 0, 0, 154, 176, 1, 8, 0, 0, 140, 160, 0, 12, 76, 77, 84, 0, 43, 48, 57, 0, 43, 49, 49, 0, 43, 49, 48, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Asia/Yakutsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 161, 219, 234, 94, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 64, 101, 179, 16, 65, 131, 200, 144, 66, 69, 149, 16, 67, 99, 170, 144, 68, 37, 119, 16, 69, 67, 140, 144, 70, 5, 89, 16, 71, 35, 110, 144, 71, 238, 117, 144, 73, 3, 80, 144, 73, 206, 87, 144, 74, 227, 50, 144, 75, 174, 57, 144, 76, 204, 79, 16, 77, 142, 27, 144, 84, 75, 201, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 121, 162, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + "zoneinfo/Asia/Yakutsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 161, 219, 234, 94, 181, 163, 197, 0, 21, 39, 83, 112, 22, 24, 135, 224, 23, 8, 134, 240, 23, 249, 187, 96, 24, 233, 186, 112, 25, 218, 238, 224, 26, 204, 63, 112, 27, 188, 76, 144, 28, 172, 61, 144, 29, 156, 46, 144, 30, 140, 31, 144, 31, 124, 16, 144, 32, 108, 1, 144, 33, 91, 242, 144, 34, 75, 227, 144, 35, 59, 212, 144, 36, 43, 197, 144, 37, 27, 182, 144, 38, 11, 167, 144, 39, 4, 211, 16, 39, 244, 196, 16, 40, 228, 195, 32, 41, 120, 107, 32, 41, 212, 166, 16, 42, 196, 151, 16, 43, 180, 136, 16, 44, 164, 121, 16, 45, 148, 106, 16, 46, 132, 91, 16, 47, 116, 76, 16, 48, 100, 61, 16, 49, 93, 104, 144, 50, 114, 67, 144, 51, 61, 74, 144, 52, 82, 37, 144, 53, 29, 44, 144, 54, 50, 7, 144, 54, 253, 14, 144, 56, 27, 36, 16, 56, 220, 240, 144, 57, 251, 6, 16, 58, 188, 210, 144, 59, 218, 232, 16, 60, 165, 239, 16, 61, 186, 202, 16, 62, 133, 209, 16, 63, 154, 172, 16, 64, 101, 179, 16, 65, 131, 200, 144, 66, 69, 149, 16, 67, 99, 170, 144, 68, 37, 119, 16, 69, 67, 140, 144, 70, 5, 89, 16, 71, 35, 110, 144, 71, 238, 117, 144, 73, 3, 80, 144, 73, 206, 87, 144, 74, 227, 50, 144, 75, 174, 57, 144, 76, 204, 79, 16, 77, 142, 27, 144, 84, 75, 201, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 121, 162, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 161, 219, 234, 94, 255, 255, 255, 255, 181, 163, 197, 0, 0, 0, 0, 0, 21, 39, 83, 112, 0, 0, 0, 0, 22, 24, 135, 224, 0, 0, 0, 0, 23, 8, 134, 240, 0, 0, 0, 0, 23, 249, 187, 96, 0, 0, 0, 0, 24, 233, 186, 112, 0, 0, 0, 0, 25, 218, 238, 224, 0, 0, 0, 0, 26, 204, 63, 112, 0, 0, 0, 0, 27, 188, 76, 144, 0, 0, 0, 0, 28, 172, 61, 144, 0, 0, 0, 0, 29, 156, 46, 144, 0, 0, 0, 0, 30, 140, 31, 144, 0, 0, 0, 0, 31, 124, 16, 144, 0, 0, 0, 0, 32, 108, 1, 144, 0, 0, 0, 0, 33, 91, 242, 144, 0, 0, 0, 0, 34, 75, 227, 144, 0, 0, 0, 0, 35, 59, 212, 144, 0, 0, 0, 0, 36, 43, 197, 144, 0, 0, 0, 0, 37, 27, 182, 144, 0, 0, 0, 0, 38, 11, 167, 144, 0, 0, 0, 0, 39, 4, 211, 16, 0, 0, 0, 0, 39, 244, 196, 16, 0, 0, 0, 0, 40, 228, 195, 32, 0, 0, 0, 0, 41, 120, 107, 32, 0, 0, 0, 0, 41, 212, 166, 16, 0, 0, 0, 0, 42, 196, 151, 16, 0, 0, 0, 0, 43, 180, 136, 16, 0, 0, 0, 0, 44, 164, 121, 16, 0, 0, 0, 0, 45, 148, 106, 16, 0, 0, 0, 0, 46, 132, 91, 16, 0, 0, 0, 0, 47, 116, 76, 16, 0, 0, 0, 0, 48, 100, 61, 16, 0, 0, 0, 0, 49, 93, 104, 144, 0, 0, 0, 0, 50, 114, 67, 144, 0, 0, 0, 0, 51, 61, 74, 144, 0, 0, 0, 0, 52, 82, 37, 144, 0, 0, 0, 0, 53, 29, 44, 144, 0, 0, 0, 0, 54, 50, 7, 144, 0, 0, 0, 0, 54, 253, 14, 144, 0, 0, 0, 0, 56, 27, 36, 16, 0, 0, 0, 0, 56, 220, 240, 144, 0, 0, 0, 0, 57, 251, 6, 16, 0, 0, 0, 0, 58, 188, 210, 144, 0, 0, 0, 0, 59, 218, 232, 16, 0, 0, 0, 0, 60, 165, 239, 16, 0, 0, 0, 0, 61, 186, 202, 16, 0, 0, 0, 0, 62, 133, 209, 16, 0, 0, 0, 0, 63, 154, 172, 16, 0, 0, 0, 0, 64, 101, 179, 16, 0, 0, 0, 0, 65, 131, 200, 144, 0, 0, 0, 0, 66, 69, 149, 16, 0, 0, 0, 0, 67, 99, 170, 144, 0, 0, 0, 0, 68, 37, 119, 16, 0, 0, 0, 0, 69, 67, 140, 144, 0, 0, 0, 0, 70, 5, 89, 16, 0, 0, 0, 0, 71, 35, 110, 144, 0, 0, 0, 0, 71, 238, 117, 144, 0, 0, 0, 0, 73, 3, 80, 144, 0, 0, 0, 0, 73, 206, 87, 144, 0, 0, 0, 0, 74, 227, 50, 144, 0, 0, 0, 0, 75, 174, 57, 144, 0, 0, 0, 0, 76, 204, 79, 16, 0, 0, 0, 0, 77, 142, 27, 144, 0, 0, 0, 0, 84, 75, 201, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 4, 0, 0, 121, 162, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 0, 0, 126, 144, 0, 12, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 140, 160, 1, 8, 0, 0, 126, 144, 0, 12, 76, 77, 84, 0, 43, 48, 56, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 57, 62, 45, 57, 10}, - "zoneinfo/Asia/Yangon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 161, 242, 115, 81, 203, 242, 252, 24, 209, 154, 103, 240, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, + "zoneinfo/Asia/Yangon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 128, 0, 0, 0, 161, 242, 115, 81, 203, 242, 252, 24, 209, 154, 103, 240, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 18, 255, 255, 255, 255, 86, 182, 137, 209, 255, 255, 255, 255, 161, 242, 115, 81, 255, 255, 255, 255, 203, 242, 252, 24, 255, 255, 255, 255, 209, 154, 103, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 2, 0, 0, 90, 47, 0, 0, 0, 0, 90, 47, 0, 4, 0, 0, 91, 104, 0, 8, 0, 0, 126, 144, 0, 14, 0, 0, 91, 104, 0, 8, 76, 77, 84, 0, 82, 77, 84, 0, 43, 48, 54, 51, 48, 0, 43, 48, 57, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, - "zoneinfo/Asia/Yekaterinburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 155, 95, 9, 39, 161, 18, 177, 255, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 66, 69, 205, 80, 67, 99, 226, 208, 68, 37, 175, 80, 69, 67, 196, 208, 70, 5, 145, 80, 71, 35, 166, 208, 71, 238, 173, 208, 73, 3, 136, 208, 73, 206, 143, 208, 74, 227, 106, 208, 75, 174, 113, 208, 76, 204, 135, 80, 77, 142, 83, 208, 84, 76, 1, 64, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 56, 217, 0, 0, 0, 0, 52, 193, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 16, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Asia/Yekaterinburg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 155, 95, 9, 39, 161, 18, 177, 255, 181, 163, 253, 64, 21, 39, 139, 176, 22, 24, 192, 32, 23, 8, 191, 48, 23, 249, 243, 160, 24, 233, 242, 176, 25, 219, 39, 32, 26, 204, 119, 176, 27, 188, 132, 208, 28, 172, 117, 208, 29, 156, 102, 208, 30, 140, 87, 208, 31, 124, 72, 208, 32, 108, 57, 208, 33, 92, 42, 208, 34, 76, 27, 208, 35, 60, 12, 208, 36, 43, 253, 208, 37, 27, 238, 208, 38, 11, 223, 208, 39, 5, 11, 80, 39, 244, 252, 80, 40, 228, 251, 96, 41, 120, 163, 96, 41, 212, 222, 80, 42, 196, 207, 80, 43, 180, 192, 80, 44, 164, 177, 80, 45, 148, 162, 80, 46, 132, 147, 80, 47, 116, 132, 80, 48, 100, 117, 80, 49, 93, 160, 208, 50, 114, 123, 208, 51, 61, 130, 208, 52, 82, 93, 208, 53, 29, 100, 208, 54, 50, 63, 208, 54, 253, 70, 208, 56, 27, 92, 80, 56, 221, 40, 208, 57, 251, 62, 80, 58, 189, 10, 208, 59, 219, 32, 80, 60, 166, 39, 80, 61, 187, 2, 80, 62, 134, 9, 80, 63, 154, 228, 80, 64, 101, 235, 80, 65, 132, 0, 208, 66, 69, 205, 80, 67, 99, 226, 208, 68, 37, 175, 80, 69, 67, 196, 208, 70, 5, 145, 80, 71, 35, 166, 208, 71, 238, 173, 208, 73, 3, 136, 208, 73, 206, 143, 208, 74, 227, 106, 208, 75, 174, 113, 208, 76, 204, 135, 80, 77, 142, 83, 208, 84, 76, 1, 64, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 56, 217, 0, 0, 0, 0, 52, 193, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 16, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 255, 255, 255, 255, 155, 95, 9, 39, 255, 255, 255, 255, 161, 18, 177, 255, 255, 255, 255, 255, 181, 163, 253, 64, 0, 0, 0, 0, 21, 39, 139, 176, 0, 0, 0, 0, 22, 24, 192, 32, 0, 0, 0, 0, 23, 8, 191, 48, 0, 0, 0, 0, 23, 249, 243, 160, 0, 0, 0, 0, 24, 233, 242, 176, 0, 0, 0, 0, 25, 219, 39, 32, 0, 0, 0, 0, 26, 204, 119, 176, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 117, 208, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 87, 208, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 57, 208, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 27, 208, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 43, 253, 208, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 223, 208, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 244, 252, 80, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 120, 163, 96, 0, 0, 0, 0, 41, 212, 222, 80, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 192, 80, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 162, 80, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 132, 80, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 160, 208, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 130, 208, 0, 0, 0, 0, 52, 82, 93, 208, 0, 0, 0, 0, 53, 29, 100, 208, 0, 0, 0, 0, 54, 50, 63, 208, 0, 0, 0, 0, 54, 253, 70, 208, 0, 0, 0, 0, 56, 27, 92, 80, 0, 0, 0, 0, 56, 221, 40, 208, 0, 0, 0, 0, 57, 251, 62, 80, 0, 0, 0, 0, 58, 189, 10, 208, 0, 0, 0, 0, 59, 219, 32, 80, 0, 0, 0, 0, 60, 166, 39, 80, 0, 0, 0, 0, 61, 187, 2, 80, 0, 0, 0, 0, 62, 134, 9, 80, 0, 0, 0, 0, 63, 154, 228, 80, 0, 0, 0, 0, 64, 101, 235, 80, 0, 0, 0, 0, 65, 132, 0, 208, 0, 0, 0, 0, 66, 69, 205, 80, 0, 0, 0, 0, 67, 99, 226, 208, 0, 0, 0, 0, 68, 37, 175, 80, 0, 0, 0, 0, 69, 67, 196, 208, 0, 0, 0, 0, 70, 5, 145, 80, 0, 0, 0, 0, 71, 35, 166, 208, 0, 0, 0, 0, 71, 238, 173, 208, 0, 0, 0, 0, 73, 3, 136, 208, 0, 0, 0, 0, 73, 206, 143, 208, 0, 0, 0, 0, 74, 227, 106, 208, 0, 0, 0, 0, 75, 174, 113, 208, 0, 0, 0, 0, 76, 204, 135, 80, 0, 0, 0, 0, 77, 142, 83, 208, 0, 0, 0, 0, 84, 76, 1, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 9, 5, 5, 0, 0, 56, 217, 0, 0, 0, 0, 52, 193, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 0, 0, 70, 80, 0, 16, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 1, 16, 0, 0, 56, 64, 0, 8, 0, 0, 84, 96, 0, 12, 0, 0, 84, 96, 1, 12, 0, 0, 70, 80, 0, 16, 76, 77, 84, 0, 80, 77, 84, 0, 43, 48, 52, 0, 43, 48, 54, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Asia/Yerevan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 154, 72, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 50, 201, 112, 192, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 66, 69, 219, 96, 67, 99, 240, 224, 68, 37, 189, 96, 69, 67, 210, 224, 70, 5, 159, 96, 71, 35, 180, 224, 71, 238, 187, 224, 73, 3, 150, 224, 73, 206, 157, 224, 74, 227, 120, 224, 75, 174, 127, 224, 76, 204, 149, 96, 77, 30, 54, 64, 77, 142, 97, 224, 78, 172, 119, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 4, 3, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 3, 5, 4, 4, 0, 0, 41, 184, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Asia/Yerevan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 10, 0, 0, 0, 16, 170, 25, 154, 72, 231, 218, 12, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 27, 252, 224, 38, 11, 237, 224, 39, 5, 25, 96, 39, 245, 10, 96, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 66, 69, 219, 96, 67, 99, 240, 224, 68, 37, 189, 96, 69, 67, 210, 224, 70, 5, 159, 96, 71, 35, 180, 224, 71, 238, 187, 224, 73, 3, 150, 224, 73, 206, 157, 224, 74, 227, 120, 224, 75, 174, 127, 224, 76, 204, 149, 96, 77, 142, 97, 224, 78, 172, 119, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 41, 184, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 10, 0, 0, 0, 16, 255, 255, 255, 255, 170, 25, 154, 72, 255, 255, 255, 255, 231, 218, 12, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 252, 224, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 25, 96, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 229, 9, 112, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 82, 107, 224, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 77, 224, 0, 0, 0, 0, 54, 253, 84, 224, 0, 0, 0, 0, 56, 27, 106, 96, 0, 0, 0, 0, 56, 221, 54, 224, 0, 0, 0, 0, 57, 251, 76, 96, 0, 0, 0, 0, 58, 189, 24, 224, 0, 0, 0, 0, 59, 219, 46, 96, 0, 0, 0, 0, 60, 166, 53, 96, 0, 0, 0, 0, 61, 187, 16, 96, 0, 0, 0, 0, 62, 134, 23, 96, 0, 0, 0, 0, 63, 154, 242, 96, 0, 0, 0, 0, 64, 101, 249, 96, 0, 0, 0, 0, 65, 132, 14, 224, 0, 0, 0, 0, 66, 69, 219, 96, 0, 0, 0, 0, 67, 99, 240, 224, 0, 0, 0, 0, 68, 37, 189, 96, 0, 0, 0, 0, 69, 67, 210, 224, 0, 0, 0, 0, 70, 5, 159, 96, 0, 0, 0, 0, 71, 35, 180, 224, 0, 0, 0, 0, 71, 238, 187, 224, 0, 0, 0, 0, 73, 3, 150, 224, 0, 0, 0, 0, 73, 206, 157, 224, 0, 0, 0, 0, 74, 227, 120, 224, 0, 0, 0, 0, 75, 174, 127, 224, 0, 0, 0, 0, 76, 204, 149, 96, 0, 0, 0, 0, 77, 142, 97, 224, 0, 0, 0, 0, 78, 172, 119, 96, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 0, 0, 41, 184, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Atlantic/Azores": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 13, 0, 0, 0, 24, 128, 0, 0, 0, 146, 230, 170, 160, 155, 75, 137, 144, 155, 254, 227, 160, 156, 157, 9, 144, 157, 201, 159, 144, 158, 127, 142, 144, 159, 170, 211, 16, 160, 95, 112, 144, 161, 140, 6, 144, 162, 65, 245, 144, 163, 110, 139, 144, 164, 35, 41, 16, 165, 79, 191, 16, 170, 6, 11, 144, 170, 244, 171, 16, 173, 201, 196, 16, 174, 167, 64, 16, 175, 160, 107, 144, 176, 135, 34, 16, 177, 137, 136, 16, 178, 112, 62, 144, 179, 114, 164, 144, 180, 80, 32, 144, 183, 50, 104, 144, 184, 15, 228, 144, 184, 255, 213, 144, 185, 239, 198, 144, 188, 200, 212, 16, 189, 184, 197, 16, 190, 159, 123, 144, 191, 152, 167, 16, 192, 155, 13, 16, 193, 120, 137, 16, 194, 104, 122, 16, 195, 88, 107, 16, 196, 63, 33, 144, 197, 56, 77, 16, 198, 58, 179, 16, 199, 88, 200, 144, 199, 217, 251, 144, 201, 1, 75, 144, 201, 241, 60, 144, 202, 226, 127, 16, 203, 181, 111, 16, 203, 236, 192, 0, 204, 128, 104, 0, 204, 220, 191, 16, 205, 149, 81, 16, 205, 195, 103, 128, 206, 114, 191, 0, 206, 197, 219, 144, 207, 117, 51, 16, 207, 172, 132, 0, 208, 82, 161, 0, 208, 165, 189, 144, 209, 85, 21, 16, 209, 140, 102, 0, 210, 50, 131, 0, 210, 133, 159, 144, 211, 89, 225, 16, 212, 73, 210, 16, 213, 57, 237, 64, 214, 41, 222, 64, 215, 25, 207, 64, 216, 9, 192, 64, 216, 249, 177, 64, 217, 233, 162, 64, 220, 185, 117, 64, 221, 178, 160, 192, 222, 162, 145, 192, 223, 146, 130, 192, 224, 130, 115, 192, 225, 114, 100, 192, 226, 98, 85, 192, 227, 82, 70, 192, 228, 66, 55, 192, 229, 50, 40, 192, 230, 34, 25, 192, 231, 27, 69, 64, 232, 11, 54, 64, 232, 251, 39, 64, 233, 235, 24, 64, 234, 219, 9, 64, 235, 202, 250, 64, 236, 186, 235, 64, 237, 170, 220, 64, 238, 154, 205, 64, 239, 138, 190, 64, 240, 122, 175, 64, 241, 106, 160, 64, 242, 99, 203, 192, 243, 83, 188, 192, 244, 67, 173, 192, 245, 51, 158, 192, 246, 35, 143, 192, 247, 19, 128, 192, 248, 3, 113, 192, 248, 243, 98, 192, 13, 155, 41, 16, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 38, 160, 19, 68, 9, 144, 20, 52, 8, 160, 21, 35, 249, 160, 22, 19, 234, 160, 23, 3, 219, 160, 23, 243, 204, 160, 24, 227, 203, 176, 25, 211, 174, 160, 26, 195, 159, 160, 27, 188, 203, 32, 28, 172, 188, 32, 29, 156, 173, 32, 30, 140, 158, 32, 31, 124, 143, 32, 32, 108, 128, 32, 33, 92, 113, 32, 34, 76, 98, 32, 35, 60, 83, 32, 36, 44, 68, 32, 37, 28, 53, 32, 38, 12, 38, 32, 39, 5, 81, 160, 39, 245, 66, 160, 40, 229, 51, 160, 41, 213, 36, 160, 42, 197, 21, 160, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 6, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 12, 255, 255, 231, 240, 0, 0, 255, 255, 229, 40, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 227, 224, 0, 12, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 72, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 43, 48, 48, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 49, 62, 49, 60, 43, 48, 48, 62, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 49, 10}, + "zoneinfo/Atlantic/Azores": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 13, 0, 0, 0, 24, 128, 0, 0, 0, 146, 230, 170, 160, 155, 75, 137, 144, 155, 254, 227, 160, 156, 157, 9, 144, 157, 201, 159, 144, 158, 127, 142, 144, 159, 170, 211, 16, 160, 95, 112, 144, 161, 140, 6, 144, 162, 65, 245, 144, 163, 110, 139, 144, 164, 35, 41, 16, 165, 79, 191, 16, 170, 6, 11, 144, 170, 244, 171, 16, 173, 201, 196, 16, 174, 167, 64, 16, 175, 160, 107, 144, 176, 135, 34, 16, 177, 137, 136, 16, 178, 112, 62, 144, 179, 114, 164, 144, 180, 80, 32, 144, 183, 50, 104, 144, 184, 15, 228, 144, 184, 255, 213, 144, 185, 239, 198, 144, 188, 200, 212, 16, 189, 184, 197, 16, 190, 159, 123, 144, 191, 152, 167, 16, 192, 155, 13, 16, 193, 120, 137, 16, 194, 104, 122, 16, 195, 88, 107, 16, 196, 63, 33, 144, 197, 56, 77, 16, 198, 58, 179, 16, 199, 88, 200, 144, 199, 217, 251, 144, 201, 1, 75, 144, 201, 241, 60, 144, 202, 226, 127, 16, 203, 181, 111, 16, 203, 236, 192, 0, 204, 128, 104, 0, 204, 220, 191, 16, 205, 149, 81, 16, 205, 195, 103, 128, 206, 114, 191, 0, 206, 197, 219, 144, 207, 117, 51, 16, 207, 172, 132, 0, 208, 82, 161, 0, 208, 165, 189, 144, 209, 85, 21, 16, 209, 140, 102, 0, 210, 50, 131, 0, 210, 133, 159, 144, 211, 89, 225, 16, 212, 73, 210, 16, 213, 57, 237, 64, 214, 41, 222, 64, 215, 25, 207, 64, 216, 9, 192, 64, 216, 249, 177, 64, 217, 233, 162, 64, 220, 185, 117, 64, 221, 178, 160, 192, 222, 162, 145, 192, 223, 146, 130, 192, 224, 130, 115, 192, 225, 114, 100, 192, 226, 98, 85, 192, 227, 82, 70, 192, 228, 66, 55, 192, 229, 50, 40, 192, 230, 34, 25, 192, 231, 27, 69, 64, 232, 11, 54, 64, 232, 251, 39, 64, 233, 235, 24, 64, 234, 219, 9, 64, 235, 202, 250, 64, 236, 186, 235, 64, 237, 170, 220, 64, 238, 154, 205, 64, 239, 138, 190, 64, 240, 122, 175, 64, 241, 106, 160, 64, 242, 99, 203, 192, 243, 83, 188, 192, 244, 67, 173, 192, 245, 51, 158, 192, 246, 35, 143, 192, 247, 19, 128, 192, 248, 3, 113, 192, 248, 243, 98, 192, 13, 155, 41, 16, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 38, 160, 19, 68, 9, 144, 20, 52, 8, 160, 21, 35, 249, 160, 22, 19, 234, 160, 23, 3, 219, 160, 23, 243, 204, 160, 24, 227, 203, 176, 25, 211, 174, 160, 26, 195, 159, 160, 27, 188, 203, 32, 28, 172, 188, 32, 29, 156, 173, 32, 30, 140, 158, 32, 31, 124, 143, 32, 32, 108, 128, 32, 33, 92, 113, 32, 34, 76, 98, 32, 35, 60, 83, 32, 36, 44, 68, 32, 37, 28, 53, 32, 38, 12, 38, 32, 39, 5, 81, 160, 39, 245, 66, 160, 40, 229, 51, 160, 41, 213, 36, 160, 42, 197, 21, 160, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 127, 255, 255, 255, 1, 6, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 12, 255, 255, 231, 240, 0, 0, 255, 255, 229, 40, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 227, 224, 0, 12, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 72, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 43, 48, 48, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 13, 0, 0, 0, 24, 255, 255, 255, 255, 94, 61, 27, 144, 255, 255, 255, 255, 146, 230, 170, 160, 255, 255, 255, 255, 155, 75, 137, 144, 255, 255, 255, 255, 155, 254, 227, 160, 255, 255, 255, 255, 156, 157, 9, 144, 255, 255, 255, 255, 157, 201, 159, 144, 255, 255, 255, 255, 158, 127, 142, 144, 255, 255, 255, 255, 159, 170, 211, 16, 255, 255, 255, 255, 160, 95, 112, 144, 255, 255, 255, 255, 161, 140, 6, 144, 255, 255, 255, 255, 162, 65, 245, 144, 255, 255, 255, 255, 163, 110, 139, 144, 255, 255, 255, 255, 164, 35, 41, 16, 255, 255, 255, 255, 165, 79, 191, 16, 255, 255, 255, 255, 170, 6, 11, 144, 255, 255, 255, 255, 170, 244, 171, 16, 255, 255, 255, 255, 173, 201, 196, 16, 255, 255, 255, 255, 174, 167, 64, 16, 255, 255, 255, 255, 175, 160, 107, 144, 255, 255, 255, 255, 176, 135, 34, 16, 255, 255, 255, 255, 177, 137, 136, 16, 255, 255, 255, 255, 178, 112, 62, 144, 255, 255, 255, 255, 179, 114, 164, 144, 255, 255, 255, 255, 180, 80, 32, 144, 255, 255, 255, 255, 183, 50, 104, 144, 255, 255, 255, 255, 184, 15, 228, 144, 255, 255, 255, 255, 184, 255, 213, 144, 255, 255, 255, 255, 185, 239, 198, 144, 255, 255, 255, 255, 188, 200, 212, 16, 255, 255, 255, 255, 189, 184, 197, 16, 255, 255, 255, 255, 190, 159, 123, 144, 255, 255, 255, 255, 191, 152, 167, 16, 255, 255, 255, 255, 192, 155, 13, 16, 255, 255, 255, 255, 193, 120, 137, 16, 255, 255, 255, 255, 194, 104, 122, 16, 255, 255, 255, 255, 195, 88, 107, 16, 255, 255, 255, 255, 196, 63, 33, 144, 255, 255, 255, 255, 197, 56, 77, 16, 255, 255, 255, 255, 198, 58, 179, 16, 255, 255, 255, 255, 199, 88, 200, 144, 255, 255, 255, 255, 199, 217, 251, 144, 255, 255, 255, 255, 201, 1, 75, 144, 255, 255, 255, 255, 201, 241, 60, 144, 255, 255, 255, 255, 202, 226, 127, 16, 255, 255, 255, 255, 203, 181, 111, 16, 255, 255, 255, 255, 203, 236, 192, 0, 255, 255, 255, 255, 204, 128, 104, 0, 255, 255, 255, 255, 204, 220, 191, 16, 255, 255, 255, 255, 205, 149, 81, 16, 255, 255, 255, 255, 205, 195, 103, 128, 255, 255, 255, 255, 206, 114, 191, 0, 255, 255, 255, 255, 206, 197, 219, 144, 255, 255, 255, 255, 207, 117, 51, 16, 255, 255, 255, 255, 207, 172, 132, 0, 255, 255, 255, 255, 208, 82, 161, 0, 255, 255, 255, 255, 208, 165, 189, 144, 255, 255, 255, 255, 209, 85, 21, 16, 255, 255, 255, 255, 209, 140, 102, 0, 255, 255, 255, 255, 210, 50, 131, 0, 255, 255, 255, 255, 210, 133, 159, 144, 255, 255, 255, 255, 211, 89, 225, 16, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 57, 237, 64, 255, 255, 255, 255, 214, 41, 222, 64, 255, 255, 255, 255, 215, 25, 207, 64, 255, 255, 255, 255, 216, 9, 192, 64, 255, 255, 255, 255, 216, 249, 177, 64, 255, 255, 255, 255, 217, 233, 162, 64, 255, 255, 255, 255, 220, 185, 117, 64, 255, 255, 255, 255, 221, 178, 160, 192, 255, 255, 255, 255, 222, 162, 145, 192, 255, 255, 255, 255, 223, 146, 130, 192, 255, 255, 255, 255, 224, 130, 115, 192, 255, 255, 255, 255, 225, 114, 100, 192, 255, 255, 255, 255, 226, 98, 85, 192, 255, 255, 255, 255, 227, 82, 70, 192, 255, 255, 255, 255, 228, 66, 55, 192, 255, 255, 255, 255, 229, 50, 40, 192, 255, 255, 255, 255, 230, 34, 25, 192, 255, 255, 255, 255, 231, 27, 69, 64, 255, 255, 255, 255, 232, 11, 54, 64, 255, 255, 255, 255, 232, 251, 39, 64, 255, 255, 255, 255, 233, 235, 24, 64, 255, 255, 255, 255, 234, 219, 9, 64, 255, 255, 255, 255, 235, 202, 250, 64, 255, 255, 255, 255, 236, 186, 235, 64, 255, 255, 255, 255, 237, 170, 220, 64, 255, 255, 255, 255, 238, 154, 205, 64, 255, 255, 255, 255, 239, 138, 190, 64, 255, 255, 255, 255, 240, 122, 175, 64, 255, 255, 255, 255, 241, 106, 160, 64, 255, 255, 255, 255, 242, 99, 203, 192, 255, 255, 255, 255, 243, 83, 188, 192, 255, 255, 255, 255, 244, 67, 173, 192, 255, 255, 255, 255, 245, 51, 158, 192, 255, 255, 255, 255, 246, 35, 143, 192, 255, 255, 255, 255, 247, 19, 128, 192, 255, 255, 255, 255, 248, 3, 113, 192, 255, 255, 255, 255, 248, 243, 98, 192, 0, 0, 0, 0, 13, 155, 41, 16, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 38, 160, 0, 0, 0, 0, 19, 68, 9, 144, 0, 0, 0, 0, 20, 52, 8, 160, 0, 0, 0, 0, 21, 35, 249, 160, 0, 0, 0, 0, 22, 19, 234, 160, 0, 0, 0, 0, 23, 3, 219, 160, 0, 0, 0, 0, 23, 243, 204, 160, 0, 0, 0, 0, 24, 227, 203, 176, 0, 0, 0, 0, 25, 211, 174, 160, 0, 0, 0, 0, 26, 195, 159, 160, 0, 0, 0, 0, 27, 188, 203, 32, 0, 0, 0, 0, 28, 172, 188, 32, 0, 0, 0, 0, 29, 156, 173, 32, 0, 0, 0, 0, 30, 140, 158, 32, 0, 0, 0, 0, 31, 124, 143, 32, 0, 0, 0, 0, 32, 108, 128, 32, 0, 0, 0, 0, 33, 92, 113, 32, 0, 0, 0, 0, 34, 76, 98, 32, 0, 0, 0, 0, 35, 60, 83, 32, 0, 0, 0, 0, 36, 44, 68, 32, 0, 0, 0, 0, 37, 28, 53, 32, 0, 0, 0, 0, 38, 12, 38, 32, 0, 0, 0, 0, 39, 5, 81, 160, 0, 0, 0, 0, 39, 245, 66, 160, 0, 0, 0, 0, 40, 229, 51, 160, 0, 0, 0, 0, 41, 213, 36, 160, 0, 0, 0, 0, 42, 197, 21, 160, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 0, 0, 0, 0, 127, 255, 255, 255, 1, 6, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 12, 255, 255, 231, 240, 0, 0, 255, 255, 229, 40, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 12, 255, 255, 227, 224, 0, 12, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 16, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 72, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 43, 48, 48, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 49, 62, 49, 60, 43, 48, 48, 62, 44, 77, 51, 46, 53, 46, 48, 47, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 49, 10}, - "zoneinfo/Atlantic/Bermuda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 3, 0, 0, 0, 12, 180, 195, 29, 230, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 195, 58, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Atlantic/Bermuda": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 3, 0, 0, 0, 12, 180, 195, 29, 230, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 195, 58, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 180, 195, 29, 230, 0, 0, 0, 0, 8, 32, 179, 96, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 10, 0, 149, 96, 0, 0, 0, 0, 10, 240, 120, 80, 0, 0, 0, 0, 11, 224, 119, 96, 0, 0, 0, 0, 12, 217, 148, 208, 0, 0, 0, 0, 13, 192, 89, 96, 0, 0, 0, 0, 14, 185, 118, 208, 0, 0, 0, 0, 15, 169, 117, 224, 0, 0, 0, 0, 16, 153, 88, 208, 0, 0, 0, 0, 17, 137, 87, 224, 0, 0, 0, 0, 18, 121, 58, 208, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 242, 224, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 161, 208, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 131, 208, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 101, 208, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 71, 208, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 41, 208, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 70, 80, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 40, 80, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 10, 80, 0, 0, 0, 0, 49, 103, 89, 224, 0, 0, 0, 0, 50, 114, 236, 80, 0, 0, 0, 0, 51, 71, 59, 224, 0, 0, 0, 0, 52, 82, 206, 80, 0, 0, 0, 0, 53, 39, 29, 224, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 55, 6, 255, 224, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 225, 224, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 195, 224, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 224, 96, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 194, 96, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 111, 164, 96, 0, 0, 0, 0, 65, 132, 113, 80, 0, 0, 0, 0, 66, 79, 134, 96, 0, 0, 0, 0, 67, 100, 83, 80, 0, 0, 0, 0, 68, 47, 104, 96, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 154, 224, 0, 0, 0, 0, 71, 45, 81, 208, 0, 0, 0, 0, 71, 211, 124, 224, 0, 0, 0, 0, 73, 13, 51, 208, 0, 0, 0, 0, 73, 179, 94, 224, 0, 0, 0, 0, 74, 237, 21, 208, 0, 0, 0, 0, 75, 156, 123, 96, 0, 0, 0, 0, 76, 214, 50, 80, 0, 0, 0, 0, 77, 124, 93, 96, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 195, 58, 0, 0, 255, 255, 199, 192, 0, 4, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 65, 83, 84, 0, 65, 68, 84, 0, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Atlantic/Canary": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 166, 4, 92, 240, 212, 65, 247, 32, 19, 77, 54, 0, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 241, 144, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 76, 77, 84, 0, 45, 48, 49, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Atlantic/Canary": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 166, 4, 92, 240, 212, 65, 247, 32, 19, 77, 54, 0, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 241, 144, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 76, 77, 84, 0, 45, 48, 49, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 166, 4, 92, 240, 255, 255, 255, 255, 212, 65, 247, 32, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 241, 144, 0, 0, 255, 255, 241, 240, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 1, 12, 76, 77, 84, 0, 45, 48, 49, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Atlantic/Cape_Verde": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 12, 146, 230, 170, 160, 204, 149, 156, 32, 210, 116, 124, 16, 11, 23, 247, 64, 127, 255, 255, 255, 1, 2, 3, 4, 4, 255, 255, 233, 244, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 60, 45, 48, 49, 62, 49, 10}, + "zoneinfo/Atlantic/Cape_Verde": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 12, 146, 230, 170, 160, 204, 149, 156, 32, 210, 116, 124, 16, 11, 23, 247, 64, 127, 255, 255, 255, 1, 2, 3, 4, 4, 255, 255, 233, 244, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 146, 230, 170, 160, 255, 255, 255, 255, 204, 149, 156, 32, 255, 255, 255, 255, 210, 116, 124, 16, 0, 0, 0, 0, 11, 23, 247, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 4, 255, 255, 233, 244, 0, 0, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 1, 8, 255, 255, 227, 224, 0, 4, 255, 255, 241, 240, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 49, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 60, 45, 48, 49, 62, 49, 10}, - "zoneinfo/Atlantic/Faeroe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 4, 0, 0, 0, 13, 139, 109, 164, 88, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Atlantic/Faeroe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 4, 0, 0, 0, 13, 139, 109, 164, 88, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 4, 0, 0, 0, 13, 255, 255, 255, 255, 139, 109, 164, 88, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Atlantic/Faroe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 4, 0, 0, 0, 13, 139, 109, 164, 88, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Atlantic/Faroe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 4, 0, 0, 0, 13, 139, 109, 164, 88, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 4, 0, 0, 0, 13, 255, 255, 255, 255, 139, 109, 164, 88, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 255, 255, 249, 168, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 87, 69, 84, 0, 87, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Atlantic/Jan_Mayen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Atlantic/Jan_Mayen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 114, 238, 36, 108, 255, 255, 255, 255, 155, 39, 227, 0, 255, 255, 255, 255, 155, 212, 123, 96, 255, 255, 255, 255, 200, 183, 77, 96, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 98, 7, 16, 255, 255, 255, 255, 235, 175, 32, 144, 255, 255, 255, 255, 236, 168, 76, 16, 255, 255, 255, 255, 237, 152, 61, 16, 255, 255, 255, 255, 238, 136, 46, 16, 255, 255, 255, 255, 239, 120, 31, 16, 255, 255, 255, 255, 240, 104, 16, 16, 255, 255, 255, 255, 241, 88, 1, 16, 255, 255, 255, 255, 242, 71, 242, 16, 255, 255, 255, 255, 243, 55, 227, 16, 255, 255, 255, 255, 244, 39, 212, 16, 255, 255, 255, 255, 245, 23, 197, 16, 255, 255, 255, 255, 246, 16, 240, 144, 255, 255, 255, 255, 247, 47, 6, 16, 255, 255, 255, 255, 247, 240, 210, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Atlantic/Madeira": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 13, 0, 0, 0, 29, 128, 0, 0, 0, 146, 230, 156, 144, 155, 75, 123, 128, 155, 254, 213, 144, 156, 156, 251, 128, 157, 201, 145, 128, 158, 127, 128, 128, 159, 170, 197, 0, 160, 95, 98, 128, 161, 139, 248, 128, 162, 65, 231, 128, 163, 110, 125, 128, 164, 35, 27, 0, 165, 79, 177, 0, 170, 5, 253, 128, 170, 244, 157, 0, 173, 201, 182, 0, 174, 167, 50, 0, 175, 160, 93, 128, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 179, 114, 150, 128, 180, 80, 18, 128, 183, 50, 90, 128, 184, 15, 214, 128, 184, 255, 199, 128, 185, 239, 184, 128, 188, 200, 198, 0, 189, 184, 183, 0, 190, 159, 109, 128, 191, 152, 153, 0, 192, 154, 255, 0, 193, 120, 123, 0, 194, 104, 108, 0, 195, 88, 93, 0, 196, 63, 19, 128, 197, 56, 63, 0, 198, 58, 165, 0, 199, 88, 186, 128, 199, 217, 237, 128, 201, 1, 61, 128, 201, 241, 46, 128, 202, 226, 113, 0, 203, 181, 97, 0, 203, 236, 177, 240, 204, 128, 89, 240, 204, 220, 177, 0, 205, 149, 67, 0, 205, 195, 89, 112, 206, 114, 176, 240, 206, 197, 205, 128, 207, 117, 37, 0, 207, 172, 117, 240, 208, 82, 146, 240, 208, 165, 175, 128, 209, 85, 7, 0, 209, 140, 87, 240, 210, 50, 116, 240, 210, 133, 145, 128, 211, 89, 211, 0, 212, 73, 196, 0, 213, 57, 223, 48, 214, 41, 208, 48, 215, 25, 193, 48, 216, 9, 178, 48, 216, 249, 163, 48, 217, 233, 148, 48, 220, 185, 103, 48, 221, 178, 146, 176, 222, 162, 131, 176, 223, 146, 116, 176, 224, 130, 101, 176, 225, 114, 86, 176, 226, 98, 71, 176, 227, 82, 56, 176, 228, 66, 41, 176, 229, 50, 26, 176, 230, 34, 11, 176, 231, 27, 55, 48, 232, 11, 40, 48, 232, 251, 25, 48, 233, 235, 10, 48, 234, 218, 251, 48, 235, 202, 236, 48, 236, 186, 221, 48, 237, 170, 206, 48, 238, 154, 191, 48, 239, 138, 176, 48, 240, 122, 161, 48, 241, 106, 146, 48, 242, 99, 189, 176, 243, 83, 174, 176, 244, 67, 159, 176, 245, 51, 144, 176, 246, 35, 129, 176, 247, 19, 114, 176, 248, 3, 99, 176, 248, 243, 84, 176, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 6, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 255, 255, 240, 40, 0, 0, 255, 255, 240, 40, 0, 4, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 255, 255, 241, 240, 0, 12, 0, 0, 14, 16, 1, 16, 0, 0, 14, 16, 1, 20, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 14, 16, 1, 20, 76, 77, 84, 0, 70, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 43, 48, 49, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Atlantic/Madeira": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 13, 0, 0, 0, 29, 128, 0, 0, 0, 146, 230, 156, 144, 155, 75, 123, 128, 155, 254, 213, 144, 156, 156, 251, 128, 157, 201, 145, 128, 158, 127, 128, 128, 159, 170, 197, 0, 160, 95, 98, 128, 161, 139, 248, 128, 162, 65, 231, 128, 163, 110, 125, 128, 164, 35, 27, 0, 165, 79, 177, 0, 170, 5, 253, 128, 170, 244, 157, 0, 173, 201, 182, 0, 174, 167, 50, 0, 175, 160, 93, 128, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 179, 114, 150, 128, 180, 80, 18, 128, 183, 50, 90, 128, 184, 15, 214, 128, 184, 255, 199, 128, 185, 239, 184, 128, 188, 200, 198, 0, 189, 184, 183, 0, 190, 159, 109, 128, 191, 152, 153, 0, 192, 154, 255, 0, 193, 120, 123, 0, 194, 104, 108, 0, 195, 88, 93, 0, 196, 63, 19, 128, 197, 56, 63, 0, 198, 58, 165, 0, 199, 88, 186, 128, 199, 217, 237, 128, 201, 1, 61, 128, 201, 241, 46, 128, 202, 226, 113, 0, 203, 181, 97, 0, 203, 236, 177, 240, 204, 128, 89, 240, 204, 220, 177, 0, 205, 149, 67, 0, 205, 195, 89, 112, 206, 114, 176, 240, 206, 197, 205, 128, 207, 117, 37, 0, 207, 172, 117, 240, 208, 82, 146, 240, 208, 165, 175, 128, 209, 85, 7, 0, 209, 140, 87, 240, 210, 50, 116, 240, 210, 133, 145, 128, 211, 89, 211, 0, 212, 73, 196, 0, 213, 57, 223, 48, 214, 41, 208, 48, 215, 25, 193, 48, 216, 9, 178, 48, 216, 249, 163, 48, 217, 233, 148, 48, 220, 185, 103, 48, 221, 178, 146, 176, 222, 162, 131, 176, 223, 146, 116, 176, 224, 130, 101, 176, 225, 114, 86, 176, 226, 98, 71, 176, 227, 82, 56, 176, 228, 66, 41, 176, 229, 50, 26, 176, 230, 34, 11, 176, 231, 27, 55, 48, 232, 11, 40, 48, 232, 251, 25, 48, 233, 235, 10, 48, 234, 218, 251, 48, 235, 202, 236, 48, 236, 186, 221, 48, 237, 170, 206, 48, 238, 154, 191, 48, 239, 138, 176, 48, 240, 122, 161, 48, 241, 106, 146, 48, 242, 99, 189, 176, 243, 83, 174, 176, 244, 67, 159, 176, 245, 51, 144, 176, 246, 35, 129, 176, 247, 19, 114, 176, 248, 3, 99, 176, 248, 243, 84, 176, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 6, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 255, 255, 240, 40, 0, 0, 255, 255, 240, 40, 0, 4, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 255, 255, 241, 240, 0, 12, 0, 0, 14, 16, 1, 16, 0, 0, 14, 16, 1, 20, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 14, 16, 1, 20, 76, 77, 84, 0, 70, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 43, 48, 49, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 221, 0, 0, 0, 13, 0, 0, 0, 29, 255, 255, 255, 255, 94, 61, 19, 88, 255, 255, 255, 255, 146, 230, 156, 144, 255, 255, 255, 255, 155, 75, 123, 128, 255, 255, 255, 255, 155, 254, 213, 144, 255, 255, 255, 255, 156, 156, 251, 128, 255, 255, 255, 255, 157, 201, 145, 128, 255, 255, 255, 255, 158, 127, 128, 128, 255, 255, 255, 255, 159, 170, 197, 0, 255, 255, 255, 255, 160, 95, 98, 128, 255, 255, 255, 255, 161, 139, 248, 128, 255, 255, 255, 255, 162, 65, 231, 128, 255, 255, 255, 255, 163, 110, 125, 128, 255, 255, 255, 255, 164, 35, 27, 0, 255, 255, 255, 255, 165, 79, 177, 0, 255, 255, 255, 255, 170, 5, 253, 128, 255, 255, 255, 255, 170, 244, 157, 0, 255, 255, 255, 255, 173, 201, 182, 0, 255, 255, 255, 255, 174, 167, 50, 0, 255, 255, 255, 255, 175, 160, 93, 128, 255, 255, 255, 255, 176, 135, 20, 0, 255, 255, 255, 255, 177, 137, 122, 0, 255, 255, 255, 255, 178, 112, 48, 128, 255, 255, 255, 255, 179, 114, 150, 128, 255, 255, 255, 255, 180, 80, 18, 128, 255, 255, 255, 255, 183, 50, 90, 128, 255, 255, 255, 255, 184, 15, 214, 128, 255, 255, 255, 255, 184, 255, 199, 128, 255, 255, 255, 255, 185, 239, 184, 128, 255, 255, 255, 255, 188, 200, 198, 0, 255, 255, 255, 255, 189, 184, 183, 0, 255, 255, 255, 255, 190, 159, 109, 128, 255, 255, 255, 255, 191, 152, 153, 0, 255, 255, 255, 255, 192, 154, 255, 0, 255, 255, 255, 255, 193, 120, 123, 0, 255, 255, 255, 255, 194, 104, 108, 0, 255, 255, 255, 255, 195, 88, 93, 0, 255, 255, 255, 255, 196, 63, 19, 128, 255, 255, 255, 255, 197, 56, 63, 0, 255, 255, 255, 255, 198, 58, 165, 0, 255, 255, 255, 255, 199, 88, 186, 128, 255, 255, 255, 255, 199, 217, 237, 128, 255, 255, 255, 255, 201, 1, 61, 128, 255, 255, 255, 255, 201, 241, 46, 128, 255, 255, 255, 255, 202, 226, 113, 0, 255, 255, 255, 255, 203, 181, 97, 0, 255, 255, 255, 255, 203, 236, 177, 240, 255, 255, 255, 255, 204, 128, 89, 240, 255, 255, 255, 255, 204, 220, 177, 0, 255, 255, 255, 255, 205, 149, 67, 0, 255, 255, 255, 255, 205, 195, 89, 112, 255, 255, 255, 255, 206, 114, 176, 240, 255, 255, 255, 255, 206, 197, 205, 128, 255, 255, 255, 255, 207, 117, 37, 0, 255, 255, 255, 255, 207, 172, 117, 240, 255, 255, 255, 255, 208, 82, 146, 240, 255, 255, 255, 255, 208, 165, 175, 128, 255, 255, 255, 255, 209, 85, 7, 0, 255, 255, 255, 255, 209, 140, 87, 240, 255, 255, 255, 255, 210, 50, 116, 240, 255, 255, 255, 255, 210, 133, 145, 128, 255, 255, 255, 255, 211, 89, 211, 0, 255, 255, 255, 255, 212, 73, 196, 0, 255, 255, 255, 255, 213, 57, 223, 48, 255, 255, 255, 255, 214, 41, 208, 48, 255, 255, 255, 255, 215, 25, 193, 48, 255, 255, 255, 255, 216, 9, 178, 48, 255, 255, 255, 255, 216, 249, 163, 48, 255, 255, 255, 255, 217, 233, 148, 48, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 178, 146, 176, 255, 255, 255, 255, 222, 162, 131, 176, 255, 255, 255, 255, 223, 146, 116, 176, 255, 255, 255, 255, 224, 130, 101, 176, 255, 255, 255, 255, 225, 114, 86, 176, 255, 255, 255, 255, 226, 98, 71, 176, 255, 255, 255, 255, 227, 82, 56, 176, 255, 255, 255, 255, 228, 66, 41, 176, 255, 255, 255, 255, 229, 50, 26, 176, 255, 255, 255, 255, 230, 34, 11, 176, 255, 255, 255, 255, 231, 27, 55, 48, 255, 255, 255, 255, 232, 11, 40, 48, 255, 255, 255, 255, 232, 251, 25, 48, 255, 255, 255, 255, 233, 235, 10, 48, 255, 255, 255, 255, 234, 218, 251, 48, 255, 255, 255, 255, 235, 202, 236, 48, 255, 255, 255, 255, 236, 186, 221, 48, 255, 255, 255, 255, 237, 170, 206, 48, 255, 255, 255, 255, 238, 154, 191, 48, 255, 255, 255, 255, 239, 138, 176, 48, 255, 255, 255, 255, 240, 122, 161, 48, 255, 255, 255, 255, 241, 106, 146, 48, 255, 255, 255, 255, 242, 99, 189, 176, 255, 255, 255, 255, 243, 83, 174, 176, 255, 255, 255, 255, 244, 67, 159, 176, 255, 255, 255, 255, 245, 51, 144, 176, 255, 255, 255, 255, 246, 35, 129, 176, 255, 255, 255, 255, 247, 19, 114, 176, 255, 255, 255, 255, 248, 3, 99, 176, 255, 255, 255, 255, 248, 243, 84, 176, 0, 0, 0, 0, 13, 155, 27, 0, 0, 0, 0, 0, 14, 139, 12, 0, 0, 0, 0, 0, 15, 132, 55, 128, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 100, 25, 128, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 67, 251, 128, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 189, 160, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 6, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 10, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 255, 255, 240, 40, 0, 0, 255, 255, 240, 40, 0, 4, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 0, 0, 0, 0, 1, 8, 255, 255, 241, 240, 0, 12, 255, 255, 241, 240, 0, 12, 0, 0, 14, 16, 1, 16, 0, 0, 14, 16, 1, 20, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25, 0, 0, 14, 16, 1, 20, 76, 77, 84, 0, 70, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 43, 48, 49, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Atlantic/Reykjavik": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 6, 0, 0, 0, 16, 139, 96, 131, 160, 156, 145, 30, 0, 157, 209, 136, 144, 158, 114, 81, 128, 159, 213, 3, 16, 160, 83, 133, 0, 161, 182, 54, 144, 164, 60, 39, 128, 164, 185, 116, 16, 198, 77, 26, 0, 199, 61, 39, 32, 199, 218, 23, 176, 201, 38, 67, 160, 201, 195, 38, 32, 203, 6, 37, 160, 203, 172, 66, 160, 204, 220, 205, 32, 205, 140, 36, 160, 206, 188, 175, 32, 207, 108, 6, 160, 208, 156, 145, 32, 209, 75, 232, 160, 210, 133, 173, 160, 211, 43, 202, 160, 212, 101, 143, 160, 213, 57, 209, 32, 214, 69, 113, 160, 215, 25, 179, 32, 216, 37, 83, 160, 216, 249, 149, 32, 218, 14, 112, 32, 218, 217, 119, 32, 219, 229, 23, 160, 220, 185, 89, 32, 221, 206, 52, 32, 222, 162, 117, 160, 223, 174, 22, 32, 224, 130, 87, 160, 225, 141, 248, 32, 226, 98, 57, 160, 227, 109, 218, 32, 228, 66, 27, 160, 229, 77, 188, 32, 230, 33, 253, 160, 231, 54, 216, 160, 232, 11, 26, 32, 233, 22, 186, 160, 233, 234, 252, 32, 234, 246, 156, 160, 235, 202, 222, 32, 236, 214, 126, 160, 237, 170, 192, 32, 238, 182, 96, 160, 239, 138, 162, 32, 240, 150, 66, 160, 241, 106, 132, 32, 242, 127, 95, 32, 243, 83, 160, 160, 244, 95, 65, 32, 245, 51, 130, 160, 246, 63, 35, 32, 247, 19, 100, 160, 248, 31, 5, 32, 248, 243, 70, 160, 249, 254, 231, 32, 250, 211, 40, 160, 251, 232, 3, 160, 252, 188, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Atlantic/Reykjavik": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 6, 0, 0, 0, 16, 139, 96, 131, 160, 156, 145, 30, 0, 157, 209, 136, 144, 158, 114, 81, 128, 159, 213, 3, 16, 160, 83, 133, 0, 161, 182, 54, 144, 164, 60, 39, 128, 164, 185, 116, 16, 198, 77, 26, 0, 199, 61, 39, 32, 199, 218, 23, 176, 201, 38, 67, 160, 201, 195, 38, 32, 203, 6, 37, 160, 203, 172, 66, 160, 204, 220, 205, 32, 205, 140, 36, 160, 206, 188, 175, 32, 207, 108, 6, 160, 208, 156, 145, 32, 209, 75, 232, 160, 210, 133, 173, 160, 211, 43, 202, 160, 212, 101, 143, 160, 213, 57, 209, 32, 214, 69, 113, 160, 215, 25, 179, 32, 216, 37, 83, 160, 216, 249, 149, 32, 218, 14, 112, 32, 218, 217, 119, 32, 219, 229, 23, 160, 220, 185, 89, 32, 221, 206, 52, 32, 222, 162, 117, 160, 223, 174, 22, 32, 224, 130, 87, 160, 225, 141, 248, 32, 226, 98, 57, 160, 227, 109, 218, 32, 228, 66, 27, 160, 229, 77, 188, 32, 230, 33, 253, 160, 231, 54, 216, 160, 232, 11, 26, 32, 233, 22, 186, 160, 233, 234, 252, 32, 234, 246, 156, 160, 235, 202, 222, 32, 236, 214, 126, 160, 237, 170, 192, 32, 238, 182, 96, 160, 239, 138, 162, 32, 240, 150, 66, 160, 241, 106, 132, 32, 242, 127, 95, 32, 243, 83, 160, 160, 244, 95, 65, 32, 245, 51, 130, 160, 246, 63, 35, 32, 247, 19, 100, 160, 248, 31, 5, 32, 248, 243, 70, 160, 249, 254, 231, 32, 250, 211, 40, 160, 251, 232, 3, 160, 252, 188, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 139, 96, 131, 160, 255, 255, 255, 255, 156, 145, 30, 0, 255, 255, 255, 255, 157, 209, 136, 144, 255, 255, 255, 255, 158, 114, 81, 128, 255, 255, 255, 255, 159, 213, 3, 16, 255, 255, 255, 255, 160, 83, 133, 0, 255, 255, 255, 255, 161, 182, 54, 144, 255, 255, 255, 255, 164, 60, 39, 128, 255, 255, 255, 255, 164, 185, 116, 16, 255, 255, 255, 255, 198, 77, 26, 0, 255, 255, 255, 255, 199, 61, 39, 32, 255, 255, 255, 255, 199, 218, 23, 176, 255, 255, 255, 255, 201, 38, 67, 160, 255, 255, 255, 255, 201, 195, 38, 32, 255, 255, 255, 255, 203, 6, 37, 160, 255, 255, 255, 255, 203, 172, 66, 160, 255, 255, 255, 255, 204, 220, 205, 32, 255, 255, 255, 255, 205, 140, 36, 160, 255, 255, 255, 255, 206, 188, 175, 32, 255, 255, 255, 255, 207, 108, 6, 160, 255, 255, 255, 255, 208, 156, 145, 32, 255, 255, 255, 255, 209, 75, 232, 160, 255, 255, 255, 255, 210, 133, 173, 160, 255, 255, 255, 255, 211, 43, 202, 160, 255, 255, 255, 255, 212, 101, 143, 160, 255, 255, 255, 255, 213, 57, 209, 32, 255, 255, 255, 255, 214, 69, 113, 160, 255, 255, 255, 255, 215, 25, 179, 32, 255, 255, 255, 255, 216, 37, 83, 160, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 217, 119, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 206, 52, 32, 255, 255, 255, 255, 222, 162, 117, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 130, 87, 160, 255, 255, 255, 255, 225, 141, 248, 32, 255, 255, 255, 255, 226, 98, 57, 160, 255, 255, 255, 255, 227, 109, 218, 32, 255, 255, 255, 255, 228, 66, 27, 160, 255, 255, 255, 255, 229, 77, 188, 32, 255, 255, 255, 255, 230, 33, 253, 160, 255, 255, 255, 255, 231, 54, 216, 160, 255, 255, 255, 255, 232, 11, 26, 32, 255, 255, 255, 255, 233, 22, 186, 160, 255, 255, 255, 255, 233, 234, 252, 32, 255, 255, 255, 255, 234, 246, 156, 160, 255, 255, 255, 255, 235, 202, 222, 32, 255, 255, 255, 255, 236, 214, 126, 160, 255, 255, 255, 255, 237, 170, 192, 32, 255, 255, 255, 255, 238, 182, 96, 160, 255, 255, 255, 255, 239, 138, 162, 32, 255, 255, 255, 255, 240, 150, 66, 160, 255, 255, 255, 255, 241, 106, 132, 32, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 83, 160, 160, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 51, 130, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 19, 100, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 243, 70, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 211, 40, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 188, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Atlantic/South_Georgia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 221, 192, 0, 0, 255, 255, 227, 224, 0, 4, 76, 77, 84, 0, 45, 48, 50, 0, 0, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + "zoneinfo/Atlantic/South_Georgia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 221, 192, 0, 0, 255, 255, 227, 224, 0, 4, 76, 77, 84, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 105, 134, 253, 192, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 221, 192, 0, 0, 255, 255, 227, 224, 0, 4, 76, 77, 84, 0, 45, 48, 50, 0, 10, 60, 45, 48, 50, 62, 50, 10}, - "zoneinfo/Atlantic/St_Helena": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Atlantic/St_Helena": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 146, 230, 146, 72, 1, 255, 255, 252, 56, 0, 0, 0, 0, 0, 0, 0, 4, 76, 77, 84, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Atlantic/Stanley": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 147, 68, 95, 60, 195, 79, 90, 192, 196, 54, 3, 48, 197, 47, 60, 192, 198, 21, 229, 48, 199, 24, 89, 64, 199, 255, 1, 176, 200, 248, 59, 64, 201, 222, 227, 176, 202, 216, 29, 64, 203, 190, 197, 176, 204, 183, 255, 64, 205, 54, 129, 48, 25, 17, 254, 64, 25, 211, 188, 176, 26, 241, 196, 32, 27, 170, 100, 48, 28, 209, 166, 32, 29, 138, 70, 48, 30, 168, 91, 176, 31, 106, 54, 64, 32, 136, 61, 176, 33, 74, 24, 64, 34, 104, 31, 176, 35, 41, 250, 64, 36, 72, 1, 176, 37, 9, 220, 64, 38, 49, 30, 48, 38, 233, 190, 64, 40, 17, 0, 48, 40, 210, 218, 192, 41, 240, 226, 48, 42, 178, 188, 192, 43, 208, 196, 48, 44, 146, 158, 192, 45, 176, 166, 48, 46, 114, 128, 192, 47, 144, 136, 48, 48, 82, 98, 192, 49, 121, 164, 176, 50, 59, 127, 64, 51, 89, 134, 176, 52, 27, 97, 64, 53, 57, 104, 176, 53, 251, 67, 64, 55, 25, 74, 176, 55, 219, 37, 64, 56, 249, 44, 176, 57, 187, 7, 64, 58, 217, 42, 208, 59, 145, 202, 224, 60, 194, 71, 80, 61, 113, 172, 224, 62, 162, 41, 80, 63, 90, 201, 96, 64, 130, 11, 80, 65, 58, 171, 96, 66, 97, 237, 80, 67, 26, 141, 96, 68, 65, 207, 80, 68, 250, 111, 96, 70, 33, 177, 80, 70, 218, 81, 96, 72, 10, 205, 208, 72, 195, 109, 224, 73, 234, 175, 208, 74, 163, 79, 224, 75, 202, 145, 208, 76, 131, 49, 224, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 5, 255, 255, 201, 196, 0, 0, 255, 255, 201, 196, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/Atlantic/Stanley": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 147, 68, 95, 60, 195, 79, 90, 192, 196, 54, 3, 48, 197, 47, 60, 192, 198, 21, 229, 48, 199, 24, 89, 64, 199, 255, 1, 176, 200, 248, 59, 64, 201, 222, 227, 176, 202, 216, 29, 64, 203, 190, 197, 176, 204, 183, 255, 64, 205, 54, 129, 48, 25, 17, 254, 64, 25, 211, 188, 176, 26, 241, 196, 32, 27, 170, 100, 48, 28, 209, 166, 32, 29, 138, 70, 48, 30, 168, 91, 176, 31, 106, 54, 64, 32, 136, 61, 176, 33, 74, 24, 64, 34, 104, 31, 176, 35, 41, 250, 64, 36, 72, 1, 176, 37, 9, 220, 64, 38, 49, 30, 48, 38, 233, 190, 64, 40, 17, 0, 48, 40, 210, 218, 192, 41, 240, 226, 48, 42, 178, 188, 192, 43, 208, 196, 48, 44, 146, 158, 192, 45, 176, 166, 48, 46, 114, 128, 192, 47, 144, 136, 48, 48, 82, 98, 192, 49, 121, 164, 176, 50, 59, 127, 64, 51, 89, 134, 176, 52, 27, 97, 64, 53, 57, 104, 176, 53, 251, 67, 64, 55, 25, 74, 176, 55, 219, 37, 64, 56, 249, 44, 176, 57, 187, 7, 64, 58, 217, 42, 208, 59, 145, 202, 224, 60, 194, 71, 80, 61, 113, 172, 224, 62, 162, 41, 80, 63, 90, 201, 96, 64, 130, 11, 80, 65, 58, 171, 96, 66, 97, 237, 80, 67, 26, 141, 96, 68, 65, 207, 80, 68, 250, 111, 96, 70, 33, 177, 80, 70, 218, 81, 96, 72, 10, 205, 208, 72, 195, 109, 224, 73, 234, 175, 208, 74, 163, 79, 224, 75, 202, 145, 208, 76, 131, 49, 224, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 5, 255, 255, 201, 196, 0, 0, 255, 255, 201, 196, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 17, 188, 255, 255, 255, 255, 147, 68, 95, 60, 255, 255, 255, 255, 195, 79, 90, 192, 255, 255, 255, 255, 196, 54, 3, 48, 255, 255, 255, 255, 197, 47, 60, 192, 255, 255, 255, 255, 198, 21, 229, 48, 255, 255, 255, 255, 199, 24, 89, 64, 255, 255, 255, 255, 199, 255, 1, 176, 255, 255, 255, 255, 200, 248, 59, 64, 255, 255, 255, 255, 201, 222, 227, 176, 255, 255, 255, 255, 202, 216, 29, 64, 255, 255, 255, 255, 203, 190, 197, 176, 255, 255, 255, 255, 204, 183, 255, 64, 255, 255, 255, 255, 205, 54, 129, 48, 0, 0, 0, 0, 25, 17, 254, 64, 0, 0, 0, 0, 25, 211, 188, 176, 0, 0, 0, 0, 26, 241, 196, 32, 0, 0, 0, 0, 27, 170, 100, 48, 0, 0, 0, 0, 28, 209, 166, 32, 0, 0, 0, 0, 29, 138, 70, 48, 0, 0, 0, 0, 30, 168, 91, 176, 0, 0, 0, 0, 31, 106, 54, 64, 0, 0, 0, 0, 32, 136, 61, 176, 0, 0, 0, 0, 33, 74, 24, 64, 0, 0, 0, 0, 34, 104, 31, 176, 0, 0, 0, 0, 35, 41, 250, 64, 0, 0, 0, 0, 36, 72, 1, 176, 0, 0, 0, 0, 37, 9, 220, 64, 0, 0, 0, 0, 38, 49, 30, 48, 0, 0, 0, 0, 38, 233, 190, 64, 0, 0, 0, 0, 40, 17, 0, 48, 0, 0, 0, 0, 40, 210, 218, 192, 0, 0, 0, 0, 41, 240, 226, 48, 0, 0, 0, 0, 42, 178, 188, 192, 0, 0, 0, 0, 43, 208, 196, 48, 0, 0, 0, 0, 44, 146, 158, 192, 0, 0, 0, 0, 45, 176, 166, 48, 0, 0, 0, 0, 46, 114, 128, 192, 0, 0, 0, 0, 47, 144, 136, 48, 0, 0, 0, 0, 48, 82, 98, 192, 0, 0, 0, 0, 49, 121, 164, 176, 0, 0, 0, 0, 50, 59, 127, 64, 0, 0, 0, 0, 51, 89, 134, 176, 0, 0, 0, 0, 52, 27, 97, 64, 0, 0, 0, 0, 53, 57, 104, 176, 0, 0, 0, 0, 53, 251, 67, 64, 0, 0, 0, 0, 55, 25, 74, 176, 0, 0, 0, 0, 55, 219, 37, 64, 0, 0, 0, 0, 56, 249, 44, 176, 0, 0, 0, 0, 57, 187, 7, 64, 0, 0, 0, 0, 58, 217, 42, 208, 0, 0, 0, 0, 59, 145, 202, 224, 0, 0, 0, 0, 60, 194, 71, 80, 0, 0, 0, 0, 61, 113, 172, 224, 0, 0, 0, 0, 62, 162, 41, 80, 0, 0, 0, 0, 63, 90, 201, 96, 0, 0, 0, 0, 64, 130, 11, 80, 0, 0, 0, 0, 65, 58, 171, 96, 0, 0, 0, 0, 66, 97, 237, 80, 0, 0, 0, 0, 67, 26, 141, 96, 0, 0, 0, 0, 68, 65, 207, 80, 0, 0, 0, 0, 68, 250, 111, 96, 0, 0, 0, 0, 70, 33, 177, 80, 0, 0, 0, 0, 70, 218, 81, 96, 0, 0, 0, 0, 72, 10, 205, 208, 0, 0, 0, 0, 72, 195, 109, 224, 0, 0, 0, 0, 73, 234, 175, 208, 0, 0, 0, 0, 74, 163, 79, 224, 0, 0, 0, 0, 75, 202, 145, 208, 0, 0, 0, 0, 76, 131, 49, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 5, 255, 255, 201, 196, 0, 0, 255, 255, 201, 196, 0, 4, 255, 255, 213, 208, 1, 8, 255, 255, 199, 192, 0, 12, 255, 255, 227, 224, 1, 16, 255, 255, 213, 208, 0, 8, 255, 255, 213, 208, 1, 8, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 45, 48, 50, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/Australia/ACT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/ACT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 127, 60, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 12, 137, 128, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 199, 129, 128, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 121, 156, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 0, 0, 0, 0, 46, 178, 113, 128, 0, 0, 0, 0, 47, 88, 142, 128, 0, 0, 0, 0, 48, 146, 83, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Adelaide": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 22, 231, 166, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 38, 2, 102, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 203, 100, 136, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 139, 40, 136, 46, 178, 120, 136, 47, 116, 69, 8, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 129, 236, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Adelaide": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 22, 231, 166, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 38, 2, 102, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 203, 100, 136, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 139, 40, 136, 46, 178, 120, 136, 47, 116, 69, 8, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 129, 236, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 139, 20, 255, 255, 255, 255, 123, 18, 3, 112, 255, 255, 255, 255, 156, 78, 173, 164, 255, 255, 255, 255, 156, 188, 39, 248, 255, 255, 255, 255, 203, 84, 186, 8, 255, 255, 255, 255, 203, 199, 94, 120, 255, 255, 255, 255, 204, 183, 93, 136, 255, 255, 255, 255, 205, 167, 64, 120, 255, 255, 255, 255, 206, 160, 122, 8, 255, 255, 255, 255, 207, 135, 34, 120, 0, 0, 0, 0, 3, 112, 64, 136, 0, 0, 0, 0, 4, 13, 35, 8, 0, 0, 0, 0, 5, 80, 34, 136, 0, 0, 0, 0, 5, 246, 63, 136, 0, 0, 0, 0, 7, 48, 4, 136, 0, 0, 0, 0, 7, 214, 33, 136, 0, 0, 0, 0, 9, 15, 230, 136, 0, 0, 0, 0, 9, 182, 3, 136, 0, 0, 0, 0, 10, 239, 200, 136, 0, 0, 0, 0, 11, 159, 32, 8, 0, 0, 0, 0, 12, 216, 229, 8, 0, 0, 0, 0, 13, 127, 2, 8, 0, 0, 0, 0, 14, 184, 199, 8, 0, 0, 0, 0, 15, 94, 228, 8, 0, 0, 0, 0, 16, 152, 169, 8, 0, 0, 0, 0, 17, 62, 198, 8, 0, 0, 0, 0, 18, 120, 139, 8, 0, 0, 0, 0, 19, 30, 168, 8, 0, 0, 0, 0, 20, 88, 109, 8, 0, 0, 0, 0, 20, 254, 138, 8, 0, 0, 0, 0, 22, 56, 79, 8, 0, 0, 0, 0, 22, 231, 166, 136, 0, 0, 0, 0, 24, 33, 107, 136, 0, 0, 0, 0, 24, 199, 136, 136, 0, 0, 0, 0, 26, 1, 77, 136, 0, 0, 0, 0, 26, 167, 106, 136, 0, 0, 0, 0, 27, 225, 47, 136, 0, 0, 0, 0, 28, 135, 76, 136, 0, 0, 0, 0, 29, 193, 17, 136, 0, 0, 0, 0, 30, 121, 163, 136, 0, 0, 0, 0, 31, 151, 185, 8, 0, 0, 0, 0, 32, 89, 133, 136, 0, 0, 0, 0, 33, 128, 213, 136, 0, 0, 0, 0, 34, 66, 162, 8, 0, 0, 0, 0, 35, 105, 242, 8, 0, 0, 0, 0, 36, 34, 132, 8, 0, 0, 0, 0, 37, 73, 212, 8, 0, 0, 0, 0, 38, 2, 102, 8, 0, 0, 0, 0, 39, 41, 182, 8, 0, 0, 0, 0, 39, 207, 211, 8, 0, 0, 0, 0, 41, 9, 152, 8, 0, 0, 0, 0, 41, 203, 100, 136, 0, 0, 0, 0, 42, 233, 122, 8, 0, 0, 0, 0, 43, 152, 209, 136, 0, 0, 0, 0, 44, 210, 150, 136, 0, 0, 0, 0, 45, 139, 40, 136, 0, 0, 0, 0, 46, 178, 120, 136, 0, 0, 0, 0, 47, 116, 69, 8, 0, 0, 0, 0, 48, 146, 90, 136, 0, 0, 0, 0, 49, 93, 97, 136, 0, 0, 0, 0, 50, 114, 60, 136, 0, 0, 0, 0, 51, 61, 67, 136, 0, 0, 0, 0, 52, 82, 30, 136, 0, 0, 0, 0, 53, 29, 37, 136, 0, 0, 0, 0, 54, 50, 0, 136, 0, 0, 0, 0, 54, 253, 7, 136, 0, 0, 0, 0, 56, 27, 29, 8, 0, 0, 0, 0, 56, 220, 233, 136, 0, 0, 0, 0, 57, 250, 255, 8, 0, 0, 0, 0, 58, 188, 203, 136, 0, 0, 0, 0, 59, 218, 225, 8, 0, 0, 0, 0, 60, 165, 232, 8, 0, 0, 0, 0, 61, 186, 195, 8, 0, 0, 0, 0, 62, 133, 202, 8, 0, 0, 0, 0, 63, 154, 165, 8, 0, 0, 0, 0, 64, 101, 172, 8, 0, 0, 0, 0, 65, 131, 193, 136, 0, 0, 0, 0, 66, 69, 142, 8, 0, 0, 0, 0, 67, 99, 163, 136, 0, 0, 0, 0, 68, 46, 170, 136, 0, 0, 0, 0, 69, 67, 133, 136, 0, 0, 0, 0, 70, 5, 82, 8, 0, 0, 0, 0, 71, 35, 103, 136, 0, 0, 0, 0, 71, 247, 169, 8, 0, 0, 0, 0, 72, 231, 154, 8, 0, 0, 0, 0, 73, 215, 139, 8, 0, 0, 0, 0, 74, 199, 124, 8, 0, 0, 0, 0, 75, 183, 109, 8, 0, 0, 0, 0, 76, 167, 94, 8, 0, 0, 0, 0, 77, 151, 79, 8, 0, 0, 0, 0, 78, 135, 64, 8, 0, 0, 0, 0, 79, 119, 49, 8, 0, 0, 0, 0, 80, 112, 92, 136, 0, 0, 0, 0, 81, 96, 77, 136, 0, 0, 0, 0, 82, 80, 62, 136, 0, 0, 0, 0, 83, 64, 47, 136, 0, 0, 0, 0, 84, 48, 32, 136, 0, 0, 0, 0, 85, 32, 17, 136, 0, 0, 0, 0, 86, 16, 2, 136, 0, 0, 0, 0, 86, 255, 243, 136, 0, 0, 0, 0, 87, 239, 228, 136, 0, 0, 0, 0, 88, 223, 213, 136, 0, 0, 0, 0, 89, 207, 198, 136, 0, 0, 0, 0, 90, 191, 183, 136, 0, 0, 0, 0, 91, 184, 227, 8, 0, 0, 0, 0, 92, 168, 212, 8, 0, 0, 0, 0, 93, 152, 197, 8, 0, 0, 0, 0, 94, 136, 182, 8, 0, 0, 0, 0, 95, 120, 167, 8, 0, 0, 0, 0, 96, 104, 152, 8, 0, 0, 0, 0, 97, 88, 137, 8, 0, 0, 0, 0, 98, 72, 122, 8, 0, 0, 0, 0, 99, 56, 107, 8, 0, 0, 0, 0, 100, 40, 92, 8, 0, 0, 0, 0, 101, 24, 77, 8, 0, 0, 0, 0, 102, 17, 120, 136, 0, 0, 0, 0, 103, 1, 105, 136, 0, 0, 0, 0, 103, 241, 90, 136, 0, 0, 0, 0, 104, 225, 75, 136, 0, 0, 0, 0, 105, 209, 60, 136, 0, 0, 0, 0, 106, 193, 45, 136, 0, 0, 0, 0, 107, 177, 30, 136, 0, 0, 0, 0, 108, 161, 15, 136, 0, 0, 0, 0, 109, 145, 0, 136, 0, 0, 0, 0, 110, 128, 241, 136, 0, 0, 0, 0, 111, 112, 226, 136, 0, 0, 0, 0, 112, 106, 14, 8, 0, 0, 0, 0, 113, 89, 255, 8, 0, 0, 0, 0, 114, 73, 240, 8, 0, 0, 0, 0, 115, 57, 225, 8, 0, 0, 0, 0, 116, 41, 210, 8, 0, 0, 0, 0, 117, 25, 195, 8, 0, 0, 0, 0, 118, 9, 180, 8, 0, 0, 0, 0, 118, 249, 165, 8, 0, 0, 0, 0, 119, 233, 150, 8, 0, 0, 0, 0, 120, 217, 135, 8, 0, 0, 0, 0, 121, 201, 120, 8, 0, 0, 0, 0, 122, 185, 105, 8, 0, 0, 0, 0, 123, 178, 148, 136, 0, 0, 0, 0, 124, 162, 133, 136, 0, 0, 0, 0, 125, 146, 118, 136, 0, 0, 0, 0, 126, 130, 103, 136, 0, 0, 0, 0, 127, 114, 88, 136, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 129, 236, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 147, 168, 1, 9, 0, 0, 133, 152, 0, 4, 0, 0, 147, 168, 1, 9, 0, 0, 133, 152, 0, 4, 76, 77, 84, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Brisbane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 10}, + "zoneinfo/Australia/Brisbane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 114, 237, 159, 8, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 10}, - "zoneinfo/Australia/Broken_Hill": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 23, 12, 144, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 37, 239, 241, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 175, 181, 8, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 120, 179, 136, 46, 178, 120, 136, 47, 88, 149, 136, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 108, 175, 216, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 132, 156, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Broken_Hill": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 23, 12, 144, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 37, 239, 241, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 175, 181, 8, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 120, 179, 136, 46, 178, 120, 136, 47, 88, 149, 136, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 132, 156, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 7, 0, 0, 0, 19, 255, 255, 255, 255, 115, 22, 136, 100, 255, 255, 255, 255, 118, 4, 165, 224, 255, 255, 255, 255, 123, 18, 3, 112, 255, 255, 255, 255, 156, 78, 173, 164, 255, 255, 255, 255, 156, 188, 39, 248, 255, 255, 255, 255, 203, 84, 186, 8, 255, 255, 255, 255, 203, 199, 94, 120, 255, 255, 255, 255, 204, 183, 93, 136, 255, 255, 255, 255, 205, 167, 64, 120, 255, 255, 255, 255, 206, 160, 122, 8, 255, 255, 255, 255, 207, 135, 34, 120, 0, 0, 0, 0, 3, 112, 64, 136, 0, 0, 0, 0, 4, 13, 35, 8, 0, 0, 0, 0, 5, 80, 34, 136, 0, 0, 0, 0, 5, 246, 63, 136, 0, 0, 0, 0, 7, 48, 4, 136, 0, 0, 0, 0, 7, 214, 33, 136, 0, 0, 0, 0, 9, 15, 230, 136, 0, 0, 0, 0, 9, 182, 3, 136, 0, 0, 0, 0, 10, 239, 200, 136, 0, 0, 0, 0, 11, 159, 32, 8, 0, 0, 0, 0, 12, 216, 229, 8, 0, 0, 0, 0, 13, 127, 2, 8, 0, 0, 0, 0, 14, 184, 199, 8, 0, 0, 0, 0, 15, 94, 228, 8, 0, 0, 0, 0, 16, 152, 169, 8, 0, 0, 0, 0, 17, 62, 198, 8, 0, 0, 0, 0, 18, 120, 139, 8, 0, 0, 0, 0, 19, 30, 168, 8, 0, 0, 0, 0, 20, 88, 109, 8, 0, 0, 0, 0, 20, 254, 138, 8, 0, 0, 0, 0, 22, 56, 79, 8, 0, 0, 0, 0, 23, 12, 144, 136, 0, 0, 0, 0, 24, 33, 107, 136, 0, 0, 0, 0, 24, 199, 136, 136, 0, 0, 0, 0, 26, 1, 77, 136, 0, 0, 0, 0, 26, 167, 106, 136, 0, 0, 0, 0, 27, 225, 47, 136, 0, 0, 0, 0, 28, 135, 76, 136, 0, 0, 0, 0, 29, 193, 17, 136, 0, 0, 0, 0, 30, 121, 163, 136, 0, 0, 0, 0, 31, 151, 185, 8, 0, 0, 0, 0, 32, 89, 133, 136, 0, 0, 0, 0, 33, 128, 213, 136, 0, 0, 0, 0, 34, 66, 162, 8, 0, 0, 0, 0, 35, 105, 242, 8, 0, 0, 0, 0, 36, 34, 132, 8, 0, 0, 0, 0, 37, 73, 212, 8, 0, 0, 0, 0, 37, 239, 241, 8, 0, 0, 0, 0, 39, 41, 182, 8, 0, 0, 0, 0, 39, 207, 211, 8, 0, 0, 0, 0, 41, 9, 152, 8, 0, 0, 0, 0, 41, 175, 181, 8, 0, 0, 0, 0, 42, 233, 122, 8, 0, 0, 0, 0, 43, 152, 209, 136, 0, 0, 0, 0, 44, 210, 150, 136, 0, 0, 0, 0, 45, 120, 179, 136, 0, 0, 0, 0, 46, 178, 120, 136, 0, 0, 0, 0, 47, 88, 149, 136, 0, 0, 0, 0, 48, 146, 90, 136, 0, 0, 0, 0, 49, 93, 97, 136, 0, 0, 0, 0, 50, 114, 60, 136, 0, 0, 0, 0, 51, 61, 67, 136, 0, 0, 0, 0, 52, 82, 30, 136, 0, 0, 0, 0, 53, 29, 37, 136, 0, 0, 0, 0, 54, 50, 0, 136, 0, 0, 0, 0, 54, 253, 7, 136, 0, 0, 0, 0, 56, 27, 29, 8, 0, 0, 0, 0, 56, 220, 233, 136, 0, 0, 0, 0, 57, 250, 255, 8, 0, 0, 0, 0, 58, 188, 203, 136, 0, 0, 0, 0, 59, 218, 225, 8, 0, 0, 0, 0, 60, 165, 232, 8, 0, 0, 0, 0, 61, 186, 195, 8, 0, 0, 0, 0, 62, 133, 202, 8, 0, 0, 0, 0, 63, 154, 165, 8, 0, 0, 0, 0, 64, 101, 172, 8, 0, 0, 0, 0, 65, 131, 193, 136, 0, 0, 0, 0, 66, 69, 142, 8, 0, 0, 0, 0, 67, 99, 163, 136, 0, 0, 0, 0, 68, 46, 170, 136, 0, 0, 0, 0, 69, 67, 133, 136, 0, 0, 0, 0, 70, 5, 82, 8, 0, 0, 0, 0, 71, 35, 103, 136, 0, 0, 0, 0, 71, 247, 169, 8, 0, 0, 0, 0, 72, 231, 154, 8, 0, 0, 0, 0, 73, 215, 139, 8, 0, 0, 0, 0, 74, 199, 124, 8, 0, 0, 0, 0, 75, 183, 109, 8, 0, 0, 0, 0, 76, 167, 94, 8, 0, 0, 0, 0, 77, 151, 79, 8, 0, 0, 0, 0, 78, 135, 64, 8, 0, 0, 0, 0, 79, 119, 49, 8, 0, 0, 0, 0, 80, 112, 92, 136, 0, 0, 0, 0, 81, 96, 77, 136, 0, 0, 0, 0, 82, 80, 62, 136, 0, 0, 0, 0, 83, 64, 47, 136, 0, 0, 0, 0, 84, 48, 32, 136, 0, 0, 0, 0, 85, 32, 17, 136, 0, 0, 0, 0, 86, 16, 2, 136, 0, 0, 0, 0, 86, 255, 243, 136, 0, 0, 0, 0, 87, 239, 228, 136, 0, 0, 0, 0, 88, 223, 213, 136, 0, 0, 0, 0, 89, 207, 198, 136, 0, 0, 0, 0, 90, 191, 183, 136, 0, 0, 0, 0, 91, 184, 227, 8, 0, 0, 0, 0, 92, 168, 212, 8, 0, 0, 0, 0, 93, 152, 197, 8, 0, 0, 0, 0, 94, 136, 182, 8, 0, 0, 0, 0, 95, 120, 167, 8, 0, 0, 0, 0, 96, 104, 152, 8, 0, 0, 0, 0, 97, 88, 137, 8, 0, 0, 0, 0, 98, 72, 122, 8, 0, 0, 0, 0, 99, 56, 107, 8, 0, 0, 0, 0, 100, 40, 92, 8, 0, 0, 0, 0, 101, 24, 77, 8, 0, 0, 0, 0, 102, 17, 120, 136, 0, 0, 0, 0, 103, 1, 105, 136, 0, 0, 0, 0, 103, 241, 90, 136, 0, 0, 0, 0, 104, 225, 75, 136, 0, 0, 0, 0, 105, 209, 60, 136, 0, 0, 0, 0, 106, 193, 45, 136, 0, 0, 0, 0, 107, 177, 30, 136, 0, 0, 0, 0, 108, 161, 15, 136, 0, 0, 0, 0, 109, 145, 0, 136, 0, 0, 0, 0, 110, 128, 241, 136, 0, 0, 0, 0, 111, 112, 226, 136, 0, 0, 0, 0, 112, 106, 14, 8, 0, 0, 0, 0, 113, 89, 255, 8, 0, 0, 0, 0, 114, 73, 240, 8, 0, 0, 0, 0, 115, 57, 225, 8, 0, 0, 0, 0, 116, 41, 210, 8, 0, 0, 0, 0, 117, 25, 195, 8, 0, 0, 0, 0, 118, 9, 180, 8, 0, 0, 0, 0, 118, 249, 165, 8, 0, 0, 0, 0, 119, 233, 150, 8, 0, 0, 0, 0, 120, 217, 135, 8, 0, 0, 0, 0, 121, 201, 120, 8, 0, 0, 0, 0, 122, 185, 105, 8, 0, 0, 0, 0, 123, 178, 148, 136, 0, 0, 0, 0, 124, 162, 133, 136, 0, 0, 0, 0, 125, 146, 118, 136, 0, 0, 0, 0, 126, 130, 103, 136, 0, 0, 0, 0, 127, 114, 88, 136, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 132, 156, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 9, 0, 0, 147, 168, 1, 14, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 14, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 0, 0, 1, 1, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Canberra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Canberra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 127, 60, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 12, 137, 128, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 199, 129, 128, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 121, 156, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 0, 0, 0, 0, 46, 178, 113, 128, 0, 0, 0, 0, 47, 88, 142, 128, 0, 0, 0, 0, 48, 146, 83, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Currie": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 134, 224, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Currie": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 134, 224, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 116, 46, 4, 32, 255, 255, 255, 255, 155, 213, 120, 128, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 3, 79, 0, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 227, 49, 0, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 103, 39, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 38, 2, 95, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 237, 225, 128, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 205, 195, 128, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 173, 165, 128, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 141, 135, 128, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 109, 105, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 86, 134, 0, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 54, 104, 0, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 22, 74, 0, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 55, 246, 44, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 191, 42, 128, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 159, 12, 128, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 126, 238, 128, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 94, 208, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 62, 178, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 30, 148, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 7, 177, 0, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 134, 224, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Darwin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 122, 168, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 10}, + "zoneinfo/Australia/Darwin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 122, 168, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 146, 88, 255, 255, 255, 255, 123, 18, 3, 112, 255, 255, 255, 255, 156, 78, 173, 164, 255, 255, 255, 255, 156, 188, 39, 248, 255, 255, 255, 255, 203, 84, 186, 8, 255, 255, 255, 255, 203, 199, 94, 120, 255, 255, 255, 255, 204, 183, 93, 136, 255, 255, 255, 255, 205, 167, 64, 120, 255, 255, 255, 255, 206, 160, 122, 8, 255, 255, 255, 255, 207, 135, 34, 120, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 122, 168, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 147, 168, 1, 9, 0, 0, 133, 152, 0, 4, 76, 77, 84, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 10}, - "zoneinfo/Australia/Eucla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 156, 78, 184, 48, 156, 188, 50, 132, 203, 84, 196, 148, 203, 199, 105, 4, 204, 183, 104, 20, 205, 167, 75, 4, 9, 15, 241, 20, 9, 182, 14, 20, 26, 1, 88, 20, 26, 167, 117, 20, 41, 37, 82, 20, 41, 175, 191, 148, 69, 113, 180, 148, 70, 5, 92, 148, 71, 35, 114, 20, 71, 238, 121, 20, 73, 3, 84, 20, 73, 206, 91, 20, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 120, 208, 0, 0, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 76, 77, 84, 0, 43, 48, 57, 52, 53, 0, 43, 48, 56, 52, 53, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 52, 53, 62, 45, 56, 58, 52, 53, 10}, + "zoneinfo/Australia/Eucla": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 156, 78, 184, 48, 156, 188, 50, 132, 203, 84, 196, 148, 203, 199, 105, 4, 204, 183, 104, 20, 205, 167, 75, 4, 9, 15, 241, 20, 9, 182, 14, 20, 26, 1, 88, 20, 26, 167, 117, 20, 41, 37, 82, 20, 41, 175, 191, 148, 69, 113, 180, 148, 70, 5, 92, 148, 71, 35, 114, 20, 71, 238, 121, 20, 73, 3, 84, 20, 73, 206, 91, 20, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 120, 208, 0, 0, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 76, 77, 84, 0, 43, 48, 57, 52, 53, 0, 43, 48, 56, 52, 53, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 116, 166, 10, 176, 255, 255, 255, 255, 156, 78, 184, 48, 255, 255, 255, 255, 156, 188, 50, 132, 255, 255, 255, 255, 203, 84, 196, 148, 255, 255, 255, 255, 203, 199, 105, 4, 255, 255, 255, 255, 204, 183, 104, 20, 255, 255, 255, 255, 205, 167, 75, 4, 0, 0, 0, 0, 9, 15, 241, 20, 0, 0, 0, 0, 9, 182, 14, 20, 0, 0, 0, 0, 26, 1, 88, 20, 0, 0, 0, 0, 26, 167, 117, 20, 0, 0, 0, 0, 41, 37, 82, 20, 0, 0, 0, 0, 41, 175, 191, 148, 0, 0, 0, 0, 69, 113, 180, 148, 0, 0, 0, 0, 70, 5, 92, 148, 0, 0, 0, 0, 71, 35, 114, 20, 0, 0, 0, 0, 71, 238, 121, 20, 0, 0, 0, 0, 73, 3, 84, 20, 0, 0, 0, 0, 73, 206, 91, 20, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 120, 208, 0, 0, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 0, 0, 137, 28, 1, 4, 0, 0, 123, 12, 0, 10, 76, 77, 84, 0, 43, 48, 57, 52, 53, 0, 43, 48, 56, 52, 53, 0, 0, 0, 0, 1, 1, 10, 60, 43, 48, 56, 52, 53, 62, 45, 56, 58, 52, 53, 10}, - "zoneinfo/Australia/Hobart": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Hobart": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 116, 46, 0, 228, 255, 255, 255, 255, 155, 213, 120, 128, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 255, 255, 255, 255, 251, 194, 141, 0, 255, 255, 255, 255, 252, 178, 126, 0, 255, 255, 255, 255, 253, 199, 89, 0, 255, 255, 255, 255, 254, 118, 176, 128, 255, 255, 255, 255, 255, 167, 59, 0, 0, 0, 0, 0, 0, 86, 146, 128, 0, 0, 0, 0, 1, 135, 29, 0, 0, 0, 0, 0, 2, 63, 175, 0, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 3, 79, 0, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 227, 49, 0, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 103, 39, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 38, 2, 95, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 237, 225, 128, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 205, 195, 128, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 173, 165, 128, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 141, 135, 128, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 109, 105, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 86, 134, 0, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 54, 104, 0, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 22, 74, 0, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 55, 246, 44, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 191, 42, 128, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 159, 12, 128, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 126, 238, 128, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 94, 208, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 62, 178, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 30, 148, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 7, 177, 0, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/LHI": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 128, 0, 0, 0, 20, 254, 102, 224, 22, 56, 64, 248, 22, 231, 138, 104, 24, 33, 93, 120, 24, 199, 108, 104, 26, 1, 63, 120, 26, 167, 78, 104, 27, 225, 33, 120, 28, 135, 48, 104, 29, 193, 3, 120, 30, 121, 142, 112, 31, 151, 170, 248, 32, 89, 112, 112, 33, 128, 199, 120, 34, 66, 140, 240, 35, 105, 227, 248, 36, 34, 110, 240, 37, 73, 197, 248, 37, 239, 219, 240, 39, 41, 167, 248, 39, 207, 189, 240, 41, 9, 137, 248, 41, 175, 159, 240, 42, 233, 107, 248, 43, 152, 188, 112, 44, 210, 136, 120, 45, 120, 158, 112, 46, 178, 106, 120, 47, 88, 128, 112, 48, 146, 76, 120, 49, 93, 76, 112, 50, 114, 46, 120, 51, 61, 46, 112, 52, 82, 16, 120, 53, 29, 16, 112, 54, 49, 242, 120, 54, 252, 242, 112, 56, 27, 14, 248, 56, 220, 212, 112, 57, 167, 226, 120, 58, 188, 182, 112, 59, 218, 210, 248, 60, 165, 210, 240, 61, 186, 180, 248, 62, 133, 180, 240, 63, 154, 150, 248, 64, 101, 150, 240, 65, 131, 179, 120, 66, 69, 120, 240, 67, 99, 149, 120, 68, 46, 149, 112, 69, 67, 119, 120, 70, 5, 60, 240, 71, 35, 89, 120, 71, 247, 147, 240, 72, 231, 139, 248, 73, 215, 117, 240, 74, 199, 109, 248, 75, 183, 87, 240, 76, 167, 79, 248, 77, 151, 57, 240, 78, 135, 49, 248, 79, 119, 27, 240, 80, 112, 78, 120, 81, 96, 56, 112, 82, 80, 48, 120, 83, 64, 26, 112, 84, 48, 18, 120, 85, 31, 252, 112, 86, 15, 244, 120, 86, 255, 222, 112, 87, 239, 214, 120, 88, 223, 192, 112, 89, 207, 184, 120, 90, 191, 162, 112, 91, 184, 212, 248, 92, 168, 190, 240, 93, 152, 182, 248, 94, 136, 160, 240, 95, 120, 152, 248, 96, 104, 130, 240, 97, 88, 122, 248, 98, 72, 100, 240, 99, 56, 92, 248, 100, 40, 70, 240, 101, 24, 62, 248, 102, 17, 99, 112, 103, 1, 91, 120, 103, 241, 69, 112, 104, 225, 61, 120, 105, 209, 39, 112, 106, 193, 31, 120, 107, 177, 9, 112, 108, 161, 1, 120, 109, 144, 235, 112, 110, 128, 227, 120, 111, 112, 205, 112, 112, 105, 255, 248, 113, 89, 233, 240, 114, 73, 225, 248, 115, 57, 203, 240, 116, 41, 195, 248, 117, 25, 173, 240, 118, 9, 165, 248, 118, 249, 143, 240, 119, 233, 135, 248, 120, 217, 113, 240, 121, 201, 105, 248, 122, 185, 83, 240, 123, 178, 134, 120, 124, 162, 112, 112, 125, 146, 104, 120, 126, 130, 82, 112, 127, 114, 74, 120, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 51, 48, 62, 45, 49, 48, 58, 51, 48, 60, 43, 49, 49, 62, 45, 49, 49, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 10}, + "zoneinfo/Australia/LHI": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 128, 0, 0, 0, 20, 254, 102, 224, 22, 56, 64, 248, 22, 231, 138, 104, 24, 33, 93, 120, 24, 199, 108, 104, 26, 1, 63, 120, 26, 167, 78, 104, 27, 225, 33, 120, 28, 135, 48, 104, 29, 193, 3, 120, 30, 121, 142, 112, 31, 151, 170, 248, 32, 89, 112, 112, 33, 128, 199, 120, 34, 66, 140, 240, 35, 105, 227, 248, 36, 34, 110, 240, 37, 73, 197, 248, 37, 239, 219, 240, 39, 41, 167, 248, 39, 207, 189, 240, 41, 9, 137, 248, 41, 175, 159, 240, 42, 233, 107, 248, 43, 152, 188, 112, 44, 210, 136, 120, 45, 120, 158, 112, 46, 178, 106, 120, 47, 88, 128, 112, 48, 146, 76, 120, 49, 93, 76, 112, 50, 114, 46, 120, 51, 61, 46, 112, 52, 82, 16, 120, 53, 29, 16, 112, 54, 49, 242, 120, 54, 252, 242, 112, 56, 27, 14, 248, 56, 220, 212, 112, 57, 167, 226, 120, 58, 188, 182, 112, 59, 218, 210, 248, 60, 165, 210, 240, 61, 186, 180, 248, 62, 133, 180, 240, 63, 154, 150, 248, 64, 101, 150, 240, 65, 131, 179, 120, 66, 69, 120, 240, 67, 99, 149, 120, 68, 46, 149, 112, 69, 67, 119, 120, 70, 5, 60, 240, 71, 35, 89, 120, 71, 247, 147, 240, 72, 231, 139, 248, 73, 215, 117, 240, 74, 199, 109, 248, 75, 183, 87, 240, 76, 167, 79, 248, 77, 151, 57, 240, 78, 135, 49, 248, 79, 119, 27, 240, 80, 112, 78, 120, 81, 96, 56, 112, 82, 80, 48, 120, 83, 64, 26, 112, 84, 48, 18, 120, 85, 31, 252, 112, 86, 15, 244, 120, 86, 255, 222, 112, 87, 239, 214, 120, 88, 223, 192, 112, 89, 207, 184, 120, 90, 191, 162, 112, 91, 184, 212, 248, 92, 168, 190, 240, 93, 152, 182, 248, 94, 136, 160, 240, 95, 120, 152, 248, 96, 104, 130, 240, 97, 88, 122, 248, 98, 72, 100, 240, 99, 56, 92, 248, 100, 40, 70, 240, 101, 24, 62, 248, 102, 17, 99, 112, 103, 1, 91, 120, 103, 241, 69, 112, 104, 225, 61, 120, 105, 209, 39, 112, 106, 193, 31, 120, 107, 177, 9, 112, 108, 161, 1, 120, 109, 144, 235, 112, 110, 128, 227, 120, 111, 112, 205, 112, 112, 105, 255, 248, 113, 89, 233, 240, 114, 73, 225, 248, 115, 57, 203, 240, 116, 41, 195, 248, 117, 25, 173, 240, 118, 9, 165, 248, 118, 249, 143, 240, 119, 233, 135, 248, 120, 217, 113, 240, 121, 201, 105, 248, 122, 185, 83, 240, 123, 178, 134, 120, 124, 162, 112, 112, 125, 146, 104, 120, 126, 130, 82, 112, 127, 114, 74, 120, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 255, 255, 255, 255, 115, 22, 119, 220, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 64, 248, 0, 0, 0, 0, 22, 231, 138, 104, 0, 0, 0, 0, 24, 33, 93, 120, 0, 0, 0, 0, 24, 199, 108, 104, 0, 0, 0, 0, 26, 1, 63, 120, 0, 0, 0, 0, 26, 167, 78, 104, 0, 0, 0, 0, 27, 225, 33, 120, 0, 0, 0, 0, 28, 135, 48, 104, 0, 0, 0, 0, 29, 193, 3, 120, 0, 0, 0, 0, 30, 121, 142, 112, 0, 0, 0, 0, 31, 151, 170, 248, 0, 0, 0, 0, 32, 89, 112, 112, 0, 0, 0, 0, 33, 128, 199, 120, 0, 0, 0, 0, 34, 66, 140, 240, 0, 0, 0, 0, 35, 105, 227, 248, 0, 0, 0, 0, 36, 34, 110, 240, 0, 0, 0, 0, 37, 73, 197, 248, 0, 0, 0, 0, 37, 239, 219, 240, 0, 0, 0, 0, 39, 41, 167, 248, 0, 0, 0, 0, 39, 207, 189, 240, 0, 0, 0, 0, 41, 9, 137, 248, 0, 0, 0, 0, 41, 175, 159, 240, 0, 0, 0, 0, 42, 233, 107, 248, 0, 0, 0, 0, 43, 152, 188, 112, 0, 0, 0, 0, 44, 210, 136, 120, 0, 0, 0, 0, 45, 120, 158, 112, 0, 0, 0, 0, 46, 178, 106, 120, 0, 0, 0, 0, 47, 88, 128, 112, 0, 0, 0, 0, 48, 146, 76, 120, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 114, 46, 120, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 82, 16, 120, 0, 0, 0, 0, 53, 29, 16, 112, 0, 0, 0, 0, 54, 49, 242, 120, 0, 0, 0, 0, 54, 252, 242, 112, 0, 0, 0, 0, 56, 27, 14, 248, 0, 0, 0, 0, 56, 220, 212, 112, 0, 0, 0, 0, 57, 167, 226, 120, 0, 0, 0, 0, 58, 188, 182, 112, 0, 0, 0, 0, 59, 218, 210, 248, 0, 0, 0, 0, 60, 165, 210, 240, 0, 0, 0, 0, 61, 186, 180, 248, 0, 0, 0, 0, 62, 133, 180, 240, 0, 0, 0, 0, 63, 154, 150, 248, 0, 0, 0, 0, 64, 101, 150, 240, 0, 0, 0, 0, 65, 131, 179, 120, 0, 0, 0, 0, 66, 69, 120, 240, 0, 0, 0, 0, 67, 99, 149, 120, 0, 0, 0, 0, 68, 46, 149, 112, 0, 0, 0, 0, 69, 67, 119, 120, 0, 0, 0, 0, 70, 5, 60, 240, 0, 0, 0, 0, 71, 35, 89, 120, 0, 0, 0, 0, 71, 247, 147, 240, 0, 0, 0, 0, 72, 231, 139, 248, 0, 0, 0, 0, 73, 215, 117, 240, 0, 0, 0, 0, 74, 199, 109, 248, 0, 0, 0, 0, 75, 183, 87, 240, 0, 0, 0, 0, 76, 167, 79, 248, 0, 0, 0, 0, 77, 151, 57, 240, 0, 0, 0, 0, 78, 135, 49, 248, 0, 0, 0, 0, 79, 119, 27, 240, 0, 0, 0, 0, 80, 112, 78, 120, 0, 0, 0, 0, 81, 96, 56, 112, 0, 0, 0, 0, 82, 80, 48, 120, 0, 0, 0, 0, 83, 64, 26, 112, 0, 0, 0, 0, 84, 48, 18, 120, 0, 0, 0, 0, 85, 31, 252, 112, 0, 0, 0, 0, 86, 15, 244, 120, 0, 0, 0, 0, 86, 255, 222, 112, 0, 0, 0, 0, 87, 239, 214, 120, 0, 0, 0, 0, 88, 223, 192, 112, 0, 0, 0, 0, 89, 207, 184, 120, 0, 0, 0, 0, 90, 191, 162, 112, 0, 0, 0, 0, 91, 184, 212, 248, 0, 0, 0, 0, 92, 168, 190, 240, 0, 0, 0, 0, 93, 152, 182, 248, 0, 0, 0, 0, 94, 136, 160, 240, 0, 0, 0, 0, 95, 120, 152, 248, 0, 0, 0, 0, 96, 104, 130, 240, 0, 0, 0, 0, 97, 88, 122, 248, 0, 0, 0, 0, 98, 72, 100, 240, 0, 0, 0, 0, 99, 56, 92, 248, 0, 0, 0, 0, 100, 40, 70, 240, 0, 0, 0, 0, 101, 24, 62, 248, 0, 0, 0, 0, 102, 17, 99, 112, 0, 0, 0, 0, 103, 1, 91, 120, 0, 0, 0, 0, 103, 241, 69, 112, 0, 0, 0, 0, 104, 225, 61, 120, 0, 0, 0, 0, 105, 209, 39, 112, 0, 0, 0, 0, 106, 193, 31, 120, 0, 0, 0, 0, 107, 177, 9, 112, 0, 0, 0, 0, 108, 161, 1, 120, 0, 0, 0, 0, 109, 144, 235, 112, 0, 0, 0, 0, 110, 128, 227, 120, 0, 0, 0, 0, 111, 112, 205, 112, 0, 0, 0, 0, 112, 105, 255, 248, 0, 0, 0, 0, 113, 89, 233, 240, 0, 0, 0, 0, 114, 73, 225, 248, 0, 0, 0, 0, 115, 57, 203, 240, 0, 0, 0, 0, 116, 41, 195, 248, 0, 0, 0, 0, 117, 25, 173, 240, 0, 0, 0, 0, 118, 9, 165, 248, 0, 0, 0, 0, 118, 249, 143, 240, 0, 0, 0, 0, 119, 233, 135, 248, 0, 0, 0, 0, 120, 217, 113, 240, 0, 0, 0, 0, 121, 201, 105, 248, 0, 0, 0, 0, 122, 185, 83, 240, 0, 0, 0, 0, 123, 178, 134, 120, 0, 0, 0, 0, 124, 162, 112, 112, 0, 0, 0, 0, 125, 146, 104, 120, 0, 0, 0, 0, 126, 130, 82, 112, 0, 0, 0, 0, 127, 114, 74, 120, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 10, 60, 43, 49, 48, 51, 48, 62, 45, 49, 48, 58, 51, 48, 60, 43, 49, 49, 62, 45, 49, 49, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 10}, - "zoneinfo/Australia/Lindeman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 80, 104, 224, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 2, 3, 4, 3, 4, 0, 0, 139, 172, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 10}, + "zoneinfo/Australia/Lindeman": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 139, 172, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 114, 237, 162, 212, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 139, 172, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 10}, - "zoneinfo/Australia/Lord_Howe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 128, 0, 0, 0, 20, 254, 102, 224, 22, 56, 64, 248, 22, 231, 138, 104, 24, 33, 93, 120, 24, 199, 108, 104, 26, 1, 63, 120, 26, 167, 78, 104, 27, 225, 33, 120, 28, 135, 48, 104, 29, 193, 3, 120, 30, 121, 142, 112, 31, 151, 170, 248, 32, 89, 112, 112, 33, 128, 199, 120, 34, 66, 140, 240, 35, 105, 227, 248, 36, 34, 110, 240, 37, 73, 197, 248, 37, 239, 219, 240, 39, 41, 167, 248, 39, 207, 189, 240, 41, 9, 137, 248, 41, 175, 159, 240, 42, 233, 107, 248, 43, 152, 188, 112, 44, 210, 136, 120, 45, 120, 158, 112, 46, 178, 106, 120, 47, 88, 128, 112, 48, 146, 76, 120, 49, 93, 76, 112, 50, 114, 46, 120, 51, 61, 46, 112, 52, 82, 16, 120, 53, 29, 16, 112, 54, 49, 242, 120, 54, 252, 242, 112, 56, 27, 14, 248, 56, 220, 212, 112, 57, 167, 226, 120, 58, 188, 182, 112, 59, 218, 210, 248, 60, 165, 210, 240, 61, 186, 180, 248, 62, 133, 180, 240, 63, 154, 150, 248, 64, 101, 150, 240, 65, 131, 179, 120, 66, 69, 120, 240, 67, 99, 149, 120, 68, 46, 149, 112, 69, 67, 119, 120, 70, 5, 60, 240, 71, 35, 89, 120, 71, 247, 147, 240, 72, 231, 139, 248, 73, 215, 117, 240, 74, 199, 109, 248, 75, 183, 87, 240, 76, 167, 79, 248, 77, 151, 57, 240, 78, 135, 49, 248, 79, 119, 27, 240, 80, 112, 78, 120, 81, 96, 56, 112, 82, 80, 48, 120, 83, 64, 26, 112, 84, 48, 18, 120, 85, 31, 252, 112, 86, 15, 244, 120, 86, 255, 222, 112, 87, 239, 214, 120, 88, 223, 192, 112, 89, 207, 184, 120, 90, 191, 162, 112, 91, 184, 212, 248, 92, 168, 190, 240, 93, 152, 182, 248, 94, 136, 160, 240, 95, 120, 152, 248, 96, 104, 130, 240, 97, 88, 122, 248, 98, 72, 100, 240, 99, 56, 92, 248, 100, 40, 70, 240, 101, 24, 62, 248, 102, 17, 99, 112, 103, 1, 91, 120, 103, 241, 69, 112, 104, 225, 61, 120, 105, 209, 39, 112, 106, 193, 31, 120, 107, 177, 9, 112, 108, 161, 1, 120, 109, 144, 235, 112, 110, 128, 227, 120, 111, 112, 205, 112, 112, 105, 255, 248, 113, 89, 233, 240, 114, 73, 225, 248, 115, 57, 203, 240, 116, 41, 195, 248, 117, 25, 173, 240, 118, 9, 165, 248, 118, 249, 143, 240, 119, 233, 135, 248, 120, 217, 113, 240, 121, 201, 105, 248, 122, 185, 83, 240, 123, 178, 134, 120, 124, 162, 112, 112, 125, 146, 104, 120, 126, 130, 82, 112, 127, 114, 74, 120, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 51, 48, 62, 45, 49, 48, 58, 51, 48, 60, 43, 49, 49, 62, 45, 49, 49, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 10}, + "zoneinfo/Australia/Lord_Howe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 128, 0, 0, 0, 20, 254, 102, 224, 22, 56, 64, 248, 22, 231, 138, 104, 24, 33, 93, 120, 24, 199, 108, 104, 26, 1, 63, 120, 26, 167, 78, 104, 27, 225, 33, 120, 28, 135, 48, 104, 29, 193, 3, 120, 30, 121, 142, 112, 31, 151, 170, 248, 32, 89, 112, 112, 33, 128, 199, 120, 34, 66, 140, 240, 35, 105, 227, 248, 36, 34, 110, 240, 37, 73, 197, 248, 37, 239, 219, 240, 39, 41, 167, 248, 39, 207, 189, 240, 41, 9, 137, 248, 41, 175, 159, 240, 42, 233, 107, 248, 43, 152, 188, 112, 44, 210, 136, 120, 45, 120, 158, 112, 46, 178, 106, 120, 47, 88, 128, 112, 48, 146, 76, 120, 49, 93, 76, 112, 50, 114, 46, 120, 51, 61, 46, 112, 52, 82, 16, 120, 53, 29, 16, 112, 54, 49, 242, 120, 54, 252, 242, 112, 56, 27, 14, 248, 56, 220, 212, 112, 57, 167, 226, 120, 58, 188, 182, 112, 59, 218, 210, 248, 60, 165, 210, 240, 61, 186, 180, 248, 62, 133, 180, 240, 63, 154, 150, 248, 64, 101, 150, 240, 65, 131, 179, 120, 66, 69, 120, 240, 67, 99, 149, 120, 68, 46, 149, 112, 69, 67, 119, 120, 70, 5, 60, 240, 71, 35, 89, 120, 71, 247, 147, 240, 72, 231, 139, 248, 73, 215, 117, 240, 74, 199, 109, 248, 75, 183, 87, 240, 76, 167, 79, 248, 77, 151, 57, 240, 78, 135, 49, 248, 79, 119, 27, 240, 80, 112, 78, 120, 81, 96, 56, 112, 82, 80, 48, 120, 83, 64, 26, 112, 84, 48, 18, 120, 85, 31, 252, 112, 86, 15, 244, 120, 86, 255, 222, 112, 87, 239, 214, 120, 88, 223, 192, 112, 89, 207, 184, 120, 90, 191, 162, 112, 91, 184, 212, 248, 92, 168, 190, 240, 93, 152, 182, 248, 94, 136, 160, 240, 95, 120, 152, 248, 96, 104, 130, 240, 97, 88, 122, 248, 98, 72, 100, 240, 99, 56, 92, 248, 100, 40, 70, 240, 101, 24, 62, 248, 102, 17, 99, 112, 103, 1, 91, 120, 103, 241, 69, 112, 104, 225, 61, 120, 105, 209, 39, 112, 106, 193, 31, 120, 107, 177, 9, 112, 108, 161, 1, 120, 109, 144, 235, 112, 110, 128, 227, 120, 111, 112, 205, 112, 112, 105, 255, 248, 113, 89, 233, 240, 114, 73, 225, 248, 115, 57, 203, 240, 116, 41, 195, 248, 117, 25, 173, 240, 118, 9, 165, 248, 118, 249, 143, 240, 119, 233, 135, 248, 120, 217, 113, 240, 121, 201, 105, 248, 122, 185, 83, 240, 123, 178, 134, 120, 124, 162, 112, 112, 125, 146, 104, 120, 126, 130, 82, 112, 127, 114, 74, 120, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 5, 0, 0, 0, 25, 255, 255, 255, 255, 115, 22, 119, 220, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 64, 248, 0, 0, 0, 0, 22, 231, 138, 104, 0, 0, 0, 0, 24, 33, 93, 120, 0, 0, 0, 0, 24, 199, 108, 104, 0, 0, 0, 0, 26, 1, 63, 120, 0, 0, 0, 0, 26, 167, 78, 104, 0, 0, 0, 0, 27, 225, 33, 120, 0, 0, 0, 0, 28, 135, 48, 104, 0, 0, 0, 0, 29, 193, 3, 120, 0, 0, 0, 0, 30, 121, 142, 112, 0, 0, 0, 0, 31, 151, 170, 248, 0, 0, 0, 0, 32, 89, 112, 112, 0, 0, 0, 0, 33, 128, 199, 120, 0, 0, 0, 0, 34, 66, 140, 240, 0, 0, 0, 0, 35, 105, 227, 248, 0, 0, 0, 0, 36, 34, 110, 240, 0, 0, 0, 0, 37, 73, 197, 248, 0, 0, 0, 0, 37, 239, 219, 240, 0, 0, 0, 0, 39, 41, 167, 248, 0, 0, 0, 0, 39, 207, 189, 240, 0, 0, 0, 0, 41, 9, 137, 248, 0, 0, 0, 0, 41, 175, 159, 240, 0, 0, 0, 0, 42, 233, 107, 248, 0, 0, 0, 0, 43, 152, 188, 112, 0, 0, 0, 0, 44, 210, 136, 120, 0, 0, 0, 0, 45, 120, 158, 112, 0, 0, 0, 0, 46, 178, 106, 120, 0, 0, 0, 0, 47, 88, 128, 112, 0, 0, 0, 0, 48, 146, 76, 120, 0, 0, 0, 0, 49, 93, 76, 112, 0, 0, 0, 0, 50, 114, 46, 120, 0, 0, 0, 0, 51, 61, 46, 112, 0, 0, 0, 0, 52, 82, 16, 120, 0, 0, 0, 0, 53, 29, 16, 112, 0, 0, 0, 0, 54, 49, 242, 120, 0, 0, 0, 0, 54, 252, 242, 112, 0, 0, 0, 0, 56, 27, 14, 248, 0, 0, 0, 0, 56, 220, 212, 112, 0, 0, 0, 0, 57, 167, 226, 120, 0, 0, 0, 0, 58, 188, 182, 112, 0, 0, 0, 0, 59, 218, 210, 248, 0, 0, 0, 0, 60, 165, 210, 240, 0, 0, 0, 0, 61, 186, 180, 248, 0, 0, 0, 0, 62, 133, 180, 240, 0, 0, 0, 0, 63, 154, 150, 248, 0, 0, 0, 0, 64, 101, 150, 240, 0, 0, 0, 0, 65, 131, 179, 120, 0, 0, 0, 0, 66, 69, 120, 240, 0, 0, 0, 0, 67, 99, 149, 120, 0, 0, 0, 0, 68, 46, 149, 112, 0, 0, 0, 0, 69, 67, 119, 120, 0, 0, 0, 0, 70, 5, 60, 240, 0, 0, 0, 0, 71, 35, 89, 120, 0, 0, 0, 0, 71, 247, 147, 240, 0, 0, 0, 0, 72, 231, 139, 248, 0, 0, 0, 0, 73, 215, 117, 240, 0, 0, 0, 0, 74, 199, 109, 248, 0, 0, 0, 0, 75, 183, 87, 240, 0, 0, 0, 0, 76, 167, 79, 248, 0, 0, 0, 0, 77, 151, 57, 240, 0, 0, 0, 0, 78, 135, 49, 248, 0, 0, 0, 0, 79, 119, 27, 240, 0, 0, 0, 0, 80, 112, 78, 120, 0, 0, 0, 0, 81, 96, 56, 112, 0, 0, 0, 0, 82, 80, 48, 120, 0, 0, 0, 0, 83, 64, 26, 112, 0, 0, 0, 0, 84, 48, 18, 120, 0, 0, 0, 0, 85, 31, 252, 112, 0, 0, 0, 0, 86, 15, 244, 120, 0, 0, 0, 0, 86, 255, 222, 112, 0, 0, 0, 0, 87, 239, 214, 120, 0, 0, 0, 0, 88, 223, 192, 112, 0, 0, 0, 0, 89, 207, 184, 120, 0, 0, 0, 0, 90, 191, 162, 112, 0, 0, 0, 0, 91, 184, 212, 248, 0, 0, 0, 0, 92, 168, 190, 240, 0, 0, 0, 0, 93, 152, 182, 248, 0, 0, 0, 0, 94, 136, 160, 240, 0, 0, 0, 0, 95, 120, 152, 248, 0, 0, 0, 0, 96, 104, 130, 240, 0, 0, 0, 0, 97, 88, 122, 248, 0, 0, 0, 0, 98, 72, 100, 240, 0, 0, 0, 0, 99, 56, 92, 248, 0, 0, 0, 0, 100, 40, 70, 240, 0, 0, 0, 0, 101, 24, 62, 248, 0, 0, 0, 0, 102, 17, 99, 112, 0, 0, 0, 0, 103, 1, 91, 120, 0, 0, 0, 0, 103, 241, 69, 112, 0, 0, 0, 0, 104, 225, 61, 120, 0, 0, 0, 0, 105, 209, 39, 112, 0, 0, 0, 0, 106, 193, 31, 120, 0, 0, 0, 0, 107, 177, 9, 112, 0, 0, 0, 0, 108, 161, 1, 120, 0, 0, 0, 0, 109, 144, 235, 112, 0, 0, 0, 0, 110, 128, 227, 120, 0, 0, 0, 0, 111, 112, 205, 112, 0, 0, 0, 0, 112, 105, 255, 248, 0, 0, 0, 0, 113, 89, 233, 240, 0, 0, 0, 0, 114, 73, 225, 248, 0, 0, 0, 0, 115, 57, 203, 240, 0, 0, 0, 0, 116, 41, 195, 248, 0, 0, 0, 0, 117, 25, 173, 240, 0, 0, 0, 0, 118, 9, 165, 248, 0, 0, 0, 0, 118, 249, 143, 240, 0, 0, 0, 0, 119, 233, 135, 248, 0, 0, 0, 0, 120, 217, 113, 240, 0, 0, 0, 0, 121, 201, 105, 248, 0, 0, 0, 0, 122, 185, 83, 240, 0, 0, 0, 0, 123, 178, 134, 120, 0, 0, 0, 0, 124, 162, 112, 112, 0, 0, 0, 0, 125, 146, 104, 120, 0, 0, 0, 0, 126, 130, 82, 112, 0, 0, 0, 0, 127, 114, 74, 120, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 0, 0, 149, 36, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 161, 184, 1, 9, 0, 0, 147, 168, 0, 15, 0, 0, 154, 176, 1, 21, 76, 77, 84, 0, 65, 69, 83, 84, 0, 43, 49, 49, 51, 48, 0, 43, 49, 48, 51, 48, 0, 43, 49, 49, 0, 10, 60, 43, 49, 48, 51, 48, 62, 45, 49, 48, 58, 51, 48, 60, 43, 49, 49, 62, 45, 49, 49, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 10}, - "zoneinfo/Australia/Melbourne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 22, 231, 159, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 119, 148, 0, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 116, 62, 0, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Melbourne": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 22, 231, 159, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 119, 148, 0, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 116, 62, 0, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 133, 24, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 22, 231, 159, 128, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 199, 129, 128, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 121, 156, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 119, 148, 0, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 38, 2, 95, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 0, 0, 0, 0, 46, 178, 113, 128, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 146, 83, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/NSW": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/NSW": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 127, 60, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 12, 137, 128, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 199, 129, 128, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 121, 156, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 0, 0, 0, 0, 46, 178, 113, 128, 0, 0, 0, 0, 47, 88, 142, 128, 0, 0, 0, 0, 48, 146, 83, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/North": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 122, 168, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 10}, + "zoneinfo/Australia/North": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 122, 168, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 146, 88, 255, 255, 255, 255, 123, 18, 3, 112, 255, 255, 255, 255, 156, 78, 173, 164, 255, 255, 255, 255, 156, 188, 39, 248, 255, 255, 255, 255, 203, 84, 186, 8, 255, 255, 255, 255, 203, 199, 94, 120, 255, 255, 255, 255, 204, 183, 93, 136, 255, 255, 255, 255, 205, 167, 64, 120, 255, 255, 255, 255, 206, 160, 122, 8, 255, 255, 255, 255, 207, 135, 34, 120, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 122, 168, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 147, 168, 1, 9, 0, 0, 133, 152, 0, 4, 76, 77, 84, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 10}, - "zoneinfo/Australia/Perth": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 194, 188, 156, 188, 61, 16, 203, 84, 207, 32, 203, 199, 115, 144, 204, 183, 114, 160, 205, 167, 85, 144, 9, 15, 251, 160, 9, 182, 24, 160, 26, 1, 98, 160, 26, 167, 127, 160, 41, 37, 92, 160, 41, 175, 202, 32, 69, 113, 191, 32, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 87, 83, 84, 45, 56, 10}, + "zoneinfo/Australia/Perth": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 194, 188, 156, 188, 61, 16, 203, 84, 207, 32, 203, 199, 115, 144, 204, 183, 114, 160, 205, 167, 85, 144, 9, 15, 251, 160, 9, 182, 24, 160, 26, 1, 98, 160, 26, 167, 127, 160, 41, 37, 92, 160, 41, 175, 202, 32, 69, 113, 191, 32, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 116, 166, 22, 228, 255, 255, 255, 255, 156, 78, 194, 188, 255, 255, 255, 255, 156, 188, 61, 16, 255, 255, 255, 255, 203, 84, 207, 32, 255, 255, 255, 255, 203, 199, 115, 144, 255, 255, 255, 255, 204, 183, 114, 160, 255, 255, 255, 255, 205, 167, 85, 144, 0, 0, 0, 0, 9, 15, 251, 160, 0, 0, 0, 0, 9, 182, 24, 160, 0, 0, 0, 0, 26, 1, 98, 160, 0, 0, 0, 0, 26, 167, 127, 160, 0, 0, 0, 0, 41, 37, 92, 160, 0, 0, 0, 0, 41, 175, 202, 32, 0, 0, 0, 0, 69, 113, 191, 32, 0, 0, 0, 0, 70, 5, 103, 32, 0, 0, 0, 0, 71, 35, 124, 160, 0, 0, 0, 0, 71, 238, 131, 160, 0, 0, 0, 0, 73, 3, 94, 160, 0, 0, 0, 0, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 87, 83, 84, 45, 56, 10}, - "zoneinfo/Australia/Queensland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 10}, + "zoneinfo/Australia/Queensland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 114, 237, 159, 8, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 143, 120, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 10}, - "zoneinfo/Australia/South": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 22, 231, 166, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 38, 2, 102, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 203, 100, 136, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 139, 40, 136, 46, 178, 120, 136, 47, 116, 69, 8, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 129, 236, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/South": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 22, 231, 166, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 38, 2, 102, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 203, 100, 136, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 139, 40, 136, 46, 178, 120, 136, 47, 116, 69, 8, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 129, 236, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 139, 20, 255, 255, 255, 255, 123, 18, 3, 112, 255, 255, 255, 255, 156, 78, 173, 164, 255, 255, 255, 255, 156, 188, 39, 248, 255, 255, 255, 255, 203, 84, 186, 8, 255, 255, 255, 255, 203, 199, 94, 120, 255, 255, 255, 255, 204, 183, 93, 136, 255, 255, 255, 255, 205, 167, 64, 120, 255, 255, 255, 255, 206, 160, 122, 8, 255, 255, 255, 255, 207, 135, 34, 120, 0, 0, 0, 0, 3, 112, 64, 136, 0, 0, 0, 0, 4, 13, 35, 8, 0, 0, 0, 0, 5, 80, 34, 136, 0, 0, 0, 0, 5, 246, 63, 136, 0, 0, 0, 0, 7, 48, 4, 136, 0, 0, 0, 0, 7, 214, 33, 136, 0, 0, 0, 0, 9, 15, 230, 136, 0, 0, 0, 0, 9, 182, 3, 136, 0, 0, 0, 0, 10, 239, 200, 136, 0, 0, 0, 0, 11, 159, 32, 8, 0, 0, 0, 0, 12, 216, 229, 8, 0, 0, 0, 0, 13, 127, 2, 8, 0, 0, 0, 0, 14, 184, 199, 8, 0, 0, 0, 0, 15, 94, 228, 8, 0, 0, 0, 0, 16, 152, 169, 8, 0, 0, 0, 0, 17, 62, 198, 8, 0, 0, 0, 0, 18, 120, 139, 8, 0, 0, 0, 0, 19, 30, 168, 8, 0, 0, 0, 0, 20, 88, 109, 8, 0, 0, 0, 0, 20, 254, 138, 8, 0, 0, 0, 0, 22, 56, 79, 8, 0, 0, 0, 0, 22, 231, 166, 136, 0, 0, 0, 0, 24, 33, 107, 136, 0, 0, 0, 0, 24, 199, 136, 136, 0, 0, 0, 0, 26, 1, 77, 136, 0, 0, 0, 0, 26, 167, 106, 136, 0, 0, 0, 0, 27, 225, 47, 136, 0, 0, 0, 0, 28, 135, 76, 136, 0, 0, 0, 0, 29, 193, 17, 136, 0, 0, 0, 0, 30, 121, 163, 136, 0, 0, 0, 0, 31, 151, 185, 8, 0, 0, 0, 0, 32, 89, 133, 136, 0, 0, 0, 0, 33, 128, 213, 136, 0, 0, 0, 0, 34, 66, 162, 8, 0, 0, 0, 0, 35, 105, 242, 8, 0, 0, 0, 0, 36, 34, 132, 8, 0, 0, 0, 0, 37, 73, 212, 8, 0, 0, 0, 0, 38, 2, 102, 8, 0, 0, 0, 0, 39, 41, 182, 8, 0, 0, 0, 0, 39, 207, 211, 8, 0, 0, 0, 0, 41, 9, 152, 8, 0, 0, 0, 0, 41, 203, 100, 136, 0, 0, 0, 0, 42, 233, 122, 8, 0, 0, 0, 0, 43, 152, 209, 136, 0, 0, 0, 0, 44, 210, 150, 136, 0, 0, 0, 0, 45, 139, 40, 136, 0, 0, 0, 0, 46, 178, 120, 136, 0, 0, 0, 0, 47, 116, 69, 8, 0, 0, 0, 0, 48, 146, 90, 136, 0, 0, 0, 0, 49, 93, 97, 136, 0, 0, 0, 0, 50, 114, 60, 136, 0, 0, 0, 0, 51, 61, 67, 136, 0, 0, 0, 0, 52, 82, 30, 136, 0, 0, 0, 0, 53, 29, 37, 136, 0, 0, 0, 0, 54, 50, 0, 136, 0, 0, 0, 0, 54, 253, 7, 136, 0, 0, 0, 0, 56, 27, 29, 8, 0, 0, 0, 0, 56, 220, 233, 136, 0, 0, 0, 0, 57, 250, 255, 8, 0, 0, 0, 0, 58, 188, 203, 136, 0, 0, 0, 0, 59, 218, 225, 8, 0, 0, 0, 0, 60, 165, 232, 8, 0, 0, 0, 0, 61, 186, 195, 8, 0, 0, 0, 0, 62, 133, 202, 8, 0, 0, 0, 0, 63, 154, 165, 8, 0, 0, 0, 0, 64, 101, 172, 8, 0, 0, 0, 0, 65, 131, 193, 136, 0, 0, 0, 0, 66, 69, 142, 8, 0, 0, 0, 0, 67, 99, 163, 136, 0, 0, 0, 0, 68, 46, 170, 136, 0, 0, 0, 0, 69, 67, 133, 136, 0, 0, 0, 0, 70, 5, 82, 8, 0, 0, 0, 0, 71, 35, 103, 136, 0, 0, 0, 0, 71, 247, 169, 8, 0, 0, 0, 0, 72, 231, 154, 8, 0, 0, 0, 0, 73, 215, 139, 8, 0, 0, 0, 0, 74, 199, 124, 8, 0, 0, 0, 0, 75, 183, 109, 8, 0, 0, 0, 0, 76, 167, 94, 8, 0, 0, 0, 0, 77, 151, 79, 8, 0, 0, 0, 0, 78, 135, 64, 8, 0, 0, 0, 0, 79, 119, 49, 8, 0, 0, 0, 0, 80, 112, 92, 136, 0, 0, 0, 0, 81, 96, 77, 136, 0, 0, 0, 0, 82, 80, 62, 136, 0, 0, 0, 0, 83, 64, 47, 136, 0, 0, 0, 0, 84, 48, 32, 136, 0, 0, 0, 0, 85, 32, 17, 136, 0, 0, 0, 0, 86, 16, 2, 136, 0, 0, 0, 0, 86, 255, 243, 136, 0, 0, 0, 0, 87, 239, 228, 136, 0, 0, 0, 0, 88, 223, 213, 136, 0, 0, 0, 0, 89, 207, 198, 136, 0, 0, 0, 0, 90, 191, 183, 136, 0, 0, 0, 0, 91, 184, 227, 8, 0, 0, 0, 0, 92, 168, 212, 8, 0, 0, 0, 0, 93, 152, 197, 8, 0, 0, 0, 0, 94, 136, 182, 8, 0, 0, 0, 0, 95, 120, 167, 8, 0, 0, 0, 0, 96, 104, 152, 8, 0, 0, 0, 0, 97, 88, 137, 8, 0, 0, 0, 0, 98, 72, 122, 8, 0, 0, 0, 0, 99, 56, 107, 8, 0, 0, 0, 0, 100, 40, 92, 8, 0, 0, 0, 0, 101, 24, 77, 8, 0, 0, 0, 0, 102, 17, 120, 136, 0, 0, 0, 0, 103, 1, 105, 136, 0, 0, 0, 0, 103, 241, 90, 136, 0, 0, 0, 0, 104, 225, 75, 136, 0, 0, 0, 0, 105, 209, 60, 136, 0, 0, 0, 0, 106, 193, 45, 136, 0, 0, 0, 0, 107, 177, 30, 136, 0, 0, 0, 0, 108, 161, 15, 136, 0, 0, 0, 0, 109, 145, 0, 136, 0, 0, 0, 0, 110, 128, 241, 136, 0, 0, 0, 0, 111, 112, 226, 136, 0, 0, 0, 0, 112, 106, 14, 8, 0, 0, 0, 0, 113, 89, 255, 8, 0, 0, 0, 0, 114, 73, 240, 8, 0, 0, 0, 0, 115, 57, 225, 8, 0, 0, 0, 0, 116, 41, 210, 8, 0, 0, 0, 0, 117, 25, 195, 8, 0, 0, 0, 0, 118, 9, 180, 8, 0, 0, 0, 0, 118, 249, 165, 8, 0, 0, 0, 0, 119, 233, 150, 8, 0, 0, 0, 0, 120, 217, 135, 8, 0, 0, 0, 0, 121, 201, 120, 8, 0, 0, 0, 0, 122, 185, 105, 8, 0, 0, 0, 0, 123, 178, 148, 136, 0, 0, 0, 0, 124, 162, 133, 136, 0, 0, 0, 0, 125, 146, 118, 136, 0, 0, 0, 0, 126, 130, 103, 136, 0, 0, 0, 0, 127, 114, 88, 136, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 129, 236, 0, 0, 0, 0, 126, 144, 0, 4, 0, 0, 147, 168, 1, 9, 0, 0, 133, 152, 0, 4, 0, 0, 147, 168, 1, 9, 0, 0, 133, 152, 0, 4, 76, 77, 84, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 0, 1, 1, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Sydney": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Sydney": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 12, 137, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 37, 239, 234, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 88, 142, 128, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 127, 60, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 12, 137, 128, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 199, 129, 128, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 121, 156, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 37, 239, 234, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 0, 0, 0, 0, 46, 178, 113, 128, 0, 0, 0, 0, 47, 88, 142, 128, 0, 0, 0, 0, 48, 146, 83, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 141, 196, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Tasmania": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Tasmania": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 155, 213, 120, 128, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 251, 194, 141, 0, 252, 178, 126, 0, 253, 199, 89, 0, 254, 118, 176, 128, 255, 167, 59, 0, 0, 86, 146, 128, 1, 135, 29, 0, 2, 63, 175, 0, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 23, 3, 79, 0, 24, 33, 100, 128, 24, 227, 49, 0, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 103, 39, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 128, 206, 128, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 244, 182, 0, 40, 237, 225, 128, 41, 212, 152, 0, 42, 205, 195, 128, 43, 180, 122, 0, 44, 173, 165, 128, 45, 148, 92, 0, 46, 141, 135, 128, 47, 116, 62, 0, 48, 109, 105, 128, 49, 93, 90, 128, 50, 86, 134, 0, 51, 61, 60, 128, 52, 54, 104, 0, 53, 29, 30, 128, 54, 22, 74, 0, 54, 253, 0, 128, 55, 246, 44, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 191, 42, 128, 60, 165, 225, 0, 61, 159, 12, 128, 62, 133, 195, 0, 63, 126, 238, 128, 64, 101, 165, 0, 65, 94, 208, 128, 66, 69, 135, 0, 67, 62, 178, 128, 68, 46, 163, 128, 69, 30, 148, 128, 70, 5, 75, 0, 71, 7, 177, 0, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 116, 46, 0, 228, 255, 255, 255, 255, 155, 213, 120, 128, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 255, 255, 255, 255, 251, 194, 141, 0, 255, 255, 255, 255, 252, 178, 126, 0, 255, 255, 255, 255, 253, 199, 89, 0, 255, 255, 255, 255, 254, 118, 176, 128, 255, 255, 255, 255, 255, 167, 59, 0, 0, 0, 0, 0, 0, 86, 146, 128, 0, 0, 0, 0, 1, 135, 29, 0, 0, 0, 0, 0, 2, 63, 175, 0, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 23, 3, 79, 0, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 227, 49, 0, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 103, 39, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 128, 206, 128, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 38, 2, 95, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 244, 182, 0, 0, 0, 0, 0, 40, 237, 225, 128, 0, 0, 0, 0, 41, 212, 152, 0, 0, 0, 0, 0, 42, 205, 195, 128, 0, 0, 0, 0, 43, 180, 122, 0, 0, 0, 0, 0, 44, 173, 165, 128, 0, 0, 0, 0, 45, 148, 92, 0, 0, 0, 0, 0, 46, 141, 135, 128, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 109, 105, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 86, 134, 0, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 54, 104, 0, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 22, 74, 0, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 55, 246, 44, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 191, 42, 128, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 159, 12, 128, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 126, 238, 128, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 94, 208, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 62, 178, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 30, 148, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 7, 177, 0, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 138, 28, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 154, 176, 1, 9, 0, 0, 154, 176, 1, 9, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 69, 68, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/Victoria": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 22, 231, 159, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 119, 148, 0, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 116, 62, 0, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Victoria": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 166, 156, 156, 188, 32, 240, 203, 84, 179, 0, 203, 199, 87, 112, 204, 183, 86, 128, 205, 167, 57, 112, 206, 160, 115, 0, 207, 135, 27, 112, 3, 112, 57, 128, 4, 13, 28, 0, 5, 80, 27, 128, 5, 246, 56, 128, 7, 47, 253, 128, 7, 214, 26, 128, 9, 15, 223, 128, 9, 181, 252, 128, 10, 239, 193, 128, 11, 159, 25, 0, 12, 216, 222, 0, 13, 126, 251, 0, 14, 184, 192, 0, 15, 94, 221, 0, 16, 152, 162, 0, 17, 62, 191, 0, 18, 120, 132, 0, 19, 30, 161, 0, 20, 88, 102, 0, 20, 254, 131, 0, 22, 56, 72, 0, 22, 231, 159, 128, 24, 33, 100, 128, 24, 199, 129, 128, 26, 1, 70, 128, 26, 167, 99, 128, 27, 225, 40, 128, 28, 135, 69, 128, 29, 193, 10, 128, 30, 121, 156, 128, 31, 151, 178, 0, 32, 89, 126, 128, 33, 119, 148, 0, 34, 66, 155, 0, 35, 105, 235, 0, 36, 34, 125, 0, 37, 73, 205, 0, 38, 2, 95, 0, 39, 41, 175, 0, 39, 207, 204, 0, 41, 9, 145, 0, 41, 175, 174, 0, 42, 233, 115, 0, 43, 152, 202, 128, 44, 210, 143, 128, 45, 120, 172, 128, 46, 178, 113, 128, 47, 116, 62, 0, 48, 146, 83, 128, 49, 93, 90, 128, 50, 114, 53, 128, 51, 61, 60, 128, 52, 82, 23, 128, 53, 29, 30, 128, 54, 49, 249, 128, 54, 253, 0, 128, 56, 27, 22, 0, 56, 220, 226, 128, 57, 167, 233, 128, 58, 188, 196, 128, 59, 218, 218, 0, 60, 165, 225, 0, 61, 186, 188, 0, 62, 133, 195, 0, 63, 154, 158, 0, 64, 101, 165, 0, 65, 131, 186, 128, 66, 69, 135, 0, 67, 99, 156, 128, 68, 46, 163, 128, 69, 67, 126, 128, 70, 5, 75, 0, 71, 35, 96, 128, 71, 247, 162, 0, 72, 231, 147, 0, 73, 215, 132, 0, 74, 199, 117, 0, 75, 183, 102, 0, 76, 167, 87, 0, 77, 151, 72, 0, 78, 135, 57, 0, 79, 119, 42, 0, 80, 112, 85, 128, 81, 96, 70, 128, 82, 80, 55, 128, 83, 64, 40, 128, 84, 48, 25, 128, 85, 32, 10, 128, 86, 15, 251, 128, 86, 255, 236, 128, 87, 239, 221, 128, 88, 223, 206, 128, 89, 207, 191, 128, 90, 191, 176, 128, 91, 184, 220, 0, 92, 168, 205, 0, 93, 152, 190, 0, 94, 136, 175, 0, 95, 120, 160, 0, 96, 104, 145, 0, 97, 88, 130, 0, 98, 72, 115, 0, 99, 56, 100, 0, 100, 40, 85, 0, 101, 24, 70, 0, 102, 17, 113, 128, 103, 1, 98, 128, 103, 241, 83, 128, 104, 225, 68, 128, 105, 209, 53, 128, 106, 193, 38, 128, 107, 177, 23, 128, 108, 161, 8, 128, 109, 144, 249, 128, 110, 128, 234, 128, 111, 112, 219, 128, 112, 106, 7, 0, 113, 89, 248, 0, 114, 73, 233, 0, 115, 57, 218, 0, 116, 41, 203, 0, 117, 25, 188, 0, 118, 9, 173, 0, 118, 249, 158, 0, 119, 233, 143, 0, 120, 217, 128, 0, 121, 201, 113, 0, 122, 185, 98, 0, 123, 178, 141, 128, 124, 162, 126, 128, 125, 146, 111, 128, 126, 130, 96, 128, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 115, 22, 133, 24, 255, 255, 255, 255, 156, 78, 166, 156, 255, 255, 255, 255, 156, 188, 32, 240, 255, 255, 255, 255, 203, 84, 179, 0, 255, 255, 255, 255, 203, 199, 87, 112, 255, 255, 255, 255, 204, 183, 86, 128, 255, 255, 255, 255, 205, 167, 57, 112, 255, 255, 255, 255, 206, 160, 115, 0, 255, 255, 255, 255, 207, 135, 27, 112, 0, 0, 0, 0, 3, 112, 57, 128, 0, 0, 0, 0, 4, 13, 28, 0, 0, 0, 0, 0, 5, 80, 27, 128, 0, 0, 0, 0, 5, 246, 56, 128, 0, 0, 0, 0, 7, 47, 253, 128, 0, 0, 0, 0, 7, 214, 26, 128, 0, 0, 0, 0, 9, 15, 223, 128, 0, 0, 0, 0, 9, 181, 252, 128, 0, 0, 0, 0, 10, 239, 193, 128, 0, 0, 0, 0, 11, 159, 25, 0, 0, 0, 0, 0, 12, 216, 222, 0, 0, 0, 0, 0, 13, 126, 251, 0, 0, 0, 0, 0, 14, 184, 192, 0, 0, 0, 0, 0, 15, 94, 221, 0, 0, 0, 0, 0, 16, 152, 162, 0, 0, 0, 0, 0, 17, 62, 191, 0, 0, 0, 0, 0, 18, 120, 132, 0, 0, 0, 0, 0, 19, 30, 161, 0, 0, 0, 0, 0, 20, 88, 102, 0, 0, 0, 0, 0, 20, 254, 131, 0, 0, 0, 0, 0, 22, 56, 72, 0, 0, 0, 0, 0, 22, 231, 159, 128, 0, 0, 0, 0, 24, 33, 100, 128, 0, 0, 0, 0, 24, 199, 129, 128, 0, 0, 0, 0, 26, 1, 70, 128, 0, 0, 0, 0, 26, 167, 99, 128, 0, 0, 0, 0, 27, 225, 40, 128, 0, 0, 0, 0, 28, 135, 69, 128, 0, 0, 0, 0, 29, 193, 10, 128, 0, 0, 0, 0, 30, 121, 156, 128, 0, 0, 0, 0, 31, 151, 178, 0, 0, 0, 0, 0, 32, 89, 126, 128, 0, 0, 0, 0, 33, 119, 148, 0, 0, 0, 0, 0, 34, 66, 155, 0, 0, 0, 0, 0, 35, 105, 235, 0, 0, 0, 0, 0, 36, 34, 125, 0, 0, 0, 0, 0, 37, 73, 205, 0, 0, 0, 0, 0, 38, 2, 95, 0, 0, 0, 0, 0, 39, 41, 175, 0, 0, 0, 0, 0, 39, 207, 204, 0, 0, 0, 0, 0, 41, 9, 145, 0, 0, 0, 0, 0, 41, 175, 174, 0, 0, 0, 0, 0, 42, 233, 115, 0, 0, 0, 0, 0, 43, 152, 202, 128, 0, 0, 0, 0, 44, 210, 143, 128, 0, 0, 0, 0, 45, 120, 172, 128, 0, 0, 0, 0, 46, 178, 113, 128, 0, 0, 0, 0, 47, 116, 62, 0, 0, 0, 0, 0, 48, 146, 83, 128, 0, 0, 0, 0, 49, 93, 90, 128, 0, 0, 0, 0, 50, 114, 53, 128, 0, 0, 0, 0, 51, 61, 60, 128, 0, 0, 0, 0, 52, 82, 23, 128, 0, 0, 0, 0, 53, 29, 30, 128, 0, 0, 0, 0, 54, 49, 249, 128, 0, 0, 0, 0, 54, 253, 0, 128, 0, 0, 0, 0, 56, 27, 22, 0, 0, 0, 0, 0, 56, 220, 226, 128, 0, 0, 0, 0, 57, 167, 233, 128, 0, 0, 0, 0, 58, 188, 196, 128, 0, 0, 0, 0, 59, 218, 218, 0, 0, 0, 0, 0, 60, 165, 225, 0, 0, 0, 0, 0, 61, 186, 188, 0, 0, 0, 0, 0, 62, 133, 195, 0, 0, 0, 0, 0, 63, 154, 158, 0, 0, 0, 0, 0, 64, 101, 165, 0, 0, 0, 0, 0, 65, 131, 186, 128, 0, 0, 0, 0, 66, 69, 135, 0, 0, 0, 0, 0, 67, 99, 156, 128, 0, 0, 0, 0, 68, 46, 163, 128, 0, 0, 0, 0, 69, 67, 126, 128, 0, 0, 0, 0, 70, 5, 75, 0, 0, 0, 0, 0, 71, 35, 96, 128, 0, 0, 0, 0, 71, 247, 162, 0, 0, 0, 0, 0, 72, 231, 147, 0, 0, 0, 0, 0, 73, 215, 132, 0, 0, 0, 0, 0, 74, 199, 117, 0, 0, 0, 0, 0, 75, 183, 102, 0, 0, 0, 0, 0, 76, 167, 87, 0, 0, 0, 0, 0, 77, 151, 72, 0, 0, 0, 0, 0, 78, 135, 57, 0, 0, 0, 0, 0, 79, 119, 42, 0, 0, 0, 0, 0, 80, 112, 85, 128, 0, 0, 0, 0, 81, 96, 70, 128, 0, 0, 0, 0, 82, 80, 55, 128, 0, 0, 0, 0, 83, 64, 40, 128, 0, 0, 0, 0, 84, 48, 25, 128, 0, 0, 0, 0, 85, 32, 10, 128, 0, 0, 0, 0, 86, 15, 251, 128, 0, 0, 0, 0, 86, 255, 236, 128, 0, 0, 0, 0, 87, 239, 221, 128, 0, 0, 0, 0, 88, 223, 206, 128, 0, 0, 0, 0, 89, 207, 191, 128, 0, 0, 0, 0, 90, 191, 176, 128, 0, 0, 0, 0, 91, 184, 220, 0, 0, 0, 0, 0, 92, 168, 205, 0, 0, 0, 0, 0, 93, 152, 190, 0, 0, 0, 0, 0, 94, 136, 175, 0, 0, 0, 0, 0, 95, 120, 160, 0, 0, 0, 0, 0, 96, 104, 145, 0, 0, 0, 0, 0, 97, 88, 130, 0, 0, 0, 0, 0, 98, 72, 115, 0, 0, 0, 0, 0, 99, 56, 100, 0, 0, 0, 0, 0, 100, 40, 85, 0, 0, 0, 0, 0, 101, 24, 70, 0, 0, 0, 0, 0, 102, 17, 113, 128, 0, 0, 0, 0, 103, 1, 98, 128, 0, 0, 0, 0, 103, 241, 83, 128, 0, 0, 0, 0, 104, 225, 68, 128, 0, 0, 0, 0, 105, 209, 53, 128, 0, 0, 0, 0, 106, 193, 38, 128, 0, 0, 0, 0, 107, 177, 23, 128, 0, 0, 0, 0, 108, 161, 8, 128, 0, 0, 0, 0, 109, 144, 249, 128, 0, 0, 0, 0, 110, 128, 234, 128, 0, 0, 0, 0, 111, 112, 219, 128, 0, 0, 0, 0, 112, 106, 7, 0, 0, 0, 0, 0, 113, 89, 248, 0, 0, 0, 0, 0, 114, 73, 233, 0, 0, 0, 0, 0, 115, 57, 218, 0, 0, 0, 0, 0, 116, 41, 203, 0, 0, 0, 0, 0, 117, 25, 188, 0, 0, 0, 0, 0, 118, 9, 173, 0, 0, 0, 0, 0, 118, 249, 158, 0, 0, 0, 0, 0, 119, 233, 143, 0, 0, 0, 0, 0, 120, 217, 128, 0, 0, 0, 0, 0, 121, 201, 113, 0, 0, 0, 0, 0, 122, 185, 98, 0, 0, 0, 0, 0, 123, 178, 141, 128, 0, 0, 0, 0, 124, 162, 126, 128, 0, 0, 0, 0, 125, 146, 111, 128, 0, 0, 0, 0, 126, 130, 96, 128, 0, 0, 0, 0, 127, 114, 81, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 135, 232, 0, 0, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 0, 0, 154, 176, 1, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 65, 69, 68, 84, 0, 65, 69, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 69, 83, 84, 45, 49, 48, 65, 69, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Australia/West": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 194, 188, 156, 188, 61, 16, 203, 84, 207, 32, 203, 199, 115, 144, 204, 183, 114, 160, 205, 167, 85, 144, 9, 15, 251, 160, 9, 182, 24, 160, 26, 1, 98, 160, 26, 167, 127, 160, 41, 37, 92, 160, 41, 175, 202, 32, 69, 113, 191, 32, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 87, 83, 84, 45, 56, 10}, + "zoneinfo/Australia/West": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 194, 188, 156, 188, 61, 16, 203, 84, 207, 32, 203, 199, 115, 144, 204, 183, 114, 160, 205, 167, 85, 144, 9, 15, 251, 160, 9, 182, 24, 160, 26, 1, 98, 160, 26, 167, 127, 160, 41, 37, 92, 160, 41, 175, 202, 32, 69, 113, 191, 32, 70, 5, 103, 32, 71, 35, 124, 160, 71, 238, 131, 160, 73, 3, 94, 160, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 5, 0, 0, 0, 14, 255, 255, 255, 255, 116, 166, 22, 228, 255, 255, 255, 255, 156, 78, 194, 188, 255, 255, 255, 255, 156, 188, 61, 16, 255, 255, 255, 255, 203, 84, 207, 32, 255, 255, 255, 255, 203, 199, 115, 144, 255, 255, 255, 255, 204, 183, 114, 160, 255, 255, 255, 255, 205, 167, 85, 144, 0, 0, 0, 0, 9, 15, 251, 160, 0, 0, 0, 0, 9, 182, 24, 160, 0, 0, 0, 0, 26, 1, 98, 160, 0, 0, 0, 0, 26, 167, 127, 160, 0, 0, 0, 0, 41, 37, 92, 160, 0, 0, 0, 0, 41, 175, 202, 32, 0, 0, 0, 0, 69, 113, 191, 32, 0, 0, 0, 0, 70, 5, 103, 32, 0, 0, 0, 0, 71, 35, 124, 160, 0, 0, 0, 0, 71, 238, 131, 160, 0, 0, 0, 0, 73, 3, 94, 160, 0, 0, 0, 0, 73, 206, 101, 160, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 108, 156, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 9, 76, 77, 84, 0, 65, 87, 68, 84, 0, 65, 87, 83, 84, 0, 0, 0, 0, 1, 1, 10, 65, 87, 83, 84, 45, 56, 10}, - "zoneinfo/Australia/Yancowinna": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 23, 12, 144, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 37, 239, 241, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 175, 181, 8, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 120, 179, 136, 46, 178, 120, 136, 47, 88, 149, 136, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 108, 175, 216, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 132, 156, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Australia/Yancowinna": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 5, 0, 0, 0, 14, 128, 0, 0, 0, 156, 78, 173, 164, 156, 188, 39, 248, 203, 84, 186, 8, 203, 199, 94, 120, 204, 183, 93, 136, 205, 167, 64, 120, 206, 160, 122, 8, 207, 135, 34, 120, 3, 112, 64, 136, 4, 13, 35, 8, 5, 80, 34, 136, 5, 246, 63, 136, 7, 48, 4, 136, 7, 214, 33, 136, 9, 15, 230, 136, 9, 182, 3, 136, 10, 239, 200, 136, 11, 159, 32, 8, 12, 216, 229, 8, 13, 127, 2, 8, 14, 184, 199, 8, 15, 94, 228, 8, 16, 152, 169, 8, 17, 62, 198, 8, 18, 120, 139, 8, 19, 30, 168, 8, 20, 88, 109, 8, 20, 254, 138, 8, 22, 56, 79, 8, 23, 12, 144, 136, 24, 33, 107, 136, 24, 199, 136, 136, 26, 1, 77, 136, 26, 167, 106, 136, 27, 225, 47, 136, 28, 135, 76, 136, 29, 193, 17, 136, 30, 121, 163, 136, 31, 151, 185, 8, 32, 89, 133, 136, 33, 128, 213, 136, 34, 66, 162, 8, 35, 105, 242, 8, 36, 34, 132, 8, 37, 73, 212, 8, 37, 239, 241, 8, 39, 41, 182, 8, 39, 207, 211, 8, 41, 9, 152, 8, 41, 175, 181, 8, 42, 233, 122, 8, 43, 152, 209, 136, 44, 210, 150, 136, 45, 120, 179, 136, 46, 178, 120, 136, 47, 88, 149, 136, 48, 146, 90, 136, 49, 93, 97, 136, 50, 114, 60, 136, 51, 61, 67, 136, 52, 82, 30, 136, 53, 29, 37, 136, 54, 50, 0, 136, 54, 253, 7, 136, 56, 27, 29, 8, 56, 220, 233, 136, 57, 250, 255, 8, 58, 188, 203, 136, 59, 218, 225, 8, 60, 165, 232, 8, 61, 186, 195, 8, 62, 133, 202, 8, 63, 154, 165, 8, 64, 101, 172, 8, 65, 131, 193, 136, 66, 69, 142, 8, 67, 99, 163, 136, 68, 46, 170, 136, 69, 67, 133, 136, 70, 5, 82, 8, 71, 35, 103, 136, 71, 247, 169, 8, 72, 231, 154, 8, 73, 215, 139, 8, 74, 199, 124, 8, 75, 183, 109, 8, 76, 167, 94, 8, 77, 151, 79, 8, 78, 135, 64, 8, 79, 119, 49, 8, 80, 112, 92, 136, 81, 96, 77, 136, 82, 80, 62, 136, 83, 64, 47, 136, 84, 48, 32, 136, 85, 32, 17, 136, 86, 16, 2, 136, 86, 255, 243, 136, 87, 239, 228, 136, 88, 223, 213, 136, 89, 207, 198, 136, 90, 191, 183, 136, 91, 184, 227, 8, 92, 168, 212, 8, 93, 152, 197, 8, 94, 136, 182, 8, 95, 120, 167, 8, 96, 104, 152, 8, 97, 88, 137, 8, 98, 72, 122, 8, 99, 56, 107, 8, 100, 40, 92, 8, 101, 24, 77, 8, 102, 17, 120, 136, 103, 1, 105, 136, 103, 241, 90, 136, 104, 225, 75, 136, 105, 209, 60, 136, 106, 193, 45, 136, 107, 177, 30, 136, 108, 161, 15, 136, 109, 145, 0, 136, 110, 128, 241, 136, 111, 112, 226, 136, 112, 106, 14, 8, 113, 89, 255, 8, 114, 73, 240, 8, 115, 57, 225, 8, 116, 41, 210, 8, 117, 25, 195, 8, 118, 9, 180, 8, 118, 249, 165, 8, 119, 233, 150, 8, 120, 217, 135, 8, 121, 201, 120, 8, 122, 185, 105, 8, 123, 178, 148, 136, 124, 162, 133, 136, 125, 146, 118, 136, 126, 130, 103, 136, 127, 114, 88, 136, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 132, 156, 0, 0, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 4, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 67, 68, 84, 0, 65, 67, 83, 84, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 7, 0, 0, 0, 19, 255, 255, 255, 255, 115, 22, 136, 100, 255, 255, 255, 255, 118, 4, 165, 224, 255, 255, 255, 255, 123, 18, 3, 112, 255, 255, 255, 255, 156, 78, 173, 164, 255, 255, 255, 255, 156, 188, 39, 248, 255, 255, 255, 255, 203, 84, 186, 8, 255, 255, 255, 255, 203, 199, 94, 120, 255, 255, 255, 255, 204, 183, 93, 136, 255, 255, 255, 255, 205, 167, 64, 120, 255, 255, 255, 255, 206, 160, 122, 8, 255, 255, 255, 255, 207, 135, 34, 120, 0, 0, 0, 0, 3, 112, 64, 136, 0, 0, 0, 0, 4, 13, 35, 8, 0, 0, 0, 0, 5, 80, 34, 136, 0, 0, 0, 0, 5, 246, 63, 136, 0, 0, 0, 0, 7, 48, 4, 136, 0, 0, 0, 0, 7, 214, 33, 136, 0, 0, 0, 0, 9, 15, 230, 136, 0, 0, 0, 0, 9, 182, 3, 136, 0, 0, 0, 0, 10, 239, 200, 136, 0, 0, 0, 0, 11, 159, 32, 8, 0, 0, 0, 0, 12, 216, 229, 8, 0, 0, 0, 0, 13, 127, 2, 8, 0, 0, 0, 0, 14, 184, 199, 8, 0, 0, 0, 0, 15, 94, 228, 8, 0, 0, 0, 0, 16, 152, 169, 8, 0, 0, 0, 0, 17, 62, 198, 8, 0, 0, 0, 0, 18, 120, 139, 8, 0, 0, 0, 0, 19, 30, 168, 8, 0, 0, 0, 0, 20, 88, 109, 8, 0, 0, 0, 0, 20, 254, 138, 8, 0, 0, 0, 0, 22, 56, 79, 8, 0, 0, 0, 0, 23, 12, 144, 136, 0, 0, 0, 0, 24, 33, 107, 136, 0, 0, 0, 0, 24, 199, 136, 136, 0, 0, 0, 0, 26, 1, 77, 136, 0, 0, 0, 0, 26, 167, 106, 136, 0, 0, 0, 0, 27, 225, 47, 136, 0, 0, 0, 0, 28, 135, 76, 136, 0, 0, 0, 0, 29, 193, 17, 136, 0, 0, 0, 0, 30, 121, 163, 136, 0, 0, 0, 0, 31, 151, 185, 8, 0, 0, 0, 0, 32, 89, 133, 136, 0, 0, 0, 0, 33, 128, 213, 136, 0, 0, 0, 0, 34, 66, 162, 8, 0, 0, 0, 0, 35, 105, 242, 8, 0, 0, 0, 0, 36, 34, 132, 8, 0, 0, 0, 0, 37, 73, 212, 8, 0, 0, 0, 0, 37, 239, 241, 8, 0, 0, 0, 0, 39, 41, 182, 8, 0, 0, 0, 0, 39, 207, 211, 8, 0, 0, 0, 0, 41, 9, 152, 8, 0, 0, 0, 0, 41, 175, 181, 8, 0, 0, 0, 0, 42, 233, 122, 8, 0, 0, 0, 0, 43, 152, 209, 136, 0, 0, 0, 0, 44, 210, 150, 136, 0, 0, 0, 0, 45, 120, 179, 136, 0, 0, 0, 0, 46, 178, 120, 136, 0, 0, 0, 0, 47, 88, 149, 136, 0, 0, 0, 0, 48, 146, 90, 136, 0, 0, 0, 0, 49, 93, 97, 136, 0, 0, 0, 0, 50, 114, 60, 136, 0, 0, 0, 0, 51, 61, 67, 136, 0, 0, 0, 0, 52, 82, 30, 136, 0, 0, 0, 0, 53, 29, 37, 136, 0, 0, 0, 0, 54, 50, 0, 136, 0, 0, 0, 0, 54, 253, 7, 136, 0, 0, 0, 0, 56, 27, 29, 8, 0, 0, 0, 0, 56, 220, 233, 136, 0, 0, 0, 0, 57, 250, 255, 8, 0, 0, 0, 0, 58, 188, 203, 136, 0, 0, 0, 0, 59, 218, 225, 8, 0, 0, 0, 0, 60, 165, 232, 8, 0, 0, 0, 0, 61, 186, 195, 8, 0, 0, 0, 0, 62, 133, 202, 8, 0, 0, 0, 0, 63, 154, 165, 8, 0, 0, 0, 0, 64, 101, 172, 8, 0, 0, 0, 0, 65, 131, 193, 136, 0, 0, 0, 0, 66, 69, 142, 8, 0, 0, 0, 0, 67, 99, 163, 136, 0, 0, 0, 0, 68, 46, 170, 136, 0, 0, 0, 0, 69, 67, 133, 136, 0, 0, 0, 0, 70, 5, 82, 8, 0, 0, 0, 0, 71, 35, 103, 136, 0, 0, 0, 0, 71, 247, 169, 8, 0, 0, 0, 0, 72, 231, 154, 8, 0, 0, 0, 0, 73, 215, 139, 8, 0, 0, 0, 0, 74, 199, 124, 8, 0, 0, 0, 0, 75, 183, 109, 8, 0, 0, 0, 0, 76, 167, 94, 8, 0, 0, 0, 0, 77, 151, 79, 8, 0, 0, 0, 0, 78, 135, 64, 8, 0, 0, 0, 0, 79, 119, 49, 8, 0, 0, 0, 0, 80, 112, 92, 136, 0, 0, 0, 0, 81, 96, 77, 136, 0, 0, 0, 0, 82, 80, 62, 136, 0, 0, 0, 0, 83, 64, 47, 136, 0, 0, 0, 0, 84, 48, 32, 136, 0, 0, 0, 0, 85, 32, 17, 136, 0, 0, 0, 0, 86, 16, 2, 136, 0, 0, 0, 0, 86, 255, 243, 136, 0, 0, 0, 0, 87, 239, 228, 136, 0, 0, 0, 0, 88, 223, 213, 136, 0, 0, 0, 0, 89, 207, 198, 136, 0, 0, 0, 0, 90, 191, 183, 136, 0, 0, 0, 0, 91, 184, 227, 8, 0, 0, 0, 0, 92, 168, 212, 8, 0, 0, 0, 0, 93, 152, 197, 8, 0, 0, 0, 0, 94, 136, 182, 8, 0, 0, 0, 0, 95, 120, 167, 8, 0, 0, 0, 0, 96, 104, 152, 8, 0, 0, 0, 0, 97, 88, 137, 8, 0, 0, 0, 0, 98, 72, 122, 8, 0, 0, 0, 0, 99, 56, 107, 8, 0, 0, 0, 0, 100, 40, 92, 8, 0, 0, 0, 0, 101, 24, 77, 8, 0, 0, 0, 0, 102, 17, 120, 136, 0, 0, 0, 0, 103, 1, 105, 136, 0, 0, 0, 0, 103, 241, 90, 136, 0, 0, 0, 0, 104, 225, 75, 136, 0, 0, 0, 0, 105, 209, 60, 136, 0, 0, 0, 0, 106, 193, 45, 136, 0, 0, 0, 0, 107, 177, 30, 136, 0, 0, 0, 0, 108, 161, 15, 136, 0, 0, 0, 0, 109, 145, 0, 136, 0, 0, 0, 0, 110, 128, 241, 136, 0, 0, 0, 0, 111, 112, 226, 136, 0, 0, 0, 0, 112, 106, 14, 8, 0, 0, 0, 0, 113, 89, 255, 8, 0, 0, 0, 0, 114, 73, 240, 8, 0, 0, 0, 0, 115, 57, 225, 8, 0, 0, 0, 0, 116, 41, 210, 8, 0, 0, 0, 0, 117, 25, 195, 8, 0, 0, 0, 0, 118, 9, 180, 8, 0, 0, 0, 0, 118, 249, 165, 8, 0, 0, 0, 0, 119, 233, 150, 8, 0, 0, 0, 0, 120, 217, 135, 8, 0, 0, 0, 0, 121, 201, 120, 8, 0, 0, 0, 0, 122, 185, 105, 8, 0, 0, 0, 0, 123, 178, 148, 136, 0, 0, 0, 0, 124, 162, 133, 136, 0, 0, 0, 0, 125, 146, 118, 136, 0, 0, 0, 0, 126, 130, 103, 136, 0, 0, 0, 0, 127, 114, 88, 136, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 132, 156, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 9, 0, 0, 147, 168, 1, 14, 0, 0, 133, 152, 0, 9, 0, 0, 147, 168, 1, 14, 0, 0, 133, 152, 0, 9, 76, 77, 84, 0, 65, 69, 83, 84, 0, 65, 67, 83, 84, 0, 65, 67, 68, 84, 0, 0, 0, 0, 0, 0, 1, 1, 10, 65, 67, 83, 84, 45, 57, 58, 51, 48, 65, 67, 68, 84, 44, 77, 49, 48, 46, 49, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Brazil/Acre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/Brazil/Acre": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 150, 170, 134, 144, 184, 15, 102, 0, 184, 253, 92, 192, 185, 241, 80, 80, 186, 222, 144, 64, 218, 56, 202, 80, 218, 236, 22, 80, 220, 25, 253, 208, 220, 185, 117, 64, 221, 251, 49, 80, 222, 155, 250, 64, 223, 221, 182, 80, 224, 84, 79, 64, 244, 152, 27, 208, 245, 5, 122, 64, 246, 192, 128, 80, 247, 14, 58, 192, 248, 81, 72, 80, 248, 199, 225, 64, 250, 10, 238, 208, 250, 169, 20, 192, 251, 236, 34, 80, 252, 139, 153, 192, 29, 201, 170, 80, 30, 120, 243, 192, 31, 160, 81, 208, 32, 51, 235, 192, 33, 129, 133, 80, 34, 11, 228, 192, 72, 96, 127, 80, 82, 127, 4, 192, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 134, 144, 255, 255, 255, 255, 184, 15, 102, 0, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 241, 80, 80, 255, 255, 255, 255, 186, 222, 144, 64, 255, 255, 255, 255, 218, 56, 202, 80, 255, 255, 255, 255, 218, 236, 22, 80, 255, 255, 255, 255, 220, 25, 253, 208, 255, 255, 255, 255, 220, 185, 117, 64, 255, 255, 255, 255, 221, 251, 49, 80, 255, 255, 255, 255, 222, 155, 250, 64, 255, 255, 255, 255, 223, 221, 182, 80, 255, 255, 255, 255, 224, 84, 79, 64, 255, 255, 255, 255, 244, 152, 27, 208, 255, 255, 255, 255, 245, 5, 122, 64, 255, 255, 255, 255, 246, 192, 128, 80, 255, 255, 255, 255, 247, 14, 58, 192, 255, 255, 255, 255, 248, 81, 72, 80, 255, 255, 255, 255, 248, 199, 225, 64, 255, 255, 255, 255, 250, 10, 238, 208, 255, 255, 255, 255, 250, 169, 20, 192, 255, 255, 255, 255, 251, 236, 34, 80, 255, 255, 255, 255, 252, 139, 153, 192, 0, 0, 0, 0, 29, 201, 170, 80, 0, 0, 0, 0, 30, 120, 243, 192, 0, 0, 0, 0, 31, 160, 81, 208, 0, 0, 0, 0, 32, 51, 235, 192, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 11, 228, 192, 0, 0, 0, 0, 72, 96, 127, 80, 0, 0, 0, 0, 82, 127, 4, 192, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 2, 255, 255, 192, 112, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 4, 255, 255, 185, 176, 0, 8, 76, 77, 84, 0, 45, 48, 52, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/Brazil/DeNoronha": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 101, 100, 184, 15, 59, 208, 184, 253, 50, 144, 185, 241, 38, 32, 186, 222, 102, 16, 218, 56, 160, 32, 218, 235, 236, 32, 220, 25, 211, 160, 220, 185, 75, 16, 221, 251, 7, 32, 222, 155, 208, 16, 223, 221, 140, 32, 224, 84, 37, 16, 244, 151, 241, 160, 245, 5, 80, 16, 246, 192, 86, 32, 247, 14, 16, 144, 248, 81, 30, 32, 248, 199, 183, 16, 250, 10, 196, 160, 250, 168, 234, 144, 251, 235, 248, 32, 252, 139, 111, 144, 29, 201, 128, 32, 30, 120, 201, 144, 31, 160, 39, 160, 32, 51, 193, 144, 33, 129, 91, 32, 34, 11, 186, 144, 35, 88, 2, 160, 35, 226, 98, 16, 37, 55, 228, 160, 37, 212, 185, 16, 55, 246, 184, 160, 56, 184, 119, 16, 57, 223, 213, 32, 57, 233, 1, 144, 59, 200, 241, 160, 60, 111, 0, 144, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + "zoneinfo/Brazil/DeNoronha": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 101, 100, 184, 15, 59, 208, 184, 253, 50, 144, 185, 241, 38, 32, 186, 222, 102, 16, 218, 56, 160, 32, 218, 235, 236, 32, 220, 25, 211, 160, 220, 185, 75, 16, 221, 251, 7, 32, 222, 155, 208, 16, 223, 221, 140, 32, 224, 84, 37, 16, 244, 151, 241, 160, 245, 5, 80, 16, 246, 192, 86, 32, 247, 14, 16, 144, 248, 81, 30, 32, 248, 199, 183, 16, 250, 10, 196, 160, 250, 168, 234, 144, 251, 235, 248, 32, 252, 139, 111, 144, 29, 201, 128, 32, 30, 120, 201, 144, 31, 160, 39, 160, 32, 51, 193, 144, 33, 129, 91, 32, 34, 11, 186, 144, 35, 88, 2, 160, 35, 226, 98, 16, 37, 55, 228, 160, 37, 212, 185, 16, 55, 246, 184, 160, 56, 184, 119, 16, 57, 223, 213, 32, 57, 233, 1, 144, 59, 200, 241, 160, 60, 111, 0, 144, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 101, 100, 255, 255, 255, 255, 184, 15, 59, 208, 255, 255, 255, 255, 184, 253, 50, 144, 255, 255, 255, 255, 185, 241, 38, 32, 255, 255, 255, 255, 186, 222, 102, 16, 255, 255, 255, 255, 218, 56, 160, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 220, 25, 211, 160, 255, 255, 255, 255, 220, 185, 75, 16, 255, 255, 255, 255, 221, 251, 7, 32, 255, 255, 255, 255, 222, 155, 208, 16, 255, 255, 255, 255, 223, 221, 140, 32, 255, 255, 255, 255, 224, 84, 37, 16, 255, 255, 255, 255, 244, 151, 241, 160, 255, 255, 255, 255, 245, 5, 80, 16, 255, 255, 255, 255, 246, 192, 86, 32, 255, 255, 255, 255, 247, 14, 16, 144, 255, 255, 255, 255, 248, 81, 30, 32, 255, 255, 255, 255, 248, 199, 183, 16, 255, 255, 255, 255, 250, 10, 196, 160, 255, 255, 255, 255, 250, 168, 234, 144, 255, 255, 255, 255, 251, 235, 248, 32, 255, 255, 255, 255, 252, 139, 111, 144, 0, 0, 0, 0, 29, 201, 128, 32, 0, 0, 0, 0, 30, 120, 201, 144, 0, 0, 0, 0, 31, 160, 39, 160, 0, 0, 0, 0, 32, 51, 193, 144, 0, 0, 0, 0, 33, 129, 91, 32, 0, 0, 0, 0, 34, 11, 186, 144, 0, 0, 0, 0, 35, 88, 2, 160, 0, 0, 0, 0, 35, 226, 98, 16, 0, 0, 0, 0, 37, 55, 228, 160, 0, 0, 0, 0, 37, 212, 185, 16, 0, 0, 0, 0, 55, 246, 184, 160, 0, 0, 0, 0, 56, 184, 119, 16, 0, 0, 0, 0, 57, 223, 213, 32, 0, 0, 0, 0, 57, 233, 1, 144, 0, 0, 0, 0, 59, 200, 241, 160, 0, 0, 0, 0, 60, 111, 0, 144, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 225, 156, 0, 0, 255, 255, 241, 240, 1, 4, 255, 255, 227, 224, 0, 8, 76, 77, 84, 0, 45, 48, 49, 0, 45, 48, 50, 0, 10, 60, 45, 48, 50, 62, 50, 10}, - "zoneinfo/Brazil/East": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 114, 180, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 90, 9, 48, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 63, 145, 254, 48, 64, 46, 210, 160, 65, 134, 248, 48, 66, 23, 239, 32, 67, 81, 194, 48, 67, 247, 209, 32, 69, 77, 83, 176, 69, 224, 237, 160, 71, 17, 134, 48, 71, 183, 149, 32, 72, 250, 162, 176, 73, 151, 119, 32, 74, 218, 132, 176, 75, 128, 147, 160, 76, 186, 102, 176, 77, 96, 117, 160, 78, 154, 72, 176, 79, 73, 146, 32, 80, 131, 101, 48, 81, 32, 57, 160, 82, 99, 71, 48, 83, 0, 27, 160, 84, 67, 41, 48, 84, 233, 56, 32, 86, 35, 11, 48, 86, 201, 26, 32, 88, 2, 237, 48, 88, 168, 252, 32, 89, 226, 207, 48, 90, 136, 222, 32, 91, 222, 96, 176, 92, 104, 192, 32, 93, 190, 66, 176, 94, 72, 162, 32, 95, 158, 36, 176, 96, 49, 190, 160, 97, 135, 65, 48, 98, 17, 160, 160, 99, 103, 35, 48, 99, 250, 189, 32, 101, 71, 5, 48, 101, 209, 100, 160, 103, 38, 231, 48, 103, 177, 70, 160, 105, 6, 201, 48, 105, 154, 99, 32, 106, 230, 171, 48, 107, 122, 69, 32, 108, 207, 199, 176, 109, 90, 39, 32, 110, 175, 169, 176, 111, 58, 9, 32, 112, 143, 139, 176, 113, 25, 235, 32, 114, 111, 109, 176, 114, 249, 205, 32, 116, 79, 79, 176, 116, 217, 175, 32, 118, 56, 108, 48, 118, 194, 203, 160, 120, 24, 78, 48, 120, 171, 232, 32, 121, 248, 48, 48, 122, 130, 143, 160, 123, 216, 18, 48, 124, 98, 113, 160, 125, 183, 244, 48, 126, 75, 142, 32, 127, 151, 214, 48, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 60, 45, 48, 50, 62, 44, 77, 49, 49, 46, 49, 46, 48, 47, 48, 44, 77, 50, 46, 51, 46, 48, 47, 48, 10}, + "zoneinfo/Brazil/East": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 114, 180, 184, 15, 73, 224, 184, 253, 64, 160, 185, 241, 52, 48, 186, 222, 116, 32, 218, 56, 174, 48, 218, 235, 250, 48, 220, 25, 225, 176, 220, 185, 89, 32, 221, 251, 21, 48, 222, 155, 222, 32, 223, 221, 154, 48, 224, 84, 51, 32, 244, 90, 9, 48, 245, 5, 94, 32, 246, 192, 100, 48, 247, 14, 30, 160, 248, 81, 44, 48, 248, 199, 197, 32, 250, 10, 210, 176, 250, 168, 248, 160, 251, 236, 6, 48, 252, 139, 125, 160, 29, 201, 142, 48, 30, 120, 215, 160, 31, 160, 53, 176, 32, 51, 207, 160, 33, 129, 105, 48, 34, 11, 200, 160, 35, 88, 16, 176, 35, 226, 112, 32, 37, 55, 242, 176, 37, 212, 199, 32, 39, 33, 15, 48, 39, 189, 227, 160, 41, 0, 241, 48, 41, 148, 139, 32, 42, 234, 13, 176, 43, 107, 50, 160, 44, 192, 181, 48, 45, 102, 196, 32, 46, 160, 151, 48, 47, 70, 166, 32, 48, 128, 121, 48, 49, 29, 77, 160, 50, 87, 32, 176, 51, 6, 106, 32, 52, 56, 84, 48, 52, 248, 193, 32, 54, 32, 31, 48, 54, 207, 104, 160, 55, 246, 198, 176, 56, 184, 133, 32, 57, 223, 227, 48, 58, 143, 44, 160, 59, 200, 255, 176, 60, 111, 14, 160, 61, 196, 145, 48, 62, 78, 240, 160, 63, 145, 254, 48, 64, 46, 210, 160, 65, 134, 248, 48, 66, 23, 239, 32, 67, 81, 194, 48, 67, 247, 209, 32, 69, 77, 83, 176, 69, 224, 237, 160, 71, 17, 134, 48, 71, 183, 149, 32, 72, 250, 162, 176, 73, 151, 119, 32, 74, 218, 132, 176, 75, 128, 147, 160, 76, 186, 102, 176, 77, 96, 117, 160, 78, 154, 72, 176, 79, 73, 146, 32, 80, 131, 101, 48, 81, 32, 57, 160, 82, 99, 71, 48, 83, 0, 27, 160, 84, 67, 41, 48, 84, 233, 56, 32, 86, 35, 11, 48, 86, 201, 26, 32, 88, 2, 237, 48, 88, 168, 252, 32, 89, 226, 207, 48, 90, 136, 222, 32, 91, 222, 96, 176, 92, 104, 192, 32, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 114, 180, 255, 255, 255, 255, 184, 15, 73, 224, 255, 255, 255, 255, 184, 253, 64, 160, 255, 255, 255, 255, 185, 241, 52, 48, 255, 255, 255, 255, 186, 222, 116, 32, 255, 255, 255, 255, 218, 56, 174, 48, 255, 255, 255, 255, 218, 235, 250, 48, 255, 255, 255, 255, 220, 25, 225, 176, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 251, 21, 48, 255, 255, 255, 255, 222, 155, 222, 32, 255, 255, 255, 255, 223, 221, 154, 48, 255, 255, 255, 255, 224, 84, 51, 32, 255, 255, 255, 255, 244, 90, 9, 48, 255, 255, 255, 255, 245, 5, 94, 32, 255, 255, 255, 255, 246, 192, 100, 48, 255, 255, 255, 255, 247, 14, 30, 160, 255, 255, 255, 255, 248, 81, 44, 48, 255, 255, 255, 255, 248, 199, 197, 32, 255, 255, 255, 255, 250, 10, 210, 176, 255, 255, 255, 255, 250, 168, 248, 160, 255, 255, 255, 255, 251, 236, 6, 48, 255, 255, 255, 255, 252, 139, 125, 160, 0, 0, 0, 0, 29, 201, 142, 48, 0, 0, 0, 0, 30, 120, 215, 160, 0, 0, 0, 0, 31, 160, 53, 176, 0, 0, 0, 0, 32, 51, 207, 160, 0, 0, 0, 0, 33, 129, 105, 48, 0, 0, 0, 0, 34, 11, 200, 160, 0, 0, 0, 0, 35, 88, 16, 176, 0, 0, 0, 0, 35, 226, 112, 32, 0, 0, 0, 0, 37, 55, 242, 176, 0, 0, 0, 0, 37, 212, 199, 32, 0, 0, 0, 0, 39, 33, 15, 48, 0, 0, 0, 0, 39, 189, 227, 160, 0, 0, 0, 0, 41, 0, 241, 48, 0, 0, 0, 0, 41, 148, 139, 32, 0, 0, 0, 0, 42, 234, 13, 176, 0, 0, 0, 0, 43, 107, 50, 160, 0, 0, 0, 0, 44, 192, 181, 48, 0, 0, 0, 0, 45, 102, 196, 32, 0, 0, 0, 0, 46, 160, 151, 48, 0, 0, 0, 0, 47, 70, 166, 32, 0, 0, 0, 0, 48, 128, 121, 48, 0, 0, 0, 0, 49, 29, 77, 160, 0, 0, 0, 0, 50, 87, 32, 176, 0, 0, 0, 0, 51, 6, 106, 32, 0, 0, 0, 0, 52, 56, 84, 48, 0, 0, 0, 0, 52, 248, 193, 32, 0, 0, 0, 0, 54, 32, 31, 48, 0, 0, 0, 0, 54, 207, 104, 160, 0, 0, 0, 0, 55, 246, 198, 176, 0, 0, 0, 0, 56, 184, 133, 32, 0, 0, 0, 0, 57, 223, 227, 48, 0, 0, 0, 0, 58, 143, 44, 160, 0, 0, 0, 0, 59, 200, 255, 176, 0, 0, 0, 0, 60, 111, 14, 160, 0, 0, 0, 0, 61, 196, 145, 48, 0, 0, 0, 0, 62, 78, 240, 160, 0, 0, 0, 0, 63, 145, 254, 48, 0, 0, 0, 0, 64, 46, 210, 160, 0, 0, 0, 0, 65, 134, 248, 48, 0, 0, 0, 0, 66, 23, 239, 32, 0, 0, 0, 0, 67, 81, 194, 48, 0, 0, 0, 0, 67, 247, 209, 32, 0, 0, 0, 0, 69, 77, 83, 176, 0, 0, 0, 0, 69, 224, 237, 160, 0, 0, 0, 0, 71, 17, 134, 48, 0, 0, 0, 0, 71, 183, 149, 32, 0, 0, 0, 0, 72, 250, 162, 176, 0, 0, 0, 0, 73, 151, 119, 32, 0, 0, 0, 0, 74, 218, 132, 176, 0, 0, 0, 0, 75, 128, 147, 160, 0, 0, 0, 0, 76, 186, 102, 176, 0, 0, 0, 0, 77, 96, 117, 160, 0, 0, 0, 0, 78, 154, 72, 176, 0, 0, 0, 0, 79, 73, 146, 32, 0, 0, 0, 0, 80, 131, 101, 48, 0, 0, 0, 0, 81, 32, 57, 160, 0, 0, 0, 0, 82, 99, 71, 48, 0, 0, 0, 0, 83, 0, 27, 160, 0, 0, 0, 0, 84, 67, 41, 48, 0, 0, 0, 0, 84, 233, 56, 32, 0, 0, 0, 0, 86, 35, 11, 48, 0, 0, 0, 0, 86, 201, 26, 32, 0, 0, 0, 0, 88, 2, 237, 48, 0, 0, 0, 0, 88, 168, 252, 32, 0, 0, 0, 0, 89, 226, 207, 48, 0, 0, 0, 0, 90, 136, 222, 32, 0, 0, 0, 0, 91, 222, 96, 176, 0, 0, 0, 0, 92, 104, 192, 32, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 212, 76, 0, 0, 255, 255, 227, 224, 1, 4, 255, 255, 213, 208, 0, 8, 76, 77, 84, 0, 45, 48, 50, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/Brazil/West": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 127, 68, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 44, 192, 195, 64, 45, 102, 210, 48, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/Brazil/West": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 12, 150, 170, 127, 68, 184, 15, 87, 240, 184, 253, 78, 176, 185, 241, 66, 64, 186, 222, 130, 48, 218, 56, 188, 64, 218, 236, 8, 64, 220, 25, 239, 192, 220, 185, 103, 48, 221, 251, 35, 64, 222, 155, 236, 48, 223, 221, 168, 64, 224, 84, 65, 48, 244, 152, 13, 192, 245, 5, 108, 48, 246, 192, 114, 64, 247, 14, 44, 176, 248, 81, 58, 64, 248, 199, 211, 48, 250, 10, 224, 192, 250, 169, 6, 176, 251, 236, 20, 64, 252, 139, 139, 176, 29, 201, 156, 64, 30, 120, 229, 176, 31, 160, 67, 192, 32, 51, 221, 176, 33, 129, 119, 64, 34, 11, 214, 176, 44, 192, 195, 64, 45, 102, 210, 48, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 150, 170, 127, 68, 255, 255, 255, 255, 184, 15, 87, 240, 255, 255, 255, 255, 184, 253, 78, 176, 255, 255, 255, 255, 185, 241, 66, 64, 255, 255, 255, 255, 186, 222, 130, 48, 255, 255, 255, 255, 218, 56, 188, 64, 255, 255, 255, 255, 218, 236, 8, 64, 255, 255, 255, 255, 220, 25, 239, 192, 255, 255, 255, 255, 220, 185, 103, 48, 255, 255, 255, 255, 221, 251, 35, 64, 255, 255, 255, 255, 222, 155, 236, 48, 255, 255, 255, 255, 223, 221, 168, 64, 255, 255, 255, 255, 224, 84, 65, 48, 255, 255, 255, 255, 244, 152, 13, 192, 255, 255, 255, 255, 245, 5, 108, 48, 255, 255, 255, 255, 246, 192, 114, 64, 255, 255, 255, 255, 247, 14, 44, 176, 255, 255, 255, 255, 248, 81, 58, 64, 255, 255, 255, 255, 248, 199, 211, 48, 255, 255, 255, 255, 250, 10, 224, 192, 255, 255, 255, 255, 250, 169, 6, 176, 255, 255, 255, 255, 251, 236, 20, 64, 255, 255, 255, 255, 252, 139, 139, 176, 0, 0, 0, 0, 29, 201, 156, 64, 0, 0, 0, 0, 30, 120, 229, 176, 0, 0, 0, 0, 31, 160, 67, 192, 0, 0, 0, 0, 32, 51, 221, 176, 0, 0, 0, 0, 33, 129, 119, 64, 0, 0, 0, 0, 34, 11, 214, 176, 0, 0, 0, 0, 44, 192, 195, 64, 0, 0, 0, 0, 45, 102, 210, 48, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 255, 255, 199, 188, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 76, 77, 84, 0, 45, 48, 51, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/CET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 14, 16, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/CET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 14, 16, 0, 5, 0, 0, 28, 32, 1, 0, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 14, 16, 0, 5, 0, 0, 28, 32, 1, 0, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/CST6CDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 171, 160, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 185, 176, 1, 8, 255, 255, 185, 176, 1, 12, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/CST6CDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 0, 255, 255, 185, 176, 1, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 0, 4, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 1, 0, 255, 255, 185, 176, 1, 8, 255, 255, 185, 176, 1, 12, 255, 255, 171, 160, 0, 4, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Atlantic": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 5, 0, 0, 0, 20, 128, 241, 171, 160, 154, 228, 222, 192, 155, 214, 19, 48, 158, 184, 133, 96, 159, 186, 221, 80, 162, 157, 23, 64, 163, 48, 177, 48, 164, 122, 86, 64, 165, 27, 31, 48, 166, 83, 160, 192, 166, 252, 82, 176, 168, 60, 189, 64, 168, 220, 52, 176, 170, 28, 159, 64, 170, 205, 58, 48, 171, 252, 129, 64, 172, 191, 145, 48, 173, 238, 216, 64, 174, 140, 254, 48, 175, 188, 69, 64, 176, 127, 85, 48, 177, 174, 156, 64, 178, 75, 112, 176, 179, 142, 126, 64, 180, 36, 187, 48, 181, 110, 96, 64, 182, 21, 192, 176, 183, 78, 66, 64, 184, 8, 23, 176, 185, 36, 233, 192, 185, 231, 249, 176, 187, 4, 203, 192, 187, 209, 22, 48, 189, 0, 93, 64, 189, 157, 49, 176, 190, 242, 180, 64, 191, 144, 218, 48, 192, 211, 231, 192, 193, 94, 71, 48, 194, 141, 142, 64, 195, 80, 158, 48, 196, 109, 112, 64, 197, 48, 128, 48, 198, 114, 60, 64, 199, 16, 98, 48, 200, 54, 110, 192, 200, 249, 126, 176, 202, 22, 80, 192, 202, 217, 96, 176, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 232, 241, 250, 208, 234, 6, 227, 224, 234, 209, 220, 208, 235, 230, 197, 224, 236, 177, 190, 208, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Atlantic": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 5, 0, 0, 0, 20, 128, 241, 171, 160, 154, 228, 222, 192, 155, 214, 19, 48, 158, 184, 133, 96, 159, 186, 221, 80, 162, 157, 23, 64, 163, 48, 177, 48, 164, 122, 86, 64, 165, 27, 31, 48, 166, 83, 160, 192, 166, 252, 82, 176, 168, 60, 189, 64, 168, 220, 52, 176, 170, 28, 159, 64, 170, 205, 58, 48, 171, 252, 129, 64, 172, 191, 145, 48, 173, 238, 216, 64, 174, 140, 254, 48, 175, 188, 69, 64, 176, 127, 85, 48, 177, 174, 156, 64, 178, 75, 112, 176, 179, 142, 126, 64, 180, 36, 187, 48, 181, 110, 96, 64, 182, 21, 192, 176, 183, 78, 66, 64, 184, 8, 23, 176, 185, 36, 233, 192, 185, 231, 249, 176, 187, 4, 203, 192, 187, 209, 22, 48, 189, 0, 93, 64, 189, 157, 49, 176, 190, 242, 180, 64, 191, 144, 218, 48, 192, 211, 231, 192, 193, 94, 71, 48, 194, 141, 142, 64, 195, 80, 158, 48, 196, 109, 112, 64, 197, 48, 128, 48, 198, 114, 60, 64, 199, 16, 98, 48, 200, 54, 110, 192, 200, 249, 126, 176, 202, 22, 80, 192, 202, 217, 96, 176, 203, 136, 226, 96, 210, 35, 244, 112, 210, 96, 237, 208, 211, 117, 214, 224, 212, 64, 207, 208, 213, 85, 184, 224, 214, 32, 177, 208, 215, 53, 154, 224, 216, 0, 147, 208, 217, 21, 124, 224, 217, 224, 117, 208, 220, 222, 123, 96, 221, 169, 116, 80, 222, 190, 93, 96, 223, 137, 86, 80, 224, 158, 63, 96, 225, 105, 56, 80, 226, 126, 33, 96, 227, 73, 26, 80, 230, 71, 31, 224, 231, 18, 24, 208, 232, 39, 1, 224, 232, 241, 250, 208, 234, 6, 227, 224, 234, 209, 220, 208, 235, 230, 197, 224, 236, 177, 190, 208, 241, 143, 166, 96, 242, 127, 137, 80, 243, 111, 136, 96, 244, 95, 107, 80, 245, 79, 106, 96, 246, 63, 77, 80, 247, 47, 76, 96, 248, 40, 105, 208, 249, 15, 46, 96, 250, 8, 75, 208, 250, 248, 74, 224, 251, 232, 45, 208, 252, 216, 44, 224, 253, 200, 15, 208, 254, 184, 14, 224, 255, 167, 241, 208, 0, 151, 240, 224, 1, 135, 211, 208, 2, 119, 210, 224, 3, 112, 240, 80, 4, 96, 239, 96, 5, 80, 210, 80, 6, 64, 209, 96, 7, 48, 180, 80, 8, 32, 179, 96, 9, 16, 150, 80, 10, 0, 149, 96, 10, 240, 120, 80, 11, 224, 119, 96, 12, 217, 148, 208, 13, 192, 89, 96, 14, 185, 118, 208, 15, 169, 117, 224, 16, 153, 88, 208, 17, 137, 87, 224, 18, 121, 58, 208, 19, 105, 57, 224, 20, 89, 28, 208, 21, 73, 27, 224, 22, 56, 254, 208, 23, 40, 253, 224, 24, 34, 27, 80, 25, 8, 223, 224, 26, 1, 253, 80, 26, 241, 252, 96, 27, 225, 223, 80, 28, 209, 222, 96, 29, 193, 193, 80, 30, 177, 192, 96, 31, 161, 163, 80, 32, 117, 242, 224, 33, 129, 133, 80, 34, 85, 212, 224, 35, 106, 161, 208, 36, 53, 182, 224, 37, 74, 131, 208, 38, 21, 152, 224, 39, 42, 101, 208, 39, 254, 181, 96, 41, 10, 71, 208, 41, 222, 151, 96, 42, 234, 41, 208, 43, 190, 121, 96, 44, 211, 70, 80, 45, 158, 91, 96, 46, 179, 40, 80, 47, 126, 61, 96, 48, 147, 10, 80, 49, 103, 89, 224, 50, 114, 236, 80, 51, 71, 59, 224, 52, 82, 206, 80, 53, 39, 29, 224, 54, 50, 176, 80, 55, 6, 255, 224, 56, 27, 204, 208, 56, 230, 225, 224, 57, 251, 174, 208, 58, 198, 195, 224, 59, 219, 144, 208, 60, 175, 224, 96, 61, 187, 114, 208, 62, 143, 194, 96, 63, 155, 84, 208, 64, 111, 164, 96, 65, 132, 113, 80, 66, 79, 134, 96, 67, 100, 83, 80, 68, 47, 104, 96, 69, 68, 53, 80, 69, 243, 154, 224, 71, 45, 81, 208, 71, 211, 124, 224, 73, 13, 51, 208, 73, 179, 94, 224, 74, 237, 21, 208, 75, 156, 123, 96, 76, 214, 50, 80, 77, 124, 93, 96, 78, 182, 20, 80, 79, 92, 63, 96, 80, 149, 246, 80, 81, 60, 33, 96, 82, 117, 216, 80, 83, 28, 3, 96, 84, 85, 186, 80, 84, 251, 229, 96, 86, 53, 156, 80, 86, 229, 1, 224, 88, 30, 184, 208, 88, 196, 227, 224, 89, 254, 154, 208, 90, 164, 197, 224, 91, 222, 124, 208, 92, 132, 167, 224, 93, 190, 94, 208, 94, 100, 137, 224, 95, 158, 64, 208, 96, 77, 166, 96, 97, 135, 93, 80, 98, 45, 136, 96, 99, 103, 63, 80, 100, 13, 106, 96, 101, 71, 33, 80, 101, 237, 76, 96, 103, 39, 3, 80, 103, 205, 46, 96, 105, 6, 229, 80, 105, 173, 16, 96, 106, 230, 199, 80, 107, 150, 44, 224, 108, 207, 227, 208, 109, 118, 14, 224, 110, 175, 197, 208, 111, 85, 240, 224, 112, 143, 167, 208, 113, 53, 210, 224, 114, 111, 137, 208, 115, 21, 180, 224, 116, 79, 107, 208, 116, 254, 209, 96, 118, 56, 136, 80, 118, 222, 179, 96, 120, 24, 106, 80, 120, 190, 149, 96, 121, 248, 76, 80, 122, 158, 119, 96, 123, 216, 46, 80, 124, 126, 89, 96, 125, 184, 16, 80, 126, 94, 59, 96, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 128, 241, 171, 160, 255, 255, 255, 255, 154, 228, 222, 192, 255, 255, 255, 255, 155, 214, 19, 48, 255, 255, 255, 255, 158, 184, 133, 96, 255, 255, 255, 255, 159, 186, 221, 80, 255, 255, 255, 255, 162, 157, 23, 64, 255, 255, 255, 255, 163, 48, 177, 48, 255, 255, 255, 255, 164, 122, 86, 64, 255, 255, 255, 255, 165, 27, 31, 48, 255, 255, 255, 255, 166, 83, 160, 192, 255, 255, 255, 255, 166, 252, 82, 176, 255, 255, 255, 255, 168, 60, 189, 64, 255, 255, 255, 255, 168, 220, 52, 176, 255, 255, 255, 255, 170, 28, 159, 64, 255, 255, 255, 255, 170, 205, 58, 48, 255, 255, 255, 255, 171, 252, 129, 64, 255, 255, 255, 255, 172, 191, 145, 48, 255, 255, 255, 255, 173, 238, 216, 64, 255, 255, 255, 255, 174, 140, 254, 48, 255, 255, 255, 255, 175, 188, 69, 64, 255, 255, 255, 255, 176, 127, 85, 48, 255, 255, 255, 255, 177, 174, 156, 64, 255, 255, 255, 255, 178, 75, 112, 176, 255, 255, 255, 255, 179, 142, 126, 64, 255, 255, 255, 255, 180, 36, 187, 48, 255, 255, 255, 255, 181, 110, 96, 64, 255, 255, 255, 255, 182, 21, 192, 176, 255, 255, 255, 255, 183, 78, 66, 64, 255, 255, 255, 255, 184, 8, 23, 176, 255, 255, 255, 255, 185, 36, 233, 192, 255, 255, 255, 255, 185, 231, 249, 176, 255, 255, 255, 255, 187, 4, 203, 192, 255, 255, 255, 255, 187, 209, 22, 48, 255, 255, 255, 255, 189, 0, 93, 64, 255, 255, 255, 255, 189, 157, 49, 176, 255, 255, 255, 255, 190, 242, 180, 64, 255, 255, 255, 255, 191, 144, 218, 48, 255, 255, 255, 255, 192, 211, 231, 192, 255, 255, 255, 255, 193, 94, 71, 48, 255, 255, 255, 255, 194, 141, 142, 64, 255, 255, 255, 255, 195, 80, 158, 48, 255, 255, 255, 255, 196, 109, 112, 64, 255, 255, 255, 255, 197, 48, 128, 48, 255, 255, 255, 255, 198, 114, 60, 64, 255, 255, 255, 255, 199, 16, 98, 48, 255, 255, 255, 255, 200, 54, 110, 192, 255, 255, 255, 255, 200, 249, 126, 176, 255, 255, 255, 255, 202, 22, 80, 192, 255, 255, 255, 255, 202, 217, 96, 176, 255, 255, 255, 255, 203, 136, 226, 96, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 237, 208, 255, 255, 255, 255, 211, 117, 214, 224, 255, 255, 255, 255, 212, 64, 207, 208, 255, 255, 255, 255, 213, 85, 184, 224, 255, 255, 255, 255, 214, 32, 177, 208, 255, 255, 255, 255, 215, 53, 154, 224, 255, 255, 255, 255, 216, 0, 147, 208, 255, 255, 255, 255, 217, 21, 124, 224, 255, 255, 255, 255, 217, 224, 117, 208, 255, 255, 255, 255, 220, 222, 123, 96, 255, 255, 255, 255, 221, 169, 116, 80, 255, 255, 255, 255, 222, 190, 93, 96, 255, 255, 255, 255, 223, 137, 86, 80, 255, 255, 255, 255, 224, 158, 63, 96, 255, 255, 255, 255, 225, 105, 56, 80, 255, 255, 255, 255, 226, 126, 33, 96, 255, 255, 255, 255, 227, 73, 26, 80, 255, 255, 255, 255, 230, 71, 31, 224, 255, 255, 255, 255, 231, 18, 24, 208, 255, 255, 255, 255, 232, 39, 1, 224, 255, 255, 255, 255, 232, 241, 250, 208, 255, 255, 255, 255, 234, 6, 227, 224, 255, 255, 255, 255, 234, 209, 220, 208, 255, 255, 255, 255, 235, 230, 197, 224, 255, 255, 255, 255, 236, 177, 190, 208, 255, 255, 255, 255, 241, 143, 166, 96, 255, 255, 255, 255, 242, 127, 137, 80, 255, 255, 255, 255, 243, 111, 136, 96, 255, 255, 255, 255, 244, 95, 107, 80, 255, 255, 255, 255, 245, 79, 106, 96, 255, 255, 255, 255, 246, 63, 77, 80, 255, 255, 255, 255, 247, 47, 76, 96, 255, 255, 255, 255, 248, 40, 105, 208, 255, 255, 255, 255, 249, 15, 46, 96, 255, 255, 255, 255, 250, 8, 75, 208, 255, 255, 255, 255, 250, 248, 74, 224, 255, 255, 255, 255, 251, 232, 45, 208, 255, 255, 255, 255, 252, 216, 44, 224, 255, 255, 255, 255, 253, 200, 15, 208, 255, 255, 255, 255, 254, 184, 14, 224, 255, 255, 255, 255, 255, 167, 241, 208, 0, 0, 0, 0, 0, 151, 240, 224, 0, 0, 0, 0, 1, 135, 211, 208, 0, 0, 0, 0, 2, 119, 210, 224, 0, 0, 0, 0, 3, 112, 240, 80, 0, 0, 0, 0, 4, 96, 239, 96, 0, 0, 0, 0, 5, 80, 210, 80, 0, 0, 0, 0, 6, 64, 209, 96, 0, 0, 0, 0, 7, 48, 180, 80, 0, 0, 0, 0, 8, 32, 179, 96, 0, 0, 0, 0, 9, 16, 150, 80, 0, 0, 0, 0, 10, 0, 149, 96, 0, 0, 0, 0, 10, 240, 120, 80, 0, 0, 0, 0, 11, 224, 119, 96, 0, 0, 0, 0, 12, 217, 148, 208, 0, 0, 0, 0, 13, 192, 89, 96, 0, 0, 0, 0, 14, 185, 118, 208, 0, 0, 0, 0, 15, 169, 117, 224, 0, 0, 0, 0, 16, 153, 88, 208, 0, 0, 0, 0, 17, 137, 87, 224, 0, 0, 0, 0, 18, 121, 58, 208, 0, 0, 0, 0, 19, 105, 57, 224, 0, 0, 0, 0, 20, 89, 28, 208, 0, 0, 0, 0, 21, 73, 27, 224, 0, 0, 0, 0, 22, 56, 254, 208, 0, 0, 0, 0, 23, 40, 253, 224, 0, 0, 0, 0, 24, 34, 27, 80, 0, 0, 0, 0, 25, 8, 223, 224, 0, 0, 0, 0, 26, 1, 253, 80, 0, 0, 0, 0, 26, 241, 252, 96, 0, 0, 0, 0, 27, 225, 223, 80, 0, 0, 0, 0, 28, 209, 222, 96, 0, 0, 0, 0, 29, 193, 193, 80, 0, 0, 0, 0, 30, 177, 192, 96, 0, 0, 0, 0, 31, 161, 163, 80, 0, 0, 0, 0, 32, 117, 242, 224, 0, 0, 0, 0, 33, 129, 133, 80, 0, 0, 0, 0, 34, 85, 212, 224, 0, 0, 0, 0, 35, 106, 161, 208, 0, 0, 0, 0, 36, 53, 182, 224, 0, 0, 0, 0, 37, 74, 131, 208, 0, 0, 0, 0, 38, 21, 152, 224, 0, 0, 0, 0, 39, 42, 101, 208, 0, 0, 0, 0, 39, 254, 181, 96, 0, 0, 0, 0, 41, 10, 71, 208, 0, 0, 0, 0, 41, 222, 151, 96, 0, 0, 0, 0, 42, 234, 41, 208, 0, 0, 0, 0, 43, 190, 121, 96, 0, 0, 0, 0, 44, 211, 70, 80, 0, 0, 0, 0, 45, 158, 91, 96, 0, 0, 0, 0, 46, 179, 40, 80, 0, 0, 0, 0, 47, 126, 61, 96, 0, 0, 0, 0, 48, 147, 10, 80, 0, 0, 0, 0, 49, 103, 89, 224, 0, 0, 0, 0, 50, 114, 236, 80, 0, 0, 0, 0, 51, 71, 59, 224, 0, 0, 0, 0, 52, 82, 206, 80, 0, 0, 0, 0, 53, 39, 29, 224, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 55, 6, 255, 224, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 225, 224, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 195, 224, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 224, 96, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 194, 96, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 111, 164, 96, 0, 0, 0, 0, 65, 132, 113, 80, 0, 0, 0, 0, 66, 79, 134, 96, 0, 0, 0, 0, 67, 100, 83, 80, 0, 0, 0, 0, 68, 47, 104, 96, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 154, 224, 0, 0, 0, 0, 71, 45, 81, 208, 0, 0, 0, 0, 71, 211, 124, 224, 0, 0, 0, 0, 73, 13, 51, 208, 0, 0, 0, 0, 73, 179, 94, 224, 0, 0, 0, 0, 74, 237, 21, 208, 0, 0, 0, 0, 75, 156, 123, 96, 0, 0, 0, 0, 76, 214, 50, 80, 0, 0, 0, 0, 77, 124, 93, 96, 0, 0, 0, 0, 78, 182, 20, 80, 0, 0, 0, 0, 79, 92, 63, 96, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 33, 96, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 28, 3, 96, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 229, 96, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 229, 1, 224, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 227, 224, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 197, 224, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 167, 224, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 137, 224, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 166, 96, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 136, 96, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 106, 96, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 76, 96, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 46, 96, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 16, 96, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 44, 224, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 14, 224, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 240, 224, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 210, 224, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 180, 224, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 209, 96, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 179, 96, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 149, 96, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 119, 96, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 89, 96, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 59, 96, 0, 0, 0, 0, 127, 151, 242, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 196, 96, 0, 0, 255, 255, 213, 208, 1, 4, 255, 255, 199, 192, 0, 8, 255, 255, 213, 208, 1, 12, 255, 255, 213, 208, 1, 16, 76, 77, 84, 0, 65, 68, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 65, 83, 84, 52, 65, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Central": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 155, 1, 251, 224, 155, 195, 186, 80, 158, 184, 161, 128, 159, 186, 249, 112, 194, 160, 59, 128, 195, 79, 132, 240, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 136, 104, 0, 212, 83, 96, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 219, 0, 7, 0, 219, 200, 92, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 145, 188, 240, 243, 111, 164, 128, 244, 49, 98, 240, 249, 15, 74, 128, 250, 8, 118, 0, 250, 248, 103, 0, 251, 232, 88, 0, 252, 216, 73, 0, 253, 200, 58, 0, 254, 184, 43, 0, 255, 168, 28, 0, 0, 152, 13, 0, 1, 135, 254, 0, 2, 119, 239, 0, 3, 113, 26, 128, 4, 97, 11, 128, 5, 80, 252, 128, 6, 64, 237, 128, 7, 48, 222, 128, 8, 32, 207, 128, 9, 16, 192, 128, 10, 0, 177, 128, 10, 240, 162, 128, 11, 224, 147, 128, 12, 217, 191, 0, 13, 192, 117, 128, 14, 185, 161, 0, 15, 169, 146, 0, 16, 153, 131, 0, 17, 137, 116, 0, 18, 121, 101, 0, 19, 105, 86, 0, 20, 89, 71, 0, 21, 73, 56, 0, 22, 57, 41, 0, 23, 41, 26, 0, 24, 34, 69, 128, 25, 8, 252, 0, 26, 2, 39, 128, 26, 242, 24, 128, 27, 226, 9, 128, 28, 209, 250, 128, 29, 193, 235, 128, 30, 177, 220, 128, 31, 161, 205, 128, 32, 118, 15, 0, 33, 129, 175, 128, 34, 85, 241, 0, 35, 106, 204, 0, 36, 53, 211, 0, 37, 74, 174, 0, 38, 21, 181, 0, 39, 42, 144, 0, 39, 254, 209, 128, 41, 10, 114, 0, 41, 222, 179, 128, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 112, 128, 45, 158, 119, 128, 46, 179, 82, 128, 47, 126, 89, 128, 48, 147, 52, 128, 49, 103, 118, 0, 50, 115, 22, 128, 51, 71, 88, 0, 52, 82, 248, 128, 53, 39, 58, 0, 54, 50, 218, 128, 55, 7, 28, 0, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 217, 0, 58, 198, 224, 0, 59, 219, 187, 0, 60, 175, 252, 128, 61, 187, 157, 0, 62, 143, 222, 128, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 155, 128, 66, 79, 162, 128, 67, 100, 125, 128, 67, 183, 111, 224, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Central": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 155, 1, 251, 224, 155, 195, 186, 80, 158, 184, 161, 128, 159, 186, 249, 112, 194, 160, 59, 128, 195, 79, 132, 240, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 136, 104, 0, 212, 83, 96, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 219, 0, 7, 0, 219, 200, 92, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 41, 24, 112, 230, 71, 60, 0, 231, 18, 52, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 145, 188, 240, 243, 111, 164, 128, 244, 49, 98, 240, 249, 15, 74, 128, 250, 8, 118, 0, 250, 248, 103, 0, 251, 232, 88, 0, 252, 216, 73, 0, 253, 200, 58, 0, 254, 184, 43, 0, 255, 168, 28, 0, 0, 152, 13, 0, 1, 135, 254, 0, 2, 119, 239, 0, 3, 113, 26, 128, 4, 97, 11, 128, 5, 80, 252, 128, 6, 64, 237, 128, 7, 48, 222, 128, 8, 32, 207, 128, 9, 16, 192, 128, 10, 0, 177, 128, 10, 240, 162, 128, 11, 224, 147, 128, 12, 217, 191, 0, 13, 192, 117, 128, 14, 185, 161, 0, 15, 169, 146, 0, 16, 153, 131, 0, 17, 137, 116, 0, 18, 121, 101, 0, 19, 105, 86, 0, 20, 89, 71, 0, 21, 73, 56, 0, 22, 57, 41, 0, 23, 41, 26, 0, 24, 34, 69, 128, 25, 8, 252, 0, 26, 2, 39, 128, 26, 242, 24, 128, 27, 226, 9, 128, 28, 209, 250, 128, 29, 193, 235, 128, 30, 177, 220, 128, 31, 161, 205, 128, 32, 118, 15, 0, 33, 129, 175, 128, 34, 85, 241, 0, 35, 106, 204, 0, 36, 53, 211, 0, 37, 74, 174, 0, 38, 21, 181, 0, 39, 42, 144, 0, 39, 254, 209, 128, 41, 10, 114, 0, 41, 222, 179, 128, 42, 234, 84, 0, 43, 190, 149, 128, 44, 211, 112, 128, 45, 158, 119, 128, 46, 179, 82, 128, 47, 126, 89, 128, 48, 147, 52, 128, 49, 103, 118, 0, 50, 115, 22, 128, 51, 71, 88, 0, 52, 82, 248, 128, 53, 39, 58, 0, 54, 50, 218, 128, 55, 7, 28, 0, 56, 27, 247, 0, 56, 230, 254, 0, 57, 251, 217, 0, 58, 198, 224, 0, 59, 219, 187, 0, 60, 175, 252, 128, 61, 187, 157, 0, 62, 143, 222, 128, 63, 155, 127, 0, 64, 111, 192, 128, 65, 132, 155, 128, 66, 79, 162, 128, 67, 100, 125, 128, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 100, 228, 176, 148, 255, 255, 255, 255, 155, 1, 251, 224, 255, 255, 255, 255, 155, 195, 186, 80, 255, 255, 255, 255, 158, 184, 161, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 194, 160, 59, 128, 255, 255, 255, 255, 195, 79, 132, 240, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 136, 104, 0, 255, 255, 255, 255, 212, 83, 96, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 219, 0, 7, 0, 255, 255, 255, 255, 219, 200, 92, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 41, 24, 112, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 18, 52, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 145, 188, 240, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 49, 98, 240, 255, 255, 255, 255, 249, 15, 74, 128, 255, 255, 255, 255, 250, 8, 118, 0, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 8, 32, 207, 128, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 10, 0, 177, 128, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 164, 236, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Eastern": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Eastern": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 147, 112, 159, 186, 235, 96, 160, 135, 46, 200, 161, 154, 177, 64, 162, 148, 6, 240, 163, 85, 169, 64, 164, 134, 93, 240, 165, 40, 120, 96, 166, 102, 63, 240, 167, 12, 78, 224, 168, 70, 33, 240, 168, 236, 48, 224, 170, 28, 201, 112, 170, 213, 77, 96, 171, 252, 171, 112, 172, 181, 47, 96, 173, 220, 141, 112, 174, 149, 17, 96, 175, 188, 111, 112, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 37, 19, 240, 185, 230, 210, 96, 187, 4, 245, 240, 187, 207, 238, 224, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 170, 208, 214, 32, 163, 192, 215, 53, 140, 208, 216, 0, 133, 192, 217, 21, 110, 208, 218, 51, 118, 64, 218, 254, 167, 112, 220, 19, 116, 96, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 41, 10, 96, 230, 71, 45, 240, 231, 18, 38, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 8, 32, 193, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 114, 238, 120, 236, 255, 255, 255, 255, 158, 184, 147, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 160, 135, 46, 200, 255, 255, 255, 255, 161, 154, 177, 64, 255, 255, 255, 255, 162, 148, 6, 240, 255, 255, 255, 255, 163, 85, 169, 64, 255, 255, 255, 255, 164, 134, 93, 240, 255, 255, 255, 255, 165, 40, 120, 96, 255, 255, 255, 255, 166, 102, 63, 240, 255, 255, 255, 255, 167, 12, 78, 224, 255, 255, 255, 255, 168, 70, 33, 240, 255, 255, 255, 255, 168, 236, 48, 224, 255, 255, 255, 255, 170, 28, 201, 112, 255, 255, 255, 255, 170, 213, 77, 96, 255, 255, 255, 255, 171, 252, 171, 112, 255, 255, 255, 255, 172, 181, 47, 96, 255, 255, 255, 255, 173, 220, 141, 112, 255, 255, 255, 255, 174, 149, 17, 96, 255, 255, 255, 255, 175, 188, 111, 112, 255, 255, 255, 255, 176, 126, 45, 224, 255, 255, 255, 255, 177, 156, 81, 112, 255, 255, 255, 255, 178, 103, 74, 96, 255, 255, 255, 255, 179, 124, 51, 112, 255, 255, 255, 255, 180, 71, 44, 96, 255, 255, 255, 255, 181, 92, 21, 112, 255, 255, 255, 255, 182, 39, 14, 96, 255, 255, 255, 255, 183, 59, 247, 112, 255, 255, 255, 255, 184, 6, 240, 96, 255, 255, 255, 255, 185, 37, 19, 240, 255, 255, 255, 255, 185, 230, 210, 96, 255, 255, 255, 255, 187, 4, 245, 240, 255, 255, 255, 255, 187, 207, 238, 224, 255, 255, 255, 255, 188, 228, 215, 240, 255, 255, 255, 255, 189, 175, 208, 224, 255, 255, 255, 255, 190, 196, 185, 240, 255, 255, 255, 255, 191, 143, 178, 224, 255, 255, 255, 255, 192, 164, 155, 240, 255, 255, 255, 255, 193, 111, 148, 224, 255, 255, 255, 255, 194, 132, 125, 240, 255, 255, 255, 255, 195, 79, 118, 224, 255, 255, 255, 255, 196, 100, 95, 240, 255, 255, 255, 255, 197, 47, 88, 224, 255, 255, 255, 255, 198, 77, 124, 112, 255, 255, 255, 255, 199, 15, 58, 224, 255, 255, 255, 255, 200, 45, 94, 112, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 211, 117, 228, 240, 255, 255, 255, 255, 212, 64, 221, 224, 255, 255, 255, 255, 213, 85, 170, 208, 255, 255, 255, 255, 214, 32, 163, 192, 255, 255, 255, 255, 215, 53, 140, 208, 255, 255, 255, 255, 216, 0, 133, 192, 255, 255, 255, 255, 217, 21, 110, 208, 255, 255, 255, 255, 218, 51, 118, 64, 255, 255, 255, 255, 218, 254, 167, 112, 255, 255, 255, 255, 220, 19, 116, 96, 255, 255, 255, 255, 220, 222, 137, 112, 255, 255, 255, 255, 221, 169, 130, 96, 255, 255, 255, 255, 222, 190, 107, 112, 255, 255, 255, 255, 223, 137, 100, 96, 255, 255, 255, 255, 224, 158, 77, 112, 255, 255, 255, 255, 225, 105, 70, 96, 255, 255, 255, 255, 226, 126, 47, 112, 255, 255, 255, 255, 227, 73, 40, 96, 255, 255, 255, 255, 228, 94, 17, 112, 255, 255, 255, 255, 229, 41, 10, 96, 255, 255, 255, 255, 230, 71, 45, 240, 255, 255, 255, 255, 231, 18, 38, 224, 255, 255, 255, 255, 232, 39, 15, 240, 255, 255, 255, 255, 233, 22, 242, 224, 255, 255, 255, 255, 234, 6, 241, 240, 255, 255, 255, 255, 234, 246, 212, 224, 255, 255, 255, 255, 235, 230, 211, 240, 255, 255, 255, 255, 236, 214, 182, 224, 255, 255, 255, 255, 237, 198, 181, 240, 255, 255, 255, 255, 238, 191, 211, 96, 255, 255, 255, 255, 239, 175, 210, 112, 255, 255, 255, 255, 240, 159, 181, 96, 255, 255, 255, 255, 241, 143, 180, 112, 255, 255, 255, 255, 242, 127, 151, 96, 255, 255, 255, 255, 243, 111, 150, 112, 255, 255, 255, 255, 244, 95, 121, 96, 255, 255, 255, 255, 245, 79, 120, 112, 255, 255, 255, 255, 246, 63, 91, 96, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 119, 224, 255, 255, 255, 255, 249, 15, 60, 112, 255, 255, 255, 255, 250, 8, 89, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 8, 32, 193, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 181, 148, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Mountain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 5, 0, 0, 0, 20, 136, 222, 206, 224, 158, 184, 175, 144, 159, 187, 7, 128, 160, 152, 145, 144, 160, 210, 133, 128, 162, 138, 232, 144, 163, 132, 6, 0, 164, 106, 202, 144, 165, 53, 195, 128, 166, 83, 231, 16, 167, 21, 165, 128, 168, 51, 201, 16, 168, 254, 194, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 213, 85, 227, 16, 214, 32, 220, 0, 250, 248, 117, 16, 251, 232, 88, 0, 254, 184, 57, 16, 255, 168, 28, 0, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 8, 32, 221, 144, 9, 16, 192, 128, 10, 0, 191, 144, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Mountain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 5, 0, 0, 0, 20, 136, 222, 206, 224, 158, 184, 175, 144, 159, 187, 7, 128, 160, 152, 145, 144, 160, 210, 133, 128, 162, 138, 232, 144, 163, 132, 6, 0, 164, 106, 202, 144, 165, 53, 195, 128, 166, 83, 231, 16, 167, 21, 165, 128, 168, 51, 201, 16, 168, 254, 194, 0, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 213, 85, 227, 16, 214, 32, 220, 0, 250, 248, 117, 16, 251, 232, 88, 0, 254, 184, 57, 16, 255, 168, 28, 0, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 8, 32, 221, 144, 9, 16, 192, 128, 10, 0, 191, 144, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 136, 222, 206, 224, 255, 255, 255, 255, 158, 184, 175, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 152, 145, 144, 255, 255, 255, 255, 160, 210, 133, 128, 255, 255, 255, 255, 162, 138, 232, 144, 255, 255, 255, 255, 163, 132, 6, 0, 255, 255, 255, 255, 164, 106, 202, 144, 255, 255, 255, 255, 165, 53, 195, 128, 255, 255, 255, 255, 166, 83, 231, 16, 255, 255, 255, 255, 167, 21, 165, 128, 255, 255, 255, 255, 168, 51, 201, 16, 255, 255, 255, 255, 168, 254, 194, 0, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 213, 85, 227, 16, 255, 255, 255, 255, 214, 32, 220, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 8, 32, 221, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 10, 0, 191, 144, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 149, 160, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Newfoundland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 128, 0, 0, 0, 156, 207, 98, 12, 157, 164, 230, 252, 158, 184, 126, 140, 159, 186, 214, 124, 160, 182, 136, 220, 161, 56, 255, 76, 162, 149, 25, 92, 163, 132, 252, 76, 164, 116, 251, 92, 165, 100, 222, 76, 166, 94, 23, 220, 167, 68, 192, 76, 168, 61, 249, 220, 169, 36, 162, 76, 170, 29, 219, 220, 171, 4, 132, 76, 171, 253, 189, 220, 172, 228, 102, 76, 173, 221, 159, 220, 174, 205, 130, 204, 175, 189, 129, 220, 176, 173, 100, 204, 177, 166, 158, 92, 178, 141, 70, 204, 179, 134, 128, 92, 180, 109, 40, 204, 181, 102, 98, 92, 182, 77, 10, 204, 183, 70, 68, 92, 184, 44, 236, 204, 185, 38, 38, 92, 186, 22, 9, 76, 187, 15, 66, 220, 187, 245, 235, 76, 188, 239, 36, 220, 189, 213, 205, 76, 190, 158, 77, 108, 190, 207, 6, 168, 191, 181, 175, 24, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 249, 15, 39, 88, 250, 8, 68, 200, 250, 248, 67, 216, 251, 232, 38, 200, 252, 216, 37, 216, 253, 200, 8, 200, 254, 184, 7, 216, 255, 167, 234, 200, 0, 151, 233, 216, 1, 135, 204, 200, 2, 119, 203, 216, 3, 112, 233, 72, 4, 96, 232, 88, 5, 80, 203, 72, 6, 64, 202, 88, 7, 48, 173, 72, 8, 32, 172, 88, 9, 16, 143, 72, 10, 0, 142, 88, 10, 240, 113, 72, 11, 224, 112, 88, 12, 217, 141, 200, 13, 192, 82, 88, 14, 185, 111, 200, 15, 169, 110, 216, 16, 153, 81, 200, 17, 137, 80, 216, 18, 121, 51, 200, 19, 105, 50, 216, 20, 89, 21, 200, 21, 73, 20, 216, 22, 56, 247, 200, 23, 40, 246, 216, 24, 34, 20, 72, 25, 8, 216, 216, 26, 1, 246, 72, 26, 241, 245, 88, 27, 225, 216, 72, 28, 209, 215, 88, 29, 193, 186, 72, 30, 177, 185, 88, 31, 161, 156, 72, 32, 117, 207, 244, 33, 129, 98, 100, 34, 85, 177, 244, 35, 106, 112, 212, 36, 53, 147, 244, 37, 74, 96, 228, 38, 21, 117, 244, 39, 42, 66, 228, 39, 254, 146, 116, 41, 10, 36, 228, 41, 222, 116, 116, 42, 234, 6, 228, 43, 190, 86, 116, 44, 211, 35, 100, 45, 158, 56, 116, 46, 179, 5, 100, 47, 126, 26, 116, 48, 146, 231, 100, 49, 103, 54, 244, 50, 114, 201, 100, 51, 71, 24, 244, 52, 82, 171, 100, 53, 38, 250, 244, 54, 50, 141, 100, 55, 6, 220, 244, 56, 27, 169, 228, 56, 230, 190, 244, 57, 251, 139, 228, 58, 198, 160, 244, 59, 219, 109, 228, 60, 175, 189, 116, 61, 187, 79, 228, 62, 143, 159, 116, 63, 155, 49, 228, 64, 111, 129, 116, 65, 132, 78, 100, 66, 79, 99, 116, 67, 100, 48, 100, 68, 47, 69, 116, 69, 68, 18, 100, 69, 243, 119, 244, 71, 45, 46, 228, 71, 211, 89, 244, 73, 13, 16, 228, 73, 179, 59, 244, 74, 236, 242, 228, 75, 156, 88, 116, 76, 214, 15, 100, 77, 124, 58, 116, 78, 182, 13, 72, 79, 92, 56, 88, 80, 149, 239, 72, 81, 60, 26, 88, 82, 117, 209, 72, 83, 27, 252, 88, 84, 85, 179, 72, 84, 251, 222, 88, 86, 53, 149, 72, 86, 228, 250, 216, 88, 30, 177, 200, 88, 196, 220, 216, 89, 254, 147, 200, 90, 164, 190, 216, 91, 222, 117, 200, 92, 132, 160, 216, 93, 190, 87, 200, 94, 100, 130, 216, 95, 158, 57, 200, 96, 77, 159, 88, 97, 135, 86, 72, 98, 45, 129, 88, 99, 103, 56, 72, 100, 13, 99, 88, 101, 71, 26, 72, 101, 237, 69, 88, 103, 38, 252, 72, 103, 205, 39, 88, 105, 6, 222, 72, 105, 173, 9, 88, 106, 230, 192, 72, 107, 150, 37, 216, 108, 207, 220, 200, 109, 118, 7, 216, 110, 175, 190, 200, 111, 85, 233, 216, 112, 143, 160, 200, 113, 53, 203, 216, 114, 111, 130, 200, 115, 21, 173, 216, 116, 79, 100, 200, 116, 254, 202, 88, 118, 56, 129, 72, 118, 222, 172, 88, 120, 24, 99, 72, 120, 190, 142, 88, 121, 248, 69, 72, 122, 158, 112, 88, 123, 216, 39, 72, 124, 126, 82, 88, 125, 184, 9, 72, 126, 94, 52, 88, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 78, 83, 84, 51, 58, 51, 48, 78, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Newfoundland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 128, 0, 0, 0, 156, 207, 98, 12, 157, 164, 230, 252, 158, 184, 126, 140, 159, 186, 214, 124, 160, 182, 136, 220, 161, 56, 255, 76, 162, 149, 25, 92, 163, 132, 252, 76, 164, 116, 251, 92, 165, 100, 222, 76, 166, 94, 23, 220, 167, 68, 192, 76, 168, 61, 249, 220, 169, 36, 162, 76, 170, 29, 219, 220, 171, 4, 132, 76, 171, 253, 189, 220, 172, 228, 102, 76, 173, 221, 159, 220, 174, 205, 130, 204, 175, 189, 129, 220, 176, 173, 100, 204, 177, 166, 158, 92, 178, 141, 70, 204, 179, 134, 128, 92, 180, 109, 40, 204, 181, 102, 98, 92, 182, 77, 10, 204, 183, 70, 68, 92, 184, 44, 236, 204, 185, 38, 38, 92, 186, 22, 9, 76, 187, 15, 66, 220, 187, 245, 235, 76, 188, 239, 36, 220, 189, 213, 205, 76, 190, 158, 77, 108, 190, 207, 6, 168, 191, 181, 175, 24, 192, 184, 49, 56, 193, 121, 239, 168, 194, 152, 19, 56, 195, 89, 209, 168, 196, 119, 245, 56, 197, 57, 179, 168, 198, 97, 17, 184, 199, 25, 149, 168, 200, 64, 243, 184, 201, 2, 178, 40, 202, 32, 213, 184, 202, 226, 148, 40, 204, 0, 183, 184, 210, 35, 244, 112, 210, 96, 230, 200, 211, 136, 68, 216, 212, 74, 3, 72, 213, 104, 38, 216, 214, 41, 229, 72, 215, 72, 8, 216, 216, 9, 199, 72, 217, 39, 234, 216, 217, 233, 169, 72, 219, 17, 7, 88, 219, 210, 197, 200, 220, 222, 116, 88, 221, 169, 109, 72, 222, 190, 86, 88, 223, 137, 79, 72, 224, 158, 56, 88, 225, 105, 49, 72, 226, 126, 26, 88, 227, 73, 19, 72, 228, 93, 252, 88, 229, 40, 245, 72, 230, 71, 24, 216, 231, 18, 17, 200, 232, 38, 250, 216, 232, 241, 243, 200, 234, 6, 220, 216, 234, 209, 213, 200, 235, 230, 190, 216, 236, 177, 183, 200, 237, 198, 160, 216, 238, 191, 190, 72, 239, 175, 189, 88, 240, 159, 160, 72, 241, 143, 159, 88, 242, 127, 130, 72, 243, 111, 129, 88, 244, 95, 100, 72, 245, 79, 99, 88, 246, 63, 70, 72, 247, 47, 69, 88, 248, 40, 98, 200, 249, 15, 39, 88, 250, 8, 68, 200, 250, 248, 67, 216, 251, 232, 38, 200, 252, 216, 37, 216, 253, 200, 8, 200, 254, 184, 7, 216, 255, 167, 234, 200, 0, 151, 233, 216, 1, 135, 204, 200, 2, 119, 203, 216, 3, 112, 233, 72, 4, 96, 232, 88, 5, 80, 203, 72, 6, 64, 202, 88, 7, 48, 173, 72, 8, 32, 172, 88, 9, 16, 143, 72, 10, 0, 142, 88, 10, 240, 113, 72, 11, 224, 112, 88, 12, 217, 141, 200, 13, 192, 82, 88, 14, 185, 111, 200, 15, 169, 110, 216, 16, 153, 81, 200, 17, 137, 80, 216, 18, 121, 51, 200, 19, 105, 50, 216, 20, 89, 21, 200, 21, 73, 20, 216, 22, 56, 247, 200, 23, 40, 246, 216, 24, 34, 20, 72, 25, 8, 216, 216, 26, 1, 246, 72, 26, 241, 245, 88, 27, 225, 216, 72, 28, 209, 215, 88, 29, 193, 186, 72, 30, 177, 185, 88, 31, 161, 156, 72, 32, 117, 207, 244, 33, 129, 98, 100, 34, 85, 177, 244, 35, 106, 112, 212, 36, 53, 147, 244, 37, 74, 96, 228, 38, 21, 117, 244, 39, 42, 66, 228, 39, 254, 146, 116, 41, 10, 36, 228, 41, 222, 116, 116, 42, 234, 6, 228, 43, 190, 86, 116, 44, 211, 35, 100, 45, 158, 56, 116, 46, 179, 5, 100, 47, 126, 26, 116, 48, 146, 231, 100, 49, 103, 54, 244, 50, 114, 201, 100, 51, 71, 24, 244, 52, 82, 171, 100, 53, 38, 250, 244, 54, 50, 141, 100, 55, 6, 220, 244, 56, 27, 169, 228, 56, 230, 190, 244, 57, 251, 139, 228, 58, 198, 160, 244, 59, 219, 109, 228, 60, 175, 189, 116, 61, 187, 79, 228, 62, 143, 159, 116, 63, 155, 49, 228, 64, 111, 129, 116, 65, 132, 78, 100, 66, 79, 99, 116, 67, 100, 48, 100, 68, 47, 69, 116, 69, 68, 18, 100, 69, 243, 119, 244, 71, 45, 46, 228, 71, 211, 89, 244, 73, 13, 16, 228, 73, 179, 59, 244, 74, 236, 242, 228, 75, 156, 88, 116, 76, 214, 15, 100, 77, 124, 58, 116, 78, 182, 13, 72, 79, 92, 56, 88, 80, 149, 239, 72, 81, 60, 26, 88, 82, 117, 209, 72, 83, 27, 252, 88, 84, 85, 179, 72, 84, 251, 222, 88, 86, 53, 149, 72, 86, 228, 250, 216, 88, 30, 177, 200, 88, 196, 220, 216, 89, 254, 147, 200, 90, 164, 190, 216, 91, 222, 117, 200, 92, 132, 160, 216, 93, 190, 87, 200, 94, 100, 130, 216, 95, 158, 57, 200, 96, 77, 159, 88, 97, 135, 86, 72, 98, 45, 129, 88, 99, 103, 56, 72, 100, 13, 99, 88, 101, 71, 26, 72, 101, 237, 69, 88, 103, 38, 252, 72, 103, 205, 39, 88, 105, 6, 222, 72, 105, 173, 9, 88, 106, 230, 192, 72, 107, 150, 37, 216, 108, 207, 220, 200, 109, 118, 7, 216, 110, 175, 190, 200, 111, 85, 233, 216, 112, 143, 160, 200, 113, 53, 203, 216, 114, 111, 130, 200, 115, 21, 173, 216, 116, 79, 100, 200, 116, 254, 202, 88, 118, 56, 129, 72, 118, 222, 172, 88, 120, 24, 99, 72, 120, 190, 142, 88, 121, 248, 69, 72, 122, 158, 112, 88, 123, 216, 39, 72, 124, 126, 82, 88, 125, 184, 9, 72, 126, 94, 52, 88, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 9, 0, 0, 0, 25, 255, 255, 255, 255, 94, 61, 52, 236, 255, 255, 255, 255, 156, 207, 98, 12, 255, 255, 255, 255, 157, 164, 230, 252, 255, 255, 255, 255, 158, 184, 126, 140, 255, 255, 255, 255, 159, 186, 214, 124, 255, 255, 255, 255, 160, 182, 136, 220, 255, 255, 255, 255, 161, 56, 255, 76, 255, 255, 255, 255, 162, 149, 25, 92, 255, 255, 255, 255, 163, 132, 252, 76, 255, 255, 255, 255, 164, 116, 251, 92, 255, 255, 255, 255, 165, 100, 222, 76, 255, 255, 255, 255, 166, 94, 23, 220, 255, 255, 255, 255, 167, 68, 192, 76, 255, 255, 255, 255, 168, 61, 249, 220, 255, 255, 255, 255, 169, 36, 162, 76, 255, 255, 255, 255, 170, 29, 219, 220, 255, 255, 255, 255, 171, 4, 132, 76, 255, 255, 255, 255, 171, 253, 189, 220, 255, 255, 255, 255, 172, 228, 102, 76, 255, 255, 255, 255, 173, 221, 159, 220, 255, 255, 255, 255, 174, 205, 130, 204, 255, 255, 255, 255, 175, 189, 129, 220, 255, 255, 255, 255, 176, 173, 100, 204, 255, 255, 255, 255, 177, 166, 158, 92, 255, 255, 255, 255, 178, 141, 70, 204, 255, 255, 255, 255, 179, 134, 128, 92, 255, 255, 255, 255, 180, 109, 40, 204, 255, 255, 255, 255, 181, 102, 98, 92, 255, 255, 255, 255, 182, 77, 10, 204, 255, 255, 255, 255, 183, 70, 68, 92, 255, 255, 255, 255, 184, 44, 236, 204, 255, 255, 255, 255, 185, 38, 38, 92, 255, 255, 255, 255, 186, 22, 9, 76, 255, 255, 255, 255, 187, 15, 66, 220, 255, 255, 255, 255, 187, 245, 235, 76, 255, 255, 255, 255, 188, 239, 36, 220, 255, 255, 255, 255, 189, 213, 205, 76, 255, 255, 255, 255, 190, 158, 77, 108, 255, 255, 255, 255, 190, 207, 6, 168, 255, 255, 255, 255, 191, 181, 175, 24, 255, 255, 255, 255, 192, 184, 49, 56, 255, 255, 255, 255, 193, 121, 239, 168, 255, 255, 255, 255, 194, 152, 19, 56, 255, 255, 255, 255, 195, 89, 209, 168, 255, 255, 255, 255, 196, 119, 245, 56, 255, 255, 255, 255, 197, 57, 179, 168, 255, 255, 255, 255, 198, 97, 17, 184, 255, 255, 255, 255, 199, 25, 149, 168, 255, 255, 255, 255, 200, 64, 243, 184, 255, 255, 255, 255, 201, 2, 178, 40, 255, 255, 255, 255, 202, 32, 213, 184, 255, 255, 255, 255, 202, 226, 148, 40, 255, 255, 255, 255, 204, 0, 183, 184, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 230, 200, 255, 255, 255, 255, 211, 136, 68, 216, 255, 255, 255, 255, 212, 74, 3, 72, 255, 255, 255, 255, 213, 104, 38, 216, 255, 255, 255, 255, 214, 41, 229, 72, 255, 255, 255, 255, 215, 72, 8, 216, 255, 255, 255, 255, 216, 9, 199, 72, 255, 255, 255, 255, 217, 39, 234, 216, 255, 255, 255, 255, 217, 233, 169, 72, 255, 255, 255, 255, 219, 17, 7, 88, 255, 255, 255, 255, 219, 210, 197, 200, 255, 255, 255, 255, 220, 222, 116, 88, 255, 255, 255, 255, 221, 169, 109, 72, 255, 255, 255, 255, 222, 190, 86, 88, 255, 255, 255, 255, 223, 137, 79, 72, 255, 255, 255, 255, 224, 158, 56, 88, 255, 255, 255, 255, 225, 105, 49, 72, 255, 255, 255, 255, 226, 126, 26, 88, 255, 255, 255, 255, 227, 73, 19, 72, 255, 255, 255, 255, 228, 93, 252, 88, 255, 255, 255, 255, 229, 40, 245, 72, 255, 255, 255, 255, 230, 71, 24, 216, 255, 255, 255, 255, 231, 18, 17, 200, 255, 255, 255, 255, 232, 38, 250, 216, 255, 255, 255, 255, 232, 241, 243, 200, 255, 255, 255, 255, 234, 6, 220, 216, 255, 255, 255, 255, 234, 209, 213, 200, 255, 255, 255, 255, 235, 230, 190, 216, 255, 255, 255, 255, 236, 177, 183, 200, 255, 255, 255, 255, 237, 198, 160, 216, 255, 255, 255, 255, 238, 191, 190, 72, 255, 255, 255, 255, 239, 175, 189, 88, 255, 255, 255, 255, 240, 159, 160, 72, 255, 255, 255, 255, 241, 143, 159, 88, 255, 255, 255, 255, 242, 127, 130, 72, 255, 255, 255, 255, 243, 111, 129, 88, 255, 255, 255, 255, 244, 95, 100, 72, 255, 255, 255, 255, 245, 79, 99, 88, 255, 255, 255, 255, 246, 63, 70, 72, 255, 255, 255, 255, 247, 47, 69, 88, 255, 255, 255, 255, 248, 40, 98, 200, 255, 255, 255, 255, 249, 15, 39, 88, 255, 255, 255, 255, 250, 8, 68, 200, 255, 255, 255, 255, 250, 248, 67, 216, 255, 255, 255, 255, 251, 232, 38, 200, 255, 255, 255, 255, 252, 216, 37, 216, 255, 255, 255, 255, 253, 200, 8, 200, 255, 255, 255, 255, 254, 184, 7, 216, 255, 255, 255, 255, 255, 167, 234, 200, 0, 0, 0, 0, 0, 151, 233, 216, 0, 0, 0, 0, 1, 135, 204, 200, 0, 0, 0, 0, 2, 119, 203, 216, 0, 0, 0, 0, 3, 112, 233, 72, 0, 0, 0, 0, 4, 96, 232, 88, 0, 0, 0, 0, 5, 80, 203, 72, 0, 0, 0, 0, 6, 64, 202, 88, 0, 0, 0, 0, 7, 48, 173, 72, 0, 0, 0, 0, 8, 32, 172, 88, 0, 0, 0, 0, 9, 16, 143, 72, 0, 0, 0, 0, 10, 0, 142, 88, 0, 0, 0, 0, 10, 240, 113, 72, 0, 0, 0, 0, 11, 224, 112, 88, 0, 0, 0, 0, 12, 217, 141, 200, 0, 0, 0, 0, 13, 192, 82, 88, 0, 0, 0, 0, 14, 185, 111, 200, 0, 0, 0, 0, 15, 169, 110, 216, 0, 0, 0, 0, 16, 153, 81, 200, 0, 0, 0, 0, 17, 137, 80, 216, 0, 0, 0, 0, 18, 121, 51, 200, 0, 0, 0, 0, 19, 105, 50, 216, 0, 0, 0, 0, 20, 89, 21, 200, 0, 0, 0, 0, 21, 73, 20, 216, 0, 0, 0, 0, 22, 56, 247, 200, 0, 0, 0, 0, 23, 40, 246, 216, 0, 0, 0, 0, 24, 34, 20, 72, 0, 0, 0, 0, 25, 8, 216, 216, 0, 0, 0, 0, 26, 1, 246, 72, 0, 0, 0, 0, 26, 241, 245, 88, 0, 0, 0, 0, 27, 225, 216, 72, 0, 0, 0, 0, 28, 209, 215, 88, 0, 0, 0, 0, 29, 193, 186, 72, 0, 0, 0, 0, 30, 177, 185, 88, 0, 0, 0, 0, 31, 161, 156, 72, 0, 0, 0, 0, 32, 117, 207, 244, 0, 0, 0, 0, 33, 129, 98, 100, 0, 0, 0, 0, 34, 85, 177, 244, 0, 0, 0, 0, 35, 106, 112, 212, 0, 0, 0, 0, 36, 53, 147, 244, 0, 0, 0, 0, 37, 74, 96, 228, 0, 0, 0, 0, 38, 21, 117, 244, 0, 0, 0, 0, 39, 42, 66, 228, 0, 0, 0, 0, 39, 254, 146, 116, 0, 0, 0, 0, 41, 10, 36, 228, 0, 0, 0, 0, 41, 222, 116, 116, 0, 0, 0, 0, 42, 234, 6, 228, 0, 0, 0, 0, 43, 190, 86, 116, 0, 0, 0, 0, 44, 211, 35, 100, 0, 0, 0, 0, 45, 158, 56, 116, 0, 0, 0, 0, 46, 179, 5, 100, 0, 0, 0, 0, 47, 126, 26, 116, 0, 0, 0, 0, 48, 146, 231, 100, 0, 0, 0, 0, 49, 103, 54, 244, 0, 0, 0, 0, 50, 114, 201, 100, 0, 0, 0, 0, 51, 71, 24, 244, 0, 0, 0, 0, 52, 82, 171, 100, 0, 0, 0, 0, 53, 38, 250, 244, 0, 0, 0, 0, 54, 50, 141, 100, 0, 0, 0, 0, 55, 6, 220, 244, 0, 0, 0, 0, 56, 27, 169, 228, 0, 0, 0, 0, 56, 230, 190, 244, 0, 0, 0, 0, 57, 251, 139, 228, 0, 0, 0, 0, 58, 198, 160, 244, 0, 0, 0, 0, 59, 219, 109, 228, 0, 0, 0, 0, 60, 175, 189, 116, 0, 0, 0, 0, 61, 187, 79, 228, 0, 0, 0, 0, 62, 143, 159, 116, 0, 0, 0, 0, 63, 155, 49, 228, 0, 0, 0, 0, 64, 111, 129, 116, 0, 0, 0, 0, 65, 132, 78, 100, 0, 0, 0, 0, 66, 79, 99, 116, 0, 0, 0, 0, 67, 100, 48, 100, 0, 0, 0, 0, 68, 47, 69, 116, 0, 0, 0, 0, 69, 68, 18, 100, 0, 0, 0, 0, 69, 243, 119, 244, 0, 0, 0, 0, 71, 45, 46, 228, 0, 0, 0, 0, 71, 211, 89, 244, 0, 0, 0, 0, 73, 13, 16, 228, 0, 0, 0, 0, 73, 179, 59, 244, 0, 0, 0, 0, 74, 236, 242, 228, 0, 0, 0, 0, 75, 156, 88, 116, 0, 0, 0, 0, 76, 214, 15, 100, 0, 0, 0, 0, 77, 124, 58, 116, 0, 0, 0, 0, 78, 182, 13, 72, 0, 0, 0, 0, 79, 92, 56, 88, 0, 0, 0, 0, 80, 149, 239, 72, 0, 0, 0, 0, 81, 60, 26, 88, 0, 0, 0, 0, 82, 117, 209, 72, 0, 0, 0, 0, 83, 27, 252, 88, 0, 0, 0, 0, 84, 85, 179, 72, 0, 0, 0, 0, 84, 251, 222, 88, 0, 0, 0, 0, 86, 53, 149, 72, 0, 0, 0, 0, 86, 228, 250, 216, 0, 0, 0, 0, 88, 30, 177, 200, 0, 0, 0, 0, 88, 196, 220, 216, 0, 0, 0, 0, 89, 254, 147, 200, 0, 0, 0, 0, 90, 164, 190, 216, 0, 0, 0, 0, 91, 222, 117, 200, 0, 0, 0, 0, 92, 132, 160, 216, 0, 0, 0, 0, 93, 190, 87, 200, 0, 0, 0, 0, 94, 100, 130, 216, 0, 0, 0, 0, 95, 158, 57, 200, 0, 0, 0, 0, 96, 77, 159, 88, 0, 0, 0, 0, 97, 135, 86, 72, 0, 0, 0, 0, 98, 45, 129, 88, 0, 0, 0, 0, 99, 103, 56, 72, 0, 0, 0, 0, 100, 13, 99, 88, 0, 0, 0, 0, 101, 71, 26, 72, 0, 0, 0, 0, 101, 237, 69, 88, 0, 0, 0, 0, 103, 38, 252, 72, 0, 0, 0, 0, 103, 205, 39, 88, 0, 0, 0, 0, 105, 6, 222, 72, 0, 0, 0, 0, 105, 173, 9, 88, 0, 0, 0, 0, 106, 230, 192, 72, 0, 0, 0, 0, 107, 150, 37, 216, 0, 0, 0, 0, 108, 207, 220, 200, 0, 0, 0, 0, 109, 118, 7, 216, 0, 0, 0, 0, 110, 175, 190, 200, 0, 0, 0, 0, 111, 85, 233, 216, 0, 0, 0, 0, 112, 143, 160, 200, 0, 0, 0, 0, 113, 53, 203, 216, 0, 0, 0, 0, 114, 111, 130, 200, 0, 0, 0, 0, 115, 21, 173, 216, 0, 0, 0, 0, 116, 79, 100, 200, 0, 0, 0, 0, 116, 254, 202, 88, 0, 0, 0, 0, 118, 56, 129, 72, 0, 0, 0, 0, 118, 222, 172, 88, 0, 0, 0, 0, 120, 24, 99, 72, 0, 0, 0, 0, 120, 190, 142, 88, 0, 0, 0, 0, 121, 248, 69, 72, 0, 0, 0, 0, 122, 158, 112, 88, 0, 0, 0, 0, 123, 216, 39, 72, 0, 0, 0, 0, 124, 126, 82, 88, 0, 0, 0, 0, 125, 184, 9, 72, 0, 0, 0, 0, 126, 94, 52, 88, 0, 0, 0, 0, 127, 151, 235, 72, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 255, 255, 206, 148, 0, 0, 255, 255, 220, 164, 1, 4, 255, 255, 206, 148, 0, 8, 255, 255, 220, 216, 1, 4, 255, 255, 206, 200, 0, 8, 255, 255, 220, 216, 1, 12, 255, 255, 220, 216, 1, 16, 255, 255, 234, 232, 1, 20, 255, 255, 220, 216, 1, 4, 76, 77, 84, 0, 78, 68, 84, 0, 78, 83, 84, 0, 78, 80, 84, 0, 78, 87, 84, 0, 78, 68, 68, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 78, 83, 84, 51, 58, 51, 48, 78, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Pacific": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 211, 118, 15, 32, 212, 83, 125, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Pacific": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 184, 189, 160, 159, 187, 21, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 211, 118, 15, 32, 212, 83, 125, 16, 213, 85, 241, 32, 214, 32, 234, 16, 215, 53, 211, 32, 216, 0, 204, 16, 217, 21, 181, 32, 217, 224, 174, 16, 218, 254, 209, 160, 219, 192, 144, 16, 220, 222, 179, 160, 221, 169, 172, 144, 222, 190, 149, 160, 223, 137, 142, 144, 224, 158, 119, 160, 225, 105, 112, 144, 226, 126, 89, 160, 227, 73, 82, 144, 228, 94, 59, 160, 229, 41, 52, 144, 230, 71, 88, 32, 231, 18, 81, 16, 232, 39, 58, 32, 232, 242, 51, 16, 234, 7, 28, 32, 234, 210, 21, 16, 235, 230, 254, 32, 236, 177, 247, 16, 237, 198, 224, 32, 238, 145, 217, 16, 239, 175, 252, 160, 240, 113, 187, 16, 241, 143, 222, 160, 242, 127, 193, 144, 243, 111, 192, 160, 244, 95, 163, 144, 245, 79, 162, 160, 246, 63, 133, 144, 247, 47, 132, 160, 248, 40, 162, 16, 249, 15, 102, 160, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 8, 32, 235, 160, 9, 16, 206, 144, 10, 0, 205, 160, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 61, 118, 236, 255, 255, 255, 255, 158, 184, 189, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 211, 118, 15, 32, 255, 255, 255, 255, 212, 83, 125, 16, 255, 255, 255, 255, 213, 85, 241, 32, 255, 255, 255, 255, 214, 32, 234, 16, 255, 255, 255, 255, 215, 53, 211, 32, 255, 255, 255, 255, 216, 0, 204, 16, 255, 255, 255, 255, 217, 21, 181, 32, 255, 255, 255, 255, 217, 224, 174, 16, 255, 255, 255, 255, 218, 254, 209, 160, 255, 255, 255, 255, 219, 192, 144, 16, 255, 255, 255, 255, 220, 222, 179, 160, 255, 255, 255, 255, 221, 169, 172, 144, 255, 255, 255, 255, 222, 190, 149, 160, 255, 255, 255, 255, 223, 137, 142, 144, 255, 255, 255, 255, 224, 158, 119, 160, 255, 255, 255, 255, 225, 105, 112, 144, 255, 255, 255, 255, 226, 126, 89, 160, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 59, 160, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 88, 32, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 58, 32, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 28, 32, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 254, 32, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 224, 32, 255, 255, 255, 255, 238, 145, 217, 16, 255, 255, 255, 255, 239, 175, 252, 160, 255, 255, 255, 255, 240, 113, 187, 16, 255, 255, 255, 255, 241, 143, 222, 160, 255, 255, 255, 255, 242, 127, 193, 144, 255, 255, 255, 255, 243, 111, 192, 160, 255, 255, 255, 255, 244, 95, 163, 144, 255, 255, 255, 255, 245, 79, 162, 160, 255, 255, 255, 255, 246, 63, 133, 144, 255, 255, 255, 255, 247, 47, 132, 160, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 249, 15, 102, 160, 255, 255, 255, 255, 250, 8, 132, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 8, 32, 235, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 10, 0, 205, 160, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 140, 148, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Canada/Saskatchewan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 24, 134, 253, 147, 28, 158, 184, 175, 144, 159, 187, 7, 128, 181, 101, 79, 240, 182, 48, 72, 224, 183, 69, 49, 240, 184, 16, 42, 224, 185, 37, 19, 240, 185, 240, 12, 224, 187, 14, 48, 112, 187, 207, 238, 224, 188, 238, 18, 112, 189, 185, 11, 96, 194, 114, 8, 240, 195, 97, 235, 224, 196, 81, 234, 240, 197, 56, 147, 96, 198, 49, 204, 240, 199, 33, 175, 224, 200, 26, 233, 112, 201, 10, 204, 96, 201, 250, 203, 112, 202, 234, 174, 96, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 99, 140, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 218, 254, 195, 144, 219, 192, 130, 0, 220, 222, 165, 144, 221, 169, 158, 128, 222, 190, 135, 144, 223, 137, 128, 128, 224, 158, 105, 144, 225, 105, 98, 128, 226, 126, 75, 144, 227, 73, 68, 128, 228, 94, 45, 144, 229, 41, 38, 128, 230, 71, 74, 16, 231, 18, 67, 0, 232, 39, 44, 16, 232, 242, 37, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, + "zoneinfo/Canada/Saskatchewan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 24, 134, 253, 147, 28, 158, 184, 175, 144, 159, 187, 7, 128, 181, 101, 79, 240, 182, 48, 72, 224, 183, 69, 49, 240, 184, 16, 42, 224, 185, 37, 19, 240, 185, 240, 12, 224, 187, 14, 48, 112, 187, 207, 238, 224, 188, 238, 18, 112, 189, 185, 11, 96, 194, 114, 8, 240, 195, 97, 235, 224, 196, 81, 234, 240, 197, 56, 147, 96, 198, 49, 204, 240, 199, 33, 175, 224, 200, 26, 233, 112, 201, 10, 204, 96, 201, 250, 203, 112, 202, 234, 174, 96, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 211, 99, 140, 16, 212, 83, 111, 0, 213, 85, 227, 16, 214, 32, 220, 0, 215, 53, 197, 16, 216, 0, 190, 0, 217, 21, 167, 16, 217, 224, 160, 0, 218, 254, 195, 144, 219, 192, 130, 0, 220, 222, 165, 144, 221, 169, 158, 128, 222, 190, 135, 144, 223, 137, 128, 128, 224, 158, 105, 144, 225, 105, 98, 128, 226, 126, 75, 144, 227, 73, 68, 128, 228, 94, 45, 144, 229, 41, 38, 128, 230, 71, 74, 16, 231, 18, 67, 0, 232, 39, 44, 16, 232, 242, 37, 0, 235, 230, 240, 16, 236, 214, 211, 0, 237, 198, 210, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 134, 253, 147, 28, 255, 255, 255, 255, 158, 184, 175, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 181, 101, 79, 240, 255, 255, 255, 255, 182, 48, 72, 224, 255, 255, 255, 255, 183, 69, 49, 240, 255, 255, 255, 255, 184, 16, 42, 224, 255, 255, 255, 255, 185, 37, 19, 240, 255, 255, 255, 255, 185, 240, 12, 224, 255, 255, 255, 255, 187, 14, 48, 112, 255, 255, 255, 255, 187, 207, 238, 224, 255, 255, 255, 255, 188, 238, 18, 112, 255, 255, 255, 255, 189, 185, 11, 96, 255, 255, 255, 255, 194, 114, 8, 240, 255, 255, 255, 255, 195, 97, 235, 224, 255, 255, 255, 255, 196, 81, 234, 240, 255, 255, 255, 255, 197, 56, 147, 96, 255, 255, 255, 255, 198, 49, 204, 240, 255, 255, 255, 255, 199, 33, 175, 224, 255, 255, 255, 255, 200, 26, 233, 112, 255, 255, 255, 255, 201, 10, 204, 96, 255, 255, 255, 255, 201, 250, 203, 112, 255, 255, 255, 255, 202, 234, 174, 96, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 211, 99, 140, 16, 255, 255, 255, 255, 212, 83, 111, 0, 255, 255, 255, 255, 213, 85, 227, 16, 255, 255, 255, 255, 214, 32, 220, 0, 255, 255, 255, 255, 215, 53, 197, 16, 255, 255, 255, 255, 216, 0, 190, 0, 255, 255, 255, 255, 217, 21, 167, 16, 255, 255, 255, 255, 217, 224, 160, 0, 255, 255, 255, 255, 218, 254, 195, 144, 255, 255, 255, 255, 219, 192, 130, 0, 255, 255, 255, 255, 220, 222, 165, 144, 255, 255, 255, 255, 221, 169, 158, 128, 255, 255, 255, 255, 222, 190, 135, 144, 255, 255, 255, 255, 223, 137, 128, 128, 255, 255, 255, 255, 224, 158, 105, 144, 255, 255, 255, 255, 225, 105, 98, 128, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 68, 128, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 38, 128, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 67, 0, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 37, 0, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 214, 211, 0, 255, 255, 255, 255, 237, 198, 210, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 255, 255, 157, 228, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 255, 255, 171, 160, 0, 20, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 10}, - "zoneinfo/Canada/Yukon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 251, 29, 95, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Canada/Yukon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 128, 0, 0, 0, 158, 184, 203, 176, 159, 187, 35, 160, 160, 208, 12, 176, 161, 162, 210, 128, 203, 137, 40, 176, 210, 35, 244, 112, 210, 97, 52, 32, 247, 47, 118, 144, 248, 40, 162, 16, 251, 29, 95, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 8, 0, 0, 0, 33, 255, 255, 255, 255, 125, 134, 138, 156, 255, 255, 255, 255, 158, 184, 203, 176, 255, 255, 255, 255, 159, 187, 35, 160, 255, 255, 255, 255, 160, 208, 12, 176, 255, 255, 255, 255, 161, 162, 210, 128, 255, 255, 255, 255, 203, 137, 40, 176, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 52, 32, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 251, 29, 95, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 5, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 129, 100, 0, 0, 255, 255, 143, 128, 1, 4, 255, 255, 129, 112, 0, 8, 255, 255, 143, 128, 1, 12, 255, 255, 143, 128, 1, 16, 255, 255, 157, 144, 1, 20, 255, 255, 143, 128, 0, 25, 255, 255, 157, 144, 1, 29, 76, 77, 84, 0, 89, 68, 84, 0, 89, 83, 84, 0, 89, 87, 84, 0, 89, 80, 84, 0, 89, 68, 68, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Chile/Continental": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 211, 220, 143, 192, 212, 27, 201, 176, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 52, 44, 77, 52, 46, 49, 46, 54, 47, 50, 52, 10}, + "zoneinfo/Chile/Continental": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 128, 0, 0, 0, 143, 48, 71, 70, 155, 92, 229, 80, 159, 124, 226, 198, 161, 0, 113, 192, 176, 94, 119, 198, 177, 119, 61, 64, 178, 65, 0, 208, 179, 88, 112, 192, 180, 34, 52, 80, 181, 57, 164, 64, 182, 3, 103, 208, 183, 26, 215, 192, 183, 228, 155, 80, 184, 253, 92, 192, 185, 199, 32, 80, 204, 28, 110, 64, 204, 108, 231, 208, 211, 220, 143, 192, 212, 27, 201, 176, 213, 51, 85, 192, 213, 118, 146, 64, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 8, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 29, 198, 255, 255, 255, 255, 143, 48, 71, 70, 255, 255, 255, 255, 155, 92, 229, 80, 255, 255, 255, 255, 159, 124, 226, 198, 255, 255, 255, 255, 161, 0, 113, 192, 255, 255, 255, 255, 176, 94, 119, 198, 255, 255, 255, 255, 177, 119, 61, 64, 255, 255, 255, 255, 178, 65, 0, 208, 255, 255, 255, 255, 179, 88, 112, 192, 255, 255, 255, 255, 180, 34, 52, 80, 255, 255, 255, 255, 181, 57, 164, 64, 255, 255, 255, 255, 182, 3, 103, 208, 255, 255, 255, 255, 183, 26, 215, 192, 255, 255, 255, 255, 183, 228, 155, 80, 255, 255, 255, 255, 184, 253, 92, 192, 255, 255, 255, 255, 185, 199, 32, 80, 255, 255, 255, 255, 204, 28, 110, 64, 255, 255, 255, 255, 204, 108, 231, 208, 255, 255, 255, 255, 211, 220, 143, 192, 255, 255, 255, 255, 212, 27, 201, 176, 255, 255, 255, 255, 213, 51, 85, 192, 255, 255, 255, 255, 213, 118, 146, 64, 255, 255, 255, 255, 253, 209, 60, 64, 255, 255, 255, 255, 254, 146, 250, 176, 255, 255, 255, 255, 255, 204, 205, 192, 0, 0, 0, 0, 0, 114, 220, 176, 0, 0, 0, 0, 1, 117, 80, 192, 0, 0, 0, 0, 2, 64, 73, 176, 0, 0, 0, 0, 3, 85, 50, 192, 0, 0, 0, 0, 4, 32, 43, 176, 0, 0, 0, 0, 5, 62, 79, 64, 0, 0, 0, 0, 6, 0, 13, 176, 0, 0, 0, 0, 7, 11, 188, 64, 0, 0, 0, 0, 7, 223, 239, 176, 0, 0, 0, 0, 8, 254, 19, 64, 0, 0, 0, 0, 9, 191, 209, 176, 0, 0, 0, 0, 10, 221, 245, 64, 0, 0, 0, 0, 11, 168, 238, 48, 0, 0, 0, 0, 12, 189, 215, 64, 0, 0, 0, 0, 13, 136, 208, 48, 0, 0, 0, 0, 14, 157, 185, 64, 0, 0, 0, 0, 15, 104, 178, 48, 0, 0, 0, 0, 16, 134, 213, 192, 0, 0, 0, 0, 17, 72, 148, 48, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 40, 118, 48, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 17, 146, 176, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 22, 241, 116, 176, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 24, 209, 86, 176, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 177, 56, 176, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 145, 26, 176, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 112, 252, 176, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 127, 3, 48, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 57, 251, 48, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 25, 221, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 249, 191, 48, 0, 0, 0, 0, 38, 242, 248, 192, 0, 0, 0, 0, 39, 217, 161, 48, 0, 0, 0, 0, 40, 247, 196, 192, 0, 0, 0, 0, 41, 194, 189, 176, 0, 0, 0, 0, 42, 215, 166, 192, 0, 0, 0, 0, 43, 162, 159, 176, 0, 0, 0, 0, 44, 183, 136, 192, 0, 0, 0, 0, 45, 130, 129, 176, 0, 0, 0, 0, 46, 151, 106, 192, 0, 0, 0, 0, 47, 98, 99, 176, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 66, 69, 176, 0, 0, 0, 0, 50, 96, 105, 64, 0, 0, 0, 0, 51, 61, 215, 48, 0, 0, 0, 0, 52, 64, 75, 64, 0, 0, 0, 0, 53, 11, 68, 48, 0, 0, 0, 0, 54, 13, 184, 64, 0, 0, 0, 0, 55, 6, 213, 176, 0, 0, 0, 0, 56, 0, 15, 64, 0, 0, 0, 0, 56, 203, 8, 48, 0, 0, 0, 0, 57, 233, 43, 192, 0, 0, 0, 0, 58, 170, 234, 48, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 138, 204, 48, 0, 0, 0, 0, 61, 168, 239, 192, 0, 0, 0, 0, 62, 106, 174, 48, 0, 0, 0, 0, 63, 136, 209, 192, 0, 0, 0, 0, 64, 83, 202, 176, 0, 0, 0, 0, 65, 104, 179, 192, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 72, 149, 192, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 239, 2, 48, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 188, 111, 48, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 75, 184, 0, 176, 0, 0, 0, 0, 76, 177, 58, 64, 0, 0, 0, 0, 77, 198, 7, 48, 0, 0, 0, 0, 78, 80, 130, 192, 0, 0, 0, 0, 79, 156, 174, 176, 0, 0, 0, 0, 80, 66, 217, 192, 0, 0, 0, 0, 81, 124, 144, 176, 0, 0, 0, 0, 82, 43, 246, 64, 0, 0, 0, 0, 83, 92, 114, 176, 0, 0, 0, 0, 84, 11, 216, 64, 0, 0, 0, 0, 87, 55, 230, 48, 0, 0, 0, 0, 87, 175, 236, 192, 0, 0, 0, 0, 89, 23, 200, 48, 0, 0, 0, 0, 89, 143, 206, 192, 0, 0, 0, 0, 90, 247, 170, 48, 0, 0, 0, 0, 91, 111, 176, 192, 0, 0, 0, 0, 92, 169, 103, 176, 0, 0, 0, 0, 93, 116, 124, 192, 0, 0, 0, 0, 94, 137, 73, 176, 0, 0, 0, 0, 95, 84, 94, 192, 0, 0, 0, 0, 96, 105, 43, 176, 0, 0, 0, 0, 97, 52, 64, 192, 0, 0, 0, 0, 98, 73, 13, 176, 0, 0, 0, 0, 99, 20, 34, 192, 0, 0, 0, 0, 100, 40, 239, 176, 0, 0, 0, 0, 100, 244, 4, 192, 0, 0, 0, 0, 102, 18, 12, 48, 0, 0, 0, 0, 102, 221, 33, 64, 0, 0, 0, 0, 103, 241, 238, 48, 0, 0, 0, 0, 104, 189, 3, 64, 0, 0, 0, 0, 105, 209, 208, 48, 0, 0, 0, 0, 106, 156, 229, 64, 0, 0, 0, 0, 107, 177, 178, 48, 0, 0, 0, 0, 108, 124, 199, 64, 0, 0, 0, 0, 109, 145, 148, 48, 0, 0, 0, 0, 110, 92, 169, 64, 0, 0, 0, 0, 111, 122, 176, 176, 0, 0, 0, 0, 112, 60, 139, 64, 0, 0, 0, 0, 113, 90, 146, 176, 0, 0, 0, 0, 114, 37, 167, 192, 0, 0, 0, 0, 115, 58, 116, 176, 0, 0, 0, 0, 116, 5, 137, 192, 0, 0, 0, 0, 117, 26, 86, 176, 0, 0, 0, 0, 117, 229, 107, 192, 0, 0, 0, 0, 118, 250, 56, 176, 0, 0, 0, 0, 119, 197, 77, 192, 0, 0, 0, 0, 120, 218, 26, 176, 0, 0, 0, 0, 121, 165, 47, 192, 0, 0, 0, 0, 122, 195, 55, 48, 0, 0, 0, 0, 123, 133, 17, 192, 0, 0, 0, 0, 124, 163, 25, 48, 0, 0, 0, 0, 125, 110, 46, 64, 0, 0, 0, 0, 126, 130, 251, 48, 0, 0, 0, 0, 127, 78, 16, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 3, 1, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 3, 2, 3, 5, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 6, 255, 255, 189, 186, 0, 0, 255, 255, 189, 186, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 0, 12, 255, 255, 199, 192, 1, 12, 255, 255, 213, 208, 1, 16, 255, 255, 213, 208, 1, 16, 255, 255, 199, 192, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 45, 48, 53, 0, 45, 48, 52, 0, 45, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 60, 45, 48, 52, 62, 52, 60, 45, 48, 51, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 52, 44, 77, 52, 46, 49, 46, 54, 47, 50, 52, 10}, - "zoneinfo/Chile/EasterIsland": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 185, 199, 64, 136, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 10, 60, 45, 48, 54, 62, 54, 60, 45, 48, 53, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 50, 44, 77, 52, 46, 49, 46, 54, 47, 50, 50, 10}, + "zoneinfo/Chile/EasterIsland": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 185, 199, 64, 136, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 66, 8, 255, 255, 255, 255, 185, 199, 64, 136, 255, 255, 255, 255, 253, 209, 60, 64, 255, 255, 255, 255, 254, 146, 250, 176, 255, 255, 255, 255, 255, 204, 205, 192, 0, 0, 0, 0, 0, 114, 220, 176, 0, 0, 0, 0, 1, 117, 80, 192, 0, 0, 0, 0, 2, 64, 73, 176, 0, 0, 0, 0, 3, 85, 50, 192, 0, 0, 0, 0, 4, 32, 43, 176, 0, 0, 0, 0, 5, 62, 79, 64, 0, 0, 0, 0, 6, 0, 13, 176, 0, 0, 0, 0, 7, 11, 188, 64, 0, 0, 0, 0, 7, 223, 239, 176, 0, 0, 0, 0, 8, 254, 19, 64, 0, 0, 0, 0, 9, 191, 209, 176, 0, 0, 0, 0, 10, 221, 245, 64, 0, 0, 0, 0, 11, 168, 238, 48, 0, 0, 0, 0, 12, 189, 215, 64, 0, 0, 0, 0, 13, 136, 208, 48, 0, 0, 0, 0, 14, 157, 185, 64, 0, 0, 0, 0, 15, 104, 178, 48, 0, 0, 0, 0, 16, 134, 213, 192, 0, 0, 0, 0, 17, 72, 148, 48, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 40, 118, 48, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 17, 146, 176, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 22, 241, 116, 176, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 24, 209, 86, 176, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 177, 56, 176, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 145, 26, 176, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 112, 252, 176, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 127, 3, 48, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 57, 251, 48, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 25, 221, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 249, 191, 48, 0, 0, 0, 0, 38, 242, 248, 192, 0, 0, 0, 0, 39, 217, 161, 48, 0, 0, 0, 0, 40, 247, 196, 192, 0, 0, 0, 0, 41, 194, 189, 176, 0, 0, 0, 0, 42, 215, 166, 192, 0, 0, 0, 0, 43, 162, 159, 176, 0, 0, 0, 0, 44, 183, 136, 192, 0, 0, 0, 0, 45, 130, 129, 176, 0, 0, 0, 0, 46, 151, 106, 192, 0, 0, 0, 0, 47, 98, 99, 176, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 66, 69, 176, 0, 0, 0, 0, 50, 96, 105, 64, 0, 0, 0, 0, 51, 61, 215, 48, 0, 0, 0, 0, 52, 64, 75, 64, 0, 0, 0, 0, 53, 11, 68, 48, 0, 0, 0, 0, 54, 13, 184, 64, 0, 0, 0, 0, 55, 6, 213, 176, 0, 0, 0, 0, 56, 0, 15, 64, 0, 0, 0, 0, 56, 203, 8, 48, 0, 0, 0, 0, 57, 233, 43, 192, 0, 0, 0, 0, 58, 170, 234, 48, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 138, 204, 48, 0, 0, 0, 0, 61, 168, 239, 192, 0, 0, 0, 0, 62, 106, 174, 48, 0, 0, 0, 0, 63, 136, 209, 192, 0, 0, 0, 0, 64, 83, 202, 176, 0, 0, 0, 0, 65, 104, 179, 192, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 72, 149, 192, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 239, 2, 48, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 188, 111, 48, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 75, 184, 0, 176, 0, 0, 0, 0, 76, 177, 58, 64, 0, 0, 0, 0, 77, 198, 7, 48, 0, 0, 0, 0, 78, 80, 130, 192, 0, 0, 0, 0, 79, 156, 174, 176, 0, 0, 0, 0, 80, 66, 217, 192, 0, 0, 0, 0, 81, 124, 144, 176, 0, 0, 0, 0, 82, 43, 246, 64, 0, 0, 0, 0, 83, 92, 114, 176, 0, 0, 0, 0, 84, 11, 216, 64, 0, 0, 0, 0, 87, 55, 230, 48, 0, 0, 0, 0, 87, 175, 236, 192, 0, 0, 0, 0, 89, 23, 200, 48, 0, 0, 0, 0, 89, 143, 206, 192, 0, 0, 0, 0, 90, 247, 170, 48, 0, 0, 0, 0, 91, 111, 176, 192, 0, 0, 0, 0, 92, 169, 103, 176, 0, 0, 0, 0, 93, 116, 124, 192, 0, 0, 0, 0, 94, 137, 73, 176, 0, 0, 0, 0, 95, 84, 94, 192, 0, 0, 0, 0, 96, 105, 43, 176, 0, 0, 0, 0, 97, 52, 64, 192, 0, 0, 0, 0, 98, 73, 13, 176, 0, 0, 0, 0, 99, 20, 34, 192, 0, 0, 0, 0, 100, 40, 239, 176, 0, 0, 0, 0, 100, 244, 4, 192, 0, 0, 0, 0, 102, 18, 12, 48, 0, 0, 0, 0, 102, 221, 33, 64, 0, 0, 0, 0, 103, 241, 238, 48, 0, 0, 0, 0, 104, 189, 3, 64, 0, 0, 0, 0, 105, 209, 208, 48, 0, 0, 0, 0, 106, 156, 229, 64, 0, 0, 0, 0, 107, 177, 178, 48, 0, 0, 0, 0, 108, 124, 199, 64, 0, 0, 0, 0, 109, 145, 148, 48, 0, 0, 0, 0, 110, 92, 169, 64, 0, 0, 0, 0, 111, 122, 176, 176, 0, 0, 0, 0, 112, 60, 139, 64, 0, 0, 0, 0, 113, 90, 146, 176, 0, 0, 0, 0, 114, 37, 167, 192, 0, 0, 0, 0, 115, 58, 116, 176, 0, 0, 0, 0, 116, 5, 137, 192, 0, 0, 0, 0, 117, 26, 86, 176, 0, 0, 0, 0, 117, 229, 107, 192, 0, 0, 0, 0, 118, 250, 56, 176, 0, 0, 0, 0, 119, 197, 77, 192, 0, 0, 0, 0, 120, 218, 26, 176, 0, 0, 0, 0, 121, 165, 47, 192, 0, 0, 0, 0, 122, 195, 55, 48, 0, 0, 0, 0, 123, 133, 17, 192, 0, 0, 0, 0, 124, 163, 25, 48, 0, 0, 0, 0, 125, 110, 46, 64, 0, 0, 0, 0, 126, 130, 251, 48, 0, 0, 0, 0, 127, 78, 16, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 10, 60, 45, 48, 54, 62, 54, 60, 45, 48, 53, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 50, 44, 77, 52, 46, 49, 46, 54, 47, 50, 50, 10}, - "zoneinfo/Cuba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 172, 98, 194, 128, 177, 211, 148, 80, 178, 116, 93, 64, 200, 91, 102, 208, 200, 211, 81, 64, 202, 59, 72, 208, 202, 188, 109, 192, 204, 36, 101, 80, 204, 156, 79, 192, 209, 196, 11, 80, 210, 59, 245, 192, 211, 163, 237, 80, 212, 27, 215, 192, 247, 96, 5, 208, 247, 255, 125, 64, 249, 61, 68, 208, 249, 227, 83, 192, 250, 219, 59, 208, 251, 167, 134, 64, 252, 197, 169, 208, 253, 135, 104, 64, 254, 184, 0, 208, 255, 167, 227, 192, 0, 151, 226, 208, 1, 135, 197, 192, 2, 119, 196, 208, 3, 112, 226, 64, 4, 96, 225, 80, 5, 53, 20, 192, 6, 64, 195, 80, 7, 22, 72, 64, 8, 32, 165, 80, 8, 247, 123, 192, 10, 0, 135, 80, 10, 240, 106, 64, 11, 224, 105, 80, 12, 217, 134, 192, 13, 192, 75, 80, 14, 185, 104, 192, 15, 178, 162, 80, 16, 125, 155, 64, 17, 81, 234, 208, 18, 102, 183, 192, 19, 49, 204, 208, 20, 70, 153, 192, 21, 91, 130, 208, 22, 38, 123, 192, 23, 59, 100, 208, 24, 6, 93, 192, 25, 27, 70, 208, 25, 230, 63, 192, 26, 251, 40, 208, 27, 207, 92, 64, 28, 219, 10, 208, 29, 175, 62, 64, 30, 122, 83, 80, 31, 143, 32, 64, 32, 90, 53, 80, 33, 111, 2, 64, 34, 67, 81, 208, 35, 78, 228, 64, 36, 35, 51, 208, 37, 46, 198, 64, 38, 21, 138, 208, 39, 23, 226, 192, 39, 254, 167, 80, 40, 247, 210, 208, 41, 222, 137, 80, 42, 215, 180, 208, 43, 190, 107, 80, 44, 183, 150, 208, 45, 158, 77, 80, 46, 151, 120, 208, 47, 126, 47, 80, 48, 119, 90, 208, 49, 103, 75, 208, 50, 87, 60, 208, 51, 71, 45, 208, 52, 64, 89, 80, 53, 29, 213, 80, 54, 50, 176, 80, 54, 253, 183, 80, 56, 27, 204, 208, 56, 230, 211, 208, 57, 251, 174, 208, 58, 198, 181, 208, 59, 219, 144, 208, 60, 175, 210, 80, 61, 187, 114, 208, 62, 143, 180, 80, 63, 155, 84, 208, 64, 102, 91, 208, 69, 68, 53, 80, 69, 243, 140, 208, 71, 36, 23, 80, 71, 220, 169, 80, 73, 3, 249, 80, 73, 179, 80, 208, 74, 227, 219, 80, 75, 156, 109, 80, 76, 204, 247, 208, 77, 133, 137, 208, 78, 191, 78, 208, 79, 119, 224, 208, 80, 149, 246, 80, 81, 60, 19, 80, 82, 117, 216, 80, 83, 27, 245, 80, 84, 85, 186, 80, 84, 251, 215, 80, 86, 53, 156, 80, 86, 228, 243, 208, 88, 30, 184, 208, 88, 196, 213, 208, 89, 254, 154, 208, 90, 164, 183, 208, 91, 222, 124, 208, 92, 132, 153, 208, 93, 190, 94, 208, 94, 100, 123, 208, 95, 158, 64, 208, 96, 77, 152, 80, 97, 135, 93, 80, 98, 45, 122, 80, 99, 103, 63, 80, 100, 13, 92, 80, 101, 71, 33, 80, 101, 237, 62, 80, 103, 39, 3, 80, 103, 205, 32, 80, 105, 6, 229, 80, 105, 173, 2, 80, 106, 230, 199, 80, 107, 150, 30, 208, 108, 207, 227, 208, 109, 118, 0, 208, 110, 175, 197, 208, 111, 85, 226, 208, 112, 143, 167, 208, 113, 53, 196, 208, 114, 111, 137, 208, 115, 21, 166, 208, 116, 79, 107, 208, 116, 254, 195, 80, 118, 56, 136, 80, 118, 222, 165, 80, 120, 24, 106, 80, 120, 190, 135, 80, 121, 248, 76, 80, 122, 158, 105, 80, 123, 216, 46, 80, 124, 126, 75, 80, 125, 184, 16, 80, 126, 94, 45, 80, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 53, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 47, 48, 44, 77, 49, 49, 46, 49, 46, 48, 47, 49, 10}, + "zoneinfo/Cuba": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 128, 0, 0, 0, 172, 98, 194, 128, 177, 211, 148, 80, 178, 116, 93, 64, 200, 91, 102, 208, 200, 211, 81, 64, 202, 59, 72, 208, 202, 188, 109, 192, 204, 36, 101, 80, 204, 156, 79, 192, 209, 196, 11, 80, 210, 59, 245, 192, 211, 163, 237, 80, 212, 27, 215, 192, 247, 96, 5, 208, 247, 255, 125, 64, 249, 61, 68, 208, 249, 227, 83, 192, 250, 219, 59, 208, 251, 167, 134, 64, 252, 197, 169, 208, 253, 135, 104, 64, 254, 184, 0, 208, 255, 167, 227, 192, 0, 151, 226, 208, 1, 135, 197, 192, 2, 119, 196, 208, 3, 112, 226, 64, 4, 96, 225, 80, 5, 53, 20, 192, 6, 64, 195, 80, 7, 22, 72, 64, 8, 32, 165, 80, 8, 247, 123, 192, 10, 0, 135, 80, 10, 240, 106, 64, 11, 224, 105, 80, 12, 217, 134, 192, 13, 192, 75, 80, 14, 185, 104, 192, 15, 178, 162, 80, 16, 125, 155, 64, 17, 81, 234, 208, 18, 102, 183, 192, 19, 49, 204, 208, 20, 70, 153, 192, 21, 91, 130, 208, 22, 38, 123, 192, 23, 59, 100, 208, 24, 6, 93, 192, 25, 27, 70, 208, 25, 230, 63, 192, 26, 251, 40, 208, 27, 207, 92, 64, 28, 219, 10, 208, 29, 175, 62, 64, 30, 122, 83, 80, 31, 143, 32, 64, 32, 90, 53, 80, 33, 111, 2, 64, 34, 67, 81, 208, 35, 78, 228, 64, 36, 35, 51, 208, 37, 46, 198, 64, 38, 21, 138, 208, 39, 23, 226, 192, 39, 254, 167, 80, 40, 247, 210, 208, 41, 222, 137, 80, 42, 215, 180, 208, 43, 190, 107, 80, 44, 183, 150, 208, 45, 158, 77, 80, 46, 151, 120, 208, 47, 126, 47, 80, 48, 119, 90, 208, 49, 103, 75, 208, 50, 87, 60, 208, 51, 71, 45, 208, 52, 64, 89, 80, 53, 29, 213, 80, 54, 50, 176, 80, 54, 253, 183, 80, 56, 27, 204, 208, 56, 230, 211, 208, 57, 251, 174, 208, 58, 198, 181, 208, 59, 219, 144, 208, 60, 175, 210, 80, 61, 187, 114, 208, 62, 143, 180, 80, 63, 155, 84, 208, 64, 102, 91, 208, 69, 68, 53, 80, 69, 243, 140, 208, 71, 36, 23, 80, 71, 220, 169, 80, 73, 3, 249, 80, 73, 179, 80, 208, 74, 227, 219, 80, 75, 156, 109, 80, 76, 204, 247, 208, 77, 133, 137, 208, 78, 191, 78, 208, 79, 119, 224, 208, 80, 149, 246, 80, 81, 60, 19, 80, 82, 117, 216, 80, 83, 27, 245, 80, 84, 85, 186, 80, 84, 251, 215, 80, 86, 53, 156, 80, 86, 228, 243, 208, 88, 30, 184, 208, 88, 196, 213, 208, 89, 254, 154, 208, 90, 164, 183, 208, 91, 222, 124, 208, 92, 132, 153, 208, 93, 190, 94, 208, 94, 100, 123, 208, 95, 158, 64, 208, 96, 77, 152, 80, 97, 135, 93, 80, 98, 45, 122, 80, 99, 103, 63, 80, 100, 13, 92, 80, 101, 71, 33, 80, 101, 237, 62, 80, 103, 39, 3, 80, 103, 205, 32, 80, 105, 6, 229, 80, 105, 173, 2, 80, 106, 230, 199, 80, 107, 150, 30, 208, 108, 207, 227, 208, 109, 118, 0, 208, 110, 175, 197, 208, 111, 85, 226, 208, 112, 143, 167, 208, 113, 53, 196, 208, 114, 111, 137, 208, 115, 21, 166, 208, 116, 79, 107, 208, 116, 254, 195, 80, 118, 56, 136, 80, 118, 222, 165, 80, 120, 24, 106, 80, 120, 190, 135, 80, 121, 248, 76, 80, 122, 158, 105, 80, 123, 216, 46, 80, 124, 126, 75, 80, 125, 184, 16, 80, 126, 94, 45, 80, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 40, 184, 255, 255, 255, 255, 172, 98, 194, 128, 255, 255, 255, 255, 177, 211, 148, 80, 255, 255, 255, 255, 178, 116, 93, 64, 255, 255, 255, 255, 200, 91, 102, 208, 255, 255, 255, 255, 200, 211, 81, 64, 255, 255, 255, 255, 202, 59, 72, 208, 255, 255, 255, 255, 202, 188, 109, 192, 255, 255, 255, 255, 204, 36, 101, 80, 255, 255, 255, 255, 204, 156, 79, 192, 255, 255, 255, 255, 209, 196, 11, 80, 255, 255, 255, 255, 210, 59, 245, 192, 255, 255, 255, 255, 211, 163, 237, 80, 255, 255, 255, 255, 212, 27, 215, 192, 255, 255, 255, 255, 247, 96, 5, 208, 255, 255, 255, 255, 247, 255, 125, 64, 255, 255, 255, 255, 249, 61, 68, 208, 255, 255, 255, 255, 249, 227, 83, 192, 255, 255, 255, 255, 250, 219, 59, 208, 255, 255, 255, 255, 251, 167, 134, 64, 255, 255, 255, 255, 252, 197, 169, 208, 255, 255, 255, 255, 253, 135, 104, 64, 255, 255, 255, 255, 254, 184, 0, 208, 255, 255, 255, 255, 255, 167, 227, 192, 0, 0, 0, 0, 0, 151, 226, 208, 0, 0, 0, 0, 1, 135, 197, 192, 0, 0, 0, 0, 2, 119, 196, 208, 0, 0, 0, 0, 3, 112, 226, 64, 0, 0, 0, 0, 4, 96, 225, 80, 0, 0, 0, 0, 5, 53, 20, 192, 0, 0, 0, 0, 6, 64, 195, 80, 0, 0, 0, 0, 7, 22, 72, 64, 0, 0, 0, 0, 8, 32, 165, 80, 0, 0, 0, 0, 8, 247, 123, 192, 0, 0, 0, 0, 10, 0, 135, 80, 0, 0, 0, 0, 10, 240, 106, 64, 0, 0, 0, 0, 11, 224, 105, 80, 0, 0, 0, 0, 12, 217, 134, 192, 0, 0, 0, 0, 13, 192, 75, 80, 0, 0, 0, 0, 14, 185, 104, 192, 0, 0, 0, 0, 15, 178, 162, 80, 0, 0, 0, 0, 16, 125, 155, 64, 0, 0, 0, 0, 17, 81, 234, 208, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 49, 204, 208, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 91, 130, 208, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 23, 59, 100, 208, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 25, 27, 70, 208, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 251, 40, 208, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 219, 10, 208, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 122, 83, 80, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 90, 53, 80, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 67, 81, 208, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 35, 51, 208, 0, 0, 0, 0, 37, 46, 198, 64, 0, 0, 0, 0, 38, 21, 138, 208, 0, 0, 0, 0, 39, 23, 226, 192, 0, 0, 0, 0, 39, 254, 167, 80, 0, 0, 0, 0, 40, 247, 210, 208, 0, 0, 0, 0, 41, 222, 137, 80, 0, 0, 0, 0, 42, 215, 180, 208, 0, 0, 0, 0, 43, 190, 107, 80, 0, 0, 0, 0, 44, 183, 150, 208, 0, 0, 0, 0, 45, 158, 77, 80, 0, 0, 0, 0, 46, 151, 120, 208, 0, 0, 0, 0, 47, 126, 47, 80, 0, 0, 0, 0, 48, 119, 90, 208, 0, 0, 0, 0, 49, 103, 75, 208, 0, 0, 0, 0, 50, 87, 60, 208, 0, 0, 0, 0, 51, 71, 45, 208, 0, 0, 0, 0, 52, 64, 89, 80, 0, 0, 0, 0, 53, 29, 213, 80, 0, 0, 0, 0, 54, 50, 176, 80, 0, 0, 0, 0, 54, 253, 183, 80, 0, 0, 0, 0, 56, 27, 204, 208, 0, 0, 0, 0, 56, 230, 211, 208, 0, 0, 0, 0, 57, 251, 174, 208, 0, 0, 0, 0, 58, 198, 181, 208, 0, 0, 0, 0, 59, 219, 144, 208, 0, 0, 0, 0, 60, 175, 210, 80, 0, 0, 0, 0, 61, 187, 114, 208, 0, 0, 0, 0, 62, 143, 180, 80, 0, 0, 0, 0, 63, 155, 84, 208, 0, 0, 0, 0, 64, 102, 91, 208, 0, 0, 0, 0, 69, 68, 53, 80, 0, 0, 0, 0, 69, 243, 140, 208, 0, 0, 0, 0, 71, 36, 23, 80, 0, 0, 0, 0, 71, 220, 169, 80, 0, 0, 0, 0, 73, 3, 249, 80, 0, 0, 0, 0, 73, 179, 80, 208, 0, 0, 0, 0, 74, 227, 219, 80, 0, 0, 0, 0, 75, 156, 109, 80, 0, 0, 0, 0, 76, 204, 247, 208, 0, 0, 0, 0, 77, 133, 137, 208, 0, 0, 0, 0, 78, 191, 78, 208, 0, 0, 0, 0, 79, 119, 224, 208, 0, 0, 0, 0, 80, 149, 246, 80, 0, 0, 0, 0, 81, 60, 19, 80, 0, 0, 0, 0, 82, 117, 216, 80, 0, 0, 0, 0, 83, 27, 245, 80, 0, 0, 0, 0, 84, 85, 186, 80, 0, 0, 0, 0, 84, 251, 215, 80, 0, 0, 0, 0, 86, 53, 156, 80, 0, 0, 0, 0, 86, 228, 243, 208, 0, 0, 0, 0, 88, 30, 184, 208, 0, 0, 0, 0, 88, 196, 213, 208, 0, 0, 0, 0, 89, 254, 154, 208, 0, 0, 0, 0, 90, 164, 183, 208, 0, 0, 0, 0, 91, 222, 124, 208, 0, 0, 0, 0, 92, 132, 153, 208, 0, 0, 0, 0, 93, 190, 94, 208, 0, 0, 0, 0, 94, 100, 123, 208, 0, 0, 0, 0, 95, 158, 64, 208, 0, 0, 0, 0, 96, 77, 152, 80, 0, 0, 0, 0, 97, 135, 93, 80, 0, 0, 0, 0, 98, 45, 122, 80, 0, 0, 0, 0, 99, 103, 63, 80, 0, 0, 0, 0, 100, 13, 92, 80, 0, 0, 0, 0, 101, 71, 33, 80, 0, 0, 0, 0, 101, 237, 62, 80, 0, 0, 0, 0, 103, 39, 3, 80, 0, 0, 0, 0, 103, 205, 32, 80, 0, 0, 0, 0, 105, 6, 229, 80, 0, 0, 0, 0, 105, 173, 2, 80, 0, 0, 0, 0, 106, 230, 199, 80, 0, 0, 0, 0, 107, 150, 30, 208, 0, 0, 0, 0, 108, 207, 227, 208, 0, 0, 0, 0, 109, 118, 0, 208, 0, 0, 0, 0, 110, 175, 197, 208, 0, 0, 0, 0, 111, 85, 226, 208, 0, 0, 0, 0, 112, 143, 167, 208, 0, 0, 0, 0, 113, 53, 196, 208, 0, 0, 0, 0, 114, 111, 137, 208, 0, 0, 0, 0, 115, 21, 166, 208, 0, 0, 0, 0, 116, 79, 107, 208, 0, 0, 0, 0, 116, 254, 195, 80, 0, 0, 0, 0, 118, 56, 136, 80, 0, 0, 0, 0, 118, 222, 165, 80, 0, 0, 0, 0, 120, 24, 106, 80, 0, 0, 0, 0, 120, 190, 135, 80, 0, 0, 0, 0, 121, 248, 76, 80, 0, 0, 0, 0, 122, 158, 105, 80, 0, 0, 0, 0, 123, 216, 46, 80, 0, 0, 0, 0, 124, 126, 75, 80, 0, 0, 0, 0, 125, 184, 16, 80, 0, 0, 0, 0, 126, 94, 45, 80, 0, 0, 0, 0, 127, 151, 242, 80, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 255, 255, 178, 200, 0, 0, 255, 255, 178, 192, 0, 4, 255, 255, 199, 192, 1, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 0, 12, 255, 255, 199, 192, 1, 8, 76, 77, 84, 0, 72, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 1, 1, 10, 67, 83, 84, 53, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 47, 48, 44, 77, 49, 49, 46, 49, 46, 48, 47, 49, 10}, - "zoneinfo/EET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 2, 0, 0, 0, 9, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 28, 32, 0, 0, 0, 0, 42, 48, 1, 4, 69, 69, 84, 0, 69, 69, 83, 84, 0, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/EET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 4, 0, 0, 0, 9, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 28, 32, 0, 5, 0, 0, 42, 48, 1, 0, 0, 0, 42, 48, 1, 0, 0, 0, 28, 32, 0, 5, 69, 69, 83, 84, 0, 69, 69, 84, 0, 1, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 28, 32, 0, 5, 0, 0, 42, 48, 1, 0, 0, 0, 42, 48, 1, 0, 0, 0, 28, 32, 0, 5, 69, 69, 83, 84, 0, 69, 69, 84, 0, 1, 1, 1, 1, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/EST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 69, 83, 84, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/EST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 69, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 69, 83, 84, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/EST5EDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 185, 176, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 199, 192, 1, 8, 255, 255, 199, 192, 1, 12, 69, 83, 84, 0, 69, 68, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/EST5EDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 185, 176, 0, 4, 255, 255, 199, 192, 1, 0, 255, 255, 199, 192, 1, 8, 255, 255, 199, 192, 1, 12, 255, 255, 185, 176, 0, 4, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 158, 166, 30, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 160, 134, 0, 112, 255, 255, 255, 255, 161, 154, 205, 96, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 185, 176, 0, 4, 255, 255, 199, 192, 1, 0, 255, 255, 199, 192, 1, 8, 255, 255, 199, 192, 1, 12, 255, 255, 185, 176, 0, 4, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Egypt": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 200, 147, 180, 224, 200, 250, 123, 208, 201, 252, 239, 224, 202, 199, 232, 208, 203, 203, 174, 96, 204, 223, 41, 208, 205, 172, 225, 224, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 173, 80, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 194, 253, 128, 252, 219, 190, 240, 253, 165, 130, 128, 254, 188, 242, 112, 255, 134, 182, 0, 0, 158, 37, 240, 1, 103, 233, 128, 2, 127, 89, 112, 3, 73, 29, 0, 4, 97, 222, 112, 5, 43, 162, 0, 6, 67, 17, 240, 7, 12, 213, 128, 8, 36, 69, 112, 8, 238, 9, 0, 10, 5, 120, 240, 10, 207, 60, 128, 11, 231, 253, 240, 12, 177, 193, 128, 13, 201, 49, 112, 14, 146, 245, 0, 15, 170, 100, 240, 16, 116, 40, 128, 17, 139, 152, 112, 18, 85, 92, 0, 19, 110, 29, 112, 20, 55, 225, 0, 21, 79, 80, 240, 22, 25, 20, 128, 23, 160, 147, 240, 23, 250, 72, 0, 25, 112, 163, 240, 25, 219, 123, 128, 26, 244, 60, 240, 27, 190, 0, 128, 28, 213, 112, 112, 29, 159, 52, 0, 30, 182, 163, 240, 31, 128, 103, 128, 32, 151, 215, 112, 33, 97, 155, 0, 34, 122, 92, 112, 35, 68, 32, 0, 36, 98, 39, 112, 37, 37, 83, 128, 38, 60, 195, 112, 39, 6, 135, 0, 40, 29, 246, 240, 40, 231, 186, 128, 42, 0, 123, 240, 42, 202, 63, 128, 43, 225, 175, 112, 44, 171, 115, 0, 45, 194, 226, 240, 46, 140, 166, 128, 47, 160, 19, 224, 48, 107, 12, 208, 49, 127, 245, 224, 50, 74, 238, 208, 51, 95, 215, 224, 52, 42, 208, 208, 53, 63, 185, 224, 54, 10, 178, 208, 55, 40, 214, 96, 55, 243, 207, 80, 57, 8, 184, 96, 57, 211, 177, 80, 58, 232, 154, 96, 59, 179, 147, 80, 60, 200, 124, 96, 61, 147, 117, 80, 62, 168, 94, 96, 63, 115, 87, 80, 64, 145, 122, 224, 65, 92, 115, 208, 66, 113, 92, 224, 67, 60, 85, 208, 68, 81, 62, 224, 69, 18, 253, 80, 70, 49, 32, 224, 70, 224, 106, 80, 72, 17, 2, 224, 72, 183, 17, 208, 73, 240, 228, 224, 74, 141, 185, 80, 75, 218, 1, 96, 76, 97, 189, 208, 76, 137, 88, 224, 76, 164, 250, 80, 83, 117, 56, 224, 83, 172, 137, 208, 83, 218, 188, 96, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + "zoneinfo/Egypt": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 128, 0, 0, 0, 200, 147, 180, 224, 200, 250, 123, 208, 201, 252, 239, 224, 202, 199, 232, 208, 203, 203, 174, 96, 204, 223, 41, 208, 205, 172, 225, 224, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 173, 80, 232, 54, 99, 96, 232, 244, 45, 80, 234, 11, 185, 96, 234, 213, 96, 208, 235, 236, 250, 240, 236, 181, 109, 0, 237, 207, 127, 240, 238, 151, 242, 0, 239, 176, 179, 112, 240, 121, 37, 128, 241, 145, 230, 240, 242, 90, 89, 0, 243, 115, 26, 112, 244, 59, 140, 128, 245, 85, 159, 112, 246, 30, 17, 128, 247, 54, 210, 240, 247, 255, 69, 0, 249, 24, 6, 112, 249, 225, 202, 0, 250, 249, 57, 240, 251, 194, 253, 128, 252, 219, 190, 240, 253, 165, 130, 128, 254, 188, 242, 112, 255, 134, 182, 0, 0, 158, 37, 240, 1, 103, 233, 128, 2, 127, 89, 112, 3, 73, 29, 0, 4, 97, 222, 112, 5, 43, 162, 0, 6, 67, 17, 240, 7, 12, 213, 128, 8, 36, 69, 112, 8, 238, 9, 0, 10, 5, 120, 240, 10, 207, 60, 128, 11, 231, 253, 240, 12, 177, 193, 128, 13, 201, 49, 112, 14, 146, 245, 0, 15, 170, 100, 240, 16, 116, 40, 128, 17, 139, 152, 112, 18, 85, 92, 0, 19, 110, 29, 112, 20, 55, 225, 0, 21, 79, 80, 240, 22, 25, 20, 128, 23, 160, 147, 240, 23, 250, 72, 0, 25, 112, 163, 240, 25, 219, 123, 128, 26, 244, 60, 240, 27, 190, 0, 128, 28, 213, 112, 112, 29, 159, 52, 0, 30, 182, 163, 240, 31, 128, 103, 128, 32, 151, 215, 112, 33, 97, 155, 0, 34, 122, 92, 112, 35, 68, 32, 0, 36, 98, 39, 112, 37, 37, 83, 128, 38, 60, 195, 112, 39, 6, 135, 0, 40, 29, 246, 240, 40, 231, 186, 128, 42, 0, 123, 240, 42, 202, 63, 128, 43, 225, 175, 112, 44, 171, 115, 0, 45, 194, 226, 240, 46, 140, 166, 128, 47, 160, 19, 224, 48, 107, 12, 208, 49, 127, 245, 224, 50, 74, 238, 208, 51, 95, 215, 224, 52, 42, 208, 208, 53, 63, 185, 224, 54, 10, 178, 208, 55, 40, 214, 96, 55, 243, 207, 80, 57, 8, 184, 96, 57, 211, 177, 80, 58, 232, 154, 96, 59, 179, 147, 80, 60, 200, 124, 96, 61, 147, 117, 80, 62, 168, 94, 96, 63, 115, 87, 80, 64, 145, 122, 224, 65, 92, 115, 208, 66, 113, 92, 224, 67, 60, 85, 208, 68, 81, 62, 224, 69, 18, 253, 80, 70, 49, 32, 224, 70, 224, 106, 80, 72, 17, 2, 224, 72, 183, 17, 208, 73, 240, 228, 224, 74, 141, 185, 80, 75, 218, 1, 96, 76, 97, 189, 208, 76, 137, 88, 224, 76, 164, 250, 80, 83, 117, 56, 224, 83, 172, 137, 208, 83, 218, 188, 96, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 4, 0, 0, 0, 13, 255, 255, 255, 255, 125, 189, 77, 171, 255, 255, 255, 255, 200, 147, 180, 224, 255, 255, 255, 255, 200, 250, 123, 208, 255, 255, 255, 255, 201, 252, 239, 224, 255, 255, 255, 255, 202, 199, 232, 208, 255, 255, 255, 255, 203, 203, 174, 96, 255, 255, 255, 255, 204, 223, 41, 208, 255, 255, 255, 255, 205, 172, 225, 224, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 173, 80, 255, 255, 255, 255, 232, 54, 99, 96, 255, 255, 255, 255, 232, 244, 45, 80, 255, 255, 255, 255, 234, 11, 185, 96, 255, 255, 255, 255, 234, 213, 96, 208, 255, 255, 255, 255, 235, 236, 250, 240, 255, 255, 255, 255, 236, 181, 109, 0, 255, 255, 255, 255, 237, 207, 127, 240, 255, 255, 255, 255, 238, 151, 242, 0, 255, 255, 255, 255, 239, 176, 179, 112, 255, 255, 255, 255, 240, 121, 37, 128, 255, 255, 255, 255, 241, 145, 230, 240, 255, 255, 255, 255, 242, 90, 89, 0, 255, 255, 255, 255, 243, 115, 26, 112, 255, 255, 255, 255, 244, 59, 140, 128, 255, 255, 255, 255, 245, 85, 159, 112, 255, 255, 255, 255, 246, 30, 17, 128, 255, 255, 255, 255, 247, 54, 210, 240, 255, 255, 255, 255, 247, 255, 69, 0, 255, 255, 255, 255, 249, 24, 6, 112, 255, 255, 255, 255, 249, 225, 202, 0, 255, 255, 255, 255, 250, 249, 57, 240, 255, 255, 255, 255, 251, 194, 253, 128, 255, 255, 255, 255, 252, 219, 190, 240, 255, 255, 255, 255, 253, 165, 130, 128, 255, 255, 255, 255, 254, 188, 242, 112, 255, 255, 255, 255, 255, 134, 182, 0, 0, 0, 0, 0, 0, 158, 37, 240, 0, 0, 0, 0, 1, 103, 233, 128, 0, 0, 0, 0, 2, 127, 89, 112, 0, 0, 0, 0, 3, 73, 29, 0, 0, 0, 0, 0, 4, 97, 222, 112, 0, 0, 0, 0, 5, 43, 162, 0, 0, 0, 0, 0, 6, 67, 17, 240, 0, 0, 0, 0, 7, 12, 213, 128, 0, 0, 0, 0, 8, 36, 69, 112, 0, 0, 0, 0, 8, 238, 9, 0, 0, 0, 0, 0, 10, 5, 120, 240, 0, 0, 0, 0, 10, 207, 60, 128, 0, 0, 0, 0, 11, 231, 253, 240, 0, 0, 0, 0, 12, 177, 193, 128, 0, 0, 0, 0, 13, 201, 49, 112, 0, 0, 0, 0, 14, 146, 245, 0, 0, 0, 0, 0, 15, 170, 100, 240, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 139, 152, 112, 0, 0, 0, 0, 18, 85, 92, 0, 0, 0, 0, 0, 19, 110, 29, 112, 0, 0, 0, 0, 20, 55, 225, 0, 0, 0, 0, 0, 21, 79, 80, 240, 0, 0, 0, 0, 22, 25, 20, 128, 0, 0, 0, 0, 23, 160, 147, 240, 0, 0, 0, 0, 23, 250, 72, 0, 0, 0, 0, 0, 25, 112, 163, 240, 0, 0, 0, 0, 25, 219, 123, 128, 0, 0, 0, 0, 26, 244, 60, 240, 0, 0, 0, 0, 27, 190, 0, 128, 0, 0, 0, 0, 28, 213, 112, 112, 0, 0, 0, 0, 29, 159, 52, 0, 0, 0, 0, 0, 30, 182, 163, 240, 0, 0, 0, 0, 31, 128, 103, 128, 0, 0, 0, 0, 32, 151, 215, 112, 0, 0, 0, 0, 33, 97, 155, 0, 0, 0, 0, 0, 34, 122, 92, 112, 0, 0, 0, 0, 35, 68, 32, 0, 0, 0, 0, 0, 36, 98, 39, 112, 0, 0, 0, 0, 37, 37, 83, 128, 0, 0, 0, 0, 38, 60, 195, 112, 0, 0, 0, 0, 39, 6, 135, 0, 0, 0, 0, 0, 40, 29, 246, 240, 0, 0, 0, 0, 40, 231, 186, 128, 0, 0, 0, 0, 42, 0, 123, 240, 0, 0, 0, 0, 42, 202, 63, 128, 0, 0, 0, 0, 43, 225, 175, 112, 0, 0, 0, 0, 44, 171, 115, 0, 0, 0, 0, 0, 45, 194, 226, 240, 0, 0, 0, 0, 46, 140, 166, 128, 0, 0, 0, 0, 47, 160, 19, 224, 0, 0, 0, 0, 48, 107, 12, 208, 0, 0, 0, 0, 49, 127, 245, 224, 0, 0, 0, 0, 50, 74, 238, 208, 0, 0, 0, 0, 51, 95, 215, 224, 0, 0, 0, 0, 52, 42, 208, 208, 0, 0, 0, 0, 53, 63, 185, 224, 0, 0, 0, 0, 54, 10, 178, 208, 0, 0, 0, 0, 55, 40, 214, 96, 0, 0, 0, 0, 55, 243, 207, 80, 0, 0, 0, 0, 57, 8, 184, 96, 0, 0, 0, 0, 57, 211, 177, 80, 0, 0, 0, 0, 58, 232, 154, 96, 0, 0, 0, 0, 59, 179, 147, 80, 0, 0, 0, 0, 60, 200, 124, 96, 0, 0, 0, 0, 61, 147, 117, 80, 0, 0, 0, 0, 62, 168, 94, 96, 0, 0, 0, 0, 63, 115, 87, 80, 0, 0, 0, 0, 64, 145, 122, 224, 0, 0, 0, 0, 65, 92, 115, 208, 0, 0, 0, 0, 66, 113, 92, 224, 0, 0, 0, 0, 67, 60, 85, 208, 0, 0, 0, 0, 68, 81, 62, 224, 0, 0, 0, 0, 69, 18, 253, 80, 0, 0, 0, 0, 70, 49, 32, 224, 0, 0, 0, 0, 70, 224, 106, 80, 0, 0, 0, 0, 72, 17, 2, 224, 0, 0, 0, 0, 72, 183, 17, 208, 0, 0, 0, 0, 73, 240, 228, 224, 0, 0, 0, 0, 74, 141, 185, 80, 0, 0, 0, 0, 75, 218, 1, 96, 0, 0, 0, 0, 76, 97, 189, 208, 0, 0, 0, 0, 76, 137, 88, 224, 0, 0, 0, 0, 76, 164, 250, 80, 0, 0, 0, 0, 83, 117, 56, 224, 0, 0, 0, 0, 83, 172, 137, 208, 0, 0, 0, 0, 83, 218, 188, 96, 0, 0, 0, 0, 84, 36, 130, 80, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 1, 2, 1, 2, 1, 2, 0, 0, 29, 85, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 10, 69, 69, 84, 45, 50, 10}, - "zoneinfo/Eire": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 155, 38, 179, 145, 155, 214, 11, 17, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 165, 148, 63, 0, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 212, 73, 224, 32, 213, 30, 33, 160, 214, 78, 172, 32, 215, 44, 40, 32, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 1, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 73, 83, 84, 45, 49, 71, 77, 84, 48, 44, 77, 49, 48, 46, 53, 46, 48, 44, 77, 51, 46, 53, 46, 48, 47, 49, 10}, + "zoneinfo/Eire": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 9, 0, 0, 0, 20, 128, 0, 0, 0, 155, 38, 179, 145, 155, 214, 11, 17, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 212, 73, 224, 32, 213, 30, 33, 160, 214, 78, 172, 32, 215, 44, 40, 32, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 1, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 9, 0, 0, 0, 20, 255, 255, 255, 255, 87, 209, 10, 220, 255, 255, 255, 255, 155, 38, 179, 145, 255, 255, 255, 255, 155, 214, 11, 17, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 215, 44, 40, 32, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 1, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 73, 83, 84, 45, 49, 71, 77, 84, 48, 44, 77, 49, 48, 46, 53, 46, 48, 44, 77, 51, 46, 53, 46, 48, 47, 49, 10}, - "zoneinfo/Etc/GMT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Etc/GMT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Etc/GMT+0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Etc/GMT+0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Etc/GMT+1": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 241, 240, 0, 0, 45, 48, 49, 0, 0, 0, 10, 60, 45, 48, 49, 62, 49, 10}, + "zoneinfo/Etc/GMT+1": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 241, 240, 0, 0, 45, 48, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 241, 240, 0, 0, 45, 48, 49, 0, 10, 60, 45, 48, 49, 62, 49, 10}, - "zoneinfo/Etc/GMT+10": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 45, 49, 48, 0, 0, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, + "zoneinfo/Etc/GMT+10": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 45, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 45, 49, 48, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, - "zoneinfo/Etc/GMT+11": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 101, 80, 0, 0, 45, 49, 49, 0, 0, 0, 10, 60, 45, 49, 49, 62, 49, 49, 10}, + "zoneinfo/Etc/GMT+11": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 101, 80, 0, 0, 45, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 101, 80, 0, 0, 45, 49, 49, 0, 10, 60, 45, 49, 49, 62, 49, 49, 10}, - "zoneinfo/Etc/GMT+12": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 87, 64, 0, 0, 45, 49, 50, 0, 0, 0, 10, 60, 45, 49, 50, 62, 49, 50, 10}, + "zoneinfo/Etc/GMT+12": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 87, 64, 0, 0, 45, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 87, 64, 0, 0, 45, 49, 50, 0, 10, 60, 45, 49, 50, 62, 49, 50, 10}, - "zoneinfo/Etc/GMT+2": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 227, 224, 0, 0, 45, 48, 50, 0, 0, 0, 10, 60, 45, 48, 50, 62, 50, 10}, + "zoneinfo/Etc/GMT+2": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 227, 224, 0, 0, 45, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 227, 224, 0, 0, 45, 48, 50, 0, 10, 60, 45, 48, 50, 62, 50, 10}, - "zoneinfo/Etc/GMT+3": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 213, 208, 0, 0, 45, 48, 51, 0, 0, 0, 10, 60, 45, 48, 51, 62, 51, 10}, + "zoneinfo/Etc/GMT+3": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 213, 208, 0, 0, 45, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 213, 208, 0, 0, 45, 48, 51, 0, 10, 60, 45, 48, 51, 62, 51, 10}, - "zoneinfo/Etc/GMT+4": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 199, 192, 0, 0, 45, 48, 52, 0, 0, 0, 10, 60, 45, 48, 52, 62, 52, 10}, + "zoneinfo/Etc/GMT+4": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 199, 192, 0, 0, 45, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 199, 192, 0, 0, 45, 48, 52, 0, 10, 60, 45, 48, 52, 62, 52, 10}, - "zoneinfo/Etc/GMT+5": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 45, 48, 53, 0, 0, 0, 10, 60, 45, 48, 53, 62, 53, 10}, + "zoneinfo/Etc/GMT+5": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 45, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 185, 176, 0, 0, 45, 48, 53, 0, 10, 60, 45, 48, 53, 62, 53, 10}, - "zoneinfo/Etc/GMT+6": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 171, 160, 0, 0, 45, 48, 54, 0, 0, 0, 10, 60, 45, 48, 54, 62, 54, 10}, + "zoneinfo/Etc/GMT+6": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 171, 160, 0, 0, 45, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 171, 160, 0, 0, 45, 48, 54, 0, 10, 60, 45, 48, 54, 62, 54, 10}, - "zoneinfo/Etc/GMT+7": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 45, 48, 55, 0, 0, 0, 10, 60, 45, 48, 55, 62, 55, 10}, + "zoneinfo/Etc/GMT+7": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 45, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 45, 48, 55, 0, 10, 60, 45, 48, 55, 62, 55, 10}, - "zoneinfo/Etc/GMT+8": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 143, 128, 0, 0, 45, 48, 56, 0, 0, 0, 10, 60, 45, 48, 56, 62, 56, 10}, + "zoneinfo/Etc/GMT+8": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 143, 128, 0, 0, 45, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 143, 128, 0, 0, 45, 48, 56, 0, 10, 60, 45, 48, 56, 62, 56, 10}, - "zoneinfo/Etc/GMT+9": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 129, 112, 0, 0, 45, 48, 57, 0, 0, 0, 10, 60, 45, 48, 57, 62, 57, 10}, + "zoneinfo/Etc/GMT+9": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 129, 112, 0, 0, 45, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 129, 112, 0, 0, 45, 48, 57, 0, 10, 60, 45, 48, 57, 62, 57, 10}, - "zoneinfo/Etc/GMT-0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Etc/GMT-0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Etc/GMT-1": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 14, 16, 0, 0, 43, 48, 49, 0, 0, 0, 10, 60, 43, 48, 49, 62, 45, 49, 10}, + "zoneinfo/Etc/GMT-1": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 14, 16, 0, 0, 43, 48, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 14, 16, 0, 0, 43, 48, 49, 0, 10, 60, 43, 48, 49, 62, 45, 49, 10}, - "zoneinfo/Etc/GMT-10": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 140, 160, 0, 0, 43, 49, 48, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Etc/GMT-10": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 140, 160, 0, 0, 43, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 140, 160, 0, 0, 43, 49, 48, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Etc/GMT-11": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 154, 176, 0, 0, 43, 49, 49, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Etc/GMT-11": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 154, 176, 0, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 154, 176, 0, 0, 43, 49, 49, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Etc/GMT-12": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 168, 192, 0, 0, 43, 49, 50, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Etc/GMT-12": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 168, 192, 0, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 168, 192, 0, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Etc/GMT-13": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 182, 208, 0, 0, 43, 49, 51, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + "zoneinfo/Etc/GMT-13": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 182, 208, 0, 0, 43, 49, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 182, 208, 0, 0, 43, 49, 51, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, - "zoneinfo/Etc/GMT-14": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 196, 224, 0, 0, 43, 49, 52, 0, 0, 0, 10, 60, 43, 49, 52, 62, 45, 49, 52, 10}, + "zoneinfo/Etc/GMT-14": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 196, 224, 0, 0, 43, 49, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 196, 224, 0, 0, 43, 49, 52, 0, 10, 60, 43, 49, 52, 62, 45, 49, 52, 10}, - "zoneinfo/Etc/GMT-2": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 28, 32, 0, 0, 43, 48, 50, 0, 0, 0, 10, 60, 43, 48, 50, 62, 45, 50, 10}, + "zoneinfo/Etc/GMT-2": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 28, 32, 0, 0, 43, 48, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 28, 32, 0, 0, 43, 48, 50, 0, 10, 60, 43, 48, 50, 62, 45, 50, 10}, - "zoneinfo/Etc/GMT-3": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 42, 48, 0, 0, 43, 48, 51, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Etc/GMT-3": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 42, 48, 0, 0, 43, 48, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 42, 48, 0, 0, 43, 48, 51, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Etc/GMT-4": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 56, 64, 0, 0, 43, 48, 52, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Etc/GMT-4": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 56, 64, 0, 0, 43, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 56, 64, 0, 0, 43, 48, 52, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Etc/GMT-5": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 70, 80, 0, 0, 43, 48, 53, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Etc/GMT-5": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 70, 80, 0, 0, 43, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 70, 80, 0, 0, 43, 48, 53, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Etc/GMT-6": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 84, 96, 0, 0, 43, 48, 54, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Etc/GMT-6": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 84, 96, 0, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 84, 96, 0, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Etc/GMT-7": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 98, 112, 0, 0, 43, 48, 55, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Etc/GMT-7": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 98, 112, 0, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 98, 112, 0, 0, 43, 48, 55, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Etc/GMT-8": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 112, 128, 0, 0, 43, 48, 56, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Etc/GMT-8": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 112, 128, 0, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 112, 128, 0, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Etc/GMT-9": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 126, 144, 0, 0, 43, 48, 57, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + "zoneinfo/Etc/GMT-9": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 126, 144, 0, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 126, 144, 0, 0, 43, 48, 57, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, - "zoneinfo/Etc/GMT0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Etc/GMT0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Etc/Greenwich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Etc/Greenwich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Etc/UCT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 67, 84, 0, 0, 0, 10, 85, 67, 84, 48, 10}, + "zoneinfo/Etc/UCT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/Etc/UTC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + "zoneinfo/Etc/UTC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/Etc/Universal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + "zoneinfo/Etc/Universal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/Etc/Zulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + "zoneinfo/Etc/Zulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/Europe/Amsterdam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 14, 0, 0, 0, 33, 128, 0, 0, 0, 155, 12, 46, 236, 155, 213, 214, 92, 156, 217, 184, 12, 157, 164, 191, 12, 158, 167, 37, 12, 159, 151, 22, 12, 160, 144, 65, 140, 161, 118, 248, 12, 162, 112, 35, 140, 163, 86, 218, 12, 164, 80, 5, 140, 165, 54, 188, 12, 166, 37, 91, 140, 167, 39, 193, 140, 168, 94, 227, 140, 169, 7, 163, 140, 169, 238, 90, 12, 170, 231, 133, 140, 172, 39, 226, 12, 172, 199, 103, 140, 173, 237, 102, 12, 174, 167, 73, 140, 175, 206, 153, 140, 176, 135, 43, 140, 177, 177, 30, 140, 178, 112, 72, 12, 179, 146, 82, 12, 180, 80, 42, 12, 181, 115, 133, 140, 182, 48, 12, 12, 183, 84, 185, 12, 184, 15, 238, 12, 185, 64, 120, 140, 185, 239, 208, 12, 187, 24, 113, 140, 187, 216, 236, 140, 188, 249, 165, 12, 189, 184, 206, 140, 190, 218, 216, 140, 191, 152, 176, 140, 192, 189, 93, 140, 193, 120, 146, 140, 194, 167, 203, 140, 194, 220, 93, 92, 195, 88, 116, 112, 196, 127, 196, 112, 197, 56, 86, 112, 198, 96, 247, 240, 199, 33, 114, 240, 200, 68, 178, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 42, 253, 112, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 7, 5, 6, 5, 6, 5, 10, 8, 9, 8, 9, 8, 9, 8, 13, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 4, 148, 0, 0, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 4, 176, 0, 12, 0, 0, 18, 192, 1, 18, 0, 0, 18, 192, 1, 18, 0, 0, 14, 16, 0, 24, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 14, 16, 0, 24, 0, 0, 14, 16, 0, 24, 76, 77, 84, 0, 78, 83, 84, 0, 65, 77, 84, 0, 43, 48, 48, 50, 48, 0, 43, 48, 49, 50, 48, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Amsterdam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 13, 0, 0, 0, 33, 128, 0, 0, 0, 155, 12, 46, 236, 155, 213, 214, 92, 156, 217, 184, 12, 157, 164, 191, 12, 158, 167, 37, 12, 159, 151, 22, 12, 160, 144, 65, 140, 161, 118, 248, 12, 162, 112, 35, 140, 163, 86, 218, 12, 164, 80, 5, 140, 165, 54, 188, 12, 166, 37, 91, 140, 167, 39, 193, 140, 168, 94, 227, 140, 169, 7, 163, 140, 169, 238, 90, 12, 170, 231, 133, 140, 172, 39, 226, 12, 172, 199, 103, 140, 173, 237, 102, 12, 174, 167, 73, 140, 175, 206, 153, 140, 176, 135, 43, 140, 177, 177, 30, 140, 178, 112, 72, 12, 179, 146, 82, 12, 180, 80, 42, 12, 181, 115, 133, 140, 182, 48, 12, 12, 183, 84, 185, 12, 184, 15, 238, 12, 185, 64, 120, 140, 185, 239, 208, 12, 187, 24, 113, 140, 187, 216, 236, 140, 188, 249, 165, 12, 189, 184, 206, 140, 190, 218, 216, 140, 191, 152, 176, 140, 192, 189, 93, 140, 193, 120, 146, 140, 194, 167, 203, 140, 194, 220, 93, 92, 195, 88, 116, 112, 196, 127, 196, 112, 197, 56, 86, 112, 198, 96, 247, 240, 199, 33, 114, 240, 200, 68, 178, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 7, 5, 6, 5, 6, 5, 10, 8, 9, 8, 9, 8, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 4, 148, 0, 0, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 4, 176, 0, 12, 0, 0, 18, 192, 1, 18, 0, 0, 18, 192, 1, 18, 0, 0, 14, 16, 0, 24, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 14, 16, 0, 24, 76, 77, 84, 0, 78, 83, 84, 0, 65, 77, 84, 0, 43, 48, 48, 50, 48, 0, 43, 48, 49, 50, 48, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 13, 0, 0, 0, 33, 255, 255, 255, 255, 2, 18, 81, 108, 255, 255, 255, 255, 155, 12, 46, 236, 255, 255, 255, 255, 155, 213, 214, 92, 255, 255, 255, 255, 156, 217, 184, 12, 255, 255, 255, 255, 157, 164, 191, 12, 255, 255, 255, 255, 158, 167, 37, 12, 255, 255, 255, 255, 159, 151, 22, 12, 255, 255, 255, 255, 160, 144, 65, 140, 255, 255, 255, 255, 161, 118, 248, 12, 255, 255, 255, 255, 162, 112, 35, 140, 255, 255, 255, 255, 163, 86, 218, 12, 255, 255, 255, 255, 164, 80, 5, 140, 255, 255, 255, 255, 165, 54, 188, 12, 255, 255, 255, 255, 166, 37, 91, 140, 255, 255, 255, 255, 167, 39, 193, 140, 255, 255, 255, 255, 168, 94, 227, 140, 255, 255, 255, 255, 169, 7, 163, 140, 255, 255, 255, 255, 169, 238, 90, 12, 255, 255, 255, 255, 170, 231, 133, 140, 255, 255, 255, 255, 172, 39, 226, 12, 255, 255, 255, 255, 172, 199, 103, 140, 255, 255, 255, 255, 173, 237, 102, 12, 255, 255, 255, 255, 174, 167, 73, 140, 255, 255, 255, 255, 175, 206, 153, 140, 255, 255, 255, 255, 176, 135, 43, 140, 255, 255, 255, 255, 177, 177, 30, 140, 255, 255, 255, 255, 178, 112, 72, 12, 255, 255, 255, 255, 179, 146, 82, 12, 255, 255, 255, 255, 180, 80, 42, 12, 255, 255, 255, 255, 181, 115, 133, 140, 255, 255, 255, 255, 182, 48, 12, 12, 255, 255, 255, 255, 183, 84, 185, 12, 255, 255, 255, 255, 184, 15, 238, 12, 255, 255, 255, 255, 185, 64, 120, 140, 255, 255, 255, 255, 185, 239, 208, 12, 255, 255, 255, 255, 187, 24, 113, 140, 255, 255, 255, 255, 187, 216, 236, 140, 255, 255, 255, 255, 188, 249, 165, 12, 255, 255, 255, 255, 189, 184, 206, 140, 255, 255, 255, 255, 190, 218, 216, 140, 255, 255, 255, 255, 191, 152, 176, 140, 255, 255, 255, 255, 192, 189, 93, 140, 255, 255, 255, 255, 193, 120, 146, 140, 255, 255, 255, 255, 194, 167, 203, 140, 255, 255, 255, 255, 194, 220, 93, 92, 255, 255, 255, 255, 195, 88, 116, 112, 255, 255, 255, 255, 196, 127, 196, 112, 255, 255, 255, 255, 197, 56, 86, 112, 255, 255, 255, 255, 198, 96, 247, 240, 255, 255, 255, 255, 199, 33, 114, 240, 255, 255, 255, 255, 200, 68, 178, 80, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 7, 5, 6, 5, 6, 5, 10, 8, 9, 8, 9, 8, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 4, 148, 0, 0, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 18, 164, 1, 4, 0, 0, 4, 148, 0, 8, 0, 0, 4, 176, 0, 12, 0, 0, 18, 192, 1, 18, 0, 0, 18, 192, 1, 18, 0, 0, 14, 16, 0, 24, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 28, 32, 1, 28, 0, 0, 14, 16, 0, 24, 76, 77, 84, 0, 78, 83, 84, 0, 65, 77, 84, 0, 43, 48, 48, 50, 48, 0, 43, 48, 49, 50, 48, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Andorra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 212, 65, 219, 0, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 1, 108, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Andorra": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 5, 0, 0, 0, 17, 128, 0, 0, 0, 212, 65, 219, 0, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 1, 108, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 5, 0, 0, 0, 17, 255, 255, 255, 255, 126, 54, 179, 148, 255, 255, 255, 255, 212, 65, 219, 0, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 1, 108, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Astrakhan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 170, 24, 69, 116, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 86, 247, 20, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 12, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Europe/Astrakhan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 170, 24, 69, 116, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 86, 247, 20, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 12, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 170, 24, 69, 116, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 0, 0, 0, 0, 86, 247, 20, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 12, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Europe/Athens": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 10, 0, 0, 0, 26, 128, 0, 0, 0, 155, 128, 33, 128, 185, 124, 233, 224, 185, 198, 175, 208, 201, 242, 99, 224, 202, 16, 168, 80, 204, 231, 75, 16, 205, 170, 76, 240, 206, 162, 24, 224, 207, 147, 105, 112, 223, 19, 158, 96, 223, 183, 10, 80, 9, 236, 94, 96, 11, 24, 244, 96, 11, 205, 174, 0, 12, 189, 159, 0, 13, 164, 85, 128, 14, 140, 93, 128, 15, 132, 55, 128, 16, 106, 252, 16, 17, 100, 123, 240, 18, 82, 170, 240, 19, 70, 130, 96, 20, 51, 194, 80, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 5, 4, 5, 4, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 3, 2, 3, 2, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 22, 60, 0, 0, 0, 0, 22, 60, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 65, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Athens": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 10, 0, 0, 0, 26, 128, 0, 0, 0, 155, 128, 33, 128, 185, 124, 233, 224, 185, 198, 175, 208, 201, 242, 99, 224, 202, 16, 168, 80, 204, 231, 75, 16, 205, 170, 76, 240, 206, 162, 24, 224, 207, 147, 105, 112, 223, 19, 158, 96, 223, 183, 10, 80, 9, 236, 94, 96, 11, 24, 244, 96, 11, 205, 174, 0, 12, 189, 159, 0, 13, 164, 85, 128, 14, 140, 93, 128, 15, 132, 55, 128, 16, 106, 252, 16, 17, 100, 123, 240, 18, 82, 170, 240, 19, 70, 130, 96, 20, 51, 194, 80, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 5, 4, 5, 4, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 3, 2, 3, 2, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 22, 60, 0, 0, 0, 0, 22, 60, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 65, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 10, 0, 0, 0, 26, 255, 255, 255, 255, 116, 63, 152, 68, 255, 255, 255, 255, 155, 128, 33, 128, 255, 255, 255, 255, 185, 124, 233, 224, 255, 255, 255, 255, 185, 198, 175, 208, 255, 255, 255, 255, 201, 242, 99, 224, 255, 255, 255, 255, 202, 16, 168, 80, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 170, 76, 240, 255, 255, 255, 255, 206, 162, 24, 224, 255, 255, 255, 255, 207, 147, 105, 112, 255, 255, 255, 255, 223, 19, 158, 96, 255, 255, 255, 255, 223, 183, 10, 80, 0, 0, 0, 0, 9, 236, 94, 96, 0, 0, 0, 0, 11, 24, 244, 96, 0, 0, 0, 0, 11, 205, 174, 0, 0, 0, 0, 0, 12, 189, 159, 0, 0, 0, 0, 0, 13, 164, 85, 128, 0, 0, 0, 0, 14, 140, 93, 128, 0, 0, 0, 0, 15, 132, 55, 128, 0, 0, 0, 0, 16, 106, 252, 16, 0, 0, 0, 0, 17, 100, 123, 240, 0, 0, 0, 0, 18, 82, 170, 240, 0, 0, 0, 0, 19, 70, 130, 96, 0, 0, 0, 0, 20, 51, 194, 80, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 5, 4, 5, 4, 3, 2, 3, 6, 7, 6, 7, 6, 7, 6, 3, 2, 3, 2, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 22, 60, 0, 0, 0, 0, 22, 60, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 65, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Belfast": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Europe/Belfast": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Europe/Belgrade": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Belgrade": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 161, 140, 16, 210, 78, 64, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 94, 60, 240, 72, 255, 255, 255, 255, 202, 2, 53, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 161, 140, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Berlin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 9, 0, 0, 0, 18, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 182, 150, 0, 210, 88, 190, 128, 210, 161, 79, 16, 210, 219, 52, 240, 211, 99, 27, 144, 212, 75, 35, 144, 213, 57, 209, 32, 213, 103, 231, 144, 213, 168, 115, 0, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 1, 4, 2, 3, 4, 3, 6, 1, 4, 3, 4, 3, 4, 2, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 12, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Berlin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 9, 0, 0, 0, 18, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 182, 150, 0, 210, 88, 190, 128, 210, 161, 79, 16, 211, 99, 27, 144, 212, 75, 35, 144, 213, 57, 209, 32, 213, 103, 231, 144, 213, 168, 115, 0, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 1, 4, 3, 4, 3, 6, 1, 4, 3, 4, 3, 4, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 12, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 9, 0, 0, 0, 18, 255, 255, 255, 255, 111, 162, 97, 248, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 182, 150, 0, 255, 255, 255, 255, 210, 88, 190, 128, 255, 255, 255, 255, 210, 161, 79, 16, 255, 255, 255, 255, 211, 99, 27, 144, 255, 255, 255, 255, 212, 75, 35, 144, 255, 255, 255, 255, 213, 57, 209, 32, 255, 255, 255, 255, 213, 103, 231, 144, 255, 255, 255, 255, 213, 168, 115, 0, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 44, 26, 16, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 217, 2, 193, 144, 255, 255, 255, 255, 217, 233, 120, 16, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 1, 4, 3, 4, 3, 6, 1, 4, 3, 4, 3, 4, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 12, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 13, 0, 0, 42, 48, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 67, 69, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Bratislava": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 162, 179, 96, 210, 98, 7, 16, 211, 128, 28, 144, 212, 73, 210, 16, 212, 147, 180, 32, 213, 2, 114, 32, 213, 76, 56, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 1, 112, 16, 217, 233, 120, 16, 16, 237, 100, 112, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 4, 3, 4, 5, 2, 3, 4, 3, 4, 3, 4, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 13, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 0, 0, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Bratislava": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 211, 128, 28, 144, 212, 73, 210, 16, 212, 147, 180, 32, 213, 2, 114, 32, 213, 76, 56, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 1, 112, 16, 217, 233, 120, 16, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 2, 3, 4, 3, 4, 3, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 13, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 0, 0, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 21, 255, 255, 255, 255, 30, 73, 146, 248, 255, 255, 255, 255, 108, 207, 234, 248, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 98, 7, 16, 255, 255, 255, 255, 211, 128, 28, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 212, 147, 180, 32, 255, 255, 255, 255, 213, 2, 114, 32, 255, 255, 255, 255, 213, 76, 56, 16, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 44, 26, 16, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 217, 1, 112, 16, 255, 255, 255, 255, 217, 233, 120, 16, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 3, 4, 5, 4, 5, 4, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 13, 136, 0, 0, 0, 0, 13, 136, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 0, 0, 1, 17, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Brussels": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 11, 0, 0, 0, 22, 128, 0, 0, 0, 152, 68, 73, 128, 155, 12, 37, 112, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 159, 206, 248, 48, 160, 96, 165, 240, 161, 126, 187, 112, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 42, 1, 240, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 184, 255, 227, 160, 185, 239, 212, 160, 186, 214, 139, 32, 187, 216, 241, 32, 188, 200, 226, 32, 189, 184, 211, 32, 190, 159, 137, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 104, 136, 32, 195, 88, 121, 32, 196, 63, 47, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 200, 74, 25, 32, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 91, 191, 96, 208, 110, 94, 144, 209, 114, 22, 16, 210, 78, 64, 144, 211, 145, 64, 16, 212, 75, 35, 144, 13, 42, 253, 112, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 5, 2, 3, 4, 3, 4, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 3, 4, 3, 4, 3, 5, 4, 3, 4, 3, 4, 2, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 4, 26, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 1, 17, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Brussels": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 11, 0, 0, 0, 22, 128, 0, 0, 0, 152, 68, 73, 128, 155, 12, 37, 112, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 159, 206, 248, 48, 160, 96, 165, 240, 161, 126, 187, 112, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 42, 1, 240, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 184, 255, 227, 160, 185, 239, 212, 160, 186, 214, 139, 32, 187, 216, 241, 32, 188, 200, 226, 32, 189, 184, 211, 32, 190, 159, 137, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 104, 136, 32, 195, 88, 121, 32, 196, 63, 47, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 200, 74, 25, 32, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 110, 94, 144, 209, 114, 22, 16, 210, 78, 64, 144, 211, 145, 64, 16, 212, 75, 35, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 5, 2, 3, 4, 3, 4, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 4, 26, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 1, 17, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 12, 0, 0, 0, 26, 255, 255, 255, 255, 86, 182, 223, 230, 255, 255, 255, 255, 109, 233, 108, 166, 255, 255, 255, 255, 152, 68, 73, 128, 255, 255, 255, 255, 155, 12, 37, 112, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 159, 206, 248, 48, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 126, 187, 112, 255, 255, 255, 255, 162, 46, 18, 240, 255, 255, 255, 255, 163, 122, 76, 240, 255, 255, 255, 255, 164, 53, 129, 240, 255, 255, 255, 255, 165, 94, 35, 112, 255, 255, 255, 255, 166, 37, 53, 240, 255, 255, 255, 255, 167, 39, 155, 240, 255, 255, 255, 255, 168, 42, 1, 240, 255, 255, 255, 255, 169, 7, 125, 240, 255, 255, 255, 255, 169, 238, 52, 112, 255, 255, 255, 255, 170, 231, 95, 240, 255, 255, 255, 255, 171, 215, 80, 240, 255, 255, 255, 255, 172, 199, 65, 240, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 35, 240, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 5, 240, 255, 255, 255, 255, 177, 137, 107, 240, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 184, 255, 227, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 214, 139, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 200, 226, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 159, 137, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 104, 136, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 63, 47, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 200, 74, 25, 32, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 255, 255, 255, 255, 211, 145, 64, 16, 255, 255, 255, 255, 212, 75, 35, 144, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 6, 3, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 0, 0, 4, 26, 0, 0, 0, 0, 4, 26, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 16, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 16, 0, 0, 14, 16, 1, 21, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 16, 0, 0, 14, 16, 0, 12, 76, 77, 84, 0, 66, 77, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Bucharest": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 17, 173, 209, 96, 18, 83, 224, 80, 19, 77, 11, 208, 20, 51, 208, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 70, 0, 35, 60, 55, 0, 36, 44, 40, 0, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 127, 180, 224, 39, 245, 10, 96, 40, 228, 251, 96, 41, 212, 236, 96, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 36, 160, 224, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 5, 2, 3, 2, 3, 2, 3, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 24, 120, 0, 0, 0, 0, 24, 120, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Bucharest": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 17, 173, 209, 96, 18, 83, 224, 80, 19, 77, 11, 208, 20, 51, 208, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 70, 0, 35, 60, 55, 0, 36, 44, 40, 0, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 10, 96, 40, 228, 251, 96, 41, 212, 236, 96, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 24, 120, 0, 0, 0, 0, 24, 120, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 8, 0, 0, 0, 17, 255, 255, 255, 255, 108, 207, 224, 8, 255, 255, 255, 255, 183, 176, 210, 8, 255, 255, 255, 255, 185, 62, 243, 96, 255, 255, 255, 255, 185, 239, 156, 96, 255, 255, 255, 255, 186, 223, 141, 96, 255, 255, 255, 255, 187, 207, 126, 96, 255, 255, 255, 255, 188, 200, 169, 224, 255, 255, 255, 255, 189, 184, 154, 224, 255, 255, 255, 255, 190, 168, 139, 224, 255, 255, 255, 255, 191, 152, 124, 224, 255, 255, 255, 255, 192, 136, 109, 224, 255, 255, 255, 255, 193, 120, 94, 224, 255, 255, 255, 255, 194, 104, 79, 224, 255, 255, 255, 255, 195, 88, 64, 224, 255, 255, 255, 255, 196, 72, 49, 224, 255, 255, 255, 255, 197, 56, 34, 224, 255, 255, 255, 255, 198, 40, 19, 224, 255, 255, 255, 255, 199, 24, 4, 224, 0, 0, 0, 0, 17, 173, 209, 96, 0, 0, 0, 0, 18, 83, 224, 80, 0, 0, 0, 0, 19, 77, 11, 208, 0, 0, 0, 0, 20, 51, 208, 96, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 19, 206, 128, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 23, 243, 176, 128, 0, 0, 0, 0, 24, 227, 161, 128, 0, 0, 0, 0, 25, 211, 146, 128, 0, 0, 0, 0, 26, 195, 131, 128, 0, 0, 0, 0, 27, 188, 175, 0, 0, 0, 0, 0, 28, 172, 160, 0, 0, 0, 0, 0, 29, 156, 145, 0, 0, 0, 0, 0, 30, 140, 130, 0, 0, 0, 0, 0, 31, 124, 115, 0, 0, 0, 0, 0, 32, 108, 100, 0, 0, 0, 0, 0, 33, 92, 85, 0, 0, 0, 0, 0, 34, 76, 70, 0, 0, 0, 0, 0, 35, 60, 55, 0, 0, 0, 0, 0, 36, 44, 40, 0, 0, 0, 0, 0, 37, 28, 25, 0, 0, 0, 0, 0, 38, 12, 10, 0, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 228, 251, 96, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 221, 96, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 191, 96, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 24, 120, 0, 0, 0, 0, 24, 120, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Budapest": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 48, 88, 112, 158, 167, 41, 160, 159, 132, 151, 144, 160, 154, 210, 32, 161, 192, 194, 144, 201, 243, 195, 112, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 153, 120, 224, 210, 138, 187, 96, 211, 80, 166, 144, 212, 73, 210, 16, 213, 57, 195, 16, 214, 41, 180, 16, 215, 25, 165, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 218, 237, 47, 144, 219, 230, 91, 16, 226, 162, 168, 240, 227, 81, 242, 96, 228, 131, 220, 112, 229, 51, 37, 224, 230, 116, 225, 240, 231, 17, 182, 96, 232, 84, 210, 0, 232, 241, 194, 144, 19, 77, 54, 0, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 17, 228, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Budapest": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 167, 41, 160, 159, 132, 151, 144, 160, 154, 210, 32, 161, 192, 194, 144, 201, 243, 195, 112, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 153, 120, 224, 210, 138, 187, 96, 211, 80, 166, 144, 212, 73, 210, 16, 213, 57, 195, 16, 214, 41, 180, 16, 215, 25, 165, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 218, 237, 47, 144, 219, 230, 91, 16, 226, 162, 168, 240, 227, 81, 242, 96, 228, 131, 220, 112, 229, 51, 37, 224, 230, 116, 225, 240, 231, 17, 182, 96, 232, 84, 210, 0, 232, 241, 194, 144, 19, 77, 54, 0, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 17, 228, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 106, 238, 179, 28, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 167, 41, 160, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 160, 154, 210, 32, 255, 255, 255, 255, 161, 192, 194, 144, 255, 255, 255, 255, 201, 243, 195, 112, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 153, 120, 224, 255, 255, 255, 255, 210, 138, 187, 96, 255, 255, 255, 255, 211, 80, 166, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 57, 195, 16, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 25, 165, 16, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 217, 2, 193, 144, 255, 255, 255, 255, 217, 233, 120, 16, 255, 255, 255, 255, 218, 237, 47, 144, 255, 255, 255, 255, 219, 230, 91, 16, 255, 255, 255, 255, 226, 162, 168, 240, 255, 255, 255, 255, 227, 81, 242, 96, 255, 255, 255, 255, 228, 131, 220, 112, 255, 255, 255, 255, 229, 51, 37, 224, 255, 255, 255, 255, 230, 116, 225, 240, 255, 255, 255, 255, 231, 17, 182, 96, 255, 255, 255, 255, 232, 84, 210, 0, 255, 255, 255, 255, 232, 241, 194, 144, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 3, 4, 1, 2, 1, 2, 1, 4, 3, 4, 3, 4, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 17, 228, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Busingen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 8, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Busingen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 8, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 36, 240, 234, 128, 255, 255, 255, 255, 113, 212, 6, 134, 255, 255, 255, 255, 202, 23, 106, 0, 255, 255, 255, 255, 202, 226, 113, 0, 255, 255, 255, 255, 203, 247, 76, 0, 255, 255, 255, 255, 204, 194, 83, 0, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 8, 0, 0, 0, 0, 0, 6, 250, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Chisinau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 16, 0, 0, 0, 38, 128, 0, 0, 0, 158, 107, 159, 12, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 200, 188, 147, 96, 202, 119, 125, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 78, 144, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 67, 76, 224, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 96, 232, 96, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 86, 247, 34, 128, 88, 21, 56, 0, 88, 215, 4, 128, 89, 245, 26, 0, 90, 182, 230, 128, 91, 212, 252, 0, 92, 160, 3, 0, 93, 180, 222, 0, 94, 127, 229, 0, 95, 148, 192, 0, 96, 95, 199, 0, 97, 125, 220, 128, 98, 63, 169, 0, 99, 93, 190, 128, 100, 31, 139, 0, 101, 61, 160, 128, 102, 8, 167, 128, 103, 29, 130, 128, 103, 232, 137, 128, 104, 253, 100, 128, 105, 200, 107, 128, 106, 221, 70, 128, 107, 168, 77, 128, 108, 198, 99, 0, 109, 136, 47, 128, 110, 166, 69, 0, 111, 104, 17, 128, 112, 134, 39, 0, 113, 81, 46, 0, 114, 102, 9, 0, 115, 49, 16, 0, 116, 69, 235, 0, 117, 16, 242, 0, 118, 47, 7, 128, 118, 240, 212, 0, 120, 14, 233, 128, 120, 208, 182, 0, 121, 238, 203, 128, 122, 176, 152, 0, 123, 206, 173, 128, 124, 153, 180, 128, 125, 174, 143, 128, 126, 121, 150, 128, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Chisinau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 16, 0, 0, 0, 38, 128, 0, 0, 0, 158, 107, 159, 12, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 200, 188, 147, 96, 202, 119, 125, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 78, 144, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 67, 76, 224, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 86, 247, 34, 128, 88, 21, 56, 0, 88, 215, 4, 128, 89, 245, 26, 0, 90, 182, 230, 128, 91, 212, 252, 0, 92, 160, 3, 0, 93, 180, 222, 0, 94, 127, 229, 0, 95, 148, 192, 0, 96, 95, 199, 0, 97, 125, 220, 128, 98, 63, 169, 0, 99, 93, 190, 128, 100, 31, 139, 0, 101, 61, 160, 128, 102, 8, 167, 128, 103, 29, 130, 128, 103, 232, 137, 128, 104, 253, 100, 128, 105, 200, 107, 128, 106, 221, 70, 128, 107, 168, 77, 128, 108, 198, 99, 0, 109, 136, 47, 128, 110, 166, 69, 0, 111, 104, 17, 128, 112, 134, 39, 0, 113, 81, 46, 0, 114, 102, 9, 0, 115, 49, 16, 0, 116, 69, 235, 0, 117, 16, 242, 0, 118, 47, 7, 128, 118, 240, 212, 0, 120, 14, 233, 128, 120, 208, 182, 0, 121, 238, 203, 128, 122, 176, 152, 0, 123, 206, 173, 128, 124, 153, 180, 128, 125, 174, 143, 128, 126, 121, 150, 128, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 16, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 200, 248, 255, 255, 255, 255, 158, 107, 159, 12, 255, 255, 255, 255, 183, 176, 210, 8, 255, 255, 255, 255, 185, 62, 243, 96, 255, 255, 255, 255, 185, 239, 156, 96, 255, 255, 255, 255, 186, 223, 141, 96, 255, 255, 255, 255, 187, 207, 126, 96, 255, 255, 255, 255, 188, 200, 169, 224, 255, 255, 255, 255, 189, 184, 154, 224, 255, 255, 255, 255, 190, 168, 139, 224, 255, 255, 255, 255, 191, 152, 124, 224, 255, 255, 255, 255, 192, 136, 109, 224, 255, 255, 255, 255, 193, 120, 94, 224, 255, 255, 255, 255, 194, 104, 79, 224, 255, 255, 255, 255, 195, 88, 64, 224, 255, 255, 255, 255, 196, 72, 49, 224, 255, 255, 255, 255, 197, 56, 34, 224, 255, 255, 255, 255, 198, 40, 19, 224, 255, 255, 255, 255, 199, 24, 4, 224, 255, 255, 255, 255, 200, 188, 147, 96, 255, 255, 255, 255, 202, 119, 125, 80, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 78, 144, 96, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 38, 67, 76, 224, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 38, 128, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 143, 0, 0, 0, 0, 0, 54, 50, 106, 0, 0, 0, 0, 0, 54, 253, 113, 0, 0, 0, 0, 0, 56, 27, 134, 128, 0, 0, 0, 0, 56, 221, 83, 0, 0, 0, 0, 0, 57, 251, 104, 128, 0, 0, 0, 0, 58, 189, 53, 0, 0, 0, 0, 0, 59, 219, 74, 128, 0, 0, 0, 0, 60, 166, 81, 128, 0, 0, 0, 0, 61, 187, 44, 128, 0, 0, 0, 0, 62, 134, 51, 128, 0, 0, 0, 0, 63, 155, 14, 128, 0, 0, 0, 0, 64, 102, 21, 128, 0, 0, 0, 0, 65, 132, 43, 0, 0, 0, 0, 0, 66, 69, 247, 128, 0, 0, 0, 0, 67, 100, 13, 0, 0, 0, 0, 0, 68, 37, 217, 128, 0, 0, 0, 0, 69, 67, 239, 0, 0, 0, 0, 0, 70, 5, 187, 128, 0, 0, 0, 0, 71, 35, 209, 0, 0, 0, 0, 0, 71, 238, 216, 0, 0, 0, 0, 0, 73, 3, 179, 0, 0, 0, 0, 0, 73, 206, 186, 0, 0, 0, 0, 0, 74, 227, 149, 0, 0, 0, 0, 0, 75, 174, 156, 0, 0, 0, 0, 0, 76, 204, 177, 128, 0, 0, 0, 0, 77, 142, 126, 0, 0, 0, 0, 0, 78, 172, 147, 128, 0, 0, 0, 0, 79, 110, 96, 0, 0, 0, 0, 0, 80, 140, 117, 128, 0, 0, 0, 0, 81, 87, 124, 128, 0, 0, 0, 0, 82, 108, 87, 128, 0, 0, 0, 0, 83, 55, 94, 128, 0, 0, 0, 0, 84, 76, 57, 128, 0, 0, 0, 0, 85, 23, 64, 128, 0, 0, 0, 0, 86, 44, 27, 128, 0, 0, 0, 0, 86, 247, 34, 128, 0, 0, 0, 0, 88, 21, 56, 0, 0, 0, 0, 0, 88, 215, 4, 128, 0, 0, 0, 0, 89, 245, 26, 0, 0, 0, 0, 0, 90, 182, 230, 128, 0, 0, 0, 0, 91, 212, 252, 0, 0, 0, 0, 0, 92, 160, 3, 0, 0, 0, 0, 0, 93, 180, 222, 0, 0, 0, 0, 0, 94, 127, 229, 0, 0, 0, 0, 0, 95, 148, 192, 0, 0, 0, 0, 0, 96, 95, 199, 0, 0, 0, 0, 0, 97, 125, 220, 128, 0, 0, 0, 0, 98, 63, 169, 0, 0, 0, 0, 0, 99, 93, 190, 128, 0, 0, 0, 0, 100, 31, 139, 0, 0, 0, 0, 0, 101, 61, 160, 128, 0, 0, 0, 0, 102, 8, 167, 128, 0, 0, 0, 0, 103, 29, 130, 128, 0, 0, 0, 0, 103, 232, 137, 128, 0, 0, 0, 0, 104, 253, 100, 128, 0, 0, 0, 0, 105, 200, 107, 128, 0, 0, 0, 0, 106, 221, 70, 128, 0, 0, 0, 0, 107, 168, 77, 128, 0, 0, 0, 0, 108, 198, 99, 0, 0, 0, 0, 0, 109, 136, 47, 128, 0, 0, 0, 0, 110, 166, 69, 0, 0, 0, 0, 0, 111, 104, 17, 128, 0, 0, 0, 0, 112, 134, 39, 0, 0, 0, 0, 0, 113, 81, 46, 0, 0, 0, 0, 0, 114, 102, 9, 0, 0, 0, 0, 0, 115, 49, 16, 0, 0, 0, 0, 0, 116, 69, 235, 0, 0, 0, 0, 0, 117, 16, 242, 0, 0, 0, 0, 0, 118, 47, 7, 128, 0, 0, 0, 0, 118, 240, 212, 0, 0, 0, 0, 0, 120, 14, 233, 128, 0, 0, 0, 0, 120, 208, 182, 0, 0, 0, 0, 0, 121, 238, 203, 128, 0, 0, 0, 0, 122, 176, 152, 0, 0, 0, 0, 0, 123, 206, 173, 128, 0, 0, 0, 0, 124, 153, 180, 128, 0, 0, 0, 0, 125, 174, 143, 128, 0, 0, 0, 0, 126, 121, 150, 128, 0, 0, 0, 0, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Copenhagen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 30, 140, 96, 155, 213, 190, 208, 200, 67, 87, 112, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 36, 16, 144, 211, 121, 133, 16, 212, 27, 173, 144, 213, 94, 173, 16, 213, 223, 224, 16, 215, 71, 201, 144, 215, 191, 194, 16, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 204, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Copenhagen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 30, 140, 96, 155, 213, 190, 208, 200, 67, 87, 112, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 36, 16, 144, 211, 121, 133, 16, 212, 27, 173, 144, 213, 94, 173, 16, 213, 223, 224, 16, 215, 71, 201, 144, 215, 191, 194, 16, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 204, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 8, 0, 0, 0, 17, 255, 255, 255, 255, 105, 134, 207, 180, 255, 255, 255, 255, 113, 12, 239, 52, 255, 255, 255, 255, 155, 30, 140, 96, 255, 255, 255, 255, 155, 213, 190, 208, 255, 255, 255, 255, 200, 67, 87, 112, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 36, 16, 144, 255, 255, 255, 255, 211, 121, 133, 16, 255, 255, 255, 255, 212, 27, 173, 144, 255, 255, 255, 255, 213, 94, 173, 16, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 215, 71, 201, 144, 255, 255, 255, 255, 215, 191, 194, 16, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 11, 204, 0, 0, 0, 0, 11, 204, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 67, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Dublin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 10, 0, 0, 0, 20, 128, 0, 0, 0, 155, 38, 179, 145, 155, 214, 11, 17, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 165, 148, 63, 0, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 212, 73, 224, 32, 213, 30, 33, 160, 214, 78, 172, 32, 215, 44, 40, 32, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 1, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 73, 83, 84, 45, 49, 71, 77, 84, 48, 44, 77, 49, 48, 46, 53, 46, 48, 44, 77, 51, 46, 53, 46, 48, 47, 49, 10}, + "zoneinfo/Europe/Dublin": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 9, 0, 0, 0, 20, 128, 0, 0, 0, 155, 38, 179, 145, 155, 214, 11, 17, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 212, 73, 224, 32, 213, 30, 33, 160, 214, 78, 172, 32, 215, 44, 40, 32, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 1, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 9, 0, 0, 0, 20, 255, 255, 255, 255, 87, 209, 10, 220, 255, 255, 255, 255, 155, 38, 179, 145, 255, 255, 255, 255, 155, 214, 11, 17, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 215, 44, 40, 32, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 255, 255, 250, 36, 0, 0, 255, 255, 250, 15, 0, 4, 0, 0, 8, 31, 1, 8, 0, 0, 14, 16, 1, 12, 0, 0, 0, 0, 0, 16, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 1, 16, 0, 0, 14, 16, 0, 8, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 68, 77, 84, 0, 73, 83, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 73, 83, 84, 45, 49, 71, 77, 84, 48, 44, 77, 49, 48, 46, 53, 46, 48, 44, 77, 51, 46, 53, 46, 48, 47, 49, 10}, - "zoneinfo/Europe/Gibraltar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 7, 0, 0, 0, 26, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 250, 252, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Gibraltar": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 7, 0, 0, 0, 26, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 250, 252, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 7, 0, 0, 0, 26, 255, 255, 255, 255, 87, 209, 10, 4, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 250, 252, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Guernsey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Europe/Guernsey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Europe/Helsinki": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 164, 115, 111, 27, 203, 206, 81, 96, 204, 192, 229, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Helsinki": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 164, 115, 111, 27, 203, 206, 81, 96, 204, 192, 229, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 83, 186, 38, 155, 255, 255, 255, 255, 164, 115, 111, 27, 255, 255, 255, 255, 203, 206, 81, 96, 255, 255, 255, 255, 204, 192, 229, 96, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 19, 206, 128, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 23, 243, 176, 128, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Isle_of_Man": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Europe/Isle_of_Man": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Europe/Istanbul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 69, 152, 50, 224, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Europe/Istanbul": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 11, 0, 0, 0, 25, 255, 255, 255, 255, 86, 182, 200, 216, 255, 255, 255, 255, 144, 139, 245, 152, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 190, 208, 255, 255, 255, 255, 162, 101, 99, 224, 255, 255, 255, 255, 163, 123, 130, 80, 255, 255, 255, 255, 164, 78, 128, 96, 255, 255, 255, 255, 165, 63, 180, 208, 255, 255, 255, 255, 166, 37, 39, 224, 255, 255, 255, 255, 167, 39, 127, 208, 255, 255, 255, 255, 170, 40, 40, 96, 255, 255, 255, 255, 170, 225, 253, 208, 255, 255, 255, 255, 171, 249, 137, 224, 255, 255, 255, 255, 172, 195, 49, 80, 255, 255, 255, 255, 200, 127, 238, 96, 255, 255, 255, 255, 200, 255, 193, 208, 255, 255, 255, 255, 201, 74, 245, 96, 255, 255, 255, 255, 202, 206, 128, 80, 255, 255, 255, 255, 203, 203, 174, 96, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 209, 113, 235, 224, 255, 255, 255, 255, 210, 107, 9, 80, 255, 255, 255, 255, 211, 162, 57, 96, 255, 255, 255, 255, 212, 67, 2, 80, 255, 255, 255, 255, 213, 76, 13, 224, 255, 255, 255, 255, 214, 41, 123, 208, 255, 255, 255, 255, 215, 43, 239, 224, 255, 255, 255, 255, 216, 9, 93, 208, 255, 255, 255, 255, 217, 2, 151, 96, 255, 255, 255, 255, 217, 233, 63, 208, 255, 255, 255, 255, 218, 239, 168, 96, 255, 255, 255, 255, 219, 210, 92, 80, 255, 255, 255, 255, 220, 212, 208, 96, 255, 255, 255, 255, 221, 179, 143, 208, 255, 255, 255, 255, 241, 244, 185, 96, 255, 255, 255, 255, 242, 100, 186, 208, 255, 255, 255, 255, 245, 104, 6, 96, 255, 255, 255, 255, 246, 31, 56, 208, 0, 0, 0, 0, 0, 160, 186, 224, 0, 0, 0, 0, 1, 107, 179, 208, 0, 0, 0, 0, 2, 128, 156, 224, 0, 0, 0, 0, 3, 75, 149, 208, 0, 0, 0, 0, 4, 105, 185, 96, 0, 0, 0, 0, 5, 52, 178, 80, 0, 0, 0, 0, 6, 110, 147, 112, 0, 0, 0, 0, 7, 57, 168, 128, 0, 0, 0, 0, 7, 251, 117, 0, 0, 0, 0, 0, 9, 25, 166, 160, 0, 0, 0, 0, 9, 219, 58, 224, 0, 0, 0, 0, 10, 240, 7, 208, 0, 0, 0, 0, 12, 16, 206, 96, 0, 0, 0, 0, 12, 217, 36, 80, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 166, 145, 80, 0, 0, 0, 0, 15, 132, 27, 96, 0, 0, 0, 0, 16, 134, 115, 80, 0, 0, 0, 0, 18, 103, 152, 192, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 71, 122, 192, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 39, 92, 192, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 24, 7, 62, 192, 0, 0, 0, 0, 25, 137, 148, 80, 0, 0, 0, 0, 25, 220, 148, 192, 0, 0, 0, 0, 28, 198, 211, 208, 0, 0, 0, 0, 29, 155, 21, 80, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 9, 112, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 139, 131, 240, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 143, 221, 144, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 56, 190, 16, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 62, 158, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 87, 207, 46, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Europe/Jersey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Europe/Jersey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Europe/Kaliningrad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 149, 132, 96, 210, 138, 173, 80, 210, 219, 38, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 84, 76, 43, 112, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 12, 0, 0, 19, 56, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 1, 21, 0, 0, 28, 32, 0, 26, 0, 0, 42, 48, 0, 30, 0, 0, 28, 32, 0, 26, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + "zoneinfo/Europe/Kaliningrad": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 149, 132, 96, 210, 138, 173, 80, 210, 219, 38, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 84, 76, 43, 112, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 12, 0, 0, 19, 56, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 1, 21, 0, 0, 28, 32, 0, 26, 0, 0, 42, 48, 0, 30, 0, 0, 28, 32, 0, 26, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 15, 0, 0, 0, 34, 255, 255, 255, 255, 111, 162, 91, 72, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 208, 250, 1, 112, 255, 255, 255, 255, 209, 149, 132, 96, 255, 255, 255, 255, 210, 138, 173, 80, 255, 255, 255, 255, 210, 219, 38, 224, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 25, 0, 0, 0, 0, 0, 38, 12, 10, 0, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 38, 128, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 213, 8, 128, 0, 0, 0, 0, 42, 196, 249, 128, 0, 0, 0, 0, 43, 180, 234, 128, 0, 0, 0, 0, 44, 164, 219, 128, 0, 0, 0, 0, 45, 148, 204, 128, 0, 0, 0, 0, 46, 132, 189, 128, 0, 0, 0, 0, 47, 116, 174, 128, 0, 0, 0, 0, 48, 100, 159, 128, 0, 0, 0, 0, 49, 93, 203, 0, 0, 0, 0, 0, 50, 114, 166, 0, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 143, 0, 0, 0, 0, 0, 54, 50, 106, 0, 0, 0, 0, 0, 54, 253, 113, 0, 0, 0, 0, 0, 56, 27, 134, 128, 0, 0, 0, 0, 56, 221, 83, 0, 0, 0, 0, 0, 57, 251, 104, 128, 0, 0, 0, 0, 58, 189, 53, 0, 0, 0, 0, 0, 59, 219, 74, 128, 0, 0, 0, 0, 60, 166, 81, 128, 0, 0, 0, 0, 61, 187, 44, 128, 0, 0, 0, 0, 62, 134, 51, 128, 0, 0, 0, 0, 63, 155, 14, 128, 0, 0, 0, 0, 64, 102, 21, 128, 0, 0, 0, 0, 65, 132, 43, 0, 0, 0, 0, 0, 66, 69, 247, 128, 0, 0, 0, 0, 67, 100, 13, 0, 0, 0, 0, 0, 68, 37, 217, 128, 0, 0, 0, 0, 69, 67, 239, 0, 0, 0, 0, 0, 70, 5, 187, 128, 0, 0, 0, 0, 71, 35, 209, 0, 0, 0, 0, 0, 71, 238, 216, 0, 0, 0, 0, 0, 73, 3, 179, 0, 0, 0, 0, 0, 73, 206, 186, 0, 0, 0, 0, 0, 74, 227, 149, 0, 0, 0, 0, 0, 75, 174, 156, 0, 0, 0, 0, 0, 76, 204, 177, 128, 0, 0, 0, 0, 77, 142, 126, 0, 0, 0, 0, 0, 84, 76, 43, 112, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 12, 0, 0, 19, 56, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 1, 21, 0, 0, 28, 32, 0, 26, 0, 0, 42, 48, 0, 30, 0, 0, 28, 32, 0, 26, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 51, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 10}, - "zoneinfo/Europe/Kiev": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 13, 0, 0, 0, 34, 128, 0, 0, 0, 170, 25, 167, 100, 181, 164, 25, 96, 202, 205, 46, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 206, 205, 168, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 141, 32, 224, 40, 229, 23, 128, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 28, 156, 0, 0, 0, 0, 28, 156, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Kiev": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 13, 0, 0, 0, 34, 128, 0, 0, 0, 170, 25, 167, 100, 181, 164, 25, 96, 202, 205, 46, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 206, 205, 168, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 141, 32, 224, 40, 229, 23, 128, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 28, 156, 0, 0, 0, 0, 28, 156, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 13, 0, 0, 0, 34, 255, 255, 255, 255, 86, 182, 199, 100, 255, 255, 255, 255, 170, 25, 167, 100, 255, 255, 255, 255, 181, 164, 25, 96, 255, 255, 255, 255, 202, 205, 46, 208, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 206, 205, 168, 112, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 38, 141, 32, 224, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 28, 156, 0, 0, 0, 0, 28, 156, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 76, 77, 84, 0, 75, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Kirov": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 8, 0, 0, 0, 16, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 7, 0, 0, 46, 152, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Europe/Kirov": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 8, 0, 0, 0, 16, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 7, 0, 0, 46, 152, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 8, 0, 0, 0, 16, 255, 255, 255, 255, 161, 0, 57, 128, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 7, 0, 0, 46, 152, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Europe/Lisbon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 27, 128, 0, 0, 0, 146, 230, 142, 128, 155, 75, 109, 112, 155, 254, 199, 128, 156, 156, 237, 112, 157, 201, 131, 112, 158, 127, 114, 112, 159, 170, 182, 240, 160, 95, 84, 112, 161, 139, 234, 112, 162, 65, 217, 112, 163, 110, 111, 112, 164, 35, 12, 240, 165, 79, 162, 240, 170, 5, 239, 112, 170, 244, 142, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 217, 223, 112, 201, 1, 47, 112, 201, 241, 32, 112, 202, 226, 98, 240, 203, 181, 82, 240, 203, 236, 163, 224, 204, 128, 75, 224, 204, 220, 162, 240, 205, 149, 52, 240, 205, 195, 75, 96, 206, 114, 162, 224, 206, 197, 191, 112, 207, 117, 22, 240, 207, 172, 103, 224, 208, 82, 132, 224, 208, 165, 161, 112, 209, 84, 248, 240, 209, 140, 73, 224, 210, 50, 102, 224, 210, 133, 131, 112, 211, 89, 196, 240, 212, 73, 181, 240, 213, 57, 209, 32, 214, 41, 194, 32, 215, 25, 179, 32, 216, 9, 164, 32, 216, 249, 149, 32, 217, 233, 134, 32, 220, 185, 89, 32, 221, 178, 132, 160, 222, 162, 117, 160, 223, 146, 102, 160, 224, 130, 87, 160, 225, 114, 72, 160, 226, 98, 57, 160, 227, 82, 42, 160, 228, 66, 27, 160, 229, 50, 12, 160, 230, 33, 253, 160, 231, 27, 41, 32, 232, 11, 26, 32, 232, 251, 11, 32, 233, 234, 252, 32, 234, 218, 237, 32, 235, 202, 222, 32, 236, 186, 207, 32, 237, 170, 192, 32, 238, 154, 177, 32, 239, 138, 162, 32, 240, 122, 147, 32, 241, 106, 132, 32, 242, 99, 175, 160, 243, 83, 160, 160, 244, 67, 145, 160, 245, 51, 130, 160, 246, 35, 115, 160, 247, 19, 100, 160, 248, 3, 85, 160, 248, 243, 70, 160, 12, 171, 42, 0, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 6, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 9, 8, 9, 8, 9, 8, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Europe/Lisbon": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 27, 128, 0, 0, 0, 146, 230, 142, 128, 155, 75, 109, 112, 155, 254, 199, 128, 156, 156, 237, 112, 157, 201, 131, 112, 158, 127, 114, 112, 159, 170, 182, 240, 160, 95, 84, 112, 161, 139, 234, 112, 162, 65, 217, 112, 163, 110, 111, 112, 164, 35, 12, 240, 165, 79, 162, 240, 170, 5, 239, 112, 170, 244, 142, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 217, 223, 112, 201, 1, 47, 112, 201, 241, 32, 112, 202, 226, 98, 240, 203, 181, 82, 240, 203, 236, 163, 224, 204, 128, 75, 224, 204, 220, 162, 240, 205, 149, 52, 240, 205, 195, 75, 96, 206, 114, 162, 224, 206, 197, 191, 112, 207, 117, 22, 240, 207, 172, 103, 224, 208, 82, 132, 224, 208, 165, 161, 112, 209, 84, 248, 240, 209, 140, 73, 224, 210, 50, 102, 224, 210, 133, 131, 112, 211, 89, 196, 240, 212, 73, 181, 240, 213, 57, 209, 32, 214, 41, 194, 32, 215, 25, 179, 32, 216, 9, 164, 32, 216, 249, 149, 32, 217, 233, 134, 32, 220, 185, 89, 32, 221, 178, 132, 160, 222, 162, 117, 160, 223, 146, 102, 160, 224, 130, 87, 160, 225, 114, 72, 160, 226, 98, 57, 160, 227, 82, 42, 160, 228, 66, 27, 160, 229, 50, 12, 160, 230, 33, 253, 160, 231, 27, 41, 32, 232, 11, 26, 32, 232, 251, 11, 32, 233, 234, 252, 32, 234, 218, 237, 32, 235, 202, 222, 32, 236, 186, 207, 32, 237, 170, 192, 32, 238, 154, 177, 32, 239, 138, 162, 32, 240, 122, 147, 32, 241, 106, 132, 32, 242, 99, 175, 160, 243, 83, 160, 160, 244, 67, 145, 160, 245, 51, 130, 160, 246, 35, 115, 160, 247, 19, 100, 160, 248, 3, 85, 160, 248, 243, 70, 160, 12, 171, 42, 0, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 6, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 9, 8, 9, 8, 9, 8, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 27, 255, 255, 255, 255, 94, 61, 12, 29, 255, 255, 255, 255, 146, 230, 142, 128, 255, 255, 255, 255, 155, 75, 109, 112, 255, 255, 255, 255, 155, 254, 199, 128, 255, 255, 255, 255, 156, 156, 237, 112, 255, 255, 255, 255, 157, 201, 131, 112, 255, 255, 255, 255, 158, 127, 114, 112, 255, 255, 255, 255, 159, 170, 182, 240, 255, 255, 255, 255, 160, 95, 84, 112, 255, 255, 255, 255, 161, 139, 234, 112, 255, 255, 255, 255, 162, 65, 217, 112, 255, 255, 255, 255, 163, 110, 111, 112, 255, 255, 255, 255, 164, 35, 12, 240, 255, 255, 255, 255, 165, 79, 162, 240, 255, 255, 255, 255, 170, 5, 239, 112, 255, 255, 255, 255, 170, 244, 142, 240, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 35, 240, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 5, 240, 255, 255, 255, 255, 177, 137, 107, 240, 255, 255, 255, 255, 178, 112, 34, 112, 255, 255, 255, 255, 179, 114, 136, 112, 255, 255, 255, 255, 180, 80, 4, 112, 255, 255, 255, 255, 183, 50, 76, 112, 255, 255, 255, 255, 184, 15, 200, 112, 255, 255, 255, 255, 184, 255, 185, 112, 255, 255, 255, 255, 185, 239, 170, 112, 255, 255, 255, 255, 188, 200, 183, 240, 255, 255, 255, 255, 189, 184, 168, 240, 255, 255, 255, 255, 190, 159, 95, 112, 255, 255, 255, 255, 191, 152, 138, 240, 255, 255, 255, 255, 192, 154, 240, 240, 255, 255, 255, 255, 193, 120, 108, 240, 255, 255, 255, 255, 194, 104, 93, 240, 255, 255, 255, 255, 195, 88, 78, 240, 255, 255, 255, 255, 196, 63, 5, 112, 255, 255, 255, 255, 197, 56, 48, 240, 255, 255, 255, 255, 198, 58, 150, 240, 255, 255, 255, 255, 199, 88, 172, 112, 255, 255, 255, 255, 199, 217, 223, 112, 255, 255, 255, 255, 201, 1, 47, 112, 255, 255, 255, 255, 201, 241, 32, 112, 255, 255, 255, 255, 202, 226, 98, 240, 255, 255, 255, 255, 203, 181, 82, 240, 255, 255, 255, 255, 203, 236, 163, 224, 255, 255, 255, 255, 204, 128, 75, 224, 255, 255, 255, 255, 204, 220, 162, 240, 255, 255, 255, 255, 205, 149, 52, 240, 255, 255, 255, 255, 205, 195, 75, 96, 255, 255, 255, 255, 206, 114, 162, 224, 255, 255, 255, 255, 206, 197, 191, 112, 255, 255, 255, 255, 207, 117, 22, 240, 255, 255, 255, 255, 207, 172, 103, 224, 255, 255, 255, 255, 208, 82, 132, 224, 255, 255, 255, 255, 208, 165, 161, 112, 255, 255, 255, 255, 209, 84, 248, 240, 255, 255, 255, 255, 209, 140, 73, 224, 255, 255, 255, 255, 210, 50, 102, 224, 255, 255, 255, 255, 210, 133, 131, 112, 255, 255, 255, 255, 211, 89, 196, 240, 255, 255, 255, 255, 212, 73, 181, 240, 255, 255, 255, 255, 213, 57, 209, 32, 255, 255, 255, 255, 214, 41, 194, 32, 255, 255, 255, 255, 215, 25, 179, 32, 255, 255, 255, 255, 216, 9, 164, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 217, 233, 134, 32, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 178, 132, 160, 255, 255, 255, 255, 222, 162, 117, 160, 255, 255, 255, 255, 223, 146, 102, 160, 255, 255, 255, 255, 224, 130, 87, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 98, 57, 160, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 66, 27, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 33, 253, 160, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 11, 26, 32, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 234, 252, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 202, 222, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 170, 192, 32, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 138, 162, 32, 255, 255, 255, 255, 240, 122, 147, 32, 255, 255, 255, 255, 241, 106, 132, 32, 255, 255, 255, 255, 242, 99, 175, 160, 255, 255, 255, 255, 243, 83, 160, 160, 255, 255, 255, 255, 244, 67, 145, 160, 255, 255, 255, 255, 245, 51, 130, 160, 255, 255, 255, 255, 246, 35, 115, 160, 255, 255, 255, 255, 247, 19, 100, 160, 255, 255, 255, 255, 248, 3, 85, 160, 255, 255, 255, 255, 248, 243, 70, 160, 0, 0, 0, 0, 12, 171, 42, 0, 0, 0, 0, 0, 13, 155, 27, 0, 0, 0, 0, 0, 14, 139, 12, 0, 0, 0, 0, 0, 15, 132, 55, 128, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 100, 25, 128, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 67, 251, 128, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 189, 160, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 0, 6, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 9, 8, 9, 8, 9, 8, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Europe/Ljubljana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Ljubljana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 161, 140, 16, 210, 78, 64, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 94, 60, 240, 72, 255, 255, 255, 255, 202, 2, 53, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 161, 140, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/London": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Europe/London": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Europe/Luxembourg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 14, 0, 0, 0, 22, 132, 162, 173, 188, 155, 30, 140, 96, 155, 213, 218, 240, 156, 234, 167, 224, 157, 164, 153, 112, 158, 185, 144, 144, 159, 132, 151, 144, 159, 224, 196, 112, 160, 96, 165, 240, 161, 126, 229, 160, 162, 46, 18, 240, 163, 122, 105, 16, 164, 53, 129, 240, 165, 94, 63, 144, 166, 37, 53, 240, 167, 39, 170, 0, 168, 42, 1, 240, 169, 7, 154, 16, 169, 238, 52, 112, 170, 231, 110, 0, 171, 216, 162, 112, 172, 199, 80, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 107, 240, 178, 112, 48, 128, 179, 114, 136, 112, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 184, 255, 227, 160, 185, 239, 212, 160, 186, 214, 139, 32, 187, 216, 241, 32, 188, 200, 226, 32, 189, 184, 211, 32, 190, 159, 137, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 104, 136, 32, 195, 88, 121, 32, 196, 63, 47, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 200, 66, 48, 32, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 111, 176, 16, 209, 114, 22, 16, 210, 78, 64, 144, 211, 145, 64, 16, 212, 75, 35, 144, 13, 42, 253, 112, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 11, 9, 10, 9, 10, 2, 3, 4, 3, 4, 2, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 0, 0, 5, 196, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 1, 13, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 18, 0, 0, 14, 16, 1, 13, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Luxembourg": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 14, 0, 0, 0, 22, 132, 162, 173, 188, 155, 30, 140, 96, 155, 213, 218, 240, 156, 234, 167, 224, 157, 164, 153, 112, 158, 185, 144, 144, 159, 132, 151, 144, 159, 224, 196, 112, 160, 96, 165, 240, 161, 126, 229, 160, 162, 46, 18, 240, 163, 122, 105, 16, 164, 53, 129, 240, 165, 94, 63, 144, 166, 37, 53, 240, 167, 39, 170, 0, 168, 42, 1, 240, 169, 7, 154, 16, 169, 238, 52, 112, 170, 231, 110, 0, 171, 216, 162, 112, 172, 199, 80, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 107, 240, 178, 112, 48, 128, 179, 114, 136, 112, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 184, 255, 227, 160, 185, 239, 212, 160, 186, 214, 139, 32, 187, 216, 241, 32, 188, 200, 226, 32, 189, 184, 211, 32, 190, 159, 137, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 104, 136, 32, 195, 88, 121, 32, 196, 63, 47, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 200, 66, 48, 32, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 111, 176, 16, 209, 114, 22, 16, 210, 78, 64, 144, 211, 145, 64, 16, 212, 75, 35, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 11, 9, 10, 9, 10, 2, 3, 4, 3, 4, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 0, 0, 5, 196, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 1, 13, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 18, 0, 0, 14, 16, 1, 13, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 14, 0, 0, 0, 22, 255, 255, 255, 255, 132, 162, 173, 188, 255, 255, 255, 255, 155, 30, 140, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 234, 167, 224, 255, 255, 255, 255, 157, 164, 153, 112, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 159, 224, 196, 112, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 126, 229, 160, 255, 255, 255, 255, 162, 46, 18, 240, 255, 255, 255, 255, 163, 122, 105, 16, 255, 255, 255, 255, 164, 53, 129, 240, 255, 255, 255, 255, 165, 94, 63, 144, 255, 255, 255, 255, 166, 37, 53, 240, 255, 255, 255, 255, 167, 39, 170, 0, 255, 255, 255, 255, 168, 42, 1, 240, 255, 255, 255, 255, 169, 7, 154, 16, 255, 255, 255, 255, 169, 238, 52, 112, 255, 255, 255, 255, 170, 231, 110, 0, 255, 255, 255, 255, 171, 216, 162, 112, 255, 255, 255, 255, 172, 199, 80, 0, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 50, 0, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 20, 0, 255, 255, 255, 255, 177, 137, 107, 240, 255, 255, 255, 255, 178, 112, 48, 128, 255, 255, 255, 255, 179, 114, 136, 112, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 184, 255, 227, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 214, 139, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 200, 226, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 159, 137, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 104, 136, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 63, 47, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 200, 66, 48, 32, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 111, 176, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 255, 255, 255, 255, 211, 145, 64, 16, 255, 255, 255, 255, 212, 75, 35, 144, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 11, 9, 10, 9, 10, 2, 3, 4, 3, 4, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 0, 0, 5, 196, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 1, 13, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 18, 0, 0, 14, 16, 1, 13, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Madrid": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 11, 0, 0, 0, 27, 128, 0, 0, 0, 158, 186, 197, 240, 159, 160, 57, 0, 160, 144, 27, 240, 161, 129, 108, 128, 170, 5, 239, 112, 170, 231, 110, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 179, 114, 136, 112, 180, 80, 18, 128, 194, 201, 236, 240, 195, 88, 93, 0, 196, 72, 63, 240, 196, 109, 27, 224, 197, 57, 116, 96, 199, 33, 91, 128, 199, 245, 142, 240, 203, 245, 222, 96, 204, 149, 113, 240, 205, 195, 75, 96, 206, 160, 213, 112, 207, 163, 45, 96, 208, 128, 183, 112, 209, 131, 15, 96, 210, 96, 153, 112, 211, 98, 241, 96, 212, 64, 123, 112, 217, 30, 70, 224, 217, 233, 91, 240, 8, 13, 205, 224, 8, 244, 146, 112, 9, 237, 175, 224, 10, 212, 116, 112, 11, 187, 28, 224, 12, 171, 27, 240, 13, 164, 57, 96, 14, 138, 253, 240, 15, 132, 69, 144, 16, 116, 54, 144, 16, 237, 100, 112, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 8, 6, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 255, 255, 252, 140, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Madrid": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 11, 0, 0, 0, 27, 128, 0, 0, 0, 158, 186, 197, 240, 159, 160, 57, 0, 160, 144, 27, 240, 161, 129, 108, 128, 170, 5, 239, 112, 170, 231, 110, 0, 173, 201, 167, 240, 174, 167, 50, 0, 175, 160, 79, 112, 176, 135, 20, 0, 177, 137, 122, 0, 178, 112, 48, 128, 179, 114, 136, 112, 180, 80, 18, 128, 194, 201, 236, 240, 195, 88, 93, 0, 196, 72, 63, 240, 196, 109, 27, 224, 197, 57, 116, 96, 199, 33, 91, 128, 199, 245, 142, 240, 203, 245, 222, 96, 204, 149, 113, 240, 205, 195, 75, 96, 206, 160, 213, 112, 207, 163, 45, 96, 208, 128, 183, 112, 209, 131, 15, 96, 210, 96, 153, 112, 211, 98, 241, 96, 212, 64, 123, 112, 217, 30, 70, 224, 217, 233, 91, 240, 8, 13, 205, 224, 8, 244, 146, 112, 9, 237, 175, 224, 10, 212, 116, 112, 11, 187, 28, 224, 12, 171, 27, 240, 13, 164, 57, 96, 14, 138, 253, 240, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 255, 255, 252, 140, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 11, 0, 0, 0, 27, 255, 255, 255, 255, 126, 54, 181, 0, 255, 255, 255, 255, 158, 186, 197, 240, 255, 255, 255, 255, 159, 160, 57, 0, 255, 255, 255, 255, 160, 144, 27, 240, 255, 255, 255, 255, 161, 129, 108, 128, 255, 255, 255, 255, 170, 5, 239, 112, 255, 255, 255, 255, 170, 231, 110, 0, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 50, 0, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 20, 0, 255, 255, 255, 255, 177, 137, 122, 0, 255, 255, 255, 255, 178, 112, 48, 128, 255, 255, 255, 255, 179, 114, 136, 112, 255, 255, 255, 255, 180, 80, 18, 128, 255, 255, 255, 255, 194, 201, 236, 240, 255, 255, 255, 255, 195, 88, 93, 0, 255, 255, 255, 255, 196, 72, 63, 240, 255, 255, 255, 255, 196, 109, 27, 224, 255, 255, 255, 255, 197, 57, 116, 96, 255, 255, 255, 255, 199, 33, 91, 128, 255, 255, 255, 255, 199, 245, 142, 240, 255, 255, 255, 255, 203, 245, 222, 96, 255, 255, 255, 255, 204, 149, 113, 240, 255, 255, 255, 255, 205, 195, 75, 96, 255, 255, 255, 255, 206, 160, 213, 112, 255, 255, 255, 255, 207, 163, 45, 96, 255, 255, 255, 255, 208, 128, 183, 112, 255, 255, 255, 255, 209, 131, 15, 96, 255, 255, 255, 255, 210, 96, 153, 112, 255, 255, 255, 255, 211, 98, 241, 96, 255, 255, 255, 255, 212, 64, 123, 112, 255, 255, 255, 255, 217, 30, 70, 224, 255, 255, 255, 255, 217, 233, 91, 240, 0, 0, 0, 0, 8, 13, 205, 224, 0, 0, 0, 0, 8, 244, 146, 112, 0, 0, 0, 0, 9, 237, 175, 224, 0, 0, 0, 0, 10, 212, 116, 112, 0, 0, 0, 0, 11, 187, 28, 224, 0, 0, 0, 0, 12, 171, 27, 240, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 138, 253, 240, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 2, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 255, 255, 252, 140, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 0, 0, 28, 32, 1, 18, 0, 0, 14, 16, 0, 23, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Malta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 26, 51, 112, 7, 10, 36, 112, 8, 23, 22, 112, 8, 218, 52, 112, 9, 247, 20, 144, 10, 194, 13, 128, 11, 214, 246, 144, 12, 161, 239, 128, 13, 182, 216, 144, 14, 129, 209, 128, 15, 150, 186, 144, 16, 97, 179, 128, 17, 118, 156, 144, 18, 65, 149, 128, 19, 69, 91, 16, 20, 42, 178, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 13, 156, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Malta": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 26, 51, 112, 7, 10, 36, 112, 8, 23, 22, 112, 8, 218, 52, 112, 9, 247, 20, 144, 10, 194, 13, 128, 11, 214, 246, 144, 12, 161, 239, 128, 13, 182, 216, 144, 14, 129, 209, 128, 15, 150, 186, 144, 16, 97, 179, 128, 17, 118, 156, 144, 18, 65, 149, 128, 19, 69, 91, 16, 20, 42, 178, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 13, 156, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 112, 189, 211, 100, 255, 255, 255, 255, 155, 56, 248, 112, 255, 255, 255, 255, 155, 213, 204, 224, 255, 255, 255, 255, 156, 197, 203, 240, 255, 255, 255, 255, 157, 183, 0, 96, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 28, 224, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 126, 173, 96, 255, 255, 255, 255, 162, 92, 55, 112, 255, 255, 255, 255, 163, 76, 26, 96, 255, 255, 255, 255, 200, 108, 53, 240, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 76, 210, 240, 255, 255, 255, 255, 211, 62, 49, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 29, 247, 112, 255, 255, 255, 255, 214, 41, 151, 240, 255, 255, 255, 255, 214, 235, 128, 144, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 249, 51, 181, 240, 255, 255, 255, 255, 249, 217, 196, 224, 255, 255, 255, 255, 251, 28, 210, 112, 255, 255, 255, 255, 251, 185, 180, 240, 255, 255, 255, 255, 252, 252, 180, 112, 255, 255, 255, 255, 253, 153, 150, 240, 255, 255, 255, 255, 254, 229, 208, 240, 255, 255, 255, 255, 255, 130, 179, 112, 0, 0, 0, 0, 0, 197, 178, 240, 0, 0, 0, 0, 1, 98, 149, 112, 0, 0, 0, 0, 2, 156, 90, 112, 0, 0, 0, 0, 3, 66, 119, 112, 0, 0, 0, 0, 4, 133, 118, 240, 0, 0, 0, 0, 5, 43, 147, 240, 0, 0, 0, 0, 6, 26, 51, 112, 0, 0, 0, 0, 7, 10, 36, 112, 0, 0, 0, 0, 8, 23, 22, 112, 0, 0, 0, 0, 8, 218, 52, 112, 0, 0, 0, 0, 9, 247, 20, 144, 0, 0, 0, 0, 10, 194, 13, 128, 0, 0, 0, 0, 11, 214, 246, 144, 0, 0, 0, 0, 12, 161, 239, 128, 0, 0, 0, 0, 13, 182, 216, 144, 0, 0, 0, 0, 14, 129, 209, 128, 0, 0, 0, 0, 15, 150, 186, 144, 0, 0, 0, 0, 16, 97, 179, 128, 0, 0, 0, 0, 17, 118, 156, 144, 0, 0, 0, 0, 18, 65, 149, 128, 0, 0, 0, 0, 19, 69, 91, 16, 0, 0, 0, 0, 20, 42, 178, 0, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 13, 156, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Mariehamn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 164, 115, 111, 27, 203, 206, 81, 96, 204, 192, 229, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Mariehamn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 128, 0, 0, 0, 164, 115, 111, 27, 203, 206, 81, 96, 204, 192, 229, 96, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 83, 186, 38, 155, 255, 255, 255, 255, 164, 115, 111, 27, 255, 255, 255, 255, 203, 206, 81, 96, 255, 255, 255, 255, 204, 192, 229, 96, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 19, 206, 128, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 23, 243, 176, 128, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 23, 101, 0, 0, 0, 0, 23, 101, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 72, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Minsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 13, 0, 0, 0, 38, 128, 0, 0, 0, 170, 25, 170, 56, 181, 164, 25, 96, 202, 94, 112, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 10, 2, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 37, 158, 115, 80, 39, 245, 24, 112, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 3, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 12, 12, 0, 0, 25, 216, 0, 0, 0, 0, 25, 200, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 34, 76, 77, 84, 0, 77, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Europe/Minsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 13, 0, 0, 0, 38, 128, 0, 0, 0, 170, 25, 170, 56, 181, 164, 25, 96, 202, 94, 112, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 10, 2, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 39, 245, 24, 112, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 12, 12, 0, 0, 25, 216, 0, 0, 0, 0, 25, 200, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 34, 76, 77, 84, 0, 77, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 13, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 202, 40, 255, 255, 255, 255, 170, 25, 170, 56, 255, 255, 255, 255, 181, 164, 25, 96, 255, 255, 255, 255, 202, 94, 112, 208, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 10, 2, 96, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 213, 8, 128, 0, 0, 0, 0, 42, 196, 249, 128, 0, 0, 0, 0, 43, 180, 234, 128, 0, 0, 0, 0, 44, 164, 219, 128, 0, 0, 0, 0, 45, 148, 204, 128, 0, 0, 0, 0, 46, 132, 189, 128, 0, 0, 0, 0, 47, 116, 174, 128, 0, 0, 0, 0, 48, 100, 159, 128, 0, 0, 0, 0, 49, 93, 203, 0, 0, 0, 0, 0, 50, 114, 166, 0, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 143, 0, 0, 0, 0, 0, 54, 50, 106, 0, 0, 0, 0, 0, 54, 253, 113, 0, 0, 0, 0, 0, 56, 27, 134, 128, 0, 0, 0, 0, 56, 221, 83, 0, 0, 0, 0, 0, 57, 251, 104, 128, 0, 0, 0, 0, 58, 189, 53, 0, 0, 0, 0, 0, 59, 219, 74, 128, 0, 0, 0, 0, 60, 166, 81, 128, 0, 0, 0, 0, 61, 187, 44, 128, 0, 0, 0, 0, 62, 134, 51, 128, 0, 0, 0, 0, 63, 155, 14, 128, 0, 0, 0, 0, 64, 102, 21, 128, 0, 0, 0, 0, 65, 132, 43, 0, 0, 0, 0, 0, 66, 69, 247, 128, 0, 0, 0, 0, 67, 100, 13, 0, 0, 0, 0, 0, 68, 37, 217, 128, 0, 0, 0, 0, 69, 67, 239, 0, 0, 0, 0, 0, 70, 5, 187, 128, 0, 0, 0, 0, 71, 35, 209, 0, 0, 0, 0, 0, 71, 238, 216, 0, 0, 0, 0, 0, 73, 3, 179, 0, 0, 0, 0, 0, 73, 206, 186, 0, 0, 0, 0, 0, 74, 227, 149, 0, 0, 0, 0, 0, 75, 174, 156, 0, 0, 0, 0, 0, 76, 204, 177, 128, 0, 0, 0, 0, 77, 142, 126, 0, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 12, 12, 0, 0, 25, 216, 0, 0, 0, 0, 25, 200, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 34, 76, 77, 84, 0, 77, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 43, 48, 51, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/Europe/Monaco": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 11, 0, 0, 0, 31, 128, 0, 0, 0, 145, 96, 80, 79, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 88, 38, 112, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 181, 73, 47, 240, 182, 47, 230, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 186, 214, 96, 240, 187, 216, 198, 240, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 218, 9, 160, 202, 23, 91, 240, 202, 226, 84, 224, 203, 173, 105, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 137, 241, 240, 209, 114, 22, 16, 210, 78, 64, 144, 11, 187, 57, 0, 12, 171, 27, 240, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 6, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 6, 236, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 28, 32, 1, 17, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Monaco": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 11, 0, 0, 0, 31, 128, 0, 0, 0, 145, 96, 80, 79, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 88, 38, 112, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 181, 73, 47, 240, 182, 47, 230, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 186, 214, 96, 240, 187, 216, 198, 240, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 218, 9, 160, 202, 23, 91, 240, 202, 226, 84, 224, 203, 173, 105, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 137, 241, 240, 209, 114, 22, 16, 210, 78, 64, 144, 11, 187, 57, 0, 12, 171, 27, 240, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 6, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 6, 236, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 28, 32, 1, 17, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 11, 0, 0, 0, 31, 255, 255, 255, 255, 107, 200, 69, 148, 255, 255, 255, 255, 145, 96, 80, 79, 255, 255, 255, 255, 155, 71, 120, 240, 255, 255, 255, 255, 155, 215, 44, 112, 255, 255, 255, 255, 156, 188, 145, 112, 255, 255, 255, 255, 157, 192, 72, 240, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 42, 240, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 128, 12, 240, 255, 255, 255, 255, 162, 46, 18, 240, 255, 255, 255, 255, 163, 122, 76, 240, 255, 255, 255, 255, 164, 53, 129, 240, 255, 255, 255, 255, 165, 94, 35, 112, 255, 255, 255, 255, 166, 37, 53, 240, 255, 255, 255, 255, 167, 39, 155, 240, 255, 255, 255, 255, 168, 88, 38, 112, 255, 255, 255, 255, 169, 7, 125, 240, 255, 255, 255, 255, 169, 238, 52, 112, 255, 255, 255, 255, 170, 231, 95, 240, 255, 255, 255, 255, 171, 215, 80, 240, 255, 255, 255, 255, 172, 199, 65, 240, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 35, 240, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 5, 240, 255, 255, 255, 255, 177, 137, 107, 240, 255, 255, 255, 255, 178, 112, 34, 112, 255, 255, 255, 255, 179, 114, 136, 112, 255, 255, 255, 255, 180, 80, 4, 112, 255, 255, 255, 255, 181, 73, 47, 240, 255, 255, 255, 255, 182, 47, 230, 112, 255, 255, 255, 255, 183, 50, 76, 112, 255, 255, 255, 255, 184, 15, 200, 112, 255, 255, 255, 255, 184, 255, 185, 112, 255, 255, 255, 255, 185, 239, 170, 112, 255, 255, 255, 255, 186, 214, 96, 240, 255, 255, 255, 255, 187, 216, 198, 240, 255, 255, 255, 255, 188, 200, 183, 240, 255, 255, 255, 255, 189, 184, 168, 240, 255, 255, 255, 255, 190, 159, 95, 112, 255, 255, 255, 255, 191, 152, 138, 240, 255, 255, 255, 255, 192, 154, 240, 240, 255, 255, 255, 255, 193, 120, 108, 240, 255, 255, 255, 255, 194, 104, 93, 240, 255, 255, 255, 255, 195, 88, 78, 240, 255, 255, 255, 255, 196, 63, 5, 112, 255, 255, 255, 255, 197, 56, 48, 240, 255, 255, 255, 255, 198, 58, 150, 240, 255, 255, 255, 255, 199, 88, 172, 112, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 23, 91, 240, 255, 255, 255, 255, 202, 226, 84, 224, 255, 255, 255, 255, 203, 173, 105, 240, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 137, 241, 240, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 11, 187, 57, 0, 0, 0, 0, 0, 12, 171, 27, 240, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 6, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 8, 7, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 6, 236, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 28, 32, 1, 17, 0, 0, 0, 0, 0, 13, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 0, 27, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Moscow": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 128, 0, 0, 0, 155, 95, 30, 199, 157, 62, 242, 121, 158, 42, 238, 249, 158, 247, 57, 105, 159, 132, 87, 249, 160, 216, 108, 233, 161, 0, 57, 128, 161, 60, 166, 64, 164, 16, 109, 192, 164, 61, 50, 176, 165, 21, 104, 176, 165, 61, 3, 192, 167, 30, 69, 80, 181, 164, 25, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 75, 45, 51, 10}, + "zoneinfo/Europe/Moscow": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 128, 0, 0, 0, 155, 95, 30, 199, 157, 62, 242, 121, 158, 42, 238, 249, 158, 247, 57, 105, 159, 132, 87, 249, 160, 216, 108, 233, 161, 0, 57, 128, 161, 60, 166, 64, 164, 16, 109, 192, 164, 61, 50, 176, 165, 21, 104, 176, 165, 61, 3, 192, 167, 30, 69, 80, 181, 164, 25, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 192, 199, 255, 255, 255, 255, 155, 95, 30, 199, 255, 255, 255, 255, 157, 62, 242, 121, 255, 255, 255, 255, 158, 42, 238, 249, 255, 255, 255, 255, 158, 247, 57, 105, 255, 255, 255, 255, 159, 132, 87, 249, 255, 255, 255, 255, 160, 216, 108, 233, 255, 255, 255, 255, 161, 0, 57, 128, 255, 255, 255, 255, 161, 60, 166, 64, 255, 255, 255, 255, 164, 16, 109, 192, 255, 255, 255, 255, 164, 61, 50, 176, 255, 255, 255, 255, 165, 21, 104, 176, 255, 255, 255, 255, 165, 61, 3, 192, 255, 255, 255, 255, 167, 30, 69, 80, 255, 255, 255, 255, 181, 164, 25, 96, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 120, 191, 128, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 75, 45, 51, 10}, - "zoneinfo/Europe/Nicosia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 5, 0, 0, 0, 13, 165, 119, 30, 184, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Nicosia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 5, 0, 0, 0, 13, 165, 119, 30, 184, 9, 237, 175, 224, 10, 221, 146, 208, 11, 250, 100, 224, 12, 190, 198, 80, 13, 164, 57, 96, 14, 138, 225, 208, 15, 132, 27, 96, 16, 117, 79, 208, 17, 99, 253, 96, 18, 83, 224, 80, 19, 77, 25, 224, 20, 51, 194, 80, 21, 35, 193, 96, 22, 19, 164, 80, 23, 3, 163, 96, 23, 243, 134, 80, 24, 227, 133, 96, 25, 211, 104, 80, 26, 195, 103, 96, 27, 188, 132, 208, 28, 172, 131, 224, 29, 156, 102, 208, 30, 140, 101, 224, 31, 124, 72, 208, 32, 108, 71, 224, 33, 92, 42, 208, 34, 76, 41, 224, 35, 60, 12, 208, 36, 44, 11, 224, 37, 27, 238, 208, 38, 11, 237, 224, 39, 5, 11, 80, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 77, 145, 208, 51, 61, 144, 224, 52, 45, 115, 208, 53, 29, 114, 224, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 5, 0, 0, 0, 13, 255, 255, 255, 255, 165, 119, 30, 184, 0, 0, 0, 0, 9, 237, 175, 224, 0, 0, 0, 0, 10, 221, 146, 208, 0, 0, 0, 0, 11, 250, 100, 224, 0, 0, 0, 0, 12, 190, 198, 80, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 138, 225, 208, 0, 0, 0, 0, 15, 132, 27, 96, 0, 0, 0, 0, 16, 117, 79, 208, 0, 0, 0, 0, 17, 99, 253, 96, 0, 0, 0, 0, 18, 83, 224, 80, 0, 0, 0, 0, 19, 77, 25, 224, 0, 0, 0, 0, 20, 51, 194, 80, 0, 0, 0, 0, 21, 35, 193, 96, 0, 0, 0, 0, 22, 19, 164, 80, 0, 0, 0, 0, 23, 3, 163, 96, 0, 0, 0, 0, 23, 243, 134, 80, 0, 0, 0, 0, 24, 227, 133, 96, 0, 0, 0, 0, 25, 211, 104, 80, 0, 0, 0, 0, 26, 195, 103, 96, 0, 0, 0, 0, 27, 188, 132, 208, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 102, 208, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 72, 208, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 42, 208, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 12, 208, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 27, 238, 208, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 39, 5, 11, 80, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 77, 145, 208, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 45, 115, 208, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 31, 72, 0, 0, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 9, 0, 0, 28, 32, 0, 9, 0, 0, 42, 48, 1, 4, 76, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Oslo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Oslo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 39, 227, 0, 155, 212, 123, 96, 200, 183, 77, 96, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 235, 175, 32, 144, 236, 168, 76, 16, 237, 152, 61, 16, 238, 136, 46, 16, 239, 120, 31, 16, 240, 104, 16, 16, 241, 88, 1, 16, 242, 71, 242, 16, 243, 55, 227, 16, 244, 39, 212, 16, 245, 23, 197, 16, 246, 16, 240, 144, 247, 47, 6, 16, 247, 240, 210, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 114, 238, 36, 108, 255, 255, 255, 255, 155, 39, 227, 0, 255, 255, 255, 255, 155, 212, 123, 96, 255, 255, 255, 255, 200, 183, 77, 96, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 98, 7, 16, 255, 255, 255, 255, 235, 175, 32, 144, 255, 255, 255, 255, 236, 168, 76, 16, 255, 255, 255, 255, 237, 152, 61, 16, 255, 255, 255, 255, 238, 136, 46, 16, 255, 255, 255, 255, 239, 120, 31, 16, 255, 255, 255, 255, 240, 104, 16, 16, 255, 255, 255, 255, 241, 88, 1, 16, 255, 255, 255, 255, 242, 71, 242, 16, 255, 255, 255, 255, 243, 55, 227, 16, 255, 255, 255, 255, 244, 39, 212, 16, 255, 255, 255, 255, 245, 23, 197, 16, 255, 255, 255, 255, 246, 16, 240, 144, 255, 255, 255, 255, 247, 47, 6, 16, 255, 255, 255, 255, 247, 240, 210, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 10, 20, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Paris": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 13, 0, 0, 0, 31, 128, 0, 0, 0, 145, 96, 80, 139, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 88, 38, 112, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 181, 73, 47, 240, 182, 47, 230, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 186, 214, 96, 240, 187, 216, 198, 240, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 218, 9, 160, 200, 108, 39, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 79, 225, 224, 208, 137, 241, 240, 209, 114, 22, 16, 210, 78, 64, 144, 11, 187, 57, 0, 12, 171, 27, 240, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 8, 6, 7, 6, 7, 9, 4, 9, 10, 8, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 2, 49, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 26, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 77, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Paris": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 13, 0, 0, 0, 31, 128, 0, 0, 0, 145, 96, 80, 139, 155, 71, 120, 240, 155, 215, 44, 112, 156, 188, 145, 112, 157, 192, 72, 240, 158, 137, 254, 112, 159, 160, 42, 240, 160, 96, 165, 240, 161, 128, 12, 240, 162, 46, 18, 240, 163, 122, 76, 240, 164, 53, 129, 240, 165, 94, 35, 112, 166, 37, 53, 240, 167, 39, 155, 240, 168, 88, 38, 112, 169, 7, 125, 240, 169, 238, 52, 112, 170, 231, 95, 240, 171, 215, 80, 240, 172, 199, 65, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 181, 73, 47, 240, 182, 47, 230, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 186, 214, 96, 240, 187, 216, 198, 240, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 218, 9, 160, 200, 108, 39, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 79, 225, 224, 208, 137, 241, 240, 209, 114, 22, 16, 210, 78, 64, 144, 11, 187, 57, 0, 12, 171, 27, 240, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 8, 6, 7, 6, 7, 9, 4, 9, 10, 8, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 2, 49, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 26, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 77, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 13, 0, 0, 0, 31, 255, 255, 255, 255, 107, 200, 74, 139, 255, 255, 255, 255, 145, 96, 80, 139, 255, 255, 255, 255, 155, 71, 120, 240, 255, 255, 255, 255, 155, 215, 44, 112, 255, 255, 255, 255, 156, 188, 145, 112, 255, 255, 255, 255, 157, 192, 72, 240, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 42, 240, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 128, 12, 240, 255, 255, 255, 255, 162, 46, 18, 240, 255, 255, 255, 255, 163, 122, 76, 240, 255, 255, 255, 255, 164, 53, 129, 240, 255, 255, 255, 255, 165, 94, 35, 112, 255, 255, 255, 255, 166, 37, 53, 240, 255, 255, 255, 255, 167, 39, 155, 240, 255, 255, 255, 255, 168, 88, 38, 112, 255, 255, 255, 255, 169, 7, 125, 240, 255, 255, 255, 255, 169, 238, 52, 112, 255, 255, 255, 255, 170, 231, 95, 240, 255, 255, 255, 255, 171, 215, 80, 240, 255, 255, 255, 255, 172, 199, 65, 240, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 35, 240, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 5, 240, 255, 255, 255, 255, 177, 137, 107, 240, 255, 255, 255, 255, 178, 112, 34, 112, 255, 255, 255, 255, 179, 114, 136, 112, 255, 255, 255, 255, 180, 80, 4, 112, 255, 255, 255, 255, 181, 73, 47, 240, 255, 255, 255, 255, 182, 47, 230, 112, 255, 255, 255, 255, 183, 50, 76, 112, 255, 255, 255, 255, 184, 15, 200, 112, 255, 255, 255, 255, 184, 255, 185, 112, 255, 255, 255, 255, 185, 239, 170, 112, 255, 255, 255, 255, 186, 214, 96, 240, 255, 255, 255, 255, 187, 216, 198, 240, 255, 255, 255, 255, 188, 200, 183, 240, 255, 255, 255, 255, 189, 184, 168, 240, 255, 255, 255, 255, 190, 159, 95, 112, 255, 255, 255, 255, 191, 152, 138, 240, 255, 255, 255, 255, 192, 154, 240, 240, 255, 255, 255, 255, 193, 120, 108, 240, 255, 255, 255, 255, 194, 104, 93, 240, 255, 255, 255, 255, 195, 88, 78, 240, 255, 255, 255, 255, 196, 63, 5, 112, 255, 255, 255, 255, 197, 56, 48, 240, 255, 255, 255, 255, 198, 58, 150, 240, 255, 255, 255, 255, 199, 88, 172, 112, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 200, 108, 39, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 79, 225, 224, 255, 255, 255, 255, 208, 137, 241, 240, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 11, 187, 57, 0, 0, 0, 0, 0, 12, 171, 27, 240, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 8, 6, 7, 6, 7, 9, 4, 9, 10, 8, 10, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 2, 49, 0, 0, 0, 0, 2, 49, 0, 4, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 1, 8, 0, 0, 0, 0, 0, 13, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 21, 0, 0, 28, 32, 1, 26, 0, 0, 14, 16, 0, 17, 0, 0, 28, 32, 1, 21, 0, 0, 14, 16, 0, 17, 76, 77, 84, 0, 80, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 87, 69, 77, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Podgorica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Podgorica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 161, 140, 16, 210, 78, 64, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 94, 60, 240, 72, 255, 255, 255, 255, 202, 2, 53, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 161, 140, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Prague": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 162, 179, 96, 210, 98, 7, 16, 211, 128, 28, 144, 212, 73, 210, 16, 212, 147, 180, 32, 213, 2, 114, 32, 213, 76, 56, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 1, 112, 16, 217, 233, 120, 16, 16, 237, 100, 112, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 1, 4, 3, 4, 5, 2, 3, 4, 3, 4, 3, 4, 2, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 13, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 0, 0, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Prague": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 98, 7, 16, 211, 128, 28, 144, 212, 73, 210, 16, 212, 147, 180, 32, 213, 2, 114, 32, 213, 76, 56, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 1, 112, 16, 217, 233, 120, 16, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 2, 3, 4, 3, 4, 3, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 13, 136, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 0, 0, 1, 13, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 21, 255, 255, 255, 255, 30, 73, 146, 248, 255, 255, 255, 255, 108, 207, 234, 248, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 98, 7, 16, 255, 255, 255, 255, 211, 128, 28, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 212, 147, 180, 32, 255, 255, 255, 255, 213, 2, 114, 32, 255, 255, 255, 255, 213, 76, 56, 16, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 44, 26, 16, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 217, 1, 112, 16, 255, 255, 255, 255, 217, 233, 120, 16, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 3, 4, 5, 4, 5, 4, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 13, 136, 0, 0, 0, 0, 13, 136, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 0, 0, 1, 17, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 80, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 71, 77, 84, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Riga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 15, 0, 0, 0, 38, 128, 0, 0, 0, 158, 185, 135, 254, 159, 132, 142, 254, 160, 136, 70, 126, 160, 203, 130, 254, 173, 231, 241, 222, 200, 175, 100, 96, 202, 98, 101, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 144, 137, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 77, 188, 0, 50, 227, 234, 224, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 186, 239, 224, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 1, 3, 4, 7, 5, 6, 5, 6, 5, 4, 8, 4, 8, 4, 8, 4, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 3, 13, 14, 13, 14, 13, 14, 3, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 0, 0, 22, 162, 0, 0, 0, 0, 22, 162, 0, 4, 0, 0, 36, 178, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 0, 16, 0, 0, 14, 16, 0, 20, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 16, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 76, 77, 84, 0, 82, 77, 84, 0, 76, 83, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Riga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 15, 0, 0, 0, 38, 128, 0, 0, 0, 158, 185, 135, 254, 159, 132, 142, 254, 160, 136, 70, 126, 160, 203, 130, 254, 173, 231, 241, 222, 200, 175, 100, 96, 202, 98, 101, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 144, 137, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 77, 188, 0, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 1, 3, 4, 7, 5, 6, 5, 6, 5, 4, 8, 4, 8, 4, 8, 4, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 0, 0, 22, 162, 0, 0, 0, 0, 22, 162, 0, 4, 0, 0, 36, 178, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 0, 16, 0, 0, 14, 16, 0, 20, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 16, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 76, 77, 84, 0, 82, 77, 84, 0, 76, 83, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 15, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 205, 94, 255, 255, 255, 255, 158, 185, 135, 254, 255, 255, 255, 255, 159, 132, 142, 254, 255, 255, 255, 255, 160, 136, 70, 126, 255, 255, 255, 255, 160, 203, 130, 254, 255, 255, 255, 255, 173, 231, 241, 222, 255, 255, 255, 255, 200, 175, 100, 96, 255, 255, 255, 255, 202, 98, 101, 80, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 208, 144, 137, 112, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 25, 0, 0, 0, 0, 0, 38, 12, 10, 0, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 38, 128, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 213, 8, 128, 0, 0, 0, 0, 42, 196, 249, 128, 0, 0, 0, 0, 43, 180, 234, 128, 0, 0, 0, 0, 44, 164, 219, 128, 0, 0, 0, 0, 45, 148, 204, 128, 0, 0, 0, 0, 46, 132, 189, 128, 0, 0, 0, 0, 47, 116, 174, 128, 0, 0, 0, 0, 48, 100, 159, 128, 0, 0, 0, 0, 49, 93, 203, 0, 0, 0, 0, 0, 50, 77, 188, 0, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 1, 2, 1, 3, 4, 7, 5, 6, 5, 6, 5, 4, 8, 4, 8, 4, 8, 4, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 0, 0, 22, 162, 0, 0, 0, 0, 22, 162, 0, 4, 0, 0, 36, 178, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 0, 16, 0, 0, 14, 16, 0, 20, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 16, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 12, 76, 77, 84, 0, 82, 77, 84, 0, 76, 83, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Rome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 130, 116, 224, 206, 162, 67, 16, 207, 146, 52, 16, 207, 227, 198, 224, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 3, 4, 1, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Rome": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 8, 0, 0, 0, 17, 255, 255, 255, 255, 62, 40, 232, 76, 255, 255, 255, 255, 112, 188, 129, 112, 255, 255, 255, 255, 155, 56, 248, 112, 255, 255, 255, 255, 155, 213, 204, 224, 255, 255, 255, 255, 156, 197, 203, 240, 255, 255, 255, 255, 157, 183, 0, 96, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 28, 224, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 126, 173, 96, 255, 255, 255, 255, 162, 92, 55, 112, 255, 255, 255, 255, 163, 76, 26, 96, 255, 255, 255, 255, 200, 108, 53, 240, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 76, 210, 240, 255, 255, 255, 255, 211, 62, 49, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 29, 247, 112, 255, 255, 255, 255, 214, 41, 151, 240, 255, 255, 255, 255, 214, 235, 128, 144, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 249, 51, 181, 240, 255, 255, 255, 255, 249, 217, 196, 224, 255, 255, 255, 255, 251, 28, 210, 112, 255, 255, 255, 255, 251, 185, 180, 240, 255, 255, 255, 255, 252, 252, 180, 112, 255, 255, 255, 255, 253, 153, 150, 240, 255, 255, 255, 255, 254, 229, 208, 240, 255, 255, 255, 255, 255, 130, 179, 112, 0, 0, 0, 0, 0, 197, 178, 240, 0, 0, 0, 0, 1, 98, 149, 112, 0, 0, 0, 0, 2, 156, 90, 112, 0, 0, 0, 0, 3, 66, 119, 112, 0, 0, 0, 0, 4, 133, 118, 240, 0, 0, 0, 0, 5, 43, 147, 240, 0, 0, 0, 0, 6, 110, 147, 112, 0, 0, 0, 0, 7, 11, 117, 240, 0, 0, 0, 0, 8, 69, 58, 240, 0, 0, 0, 0, 8, 235, 87, 240, 0, 0, 0, 0, 10, 46, 87, 112, 0, 0, 0, 0, 10, 203, 57, 240, 0, 0, 0, 0, 12, 14, 57, 112, 0, 0, 0, 0, 12, 171, 27, 240, 0, 0, 0, 0, 13, 228, 224, 240, 0, 0, 0, 0, 14, 138, 253, 240, 0, 0, 0, 0, 15, 205, 253, 112, 0, 0, 0, 0, 16, 116, 26, 112, 0, 0, 0, 0, 17, 173, 223, 112, 0, 0, 0, 0, 18, 83, 252, 112, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 2, 3, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 11, 180, 0, 0, 0, 0, 11, 180, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 82, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Samara": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 11, 0, 0, 0, 16, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 0, 199, 0, 41, 212, 236, 96, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 161, 96, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 66, 69, 219, 96, 67, 99, 240, 224, 68, 37, 189, 96, 69, 67, 210, 224, 70, 5, 159, 96, 71, 35, 180, 224, 71, 238, 187, 224, 73, 3, 150, 224, 73, 206, 157, 224, 74, 227, 120, 224, 75, 174, 127, 224, 76, 204, 163, 112, 77, 142, 111, 240, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 7, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 46, 244, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 56, 64, 1, 8, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Europe/Samara": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 11, 0, 0, 0, 16, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 0, 199, 0, 41, 212, 236, 96, 42, 196, 221, 96, 43, 180, 206, 96, 44, 164, 191, 96, 45, 148, 176, 96, 46, 132, 161, 96, 47, 116, 146, 96, 48, 100, 131, 96, 49, 93, 174, 224, 50, 114, 137, 224, 51, 61, 144, 224, 52, 82, 107, 224, 53, 29, 114, 224, 54, 50, 77, 224, 54, 253, 84, 224, 56, 27, 106, 96, 56, 221, 54, 224, 57, 251, 76, 96, 58, 189, 24, 224, 59, 219, 46, 96, 60, 166, 53, 96, 61, 187, 16, 96, 62, 134, 23, 96, 63, 154, 242, 96, 64, 101, 249, 96, 65, 132, 14, 224, 66, 69, 219, 96, 67, 99, 240, 224, 68, 37, 189, 96, 69, 67, 210, 224, 70, 5, 159, 96, 71, 35, 180, 224, 71, 238, 187, 224, 73, 3, 150, 224, 73, 206, 157, 224, 74, 227, 120, 224, 75, 174, 127, 224, 76, 204, 163, 112, 77, 142, 111, 240, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 7, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 46, 244, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 56, 64, 1, 8, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 11, 0, 0, 0, 16, 255, 255, 255, 255, 161, 0, 57, 128, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 0, 199, 0, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 221, 96, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 191, 96, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 161, 96, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 131, 96, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 137, 224, 0, 0, 0, 0, 51, 61, 144, 224, 0, 0, 0, 0, 52, 82, 107, 224, 0, 0, 0, 0, 53, 29, 114, 224, 0, 0, 0, 0, 54, 50, 77, 224, 0, 0, 0, 0, 54, 253, 84, 224, 0, 0, 0, 0, 56, 27, 106, 96, 0, 0, 0, 0, 56, 221, 54, 224, 0, 0, 0, 0, 57, 251, 76, 96, 0, 0, 0, 0, 58, 189, 24, 224, 0, 0, 0, 0, 59, 219, 46, 96, 0, 0, 0, 0, 60, 166, 53, 96, 0, 0, 0, 0, 61, 187, 16, 96, 0, 0, 0, 0, 62, 134, 23, 96, 0, 0, 0, 0, 63, 154, 242, 96, 0, 0, 0, 0, 64, 101, 249, 96, 0, 0, 0, 0, 65, 132, 14, 224, 0, 0, 0, 0, 66, 69, 219, 96, 0, 0, 0, 0, 67, 99, 240, 224, 0, 0, 0, 0, 68, 37, 189, 96, 0, 0, 0, 0, 69, 67, 210, 224, 0, 0, 0, 0, 70, 5, 159, 96, 0, 0, 0, 0, 71, 35, 180, 224, 0, 0, 0, 0, 71, 238, 187, 224, 0, 0, 0, 0, 73, 3, 150, 224, 0, 0, 0, 0, 73, 206, 157, 224, 0, 0, 0, 0, 74, 227, 120, 224, 0, 0, 0, 0, 75, 174, 127, 224, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 7, 2, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 4, 4, 0, 0, 46, 244, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 56, 64, 1, 8, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Europe/San_Marino": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 130, 116, 224, 206, 162, 67, 16, 207, 146, 52, 16, 207, 227, 198, 224, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 3, 4, 1, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/San_Marino": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 8, 0, 0, 0, 17, 255, 255, 255, 255, 62, 40, 232, 76, 255, 255, 255, 255, 112, 188, 129, 112, 255, 255, 255, 255, 155, 56, 248, 112, 255, 255, 255, 255, 155, 213, 204, 224, 255, 255, 255, 255, 156, 197, 203, 240, 255, 255, 255, 255, 157, 183, 0, 96, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 28, 224, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 126, 173, 96, 255, 255, 255, 255, 162, 92, 55, 112, 255, 255, 255, 255, 163, 76, 26, 96, 255, 255, 255, 255, 200, 108, 53, 240, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 76, 210, 240, 255, 255, 255, 255, 211, 62, 49, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 29, 247, 112, 255, 255, 255, 255, 214, 41, 151, 240, 255, 255, 255, 255, 214, 235, 128, 144, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 249, 51, 181, 240, 255, 255, 255, 255, 249, 217, 196, 224, 255, 255, 255, 255, 251, 28, 210, 112, 255, 255, 255, 255, 251, 185, 180, 240, 255, 255, 255, 255, 252, 252, 180, 112, 255, 255, 255, 255, 253, 153, 150, 240, 255, 255, 255, 255, 254, 229, 208, 240, 255, 255, 255, 255, 255, 130, 179, 112, 0, 0, 0, 0, 0, 197, 178, 240, 0, 0, 0, 0, 1, 98, 149, 112, 0, 0, 0, 0, 2, 156, 90, 112, 0, 0, 0, 0, 3, 66, 119, 112, 0, 0, 0, 0, 4, 133, 118, 240, 0, 0, 0, 0, 5, 43, 147, 240, 0, 0, 0, 0, 6, 110, 147, 112, 0, 0, 0, 0, 7, 11, 117, 240, 0, 0, 0, 0, 8, 69, 58, 240, 0, 0, 0, 0, 8, 235, 87, 240, 0, 0, 0, 0, 10, 46, 87, 112, 0, 0, 0, 0, 10, 203, 57, 240, 0, 0, 0, 0, 12, 14, 57, 112, 0, 0, 0, 0, 12, 171, 27, 240, 0, 0, 0, 0, 13, 228, 224, 240, 0, 0, 0, 0, 14, 138, 253, 240, 0, 0, 0, 0, 15, 205, 253, 112, 0, 0, 0, 0, 16, 116, 26, 112, 0, 0, 0, 0, 17, 173, 223, 112, 0, 0, 0, 0, 18, 83, 252, 112, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 2, 3, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 11, 180, 0, 0, 0, 0, 11, 180, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 82, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Sarajevo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Sarajevo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 161, 140, 16, 210, 78, 64, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 94, 60, 240, 72, 255, 255, 255, 255, 202, 2, 53, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 161, 140, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Saratov": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 88, 67, 78, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 43, 50, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Europe/Saratov": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 88, 67, 78, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 43, 50, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 161, 0, 57, 128, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 0, 0, 0, 0, 88, 67, 78, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 43, 50, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Europe/Simferopol": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 170, 25, 164, 32, 181, 164, 25, 96, 203, 4, 141, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 207, 159, 56, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 37, 158, 115, 80, 38, 141, 46, 240, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 45, 194, 198, 208, 46, 132, 133, 64, 47, 116, 132, 80, 48, 100, 103, 64, 49, 93, 160, 208, 50, 114, 166, 0, 50, 201, 126, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 94, 128, 84, 76, 29, 96, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 3, 2, 10, 2, 10, 2, 10, 7, 3, 7, 3, 9, 8, 3, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 8, 0, 0, 31, 248, 0, 0, 0, 0, 31, 224, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 56, 64, 0, 12, 0, 0, 42, 48, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 10, 77, 83, 75, 45, 51, 10}, + "zoneinfo/Europe/Simferopol": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 170, 25, 164, 32, 181, 164, 25, 96, 203, 4, 141, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 207, 159, 56, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 141, 46, 240, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 45, 194, 198, 208, 46, 132, 133, 64, 47, 116, 132, 80, 48, 100, 103, 64, 49, 93, 160, 208, 50, 114, 166, 0, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 94, 128, 84, 76, 29, 96, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 2, 10, 2, 10, 2, 10, 7, 3, 7, 3, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 8, 0, 0, 31, 248, 0, 0, 0, 0, 31, 224, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 56, 64, 0, 12, 0, 0, 42, 48, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 15, 0, 0, 0, 34, 255, 255, 255, 255, 86, 182, 196, 8, 255, 255, 255, 255, 170, 25, 164, 32, 255, 255, 255, 255, 181, 164, 25, 96, 255, 255, 255, 255, 203, 4, 141, 208, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 207, 159, 56, 224, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 141, 46, 240, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 45, 194, 198, 208, 0, 0, 0, 0, 46, 132, 133, 64, 0, 0, 0, 0, 47, 116, 132, 80, 0, 0, 0, 0, 48, 100, 103, 64, 0, 0, 0, 0, 49, 93, 160, 208, 0, 0, 0, 0, 50, 114, 166, 0, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 94, 128, 0, 0, 0, 0, 84, 76, 29, 96, 1, 2, 3, 6, 4, 5, 4, 5, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 2, 10, 2, 10, 2, 10, 7, 3, 7, 3, 9, 8, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 13, 8, 0, 0, 31, 248, 0, 0, 0, 0, 31, 224, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 0, 12, 0, 0, 14, 16, 0, 16, 0, 0, 28, 32, 1, 20, 0, 0, 28, 32, 1, 20, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 12, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 8, 0, 0, 56, 64, 0, 12, 0, 0, 42, 48, 0, 12, 76, 77, 84, 0, 83, 77, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 10, 77, 83, 75, 45, 51, 10}, - "zoneinfo/Europe/Skopje": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Skopje": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 161, 140, 16, 210, 78, 64, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 94, 60, 240, 72, 255, 255, 255, 255, 202, 2, 53, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 161, 140, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Sofia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 10, 0, 0, 0, 22, 128, 0, 0, 0, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 114, 36, 32, 17, 99, 239, 80, 18, 85, 63, 224, 19, 77, 11, 208, 20, 53, 33, 224, 21, 44, 237, 208, 22, 19, 192, 112, 23, 12, 207, 208, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 70, 0, 35, 60, 55, 0, 36, 44, 40, 0, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 127, 180, 224, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 4, 1, 5, 1, 5, 1, 5, 1, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 21, 220, 0, 0, 0, 0, 28, 32, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 4, 0, 0, 42, 48, 1, 17, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Sofia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 9, 0, 0, 0, 22, 128, 0, 0, 0, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 36, 32, 17, 99, 239, 80, 18, 85, 63, 224, 19, 77, 11, 208, 20, 53, 33, 224, 21, 44, 237, 208, 22, 19, 192, 112, 23, 12, 207, 208, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 70, 0, 35, 60, 55, 0, 36, 44, 40, 0, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 10, 96, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 1, 4, 1, 4, 1, 4, 1, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 21, 220, 0, 0, 0, 0, 28, 32, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 4, 0, 0, 42, 48, 1, 17, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 4, 76, 77, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 10, 0, 0, 0, 26, 255, 255, 255, 255, 86, 182, 206, 36, 255, 255, 255, 255, 114, 195, 227, 24, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 36, 32, 0, 0, 0, 0, 17, 99, 239, 80, 0, 0, 0, 0, 18, 85, 63, 224, 0, 0, 0, 0, 19, 77, 11, 208, 0, 0, 0, 0, 20, 53, 33, 224, 0, 0, 0, 0, 21, 44, 237, 208, 0, 0, 0, 0, 22, 19, 192, 112, 0, 0, 0, 0, 23, 12, 207, 208, 0, 0, 0, 0, 23, 243, 176, 128, 0, 0, 0, 0, 24, 227, 161, 128, 0, 0, 0, 0, 25, 211, 146, 128, 0, 0, 0, 0, 26, 195, 131, 128, 0, 0, 0, 0, 27, 188, 175, 0, 0, 0, 0, 0, 28, 172, 160, 0, 0, 0, 0, 0, 29, 156, 145, 0, 0, 0, 0, 0, 30, 140, 130, 0, 0, 0, 0, 0, 31, 124, 115, 0, 0, 0, 0, 0, 32, 108, 100, 0, 0, 0, 0, 0, 33, 92, 85, 0, 0, 0, 0, 0, 34, 76, 70, 0, 0, 0, 0, 0, 35, 60, 55, 0, 0, 0, 0, 0, 36, 44, 40, 0, 0, 0, 0, 0, 37, 28, 25, 0, 0, 0, 0, 0, 38, 12, 10, 0, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 10, 96, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 4, 3, 4, 3, 2, 5, 2, 5, 2, 5, 2, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 21, 220, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 28, 32, 0, 8, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 16, 0, 0, 42, 48, 1, 21, 0, 0, 28, 32, 0, 8, 0, 0, 42, 48, 1, 21, 0, 0, 42, 48, 1, 21, 0, 0, 28, 32, 0, 8, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Stockholm": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 155, 30, 140, 96, 155, 213, 218, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 16, 236, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Stockholm": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 155, 30, 140, 96, 155, 213, 218, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 16, 236, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 84, 213, 159, 148, 255, 255, 255, 255, 124, 85, 115, 98, 255, 255, 255, 255, 155, 30, 140, 96, 255, 255, 255, 255, 155, 213, 218, 240, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 16, 236, 0, 0, 0, 0, 14, 30, 0, 4, 0, 0, 14, 16, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 8, 76, 77, 84, 0, 83, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Tallinn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 16, 0, 0, 0, 34, 128, 0, 0, 0, 158, 89, 45, 204, 158, 185, 144, 144, 159, 132, 151, 144, 161, 0, 43, 112, 164, 115, 111, 76, 200, 176, 181, 224, 202, 198, 151, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 116, 203, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 6, 190, 80, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 1, 5, 6, 7, 3, 2, 3, 2, 6, 8, 6, 8, 6, 8, 6, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 15, 13, 14, 5, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 0, 0, 23, 52, 0, 0, 0, 0, 23, 52, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 0, 21, 0, 0, 28, 32, 1, 8, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 29, 0, 0, 42, 48, 1, 29, 76, 77, 84, 0, 84, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Tallinn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 15, 0, 0, 0, 34, 128, 0, 0, 0, 158, 89, 45, 204, 158, 185, 144, 144, 159, 132, 151, 144, 161, 0, 43, 112, 164, 115, 111, 76, 200, 176, 181, 224, 202, 198, 151, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 116, 203, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 1, 5, 6, 7, 3, 2, 3, 2, 6, 8, 6, 8, 6, 8, 6, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 13, 14, 5, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 0, 0, 23, 52, 0, 0, 0, 0, 23, 52, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 0, 21, 0, 0, 28, 32, 1, 8, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 29, 76, 77, 84, 0, 84, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 15, 0, 0, 0, 34, 255, 255, 255, 255, 86, 182, 204, 204, 255, 255, 255, 255, 158, 89, 45, 204, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 161, 0, 43, 112, 255, 255, 255, 255, 164, 115, 111, 76, 255, 255, 255, 255, 200, 176, 181, 224, 255, 255, 255, 255, 202, 198, 151, 80, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 116, 203, 224, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 25, 0, 0, 0, 0, 0, 38, 12, 10, 0, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 38, 128, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 213, 8, 128, 0, 0, 0, 0, 42, 196, 249, 128, 0, 0, 0, 0, 43, 180, 234, 128, 0, 0, 0, 0, 44, 164, 219, 128, 0, 0, 0, 0, 45, 148, 204, 128, 0, 0, 0, 0, 46, 132, 189, 128, 0, 0, 0, 0, 47, 116, 174, 128, 0, 0, 0, 0, 48, 100, 159, 128, 0, 0, 0, 0, 49, 93, 203, 0, 0, 0, 0, 0, 50, 114, 166, 0, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 143, 0, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 1, 5, 6, 7, 3, 2, 3, 2, 6, 8, 6, 8, 6, 8, 6, 8, 9, 10, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 13, 14, 5, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 14, 13, 0, 0, 23, 52, 0, 0, 0, 0, 23, 52, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 0, 21, 0, 0, 28, 32, 1, 8, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 25, 0, 0, 42, 48, 1, 29, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 29, 76, 77, 84, 0, 84, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Tirane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 5, 0, 0, 0, 13, 150, 170, 52, 104, 200, 109, 135, 112, 204, 231, 75, 16, 205, 169, 23, 144, 205, 184, 233, 144, 8, 40, 57, 240, 8, 239, 62, 96, 10, 5, 120, 240, 10, 208, 113, 224, 11, 233, 79, 112, 12, 180, 72, 96, 13, 210, 107, 240, 14, 148, 42, 96, 15, 176, 252, 112, 16, 116, 12, 96, 17, 144, 222, 112, 18, 83, 238, 96, 19, 112, 192, 112, 20, 59, 185, 96, 21, 72, 185, 112, 22, 19, 178, 96, 23, 49, 213, 240, 23, 252, 206, 224, 25, 0, 148, 112, 25, 219, 95, 96, 26, 204, 175, 240, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 18, 152, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Tirane": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 5, 0, 0, 0, 13, 150, 170, 52, 104, 200, 109, 135, 112, 204, 231, 75, 16, 205, 169, 23, 144, 205, 184, 233, 144, 8, 40, 57, 240, 8, 239, 62, 96, 10, 5, 120, 240, 10, 208, 113, 224, 11, 233, 79, 112, 12, 180, 72, 96, 13, 210, 107, 240, 14, 148, 42, 96, 15, 176, 252, 112, 16, 116, 12, 96, 17, 144, 222, 112, 18, 83, 238, 96, 19, 112, 192, 112, 20, 59, 185, 96, 21, 72, 185, 112, 22, 19, 178, 96, 23, 49, 213, 240, 23, 252, 206, 224, 25, 0, 148, 112, 25, 219, 95, 96, 26, 204, 175, 240, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 18, 152, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 5, 0, 0, 0, 13, 255, 255, 255, 255, 150, 170, 52, 104, 255, 255, 255, 255, 200, 109, 135, 112, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 205, 184, 233, 144, 0, 0, 0, 0, 8, 40, 57, 240, 0, 0, 0, 0, 8, 239, 62, 96, 0, 0, 0, 0, 10, 5, 120, 240, 0, 0, 0, 0, 10, 208, 113, 224, 0, 0, 0, 0, 11, 233, 79, 112, 0, 0, 0, 0, 12, 180, 72, 96, 0, 0, 0, 0, 13, 210, 107, 240, 0, 0, 0, 0, 14, 148, 42, 96, 0, 0, 0, 0, 15, 176, 252, 112, 0, 0, 0, 0, 16, 116, 12, 96, 0, 0, 0, 0, 17, 144, 222, 112, 0, 0, 0, 0, 18, 83, 238, 96, 0, 0, 0, 0, 19, 112, 192, 112, 0, 0, 0, 0, 20, 59, 185, 96, 0, 0, 0, 0, 21, 72, 185, 112, 0, 0, 0, 0, 22, 19, 178, 96, 0, 0, 0, 0, 23, 49, 213, 240, 0, 0, 0, 0, 23, 252, 206, 224, 0, 0, 0, 0, 25, 0, 148, 112, 0, 0, 0, 0, 25, 219, 95, 96, 0, 0, 0, 0, 26, 204, 175, 240, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 0, 0, 18, 152, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Tiraspol": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 16, 0, 0, 0, 38, 128, 0, 0, 0, 158, 107, 159, 12, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 200, 188, 147, 96, 202, 119, 125, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 78, 144, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 67, 76, 224, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 96, 232, 96, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 86, 247, 34, 128, 88, 21, 56, 0, 88, 215, 4, 128, 89, 245, 26, 0, 90, 182, 230, 128, 91, 212, 252, 0, 92, 160, 3, 0, 93, 180, 222, 0, 94, 127, 229, 0, 95, 148, 192, 0, 96, 95, 199, 0, 97, 125, 220, 128, 98, 63, 169, 0, 99, 93, 190, 128, 100, 31, 139, 0, 101, 61, 160, 128, 102, 8, 167, 128, 103, 29, 130, 128, 103, 232, 137, 128, 104, 253, 100, 128, 105, 200, 107, 128, 106, 221, 70, 128, 107, 168, 77, 128, 108, 198, 99, 0, 109, 136, 47, 128, 110, 166, 69, 0, 111, 104, 17, 128, 112, 134, 39, 0, 113, 81, 46, 0, 114, 102, 9, 0, 115, 49, 16, 0, 116, 69, 235, 0, 117, 16, 242, 0, 118, 47, 7, 128, 118, 240, 212, 0, 120, 14, 233, 128, 120, 208, 182, 0, 121, 238, 203, 128, 122, 176, 152, 0, 123, 206, 173, 128, 124, 153, 180, 128, 125, 174, 143, 128, 126, 121, 150, 128, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Tiraspol": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 16, 0, 0, 0, 38, 128, 0, 0, 0, 158, 107, 159, 12, 183, 176, 210, 8, 185, 62, 243, 96, 185, 239, 156, 96, 186, 223, 141, 96, 187, 207, 126, 96, 188, 200, 169, 224, 189, 184, 154, 224, 190, 168, 139, 224, 191, 152, 124, 224, 192, 136, 109, 224, 193, 120, 94, 224, 194, 104, 79, 224, 195, 88, 64, 224, 196, 72, 49, 224, 197, 56, 34, 224, 198, 40, 19, 224, 199, 24, 4, 224, 200, 188, 147, 96, 202, 119, 125, 80, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 78, 144, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 38, 67, 76, 224, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 146, 96, 48, 100, 117, 80, 49, 93, 174, 224, 50, 114, 123, 208, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 143, 0, 54, 50, 106, 0, 54, 253, 113, 0, 56, 27, 134, 128, 56, 221, 83, 0, 57, 251, 104, 128, 58, 189, 53, 0, 59, 219, 74, 128, 60, 166, 81, 128, 61, 187, 44, 128, 62, 134, 51, 128, 63, 155, 14, 128, 64, 102, 21, 128, 65, 132, 43, 0, 66, 69, 247, 128, 67, 100, 13, 0, 68, 37, 217, 128, 69, 67, 239, 0, 70, 5, 187, 128, 71, 35, 209, 0, 71, 238, 216, 0, 73, 3, 179, 0, 73, 206, 186, 0, 74, 227, 149, 0, 75, 174, 156, 0, 76, 204, 177, 128, 77, 142, 126, 0, 78, 172, 147, 128, 79, 110, 96, 0, 80, 140, 117, 128, 81, 87, 124, 128, 82, 108, 87, 128, 83, 55, 94, 128, 84, 76, 57, 128, 85, 23, 64, 128, 86, 44, 27, 128, 86, 247, 34, 128, 88, 21, 56, 0, 88, 215, 4, 128, 89, 245, 26, 0, 90, 182, 230, 128, 91, 212, 252, 0, 92, 160, 3, 0, 93, 180, 222, 0, 94, 127, 229, 0, 95, 148, 192, 0, 96, 95, 199, 0, 97, 125, 220, 128, 98, 63, 169, 0, 99, 93, 190, 128, 100, 31, 139, 0, 101, 61, 160, 128, 102, 8, 167, 128, 103, 29, 130, 128, 103, 232, 137, 128, 104, 253, 100, 128, 105, 200, 107, 128, 106, 221, 70, 128, 107, 168, 77, 128, 108, 198, 99, 0, 109, 136, 47, 128, 110, 166, 69, 0, 111, 104, 17, 128, 112, 134, 39, 0, 113, 81, 46, 0, 114, 102, 9, 0, 115, 49, 16, 0, 116, 69, 235, 0, 117, 16, 242, 0, 118, 47, 7, 128, 118, 240, 212, 0, 120, 14, 233, 128, 120, 208, 182, 0, 121, 238, 203, 128, 122, 176, 152, 0, 123, 206, 173, 128, 124, 153, 180, 128, 125, 174, 143, 128, 126, 121, 150, 128, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 16, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 200, 248, 255, 255, 255, 255, 158, 107, 159, 12, 255, 255, 255, 255, 183, 176, 210, 8, 255, 255, 255, 255, 185, 62, 243, 96, 255, 255, 255, 255, 185, 239, 156, 96, 255, 255, 255, 255, 186, 223, 141, 96, 255, 255, 255, 255, 187, 207, 126, 96, 255, 255, 255, 255, 188, 200, 169, 224, 255, 255, 255, 255, 189, 184, 154, 224, 255, 255, 255, 255, 190, 168, 139, 224, 255, 255, 255, 255, 191, 152, 124, 224, 255, 255, 255, 255, 192, 136, 109, 224, 255, 255, 255, 255, 193, 120, 94, 224, 255, 255, 255, 255, 194, 104, 79, 224, 255, 255, 255, 255, 195, 88, 64, 224, 255, 255, 255, 255, 196, 72, 49, 224, 255, 255, 255, 255, 197, 56, 34, 224, 255, 255, 255, 255, 198, 40, 19, 224, 255, 255, 255, 255, 199, 24, 4, 224, 255, 255, 255, 255, 200, 188, 147, 96, 255, 255, 255, 255, 202, 119, 125, 80, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 78, 144, 96, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 38, 67, 76, 224, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 38, 128, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 146, 96, 0, 0, 0, 0, 48, 100, 117, 80, 0, 0, 0, 0, 49, 93, 174, 224, 0, 0, 0, 0, 50, 114, 123, 208, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 143, 0, 0, 0, 0, 0, 54, 50, 106, 0, 0, 0, 0, 0, 54, 253, 113, 0, 0, 0, 0, 0, 56, 27, 134, 128, 0, 0, 0, 0, 56, 221, 83, 0, 0, 0, 0, 0, 57, 251, 104, 128, 0, 0, 0, 0, 58, 189, 53, 0, 0, 0, 0, 0, 59, 219, 74, 128, 0, 0, 0, 0, 60, 166, 81, 128, 0, 0, 0, 0, 61, 187, 44, 128, 0, 0, 0, 0, 62, 134, 51, 128, 0, 0, 0, 0, 63, 155, 14, 128, 0, 0, 0, 0, 64, 102, 21, 128, 0, 0, 0, 0, 65, 132, 43, 0, 0, 0, 0, 0, 66, 69, 247, 128, 0, 0, 0, 0, 67, 100, 13, 0, 0, 0, 0, 0, 68, 37, 217, 128, 0, 0, 0, 0, 69, 67, 239, 0, 0, 0, 0, 0, 70, 5, 187, 128, 0, 0, 0, 0, 71, 35, 209, 0, 0, 0, 0, 0, 71, 238, 216, 0, 0, 0, 0, 0, 73, 3, 179, 0, 0, 0, 0, 0, 73, 206, 186, 0, 0, 0, 0, 0, 74, 227, 149, 0, 0, 0, 0, 0, 75, 174, 156, 0, 0, 0, 0, 0, 76, 204, 177, 128, 0, 0, 0, 0, 77, 142, 126, 0, 0, 0, 0, 0, 78, 172, 147, 128, 0, 0, 0, 0, 79, 110, 96, 0, 0, 0, 0, 0, 80, 140, 117, 128, 0, 0, 0, 0, 81, 87, 124, 128, 0, 0, 0, 0, 82, 108, 87, 128, 0, 0, 0, 0, 83, 55, 94, 128, 0, 0, 0, 0, 84, 76, 57, 128, 0, 0, 0, 0, 85, 23, 64, 128, 0, 0, 0, 0, 86, 44, 27, 128, 0, 0, 0, 0, 86, 247, 34, 128, 0, 0, 0, 0, 88, 21, 56, 0, 0, 0, 0, 0, 88, 215, 4, 128, 0, 0, 0, 0, 89, 245, 26, 0, 0, 0, 0, 0, 90, 182, 230, 128, 0, 0, 0, 0, 91, 212, 252, 0, 0, 0, 0, 0, 92, 160, 3, 0, 0, 0, 0, 0, 93, 180, 222, 0, 0, 0, 0, 0, 94, 127, 229, 0, 0, 0, 0, 0, 95, 148, 192, 0, 0, 0, 0, 0, 96, 95, 199, 0, 0, 0, 0, 0, 97, 125, 220, 128, 0, 0, 0, 0, 98, 63, 169, 0, 0, 0, 0, 0, 99, 93, 190, 128, 0, 0, 0, 0, 100, 31, 139, 0, 0, 0, 0, 0, 101, 61, 160, 128, 0, 0, 0, 0, 102, 8, 167, 128, 0, 0, 0, 0, 103, 29, 130, 128, 0, 0, 0, 0, 103, 232, 137, 128, 0, 0, 0, 0, 104, 253, 100, 128, 0, 0, 0, 0, 105, 200, 107, 128, 0, 0, 0, 0, 106, 221, 70, 128, 0, 0, 0, 0, 107, 168, 77, 128, 0, 0, 0, 0, 108, 198, 99, 0, 0, 0, 0, 0, 109, 136, 47, 128, 0, 0, 0, 0, 110, 166, 69, 0, 0, 0, 0, 0, 111, 104, 17, 128, 0, 0, 0, 0, 112, 134, 39, 0, 0, 0, 0, 0, 113, 81, 46, 0, 0, 0, 0, 0, 114, 102, 9, 0, 0, 0, 0, 0, 115, 49, 16, 0, 0, 0, 0, 0, 116, 69, 235, 0, 0, 0, 0, 0, 117, 16, 242, 0, 0, 0, 0, 0, 118, 47, 7, 128, 0, 0, 0, 0, 118, 240, 212, 0, 0, 0, 0, 0, 120, 14, 233, 128, 0, 0, 0, 0, 120, 208, 182, 0, 0, 0, 0, 0, 121, 238, 203, 128, 0, 0, 0, 0, 122, 176, 152, 0, 0, 0, 0, 0, 123, 206, 173, 128, 0, 0, 0, 0, 124, 153, 180, 128, 0, 0, 0, 0, 125, 174, 143, 128, 0, 0, 0, 0, 126, 121, 150, 128, 0, 0, 0, 0, 127, 142, 113, 128, 1, 2, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 6, 9, 7, 8, 7, 8, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 6, 4, 3, 4, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 0, 0, 27, 8, 0, 0, 0, 0, 26, 244, 0, 4, 0, 0, 24, 120, 0, 8, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 0, 0, 28, 32, 0, 17, 0, 0, 42, 48, 1, 12, 0, 0, 14, 16, 0, 21, 0, 0, 28, 32, 1, 25, 0, 0, 28, 32, 1, 25, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 0, 34, 0, 0, 42, 48, 0, 34, 0, 0, 56, 64, 1, 30, 0, 0, 42, 48, 1, 12, 0, 0, 28, 32, 0, 17, 76, 77, 84, 0, 67, 77, 84, 0, 66, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Ulyanovsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 86, 247, 20, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 96, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 16, 0, 0, 56, 64, 1, 12, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 50, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Europe/Ulyanovsk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 161, 0, 57, 128, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 26, 224, 36, 44, 11, 224, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 86, 247, 20, 112, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 96, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 16, 0, 0, 56, 64, 1, 12, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 50, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 12, 0, 0, 0, 20, 255, 255, 255, 255, 161, 0, 57, 128, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 26, 224, 0, 0, 0, 0, 36, 44, 11, 224, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 120, 191, 128, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 0, 0, 0, 0, 86, 247, 20, 112, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 8, 9, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 45, 96, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 0, 12, 0, 0, 56, 64, 0, 12, 0, 0, 70, 80, 1, 8, 0, 0, 56, 64, 1, 12, 0, 0, 42, 48, 0, 4, 0, 0, 42, 48, 1, 4, 0, 0, 28, 32, 0, 16, 0, 0, 56, 64, 1, 12, 0, 0, 56, 64, 0, 12, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 50, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Europe/Uzhgorod": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 13, 0, 0, 0, 30, 128, 0, 0, 0, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 128, 169, 96, 208, 161, 158, 224, 209, 229, 253, 240, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 37, 158, 115, 80, 38, 141, 46, 240, 39, 245, 66, 160, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 4, 1, 6, 5, 6, 5, 6, 5, 6, 5, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 6, 1, 9, 10, 9, 10, 9, 10, 9, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 20, 232, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 28, 32, 0, 21, 0, 0, 42, 48, 1, 25, 0, 0, 42, 48, 1, 25, 0, 0, 28, 32, 0, 21, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Uzhgorod": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 12, 0, 0, 0, 30, 128, 0, 0, 0, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 161, 158, 224, 209, 229, 253, 240, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 141, 46, 240, 39, 245, 66, 160, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 1, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 1, 8, 9, 8, 9, 8, 9, 8, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 0, 0, 20, 232, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 28, 32, 0, 21, 0, 0, 42, 48, 1, 25, 0, 0, 42, 48, 1, 25, 0, 0, 28, 32, 0, 21, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 12, 0, 0, 0, 30, 255, 255, 255, 255, 106, 238, 176, 24, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 161, 158, 224, 255, 255, 255, 255, 209, 229, 253, 240, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 141, 46, 240, 0, 0, 0, 0, 39, 245, 66, 160, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 2, 3, 2, 1, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 1, 8, 9, 8, 9, 8, 9, 8, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 0, 0, 20, 232, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 0, 0, 56, 64, 1, 13, 0, 0, 42, 48, 0, 17, 0, 0, 42, 48, 0, 17, 0, 0, 56, 64, 1, 13, 0, 0, 28, 32, 0, 21, 0, 0, 42, 48, 1, 25, 0, 0, 42, 48, 1, 25, 0, 0, 28, 32, 0, 21, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Vaduz": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 8, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Vaduz": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 8, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 36, 240, 234, 128, 255, 255, 255, 255, 113, 212, 6, 134, 255, 255, 255, 255, 202, 23, 106, 0, 255, 255, 255, 255, 202, 226, 113, 0, 255, 255, 255, 255, 203, 247, 76, 0, 255, 255, 255, 255, 204, 194, 83, 0, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 8, 0, 0, 0, 0, 0, 6, 250, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Vatican": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 130, 116, 224, 206, 162, 67, 16, 207, 146, 52, 16, 207, 227, 198, 224, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 18, 206, 151, 240, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 1, 3, 4, 1, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Vatican": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 56, 248, 112, 155, 213, 204, 224, 156, 197, 203, 240, 157, 183, 0, 96, 158, 137, 254, 112, 159, 160, 28, 224, 160, 96, 165, 240, 161, 126, 173, 96, 162, 92, 55, 112, 163, 76, 26, 96, 200, 108, 53, 240, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 110, 94, 144, 209, 114, 22, 16, 210, 76, 210, 240, 211, 62, 49, 144, 212, 73, 210, 16, 213, 29, 247, 112, 214, 41, 151, 240, 214, 235, 128, 144, 216, 9, 150, 16, 249, 51, 181, 240, 249, 217, 196, 224, 251, 28, 210, 112, 251, 185, 180, 240, 252, 252, 180, 112, 253, 153, 150, 240, 254, 229, 208, 240, 255, 130, 179, 112, 0, 197, 178, 240, 1, 98, 149, 112, 2, 156, 90, 112, 3, 66, 119, 112, 4, 133, 118, 240, 5, 43, 147, 240, 6, 110, 147, 112, 7, 11, 117, 240, 8, 69, 58, 240, 8, 235, 87, 240, 10, 46, 87, 112, 10, 203, 57, 240, 12, 14, 57, 112, 12, 171, 27, 240, 13, 228, 224, 240, 14, 138, 253, 240, 15, 205, 253, 112, 16, 116, 26, 112, 17, 173, 223, 112, 18, 83, 252, 112, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 1, 2, 4, 3, 4, 3, 4, 3, 4, 2, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 11, 180, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 8, 0, 0, 0, 17, 255, 255, 255, 255, 62, 40, 232, 76, 255, 255, 255, 255, 112, 188, 129, 112, 255, 255, 255, 255, 155, 56, 248, 112, 255, 255, 255, 255, 155, 213, 204, 224, 255, 255, 255, 255, 156, 197, 203, 240, 255, 255, 255, 255, 157, 183, 0, 96, 255, 255, 255, 255, 158, 137, 254, 112, 255, 255, 255, 255, 159, 160, 28, 224, 255, 255, 255, 255, 160, 96, 165, 240, 255, 255, 255, 255, 161, 126, 173, 96, 255, 255, 255, 255, 162, 92, 55, 112, 255, 255, 255, 255, 163, 76, 26, 96, 255, 255, 255, 255, 200, 108, 53, 240, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 76, 210, 240, 255, 255, 255, 255, 211, 62, 49, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 29, 247, 112, 255, 255, 255, 255, 214, 41, 151, 240, 255, 255, 255, 255, 214, 235, 128, 144, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 249, 51, 181, 240, 255, 255, 255, 255, 249, 217, 196, 224, 255, 255, 255, 255, 251, 28, 210, 112, 255, 255, 255, 255, 251, 185, 180, 240, 255, 255, 255, 255, 252, 252, 180, 112, 255, 255, 255, 255, 253, 153, 150, 240, 255, 255, 255, 255, 254, 229, 208, 240, 255, 255, 255, 255, 255, 130, 179, 112, 0, 0, 0, 0, 0, 197, 178, 240, 0, 0, 0, 0, 1, 98, 149, 112, 0, 0, 0, 0, 2, 156, 90, 112, 0, 0, 0, 0, 3, 66, 119, 112, 0, 0, 0, 0, 4, 133, 118, 240, 0, 0, 0, 0, 5, 43, 147, 240, 0, 0, 0, 0, 6, 110, 147, 112, 0, 0, 0, 0, 7, 11, 117, 240, 0, 0, 0, 0, 8, 69, 58, 240, 0, 0, 0, 0, 8, 235, 87, 240, 0, 0, 0, 0, 10, 46, 87, 112, 0, 0, 0, 0, 10, 203, 57, 240, 0, 0, 0, 0, 12, 14, 57, 112, 0, 0, 0, 0, 12, 171, 27, 240, 0, 0, 0, 0, 13, 228, 224, 240, 0, 0, 0, 0, 14, 138, 253, 240, 0, 0, 0, 0, 15, 205, 253, 112, 0, 0, 0, 0, 16, 116, 26, 112, 0, 0, 0, 0, 17, 173, 223, 112, 0, 0, 0, 0, 18, 83, 252, 112, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 2, 3, 5, 4, 5, 4, 5, 4, 5, 3, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 0, 0, 11, 180, 0, 0, 0, 0, 11, 180, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 82, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Vienna": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 161, 242, 191, 112, 162, 112, 26, 16, 163, 68, 91, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 127, 69, 16, 210, 219, 52, 240, 211, 99, 27, 144, 212, 73, 210, 16, 213, 57, 195, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 19, 77, 39, 240, 20, 51, 208, 96, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 2, 3, 4, 3, 4, 3, 4, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 15, 81, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Vienna": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 162, 112, 26, 16, 163, 68, 91, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 209, 127, 69, 16, 211, 99, 27, 144, 212, 73, 210, 16, 213, 57, 195, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 19, 77, 39, 240, 20, 51, 208, 96, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 15, 81, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 111, 162, 95, 47, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 162, 112, 26, 16, 255, 255, 255, 255, 163, 68, 91, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 127, 69, 16, 255, 255, 255, 255, 211, 99, 27, 144, 255, 255, 255, 255, 212, 73, 210, 16, 255, 255, 255, 255, 213, 57, 195, 16, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 44, 26, 16, 255, 255, 255, 255, 216, 9, 150, 16, 0, 0, 0, 0, 19, 77, 39, 240, 0, 0, 0, 0, 20, 51, 208, 96, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 15, 81, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Vilnius": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 18, 0, 0, 0, 38, 128, 0, 0, 0, 156, 79, 31, 80, 161, 133, 74, 152, 162, 241, 48, 240, 163, 102, 120, 96, 200, 172, 207, 112, 202, 89, 42, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 48, 61, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 52, 170, 192, 96, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 62, 18, 19, 96, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 3, 5, 8, 6, 7, 6, 7, 5, 9, 5, 9, 5, 9, 5, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 4, 14, 15, 14, 16, 4, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 0, 0, 23, 188, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 22, 104, 0, 8, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 0, 20, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 20, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 16, 0, 0, 28, 32, 1, 24, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 1, 33, 76, 77, 84, 0, 87, 77, 84, 0, 75, 77, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Vilnius": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 18, 0, 0, 0, 38, 128, 0, 0, 0, 156, 79, 31, 80, 161, 133, 74, 152, 162, 241, 48, 240, 163, 102, 120, 96, 200, 172, 207, 112, 202, 89, 42, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 48, 61, 224, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 25, 0, 38, 12, 10, 0, 39, 5, 53, 128, 39, 245, 38, 128, 40, 229, 23, 128, 41, 213, 8, 128, 42, 196, 249, 128, 43, 180, 234, 128, 44, 164, 219, 128, 45, 148, 204, 128, 46, 132, 189, 128, 47, 116, 174, 128, 48, 100, 159, 128, 49, 93, 203, 0, 50, 114, 166, 0, 51, 61, 173, 0, 52, 82, 136, 0, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 4, 3, 5, 8, 6, 7, 6, 7, 5, 9, 5, 9, 5, 9, 5, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 14, 15, 14, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 0, 0, 23, 188, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 22, 104, 0, 8, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 0, 20, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 20, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 16, 0, 0, 28, 32, 1, 24, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 1, 33, 76, 77, 84, 0, 87, 77, 84, 0, 75, 77, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 18, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 204, 68, 255, 255, 255, 255, 156, 79, 31, 80, 255, 255, 255, 255, 161, 133, 74, 152, 255, 255, 255, 255, 162, 241, 48, 240, 255, 255, 255, 255, 163, 102, 120, 96, 255, 255, 255, 255, 200, 172, 207, 112, 255, 255, 255, 255, 202, 89, 42, 208, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 48, 61, 224, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 25, 0, 0, 0, 0, 0, 38, 12, 10, 0, 0, 0, 0, 0, 39, 5, 53, 128, 0, 0, 0, 0, 39, 245, 38, 128, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 213, 8, 128, 0, 0, 0, 0, 42, 196, 249, 128, 0, 0, 0, 0, 43, 180, 234, 128, 0, 0, 0, 0, 44, 164, 219, 128, 0, 0, 0, 0, 45, 148, 204, 128, 0, 0, 0, 0, 46, 132, 189, 128, 0, 0, 0, 0, 47, 116, 174, 128, 0, 0, 0, 0, 48, 100, 159, 128, 0, 0, 0, 0, 49, 93, 203, 0, 0, 0, 0, 0, 50, 114, 166, 0, 0, 0, 0, 0, 51, 61, 173, 0, 0, 0, 0, 0, 52, 82, 136, 0, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 4, 3, 5, 8, 6, 7, 6, 7, 5, 9, 5, 9, 5, 9, 5, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 14, 15, 14, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 17, 16, 0, 0, 23, 188, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 22, 104, 0, 8, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 0, 20, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 1, 24, 0, 0, 28, 32, 1, 24, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 0, 20, 0, 0, 56, 64, 1, 29, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 16, 0, 0, 28, 32, 1, 24, 0, 0, 14, 16, 0, 12, 0, 0, 28, 32, 0, 16, 0, 0, 42, 48, 1, 33, 76, 77, 84, 0, 87, 77, 84, 0, 75, 77, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Volgograd": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 161, 245, 70, 220, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 91, 212, 237, 240, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Europe/Volgograd": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 161, 245, 70, 220, 181, 164, 11, 80, 21, 39, 153, 192, 22, 24, 206, 48, 23, 8, 205, 64, 23, 250, 1, 176, 24, 234, 0, 192, 25, 219, 53, 48, 26, 204, 133, 192, 27, 188, 146, 224, 28, 172, 131, 224, 29, 156, 116, 224, 30, 140, 101, 224, 31, 124, 86, 224, 32, 108, 71, 224, 33, 92, 56, 224, 34, 76, 41, 224, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 41, 212, 236, 96, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 91, 212, 237, 240, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 9, 0, 0, 0, 16, 255, 255, 255, 255, 161, 245, 70, 220, 255, 255, 255, 255, 181, 164, 11, 80, 0, 0, 0, 0, 21, 39, 153, 192, 0, 0, 0, 0, 22, 24, 206, 48, 0, 0, 0, 0, 23, 8, 205, 64, 0, 0, 0, 0, 23, 250, 1, 176, 0, 0, 0, 0, 24, 234, 0, 192, 0, 0, 0, 0, 25, 219, 53, 48, 0, 0, 0, 0, 26, 204, 133, 192, 0, 0, 0, 0, 27, 188, 146, 224, 0, 0, 0, 0, 28, 172, 131, 224, 0, 0, 0, 0, 29, 156, 116, 224, 0, 0, 0, 0, 30, 140, 101, 224, 0, 0, 0, 0, 31, 124, 86, 224, 0, 0, 0, 0, 32, 108, 71, 224, 0, 0, 0, 0, 33, 92, 56, 224, 0, 0, 0, 0, 34, 76, 41, 224, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 0, 0, 0, 0, 91, 212, 237, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 6, 7, 6, 7, 6, 7, 4, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 4, 7, 4, 4, 0, 0, 41, 164, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 0, 8, 0, 0, 70, 80, 1, 12, 0, 0, 56, 64, 1, 8, 0, 0, 42, 48, 0, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 51, 0, 43, 48, 52, 0, 43, 48, 53, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Europe/Warsaw": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 11, 0, 0, 0, 26, 128, 0, 0, 0, 153, 168, 42, 208, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 160, 154, 182, 0, 161, 101, 189, 0, 166, 125, 124, 96, 200, 118, 222, 16, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 128, 169, 96, 208, 132, 186, 0, 209, 149, 146, 112, 210, 138, 187, 96, 211, 98, 255, 112, 212, 75, 35, 144, 213, 94, 173, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 232, 84, 210, 0, 232, 241, 180, 128, 233, 225, 165, 128, 234, 209, 150, 128, 236, 20, 150, 0, 236, 186, 179, 0, 237, 170, 164, 0, 238, 154, 149, 0, 239, 212, 90, 0, 240, 122, 119, 0, 241, 180, 60, 0, 242, 90, 89, 0, 243, 148, 30, 0, 244, 58, 59, 0, 245, 125, 58, 128, 246, 26, 29, 0, 13, 42, 253, 112, 13, 164, 85, 128, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 10, 128, 19, 77, 54, 0, 20, 51, 236, 128, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 33, 218, 214, 240, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Warsaw": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 11, 0, 0, 0, 26, 128, 0, 0, 0, 153, 168, 42, 208, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 160, 154, 182, 0, 161, 101, 189, 0, 166, 125, 124, 96, 200, 118, 222, 16, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 132, 186, 0, 209, 149, 146, 112, 210, 138, 187, 96, 211, 98, 255, 112, 212, 75, 35, 144, 213, 94, 173, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 232, 84, 210, 0, 232, 241, 180, 128, 233, 225, 165, 128, 234, 209, 150, 128, 236, 20, 150, 0, 236, 186, 179, 0, 237, 170, 164, 0, 238, 154, 149, 0, 239, 212, 90, 0, 240, 122, 119, 0, 241, 180, 60, 0, 242, 90, 89, 0, 243, 148, 30, 0, 244, 58, 59, 0, 245, 125, 58, 128, 246, 26, 29, 0, 13, 164, 85, 128, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 10, 128, 19, 77, 54, 0, 20, 51, 236, 128, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 11, 0, 0, 0, 26, 255, 255, 255, 255, 86, 182, 208, 80, 255, 255, 255, 255, 153, 168, 42, 208, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 160, 154, 182, 0, 255, 255, 255, 255, 161, 101, 189, 0, 255, 255, 255, 255, 166, 125, 124, 96, 255, 255, 255, 255, 200, 118, 222, 16, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 132, 186, 0, 255, 255, 255, 255, 209, 149, 146, 112, 255, 255, 255, 255, 210, 138, 187, 96, 255, 255, 255, 255, 211, 98, 255, 112, 255, 255, 255, 255, 212, 75, 35, 144, 255, 255, 255, 255, 213, 94, 173, 16, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 44, 26, 16, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 217, 2, 193, 144, 255, 255, 255, 255, 217, 233, 120, 16, 255, 255, 255, 255, 232, 84, 210, 0, 255, 255, 255, 255, 232, 241, 180, 128, 255, 255, 255, 255, 233, 225, 165, 128, 255, 255, 255, 255, 234, 209, 150, 128, 255, 255, 255, 255, 236, 20, 150, 0, 255, 255, 255, 255, 236, 186, 179, 0, 255, 255, 255, 255, 237, 170, 164, 0, 255, 255, 255, 255, 238, 154, 149, 0, 255, 255, 255, 255, 239, 212, 90, 0, 255, 255, 255, 255, 240, 122, 119, 0, 255, 255, 255, 255, 241, 180, 60, 0, 255, 255, 255, 255, 242, 90, 89, 0, 255, 255, 255, 255, 243, 148, 30, 0, 255, 255, 255, 255, 244, 58, 59, 0, 255, 255, 255, 255, 245, 125, 58, 128, 255, 255, 255, 255, 246, 26, 29, 0, 0, 0, 0, 0, 13, 164, 85, 128, 0, 0, 0, 0, 14, 139, 12, 0, 0, 0, 0, 0, 15, 132, 55, 128, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 100, 25, 128, 0, 0, 0, 0, 18, 84, 10, 128, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 51, 236, 128, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 19, 206, 128, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 23, 243, 176, 128, 0, 0, 0, 0, 24, 227, 161, 128, 0, 0, 0, 0, 25, 211, 146, 128, 0, 0, 0, 0, 26, 195, 131, 128, 0, 0, 0, 0, 27, 188, 175, 0, 0, 0, 0, 0, 28, 172, 160, 0, 0, 0, 0, 0, 29, 156, 145, 0, 0, 0, 0, 0, 30, 140, 130, 0, 0, 0, 0, 0, 31, 124, 115, 0, 0, 0, 0, 0, 32, 108, 100, 0, 0, 0, 0, 0, 33, 92, 85, 0, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Zagreb": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 208, 250, 1, 112, 209, 161, 140, 16, 210, 78, 64, 144, 24, 69, 95, 112, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 1, 3, 2, 1, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Zagreb": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 128, 0, 0, 0, 202, 2, 53, 224, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 161, 140, 16, 210, 78, 64, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 7, 0, 0, 0, 13, 255, 255, 255, 255, 94, 60, 240, 72, 255, 255, 255, 255, 202, 2, 53, 224, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 161, 140, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 4, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 0, 19, 56, 0, 0, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 4, 76, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Europe/Zaporozhye": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 13, 0, 0, 0, 36, 128, 0, 0, 0, 170, 25, 163, 48, 181, 164, 25, 96, 202, 170, 231, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 206, 189, 214, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 32, 248, 0, 0, 0, 0, 32, 208, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 0, 14, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 28, 32, 1, 22, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 0, 14, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 1, 31, 0, 0, 42, 48, 1, 31, 0, 0, 28, 32, 0, 10, 76, 77, 84, 0, 43, 48, 50, 50, 48, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, + "zoneinfo/Europe/Zaporozhye": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 13, 0, 0, 0, 36, 128, 0, 0, 0, 170, 25, 163, 48, 181, 164, 25, 96, 202, 170, 231, 208, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 206, 189, 214, 112, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 228, 237, 80, 41, 212, 236, 96, 42, 196, 207, 80, 43, 180, 206, 96, 44, 164, 177, 80, 45, 148, 176, 96, 46, 132, 147, 80, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 32, 248, 0, 0, 0, 0, 32, 208, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 0, 14, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 28, 32, 1, 22, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 0, 14, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 1, 31, 0, 0, 42, 48, 1, 31, 0, 0, 28, 32, 0, 10, 76, 77, 84, 0, 43, 48, 50, 50, 48, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 13, 0, 0, 0, 36, 255, 255, 255, 255, 86, 182, 195, 8, 255, 255, 255, 255, 170, 25, 163, 48, 255, 255, 255, 255, 181, 164, 25, 96, 255, 255, 255, 255, 202, 170, 231, 208, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 206, 189, 214, 112, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 228, 237, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 196, 207, 80, 0, 0, 0, 0, 43, 180, 206, 96, 0, 0, 0, 0, 44, 164, 177, 80, 0, 0, 0, 0, 45, 148, 176, 96, 0, 0, 0, 0, 46, 132, 147, 80, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 2, 3, 6, 4, 5, 4, 3, 7, 3, 7, 3, 7, 3, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 10, 2, 10, 2, 10, 2, 10, 2, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 11, 12, 0, 0, 32, 248, 0, 0, 0, 0, 32, 208, 0, 4, 0, 0, 28, 32, 0, 10, 0, 0, 42, 48, 0, 14, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 28, 32, 1, 22, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 0, 14, 0, 0, 56, 64, 1, 27, 0, 0, 42, 48, 1, 31, 0, 0, 42, 48, 1, 31, 0, 0, 28, 32, 0, 10, 76, 77, 84, 0, 43, 48, 50, 50, 48, 0, 69, 69, 84, 0, 77, 83, 75, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 77, 83, 68, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 69, 69, 84, 45, 50, 69, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 51, 44, 77, 49, 48, 46, 53, 46, 48, 47, 52, 10}, - "zoneinfo/Europe/Zurich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 8, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Europe/Zurich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 5, 0, 0, 0, 13, 128, 0, 0, 0, 202, 23, 106, 0, 202, 226, 113, 0, 203, 247, 76, 0, 204, 194, 83, 0, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 0, 0, 8, 0, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 6, 0, 0, 0, 17, 255, 255, 255, 255, 36, 240, 234, 128, 255, 255, 255, 255, 113, 212, 6, 134, 255, 255, 255, 255, 202, 23, 106, 0, 255, 255, 255, 255, 202, 226, 113, 0, 255, 255, 255, 255, 203, 247, 76, 0, 255, 255, 255, 255, 204, 194, 83, 0, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 0, 0, 8, 0, 0, 0, 0, 0, 6, 250, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 66, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Factory": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 45, 48, 48, 0, 0, 0, 10, 60, 45, 48, 48, 62, 48, 10}, + "zoneinfo/Factory": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 45, 48, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 45, 48, 48, 0, 10, 60, 45, 48, 48, 62, 48, 10}, - "zoneinfo/GB": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/GB": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/GB-Eire": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 8, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 48, 231, 36, 0, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/GB-Eire": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 128, 0, 0, 0, 155, 38, 173, 160, 155, 214, 5, 32, 156, 207, 48, 160, 157, 164, 195, 160, 158, 156, 157, 160, 159, 151, 26, 160, 160, 133, 186, 32, 161, 118, 252, 160, 162, 101, 156, 32, 163, 123, 200, 160, 164, 78, 184, 160, 165, 63, 251, 32, 166, 37, 96, 32, 167, 39, 198, 32, 168, 42, 44, 32, 168, 235, 248, 160, 170, 0, 211, 160, 170, 213, 21, 32, 171, 233, 240, 32, 172, 199, 108, 32, 173, 201, 210, 32, 174, 167, 78, 32, 175, 160, 121, 160, 176, 135, 48, 32, 177, 146, 208, 160, 178, 112, 76, 160, 179, 114, 178, 160, 180, 80, 46, 160, 181, 73, 90, 32, 182, 48, 16, 160, 183, 50, 118, 160, 184, 15, 242, 160, 185, 18, 88, 160, 185, 239, 212, 160, 186, 233, 0, 32, 187, 216, 241, 32, 188, 219, 87, 32, 189, 184, 211, 32, 190, 177, 254, 160, 191, 152, 181, 32, 192, 155, 27, 32, 193, 120, 151, 32, 194, 122, 253, 32, 195, 88, 121, 32, 196, 81, 164, 160, 197, 56, 91, 32, 198, 58, 193, 32, 199, 88, 214, 160, 199, 218, 9, 160, 202, 22, 38, 144, 202, 151, 89, 144, 203, 209, 30, 144, 204, 119, 59, 144, 205, 177, 0, 144, 206, 96, 88, 16, 207, 144, 226, 144, 208, 110, 94, 144, 209, 114, 22, 16, 209, 251, 50, 16, 210, 105, 254, 32, 211, 99, 41, 160, 212, 73, 224, 32, 213, 30, 33, 160, 213, 66, 253, 144, 213, 223, 224, 16, 214, 78, 172, 32, 214, 254, 3, 160, 216, 46, 142, 32, 216, 249, 149, 32, 218, 14, 112, 32, 218, 235, 236, 32, 219, 229, 23, 160, 220, 203, 206, 32, 221, 196, 249, 160, 222, 180, 234, 160, 223, 174, 22, 32, 224, 148, 204, 160, 225, 114, 72, 160, 226, 107, 116, 32, 227, 82, 42, 160, 228, 84, 144, 160, 229, 50, 12, 160, 230, 61, 173, 32, 231, 27, 41, 32, 232, 20, 84, 160, 232, 251, 11, 32, 233, 253, 113, 32, 234, 218, 237, 32, 235, 221, 83, 32, 236, 186, 207, 32, 237, 179, 250, 160, 238, 154, 177, 32, 239, 129, 103, 160, 240, 159, 125, 32, 241, 97, 73, 160, 242, 127, 95, 32, 243, 74, 102, 32, 244, 95, 65, 32, 245, 33, 13, 160, 246, 63, 35, 32, 247, 0, 239, 160, 248, 31, 5, 32, 248, 224, 209, 160, 249, 254, 231, 32, 250, 192, 179, 160, 251, 232, 3, 160, 252, 123, 171, 160, 253, 199, 187, 112, 3, 112, 198, 32, 4, 41, 88, 32, 5, 80, 168, 32, 6, 9, 58, 32, 7, 48, 138, 32, 7, 233, 28, 32, 9, 16, 108, 32, 9, 200, 254, 32, 10, 240, 78, 32, 11, 178, 26, 160, 12, 208, 48, 32, 13, 145, 252, 160, 14, 176, 18, 32, 15, 113, 222, 160, 16, 153, 46, 160, 17, 81, 192, 160, 18, 121, 16, 160, 19, 49, 162, 160, 20, 88, 242, 160, 21, 35, 235, 144, 22, 56, 198, 144, 23, 3, 205, 144, 24, 24, 168, 144, 24, 227, 175, 144, 25, 248, 138, 144, 26, 195, 145, 144, 27, 225, 167, 16, 28, 172, 174, 16, 29, 193, 137, 16, 30, 140, 144, 16, 31, 161, 107, 16, 32, 108, 114, 16, 33, 129, 77, 16, 34, 76, 84, 16, 35, 97, 47, 16, 36, 44, 54, 16, 37, 74, 75, 144, 38, 12, 24, 16, 39, 42, 45, 144, 39, 245, 52, 144, 41, 10, 15, 144, 41, 213, 22, 144, 42, 233, 241, 144, 43, 180, 248, 144, 44, 201, 211, 144, 45, 148, 218, 144, 46, 169, 181, 144, 47, 116, 188, 144, 48, 137, 151, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 26, 93, 9, 203, 255, 255, 255, 255, 155, 38, 173, 160, 255, 255, 255, 255, 155, 214, 5, 32, 255, 255, 255, 255, 156, 207, 48, 160, 255, 255, 255, 255, 157, 164, 195, 160, 255, 255, 255, 255, 158, 156, 157, 160, 255, 255, 255, 255, 159, 151, 26, 160, 255, 255, 255, 255, 160, 133, 186, 32, 255, 255, 255, 255, 161, 118, 252, 160, 255, 255, 255, 255, 162, 101, 156, 32, 255, 255, 255, 255, 163, 123, 200, 160, 255, 255, 255, 255, 164, 78, 184, 160, 255, 255, 255, 255, 165, 63, 251, 32, 255, 255, 255, 255, 166, 37, 96, 32, 255, 255, 255, 255, 167, 39, 198, 32, 255, 255, 255, 255, 168, 42, 44, 32, 255, 255, 255, 255, 168, 235, 248, 160, 255, 255, 255, 255, 170, 0, 211, 160, 255, 255, 255, 255, 170, 213, 21, 32, 255, 255, 255, 255, 171, 233, 240, 32, 255, 255, 255, 255, 172, 199, 108, 32, 255, 255, 255, 255, 173, 201, 210, 32, 255, 255, 255, 255, 174, 167, 78, 32, 255, 255, 255, 255, 175, 160, 121, 160, 255, 255, 255, 255, 176, 135, 48, 32, 255, 255, 255, 255, 177, 146, 208, 160, 255, 255, 255, 255, 178, 112, 76, 160, 255, 255, 255, 255, 179, 114, 178, 160, 255, 255, 255, 255, 180, 80, 46, 160, 255, 255, 255, 255, 181, 73, 90, 32, 255, 255, 255, 255, 182, 48, 16, 160, 255, 255, 255, 255, 183, 50, 118, 160, 255, 255, 255, 255, 184, 15, 242, 160, 255, 255, 255, 255, 185, 18, 88, 160, 255, 255, 255, 255, 185, 239, 212, 160, 255, 255, 255, 255, 186, 233, 0, 32, 255, 255, 255, 255, 187, 216, 241, 32, 255, 255, 255, 255, 188, 219, 87, 32, 255, 255, 255, 255, 189, 184, 211, 32, 255, 255, 255, 255, 190, 177, 254, 160, 255, 255, 255, 255, 191, 152, 181, 32, 255, 255, 255, 255, 192, 155, 27, 32, 255, 255, 255, 255, 193, 120, 151, 32, 255, 255, 255, 255, 194, 122, 253, 32, 255, 255, 255, 255, 195, 88, 121, 32, 255, 255, 255, 255, 196, 81, 164, 160, 255, 255, 255, 255, 197, 56, 91, 32, 255, 255, 255, 255, 198, 58, 193, 32, 255, 255, 255, 255, 199, 88, 214, 160, 255, 255, 255, 255, 199, 218, 9, 160, 255, 255, 255, 255, 202, 22, 38, 144, 255, 255, 255, 255, 202, 151, 89, 144, 255, 255, 255, 255, 203, 209, 30, 144, 255, 255, 255, 255, 204, 119, 59, 144, 255, 255, 255, 255, 205, 177, 0, 144, 255, 255, 255, 255, 206, 96, 88, 16, 255, 255, 255, 255, 207, 144, 226, 144, 255, 255, 255, 255, 208, 110, 94, 144, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 209, 251, 50, 16, 255, 255, 255, 255, 210, 105, 254, 32, 255, 255, 255, 255, 211, 99, 41, 160, 255, 255, 255, 255, 212, 73, 224, 32, 255, 255, 255, 255, 213, 30, 33, 160, 255, 255, 255, 255, 213, 66, 253, 144, 255, 255, 255, 255, 213, 223, 224, 16, 255, 255, 255, 255, 214, 78, 172, 32, 255, 255, 255, 255, 214, 254, 3, 160, 255, 255, 255, 255, 216, 46, 142, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 235, 236, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 203, 206, 32, 255, 255, 255, 255, 221, 196, 249, 160, 255, 255, 255, 255, 222, 180, 234, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 148, 204, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 107, 116, 32, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 84, 144, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 61, 173, 32, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 20, 84, 160, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 253, 113, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 221, 83, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 179, 250, 160, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 129, 103, 160, 255, 255, 255, 255, 240, 159, 125, 32, 255, 255, 255, 255, 241, 97, 73, 160, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 74, 102, 32, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 33, 13, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 0, 239, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 224, 209, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 192, 179, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 123, 171, 160, 255, 255, 255, 255, 253, 199, 187, 112, 0, 0, 0, 0, 3, 112, 198, 32, 0, 0, 0, 0, 4, 41, 88, 32, 0, 0, 0, 0, 5, 80, 168, 32, 0, 0, 0, 0, 6, 9, 58, 32, 0, 0, 0, 0, 7, 48, 138, 32, 0, 0, 0, 0, 7, 233, 28, 32, 0, 0, 0, 0, 9, 16, 108, 32, 0, 0, 0, 0, 9, 200, 254, 32, 0, 0, 0, 0, 10, 240, 78, 32, 0, 0, 0, 0, 11, 178, 26, 160, 0, 0, 0, 0, 12, 208, 48, 32, 0, 0, 0, 0, 13, 145, 252, 160, 0, 0, 0, 0, 14, 176, 18, 32, 0, 0, 0, 0, 15, 113, 222, 160, 0, 0, 0, 0, 16, 153, 46, 160, 0, 0, 0, 0, 17, 81, 192, 160, 0, 0, 0, 0, 18, 121, 16, 160, 0, 0, 0, 0, 19, 49, 162, 160, 0, 0, 0, 0, 20, 88, 242, 160, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 56, 198, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 24, 24, 168, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 248, 138, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 225, 167, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 193, 137, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 161, 107, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 129, 77, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 97, 47, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 74, 75, 144, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 42, 45, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 41, 10, 15, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 233, 241, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 201, 211, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 169, 181, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 137, 151, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 4, 6, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 255, 255, 255, 181, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 0, 0, 28, 32, 1, 12, 0, 0, 14, 16, 0, 4, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 8, 76, 77, 84, 0, 66, 83, 84, 0, 71, 77, 84, 0, 66, 68, 83, 84, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 10, 71, 77, 84, 48, 66, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/GMT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/GMT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/GMT+0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/GMT+0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/GMT-0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/GMT-0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/GMT0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/GMT0": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Greenwich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Greenwich": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 71, 77, 84, 0, 10, 71, 77, 84, 48, 10}, - "zoneinfo/HST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 72, 83, 84, 0, 0, 0, 10, 72, 83, 84, 49, 48, 10}, + "zoneinfo/HST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 72, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 115, 96, 0, 0, 72, 83, 84, 0, 10, 72, 83, 84, 49, 48, 10}, - "zoneinfo/Hongkong": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 6, 0, 0, 0, 17, 133, 105, 99, 144, 202, 77, 56, 56, 202, 219, 147, 48, 203, 75, 113, 120, 210, 77, 179, 240, 211, 106, 183, 56, 212, 147, 74, 168, 213, 66, 176, 56, 214, 154, 185, 168, 215, 62, 65, 184, 216, 46, 36, 168, 216, 249, 57, 184, 218, 14, 6, 168, 218, 217, 27, 184, 219, 237, 232, 168, 220, 184, 253, 184, 221, 205, 202, 168, 222, 162, 26, 56, 223, 182, 231, 40, 224, 129, 252, 56, 225, 150, 201, 40, 226, 79, 105, 56, 227, 118, 171, 40, 228, 47, 75, 56, 229, 95, 199, 168, 230, 15, 45, 56, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 97, 40, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 2, 3, 4, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 107, 10, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 72, 75, 84, 0, 72, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 72, 75, 84, 45, 56, 10}, + "zoneinfo/Hongkong": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 7, 0, 0, 0, 17, 133, 105, 99, 144, 202, 77, 49, 48, 202, 219, 147, 48, 203, 75, 113, 120, 210, 160, 222, 144, 211, 107, 215, 128, 212, 147, 88, 184, 213, 66, 176, 56, 214, 115, 58, 184, 215, 62, 65, 184, 216, 46, 50, 184, 216, 249, 57, 184, 218, 14, 20, 184, 218, 217, 27, 184, 219, 237, 246, 184, 220, 184, 253, 184, 221, 205, 216, 184, 222, 162, 26, 56, 223, 182, 245, 56, 224, 129, 252, 56, 225, 150, 201, 40, 226, 79, 105, 56, 227, 118, 171, 40, 228, 47, 75, 56, 229, 95, 199, 168, 230, 15, 45, 56, 231, 63, 169, 168, 231, 248, 73, 184, 233, 31, 139, 168, 233, 216, 43, 184, 234, 255, 109, 168, 235, 184, 13, 184, 236, 223, 79, 168, 237, 151, 239, 184, 238, 200, 108, 40, 239, 119, 209, 184, 240, 168, 78, 40, 241, 87, 179, 184, 242, 136, 48, 40, 243, 64, 208, 56, 244, 104, 18, 40, 245, 32, 178, 56, 246, 71, 244, 40, 247, 37, 126, 56, 248, 21, 97, 40, 249, 5, 96, 56, 249, 245, 67, 40, 250, 229, 66, 56, 251, 222, 95, 168, 252, 206, 94, 184, 253, 190, 65, 168, 254, 174, 64, 184, 255, 158, 35, 168, 0, 142, 34, 184, 1, 126, 5, 168, 2, 110, 4, 184, 3, 93, 231, 168, 4, 77, 230, 184, 5, 71, 4, 40, 6, 55, 3, 56, 7, 38, 230, 40, 7, 131, 61, 56, 9, 6, 200, 40, 9, 246, 199, 56, 10, 230, 170, 40, 11, 214, 169, 56, 12, 198, 140, 40, 17, 155, 57, 56, 18, 111, 108, 168, 1, 2, 3, 4, 1, 2, 5, 6, 5, 6, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 107, 10, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 76, 77, 84, 0, 72, 75, 84, 0, 72, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 7, 0, 0, 0, 17, 255, 255, 255, 255, 133, 105, 99, 144, 255, 255, 255, 255, 202, 77, 49, 48, 255, 255, 255, 255, 202, 219, 147, 48, 255, 255, 255, 255, 203, 75, 113, 120, 255, 255, 255, 255, 210, 160, 222, 144, 255, 255, 255, 255, 211, 107, 215, 128, 255, 255, 255, 255, 212, 147, 88, 184, 255, 255, 255, 255, 213, 66, 176, 56, 255, 255, 255, 255, 214, 115, 58, 184, 255, 255, 255, 255, 215, 62, 65, 184, 255, 255, 255, 255, 216, 46, 50, 184, 255, 255, 255, 255, 216, 249, 57, 184, 255, 255, 255, 255, 218, 14, 20, 184, 255, 255, 255, 255, 218, 217, 27, 184, 255, 255, 255, 255, 219, 237, 246, 184, 255, 255, 255, 255, 220, 184, 253, 184, 255, 255, 255, 255, 221, 205, 216, 184, 255, 255, 255, 255, 222, 162, 26, 56, 255, 255, 255, 255, 223, 182, 245, 56, 255, 255, 255, 255, 224, 129, 252, 56, 255, 255, 255, 255, 225, 150, 201, 40, 255, 255, 255, 255, 226, 79, 105, 56, 255, 255, 255, 255, 227, 118, 171, 40, 255, 255, 255, 255, 228, 47, 75, 56, 255, 255, 255, 255, 229, 95, 199, 168, 255, 255, 255, 255, 230, 15, 45, 56, 255, 255, 255, 255, 231, 63, 169, 168, 255, 255, 255, 255, 231, 248, 73, 184, 255, 255, 255, 255, 233, 31, 139, 168, 255, 255, 255, 255, 233, 216, 43, 184, 255, 255, 255, 255, 234, 255, 109, 168, 255, 255, 255, 255, 235, 184, 13, 184, 255, 255, 255, 255, 236, 223, 79, 168, 255, 255, 255, 255, 237, 151, 239, 184, 255, 255, 255, 255, 238, 200, 108, 40, 255, 255, 255, 255, 239, 119, 209, 184, 255, 255, 255, 255, 240, 168, 78, 40, 255, 255, 255, 255, 241, 87, 179, 184, 255, 255, 255, 255, 242, 136, 48, 40, 255, 255, 255, 255, 243, 64, 208, 56, 255, 255, 255, 255, 244, 104, 18, 40, 255, 255, 255, 255, 245, 32, 178, 56, 255, 255, 255, 255, 246, 71, 244, 40, 255, 255, 255, 255, 247, 37, 126, 56, 255, 255, 255, 255, 248, 21, 97, 40, 255, 255, 255, 255, 249, 5, 96, 56, 255, 255, 255, 255, 249, 245, 67, 40, 255, 255, 255, 255, 250, 229, 66, 56, 255, 255, 255, 255, 251, 222, 95, 168, 255, 255, 255, 255, 252, 206, 94, 184, 255, 255, 255, 255, 253, 190, 65, 168, 255, 255, 255, 255, 254, 174, 64, 184, 255, 255, 255, 255, 255, 158, 35, 168, 0, 0, 0, 0, 0, 142, 34, 184, 0, 0, 0, 0, 1, 126, 5, 168, 0, 0, 0, 0, 2, 110, 4, 184, 0, 0, 0, 0, 3, 93, 231, 168, 0, 0, 0, 0, 4, 77, 230, 184, 0, 0, 0, 0, 5, 71, 4, 40, 0, 0, 0, 0, 6, 55, 3, 56, 0, 0, 0, 0, 7, 38, 230, 40, 0, 0, 0, 0, 7, 131, 61, 56, 0, 0, 0, 0, 9, 6, 200, 40, 0, 0, 0, 0, 9, 246, 199, 56, 0, 0, 0, 0, 10, 230, 170, 40, 0, 0, 0, 0, 11, 214, 169, 56, 0, 0, 0, 0, 12, 198, 140, 40, 0, 0, 0, 0, 17, 155, 57, 56, 0, 0, 0, 0, 18, 111, 108, 168, 1, 2, 3, 4, 1, 2, 5, 6, 5, 6, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 107, 10, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 13, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 1, 8, 76, 77, 84, 0, 72, 75, 84, 0, 72, 75, 83, 84, 0, 74, 83, 84, 0, 0, 0, 0, 0, 0, 1, 1, 10, 72, 75, 84, 45, 56, 10}, - "zoneinfo/Iceland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 6, 0, 0, 0, 16, 139, 96, 131, 160, 156, 145, 30, 0, 157, 209, 136, 144, 158, 114, 81, 128, 159, 213, 3, 16, 160, 83, 133, 0, 161, 182, 54, 144, 164, 60, 39, 128, 164, 185, 116, 16, 198, 77, 26, 0, 199, 61, 39, 32, 199, 218, 23, 176, 201, 38, 67, 160, 201, 195, 38, 32, 203, 6, 37, 160, 203, 172, 66, 160, 204, 220, 205, 32, 205, 140, 36, 160, 206, 188, 175, 32, 207, 108, 6, 160, 208, 156, 145, 32, 209, 75, 232, 160, 210, 133, 173, 160, 211, 43, 202, 160, 212, 101, 143, 160, 213, 57, 209, 32, 214, 69, 113, 160, 215, 25, 179, 32, 216, 37, 83, 160, 216, 249, 149, 32, 218, 14, 112, 32, 218, 217, 119, 32, 219, 229, 23, 160, 220, 185, 89, 32, 221, 206, 52, 32, 222, 162, 117, 160, 223, 174, 22, 32, 224, 130, 87, 160, 225, 141, 248, 32, 226, 98, 57, 160, 227, 109, 218, 32, 228, 66, 27, 160, 229, 77, 188, 32, 230, 33, 253, 160, 231, 54, 216, 160, 232, 11, 26, 32, 233, 22, 186, 160, 233, 234, 252, 32, 234, 246, 156, 160, 235, 202, 222, 32, 236, 214, 126, 160, 237, 170, 192, 32, 238, 182, 96, 160, 239, 138, 162, 32, 240, 150, 66, 160, 241, 106, 132, 32, 242, 127, 95, 32, 243, 83, 160, 160, 244, 95, 65, 32, 245, 51, 130, 160, 246, 63, 35, 32, 247, 19, 100, 160, 248, 31, 5, 32, 248, 243, 70, 160, 249, 254, 231, 32, 250, 211, 40, 160, 251, 232, 3, 160, 252, 188, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 10, 71, 77, 84, 48, 10}, + "zoneinfo/Iceland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 6, 0, 0, 0, 16, 139, 96, 131, 160, 156, 145, 30, 0, 157, 209, 136, 144, 158, 114, 81, 128, 159, 213, 3, 16, 160, 83, 133, 0, 161, 182, 54, 144, 164, 60, 39, 128, 164, 185, 116, 16, 198, 77, 26, 0, 199, 61, 39, 32, 199, 218, 23, 176, 201, 38, 67, 160, 201, 195, 38, 32, 203, 6, 37, 160, 203, 172, 66, 160, 204, 220, 205, 32, 205, 140, 36, 160, 206, 188, 175, 32, 207, 108, 6, 160, 208, 156, 145, 32, 209, 75, 232, 160, 210, 133, 173, 160, 211, 43, 202, 160, 212, 101, 143, 160, 213, 57, 209, 32, 214, 69, 113, 160, 215, 25, 179, 32, 216, 37, 83, 160, 216, 249, 149, 32, 218, 14, 112, 32, 218, 217, 119, 32, 219, 229, 23, 160, 220, 185, 89, 32, 221, 206, 52, 32, 222, 162, 117, 160, 223, 174, 22, 32, 224, 130, 87, 160, 225, 141, 248, 32, 226, 98, 57, 160, 227, 109, 218, 32, 228, 66, 27, 160, 229, 77, 188, 32, 230, 33, 253, 160, 231, 54, 216, 160, 232, 11, 26, 32, 233, 22, 186, 160, 233, 234, 252, 32, 234, 246, 156, 160, 235, 202, 222, 32, 236, 214, 126, 160, 237, 170, 192, 32, 238, 182, 96, 160, 239, 138, 162, 32, 240, 150, 66, 160, 241, 106, 132, 32, 242, 127, 95, 32, 243, 83, 160, 160, 244, 95, 65, 32, 245, 51, 130, 160, 246, 63, 35, 32, 247, 19, 100, 160, 248, 31, 5, 32, 248, 243, 70, 160, 249, 254, 231, 32, 250, 211, 40, 160, 251, 232, 3, 160, 252, 188, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 139, 96, 131, 160, 255, 255, 255, 255, 156, 145, 30, 0, 255, 255, 255, 255, 157, 209, 136, 144, 255, 255, 255, 255, 158, 114, 81, 128, 255, 255, 255, 255, 159, 213, 3, 16, 255, 255, 255, 255, 160, 83, 133, 0, 255, 255, 255, 255, 161, 182, 54, 144, 255, 255, 255, 255, 164, 60, 39, 128, 255, 255, 255, 255, 164, 185, 116, 16, 255, 255, 255, 255, 198, 77, 26, 0, 255, 255, 255, 255, 199, 61, 39, 32, 255, 255, 255, 255, 199, 218, 23, 176, 255, 255, 255, 255, 201, 38, 67, 160, 255, 255, 255, 255, 201, 195, 38, 32, 255, 255, 255, 255, 203, 6, 37, 160, 255, 255, 255, 255, 203, 172, 66, 160, 255, 255, 255, 255, 204, 220, 205, 32, 255, 255, 255, 255, 205, 140, 36, 160, 255, 255, 255, 255, 206, 188, 175, 32, 255, 255, 255, 255, 207, 108, 6, 160, 255, 255, 255, 255, 208, 156, 145, 32, 255, 255, 255, 255, 209, 75, 232, 160, 255, 255, 255, 255, 210, 133, 173, 160, 255, 255, 255, 255, 211, 43, 202, 160, 255, 255, 255, 255, 212, 101, 143, 160, 255, 255, 255, 255, 213, 57, 209, 32, 255, 255, 255, 255, 214, 69, 113, 160, 255, 255, 255, 255, 215, 25, 179, 32, 255, 255, 255, 255, 216, 37, 83, 160, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 218, 14, 112, 32, 255, 255, 255, 255, 218, 217, 119, 32, 255, 255, 255, 255, 219, 229, 23, 160, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 206, 52, 32, 255, 255, 255, 255, 222, 162, 117, 160, 255, 255, 255, 255, 223, 174, 22, 32, 255, 255, 255, 255, 224, 130, 87, 160, 255, 255, 255, 255, 225, 141, 248, 32, 255, 255, 255, 255, 226, 98, 57, 160, 255, 255, 255, 255, 227, 109, 218, 32, 255, 255, 255, 255, 228, 66, 27, 160, 255, 255, 255, 255, 229, 77, 188, 32, 255, 255, 255, 255, 230, 33, 253, 160, 255, 255, 255, 255, 231, 54, 216, 160, 255, 255, 255, 255, 232, 11, 26, 32, 255, 255, 255, 255, 233, 22, 186, 160, 255, 255, 255, 255, 233, 234, 252, 32, 255, 255, 255, 255, 234, 246, 156, 160, 255, 255, 255, 255, 235, 202, 222, 32, 255, 255, 255, 255, 236, 214, 126, 160, 255, 255, 255, 255, 237, 170, 192, 32, 255, 255, 255, 255, 238, 182, 96, 160, 255, 255, 255, 255, 239, 138, 162, 32, 255, 255, 255, 255, 240, 150, 66, 160, 255, 255, 255, 255, 241, 106, 132, 32, 255, 255, 255, 255, 242, 127, 95, 32, 255, 255, 255, 255, 243, 83, 160, 160, 255, 255, 255, 255, 244, 95, 65, 32, 255, 255, 255, 255, 245, 51, 130, 160, 255, 255, 255, 255, 246, 63, 35, 32, 255, 255, 255, 255, 247, 19, 100, 160, 255, 255, 255, 255, 248, 31, 5, 32, 255, 255, 255, 255, 248, 243, 70, 160, 255, 255, 255, 255, 249, 254, 231, 32, 255, 255, 255, 255, 250, 211, 40, 160, 255, 255, 255, 255, 251, 232, 3, 160, 255, 255, 255, 255, 252, 188, 69, 32, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 255, 255, 235, 96, 0, 0, 0, 0, 0, 0, 1, 4, 255, 255, 241, 240, 0, 8, 255, 255, 241, 240, 0, 8, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 12, 76, 77, 84, 0, 43, 48, 48, 0, 45, 48, 49, 0, 71, 77, 84, 0, 0, 0, 0, 1, 1, 1, 10, 71, 77, 84, 48, 10}, - "zoneinfo/Indian/Antananarivo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Indian/Antananarivo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Indian/Chagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 137, 126, 247, 156, 48, 230, 221, 176, 127, 255, 255, 255, 1, 2, 2, 0, 0, 67, 228, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 84, 96, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 54, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, + "zoneinfo/Indian/Chagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 137, 126, 247, 156, 48, 230, 221, 176, 127, 255, 255, 255, 1, 2, 2, 0, 0, 67, 228, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 84, 96, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 137, 126, 247, 156, 0, 0, 0, 0, 48, 230, 221, 176, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 67, 228, 0, 0, 0, 0, 70, 80, 0, 4, 0, 0, 84, 96, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 54, 0, 10, 60, 43, 48, 54, 62, 45, 54, 10}, - "zoneinfo/Indian/Christmas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 99, 28, 0, 0, 0, 0, 98, 112, 0, 4, 76, 77, 84, 0, 43, 48, 55, 0, 0, 0, 0, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, + "zoneinfo/Indian/Christmas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 99, 28, 0, 0, 0, 0, 98, 112, 0, 4, 76, 77, 84, 0, 43, 48, 55, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 115, 22, 169, 228, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 99, 28, 0, 0, 0, 0, 98, 112, 0, 4, 76, 77, 84, 0, 43, 48, 55, 0, 10, 60, 43, 48, 55, 62, 45, 55, 10}, - "zoneinfo/Indian/Cocos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 90, 220, 0, 0, 0, 0, 91, 104, 0, 4, 76, 77, 84, 0, 43, 48, 54, 51, 48, 0, 0, 0, 0, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, + "zoneinfo/Indian/Cocos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 90, 220, 0, 0, 0, 0, 91, 104, 0, 4, 76, 77, 84, 0, 43, 48, 54, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 255, 255, 255, 255, 124, 85, 38, 164, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 90, 220, 0, 0, 0, 0, 91, 104, 0, 4, 76, 77, 84, 0, 43, 48, 54, 51, 48, 0, 10, 60, 43, 48, 54, 51, 48, 62, 45, 54, 58, 51, 48, 10}, - "zoneinfo/Indian/Comoro": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Indian/Comoro": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Indian/Kerguelen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 218, 97, 98, 128, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 70, 80, 0, 4, 45, 48, 48, 0, 43, 48, 53, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Indian/Kerguelen": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 218, 97, 98, 128, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 70, 80, 0, 4, 45, 48, 48, 0, 43, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 218, 97, 98, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 70, 80, 0, 4, 45, 48, 48, 0, 43, 48, 53, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Indian/Mahe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 136, 100, 230, 132, 127, 255, 255, 255, 1, 1, 0, 0, 51, 252, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Indian/Mahe": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 136, 100, 230, 132, 127, 255, 255, 255, 1, 1, 0, 0, 51, 252, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 136, 100, 230, 132, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 51, 252, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Indian/Maldives": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 237, 47, 195, 152, 127, 255, 255, 255, 1, 2, 2, 0, 0, 68, 232, 0, 0, 0, 0, 68, 232, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, + "zoneinfo/Indian/Maldives": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 237, 47, 195, 152, 127, 255, 255, 255, 1, 2, 2, 0, 0, 68, 232, 0, 0, 0, 0, 68, 232, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 86, 182, 159, 24, 255, 255, 255, 255, 237, 47, 195, 152, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 68, 232, 0, 0, 0, 0, 68, 232, 0, 4, 0, 0, 70, 80, 0, 8, 76, 77, 84, 0, 77, 77, 84, 0, 43, 48, 53, 0, 10, 60, 43, 48, 53, 62, 45, 53, 10}, - "zoneinfo/Indian/Mauritius": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 12, 137, 127, 5, 152, 24, 5, 237, 64, 24, 219, 114, 48, 73, 3, 150, 224, 73, 206, 143, 208, 127, 255, 255, 255, 2, 1, 2, 1, 2, 2, 0, 0, 53, 232, 0, 0, 0, 0, 70, 80, 1, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 52, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Indian/Mauritius": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 12, 137, 127, 5, 152, 24, 5, 237, 64, 24, 219, 114, 48, 73, 3, 150, 224, 73, 206, 143, 208, 127, 255, 255, 255, 2, 1, 2, 1, 2, 2, 0, 0, 53, 232, 0, 0, 0, 0, 70, 80, 1, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 137, 127, 5, 152, 0, 0, 0, 0, 24, 5, 237, 64, 0, 0, 0, 0, 24, 219, 114, 48, 0, 0, 0, 0, 73, 3, 150, 224, 0, 0, 0, 0, 73, 206, 143, 208, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 2, 0, 0, 53, 232, 0, 0, 0, 0, 70, 80, 1, 4, 0, 0, 56, 64, 0, 8, 76, 77, 84, 0, 43, 48, 53, 0, 43, 48, 52, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Indian/Mayotte": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 65, 84, 45, 51, 10}, + "zoneinfo/Indian/Mayotte": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 177, 238, 218, 252, 180, 194, 154, 208, 199, 145, 71, 216, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 177, 238, 218, 252, 255, 255, 255, 255, 180, 194, 154, 208, 255, 255, 255, 255, 199, 145, 71, 216, 255, 255, 255, 255, 237, 47, 225, 212, 1, 2, 3, 1, 0, 0, 34, 132, 0, 0, 0, 0, 42, 48, 0, 4, 0, 0, 35, 40, 0, 8, 0, 0, 38, 172, 0, 14, 0, 0, 42, 48, 0, 4, 76, 77, 84, 0, 69, 65, 84, 0, 43, 48, 50, 51, 48, 0, 43, 48, 50, 52, 53, 0, 10, 69, 65, 84, 45, 51, 10}, - "zoneinfo/Indian/Reunion": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 145, 204, 57, 128, 127, 255, 255, 255, 1, 1, 0, 0, 52, 0, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 0, 0, 0, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, + "zoneinfo/Indian/Reunion": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 145, 204, 57, 128, 127, 255, 255, 255, 1, 1, 0, 0, 52, 0, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 145, 204, 57, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 52, 0, 0, 0, 0, 0, 56, 64, 0, 4, 76, 77, 84, 0, 43, 48, 52, 0, 10, 60, 43, 48, 52, 62, 45, 52, 10}, - "zoneinfo/Iran": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 7, 0, 0, 0, 28, 154, 108, 125, 200, 210, 219, 18, 200, 14, 187, 162, 72, 15, 116, 45, 64, 16, 142, 64, 48, 16, 237, 58, 64, 17, 85, 103, 200, 18, 69, 74, 184, 19, 55, 236, 200, 20, 45, 21, 184, 40, 32, 118, 200, 40, 219, 157, 184, 41, 203, 156, 200, 42, 190, 34, 184, 43, 172, 208, 72, 44, 159, 86, 56, 45, 142, 3, 200, 46, 128, 137, 184, 47, 111, 55, 72, 48, 97, 189, 56, 49, 80, 106, 200, 50, 66, 240, 184, 51, 50, 239, 200, 52, 37, 117, 184, 53, 20, 35, 72, 54, 6, 169, 56, 54, 245, 86, 200, 55, 231, 220, 184, 56, 214, 138, 72, 57, 201, 16, 56, 58, 185, 15, 72, 59, 171, 149, 56, 60, 154, 66, 200, 61, 140, 200, 184, 62, 123, 118, 72, 63, 109, 252, 56, 64, 92, 169, 200, 65, 79, 47, 184, 66, 63, 46, 200, 67, 49, 180, 184, 71, 226, 201, 72, 72, 213, 79, 56, 73, 197, 78, 72, 74, 183, 212, 56, 75, 166, 129, 200, 76, 153, 7, 184, 77, 135, 181, 72, 78, 122, 59, 56, 79, 104, 232, 200, 80, 91, 110, 184, 81, 75, 109, 200, 82, 61, 243, 184, 83, 44, 161, 72, 84, 31, 39, 56, 85, 13, 212, 200, 86, 0, 90, 184, 86, 239, 8, 72, 87, 225, 142, 56, 88, 209, 141, 72, 89, 196, 19, 56, 90, 178, 192, 200, 91, 165, 70, 184, 92, 147, 244, 72, 93, 134, 122, 56, 94, 117, 39, 200, 95, 103, 173, 184, 96, 87, 172, 200, 97, 74, 50, 184, 98, 56, 224, 72, 99, 43, 102, 56, 100, 26, 19, 200, 101, 12, 153, 184, 101, 251, 71, 72, 102, 237, 205, 56, 103, 221, 204, 72, 104, 208, 82, 56, 105, 190, 255, 200, 106, 177, 133, 184, 107, 160, 51, 72, 108, 146, 185, 56, 109, 129, 102, 200, 110, 115, 236, 184, 111, 98, 154, 72, 112, 85, 32, 56, 113, 69, 31, 72, 114, 55, 165, 56, 115, 38, 82, 200, 116, 24, 216, 184, 117, 7, 134, 72, 117, 250, 12, 56, 118, 232, 185, 200, 119, 219, 63, 184, 120, 203, 62, 200, 121, 189, 196, 184, 122, 172, 114, 72, 123, 158, 248, 56, 124, 141, 165, 200, 125, 128, 43, 184, 126, 110, 217, 72, 127, 97, 95, 56, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 51, 51, 48, 62, 45, 51, 58, 51, 48, 60, 43, 48, 52, 51, 48, 62, 44, 74, 55, 57, 47, 50, 52, 44, 74, 50, 54, 51, 47, 50, 52, 10}, + "zoneinfo/Iran": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 7, 0, 0, 0, 28, 154, 108, 125, 200, 210, 219, 18, 200, 14, 187, 162, 72, 15, 116, 45, 64, 16, 142, 64, 48, 16, 237, 58, 64, 17, 85, 103, 200, 18, 69, 74, 184, 19, 55, 236, 200, 20, 45, 21, 184, 40, 32, 118, 200, 40, 219, 157, 184, 41, 203, 156, 200, 42, 190, 34, 184, 43, 172, 208, 72, 44, 159, 86, 56, 45, 142, 3, 200, 46, 128, 137, 184, 47, 111, 55, 72, 48, 97, 189, 56, 49, 80, 106, 200, 50, 66, 240, 184, 51, 50, 239, 200, 52, 37, 117, 184, 53, 20, 35, 72, 54, 6, 169, 56, 54, 245, 86, 200, 55, 231, 220, 184, 56, 214, 138, 72, 57, 201, 16, 56, 58, 185, 15, 72, 59, 171, 149, 56, 60, 154, 66, 200, 61, 140, 200, 184, 62, 123, 118, 72, 63, 109, 252, 56, 64, 92, 169, 200, 65, 79, 47, 184, 66, 63, 46, 200, 67, 49, 180, 184, 71, 226, 201, 72, 72, 213, 79, 56, 73, 197, 78, 72, 74, 183, 212, 56, 75, 166, 129, 200, 76, 153, 7, 184, 77, 135, 181, 72, 78, 122, 59, 56, 79, 104, 232, 200, 80, 91, 110, 184, 81, 75, 109, 200, 82, 61, 243, 184, 83, 44, 161, 72, 84, 31, 39, 56, 85, 13, 212, 200, 86, 0, 90, 184, 86, 239, 8, 72, 87, 225, 142, 56, 88, 209, 141, 72, 89, 196, 19, 56, 90, 178, 192, 200, 91, 165, 70, 184, 92, 147, 244, 72, 93, 134, 122, 56, 94, 117, 39, 200, 95, 103, 173, 184, 96, 87, 172, 200, 97, 74, 50, 184, 98, 56, 224, 72, 99, 43, 102, 56, 100, 26, 19, 200, 101, 12, 153, 184, 101, 251, 71, 72, 102, 237, 205, 56, 103, 221, 204, 72, 104, 208, 82, 56, 105, 190, 255, 200, 106, 177, 133, 184, 107, 160, 51, 72, 108, 146, 185, 56, 109, 129, 102, 200, 110, 115, 236, 184, 111, 98, 154, 72, 112, 85, 32, 56, 113, 69, 31, 72, 114, 55, 165, 56, 115, 38, 82, 200, 116, 24, 216, 184, 117, 7, 134, 72, 117, 250, 12, 56, 118, 232, 185, 200, 119, 219, 63, 184, 120, 203, 62, 200, 121, 189, 196, 184, 122, 172, 114, 72, 123, 158, 248, 56, 124, 141, 165, 200, 125, 128, 43, 184, 126, 110, 217, 72, 127, 97, 95, 56, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 154, 108, 125, 200, 255, 255, 255, 255, 210, 219, 18, 200, 0, 0, 0, 0, 14, 187, 162, 72, 0, 0, 0, 0, 15, 116, 45, 64, 0, 0, 0, 0, 16, 142, 64, 48, 0, 0, 0, 0, 16, 237, 58, 64, 0, 0, 0, 0, 17, 85, 103, 200, 0, 0, 0, 0, 18, 69, 74, 184, 0, 0, 0, 0, 19, 55, 236, 200, 0, 0, 0, 0, 20, 45, 21, 184, 0, 0, 0, 0, 40, 32, 118, 200, 0, 0, 0, 0, 40, 219, 157, 184, 0, 0, 0, 0, 41, 203, 156, 200, 0, 0, 0, 0, 42, 190, 34, 184, 0, 0, 0, 0, 43, 172, 208, 72, 0, 0, 0, 0, 44, 159, 86, 56, 0, 0, 0, 0, 45, 142, 3, 200, 0, 0, 0, 0, 46, 128, 137, 184, 0, 0, 0, 0, 47, 111, 55, 72, 0, 0, 0, 0, 48, 97, 189, 56, 0, 0, 0, 0, 49, 80, 106, 200, 0, 0, 0, 0, 50, 66, 240, 184, 0, 0, 0, 0, 51, 50, 239, 200, 0, 0, 0, 0, 52, 37, 117, 184, 0, 0, 0, 0, 53, 20, 35, 72, 0, 0, 0, 0, 54, 6, 169, 56, 0, 0, 0, 0, 54, 245, 86, 200, 0, 0, 0, 0, 55, 231, 220, 184, 0, 0, 0, 0, 56, 214, 138, 72, 0, 0, 0, 0, 57, 201, 16, 56, 0, 0, 0, 0, 58, 185, 15, 72, 0, 0, 0, 0, 59, 171, 149, 56, 0, 0, 0, 0, 60, 154, 66, 200, 0, 0, 0, 0, 61, 140, 200, 184, 0, 0, 0, 0, 62, 123, 118, 72, 0, 0, 0, 0, 63, 109, 252, 56, 0, 0, 0, 0, 64, 92, 169, 200, 0, 0, 0, 0, 65, 79, 47, 184, 0, 0, 0, 0, 66, 63, 46, 200, 0, 0, 0, 0, 67, 49, 180, 184, 0, 0, 0, 0, 71, 226, 201, 72, 0, 0, 0, 0, 72, 213, 79, 56, 0, 0, 0, 0, 73, 197, 78, 72, 0, 0, 0, 0, 74, 183, 212, 56, 0, 0, 0, 0, 75, 166, 129, 200, 0, 0, 0, 0, 76, 153, 7, 184, 0, 0, 0, 0, 77, 135, 181, 72, 0, 0, 0, 0, 78, 122, 59, 56, 0, 0, 0, 0, 79, 104, 232, 200, 0, 0, 0, 0, 80, 91, 110, 184, 0, 0, 0, 0, 81, 75, 109, 200, 0, 0, 0, 0, 82, 61, 243, 184, 0, 0, 0, 0, 83, 44, 161, 72, 0, 0, 0, 0, 84, 31, 39, 56, 0, 0, 0, 0, 85, 13, 212, 200, 0, 0, 0, 0, 86, 0, 90, 184, 0, 0, 0, 0, 86, 239, 8, 72, 0, 0, 0, 0, 87, 225, 142, 56, 0, 0, 0, 0, 88, 209, 141, 72, 0, 0, 0, 0, 89, 196, 19, 56, 0, 0, 0, 0, 90, 178, 192, 200, 0, 0, 0, 0, 91, 165, 70, 184, 0, 0, 0, 0, 92, 147, 244, 72, 0, 0, 0, 0, 93, 134, 122, 56, 0, 0, 0, 0, 94, 117, 39, 200, 0, 0, 0, 0, 95, 103, 173, 184, 0, 0, 0, 0, 96, 87, 172, 200, 0, 0, 0, 0, 97, 74, 50, 184, 0, 0, 0, 0, 98, 56, 224, 72, 0, 0, 0, 0, 99, 43, 102, 56, 0, 0, 0, 0, 100, 26, 19, 200, 0, 0, 0, 0, 101, 12, 153, 184, 0, 0, 0, 0, 101, 251, 71, 72, 0, 0, 0, 0, 102, 237, 205, 56, 0, 0, 0, 0, 103, 221, 204, 72, 0, 0, 0, 0, 104, 208, 82, 56, 0, 0, 0, 0, 105, 190, 255, 200, 0, 0, 0, 0, 106, 177, 133, 184, 0, 0, 0, 0, 107, 160, 51, 72, 0, 0, 0, 0, 108, 146, 185, 56, 0, 0, 0, 0, 109, 129, 102, 200, 0, 0, 0, 0, 110, 115, 236, 184, 0, 0, 0, 0, 111, 98, 154, 72, 0, 0, 0, 0, 112, 85, 32, 56, 0, 0, 0, 0, 113, 69, 31, 72, 0, 0, 0, 0, 114, 55, 165, 56, 0, 0, 0, 0, 115, 38, 82, 200, 0, 0, 0, 0, 116, 24, 216, 184, 0, 0, 0, 0, 117, 7, 134, 72, 0, 0, 0, 0, 117, 250, 12, 56, 0, 0, 0, 0, 118, 232, 185, 200, 0, 0, 0, 0, 119, 219, 63, 184, 0, 0, 0, 0, 120, 203, 62, 200, 0, 0, 0, 0, 121, 189, 196, 184, 0, 0, 0, 0, 122, 172, 114, 72, 0, 0, 0, 0, 123, 158, 248, 56, 0, 0, 0, 0, 124, 141, 165, 200, 0, 0, 0, 0, 125, 128, 43, 184, 0, 0, 0, 0, 126, 110, 217, 72, 0, 0, 0, 0, 127, 97, 95, 56, 0, 0, 0, 0, 128, 81, 94, 72, 0, 0, 0, 0, 129, 67, 228, 56, 0, 0, 0, 0, 130, 50, 145, 200, 0, 0, 0, 0, 131, 37, 23, 184, 0, 0, 0, 0, 132, 19, 197, 72, 0, 0, 0, 0, 133, 6, 75, 56, 0, 0, 0, 0, 133, 244, 248, 200, 0, 0, 0, 0, 134, 231, 126, 184, 0, 0, 0, 0, 135, 215, 125, 200, 0, 0, 0, 0, 136, 202, 3, 184, 0, 0, 0, 0, 137, 184, 177, 72, 0, 0, 0, 0, 138, 171, 55, 56, 0, 0, 0, 0, 139, 153, 228, 200, 0, 0, 0, 0, 140, 140, 106, 184, 0, 0, 0, 0, 141, 123, 24, 72, 0, 0, 0, 0, 142, 109, 158, 56, 0, 0, 0, 0, 143, 93, 157, 72, 0, 0, 0, 0, 144, 80, 35, 56, 0, 0, 0, 0, 145, 62, 208, 200, 0, 0, 0, 0, 146, 49, 86, 184, 0, 0, 0, 0, 147, 32, 4, 72, 0, 0, 0, 0, 148, 18, 138, 56, 0, 0, 0, 0, 149, 1, 55, 200, 0, 0, 0, 0, 149, 243, 189, 184, 0, 0, 0, 0, 150, 227, 188, 200, 0, 0, 0, 0, 151, 214, 66, 184, 0, 0, 0, 0, 152, 196, 240, 72, 0, 0, 0, 0, 153, 183, 118, 56, 0, 0, 0, 0, 154, 166, 35, 200, 0, 0, 0, 0, 155, 152, 169, 184, 0, 0, 0, 0, 156, 135, 87, 72, 0, 0, 0, 0, 157, 121, 221, 56, 0, 0, 0, 0, 158, 105, 220, 72, 0, 0, 0, 0, 159, 92, 98, 56, 0, 0, 0, 0, 160, 75, 15, 200, 0, 0, 0, 0, 161, 61, 149, 184, 0, 0, 0, 0, 162, 44, 67, 72, 0, 0, 0, 0, 163, 30, 201, 56, 0, 0, 0, 0, 164, 13, 118, 200, 0, 0, 0, 0, 164, 255, 252, 184, 0, 0, 0, 0, 165, 239, 251, 200, 0, 0, 0, 0, 166, 226, 129, 184, 0, 0, 0, 0, 167, 209, 47, 72, 0, 0, 0, 0, 168, 195, 181, 56, 0, 0, 0, 0, 169, 178, 98, 200, 0, 0, 0, 0, 170, 164, 232, 184, 0, 0, 0, 0, 171, 147, 150, 72, 0, 0, 0, 0, 172, 134, 28, 56, 0, 0, 0, 0, 173, 116, 201, 200, 0, 0, 0, 0, 174, 103, 79, 184, 0, 0, 0, 0, 175, 87, 78, 200, 0, 0, 0, 0, 176, 73, 212, 184, 0, 0, 0, 0, 177, 56, 130, 72, 0, 0, 0, 0, 178, 43, 8, 56, 0, 0, 0, 0, 179, 25, 181, 200, 0, 0, 0, 0, 180, 12, 59, 184, 0, 0, 0, 0, 180, 250, 233, 72, 0, 0, 0, 0, 181, 237, 111, 56, 0, 0, 0, 0, 182, 221, 110, 72, 0, 0, 0, 0, 183, 207, 244, 56, 0, 0, 0, 0, 184, 190, 161, 200, 0, 0, 0, 0, 185, 177, 39, 184, 0, 0, 0, 0, 186, 159, 213, 72, 0, 0, 0, 0, 187, 146, 91, 56, 0, 0, 0, 0, 188, 129, 8, 200, 0, 0, 0, 0, 189, 115, 142, 184, 0, 0, 0, 0, 190, 99, 141, 200, 0, 0, 0, 0, 191, 86, 19, 184, 0, 0, 0, 0, 192, 68, 193, 72, 0, 0, 0, 0, 193, 55, 71, 56, 0, 0, 0, 0, 194, 37, 244, 200, 0, 0, 0, 0, 195, 24, 122, 184, 0, 0, 0, 0, 196, 7, 40, 72, 0, 0, 0, 0, 196, 249, 174, 56, 0, 0, 0, 0, 197, 233, 173, 72, 0, 0, 0, 0, 198, 220, 51, 56, 0, 0, 0, 0, 199, 202, 224, 200, 0, 0, 0, 0, 200, 189, 102, 184, 0, 0, 0, 0, 201, 172, 20, 72, 0, 0, 0, 0, 202, 158, 154, 56, 0, 0, 0, 0, 203, 141, 71, 200, 0, 0, 0, 0, 204, 127, 205, 184, 0, 0, 0, 0, 205, 111, 204, 200, 0, 0, 0, 0, 206, 98, 82, 184, 0, 0, 0, 0, 207, 81, 0, 72, 0, 0, 0, 0, 208, 67, 134, 56, 0, 0, 0, 0, 209, 50, 51, 200, 0, 0, 0, 0, 210, 36, 185, 184, 0, 0, 0, 0, 211, 19, 103, 72, 0, 0, 0, 0, 212, 5, 237, 56, 0, 0, 0, 0, 212, 245, 236, 72, 0, 0, 0, 0, 213, 232, 114, 56, 0, 0, 0, 0, 214, 215, 31, 200, 0, 0, 0, 0, 215, 201, 165, 184, 0, 0, 0, 0, 216, 184, 83, 72, 0, 0, 0, 0, 217, 170, 217, 56, 0, 0, 0, 0, 218, 153, 134, 200, 0, 0, 0, 0, 219, 140, 12, 184, 0, 0, 0, 0, 220, 124, 11, 200, 0, 0, 0, 0, 221, 110, 145, 184, 0, 0, 0, 0, 222, 93, 63, 72, 0, 0, 0, 0, 223, 79, 197, 56, 1, 2, 4, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 0, 0, 48, 56, 0, 0, 0, 0, 48, 56, 0, 4, 0, 0, 49, 56, 0, 8, 0, 0, 70, 80, 1, 14, 0, 0, 56, 64, 0, 18, 0, 0, 63, 72, 1, 22, 0, 0, 49, 56, 0, 8, 76, 77, 84, 0, 84, 77, 84, 0, 43, 48, 51, 51, 48, 0, 43, 48, 53, 0, 43, 48, 52, 0, 43, 48, 52, 51, 48, 0, 10, 60, 43, 48, 51, 51, 48, 62, 45, 51, 58, 51, 48, 60, 43, 48, 52, 51, 48, 62, 44, 74, 55, 57, 47, 50, 52, 44, 74, 50, 54, 51, 47, 50, 52, 10}, - "zoneinfo/Israel": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Israel": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 128, 0, 0, 0, 158, 48, 69, 136, 200, 89, 178, 224, 204, 229, 193, 80, 205, 172, 254, 0, 206, 198, 244, 208, 207, 143, 102, 224, 208, 169, 121, 208, 209, 132, 96, 224, 210, 138, 201, 112, 211, 101, 176, 128, 212, 107, 224, 208, 215, 90, 20, 96, 215, 223, 31, 192, 216, 47, 181, 112, 217, 30, 70, 224, 218, 16, 232, 240, 218, 235, 179, 224, 219, 180, 52, 0, 220, 185, 32, 224, 221, 224, 141, 0, 222, 180, 206, 128, 223, 164, 191, 128, 224, 139, 118, 0, 225, 86, 125, 0, 226, 190, 74, 96, 227, 54, 52, 208, 228, 156, 247, 0, 229, 22, 22, 208, 230, 116, 211, 224, 231, 17, 210, 128, 232, 39, 255, 0, 232, 232, 79, 208, 8, 124, 139, 224, 8, 253, 176, 208, 9, 246, 234, 96, 10, 166, 51, 208, 19, 232, 170, 224, 20, 32, 9, 224, 26, 249, 116, 224, 27, 141, 28, 224, 28, 190, 248, 224, 29, 137, 241, 208, 30, 204, 255, 96, 31, 96, 153, 80, 32, 130, 177, 96, 33, 73, 181, 208, 34, 94, 158, 224, 35, 32, 93, 80, 36, 90, 48, 96, 37, 0, 63, 80, 38, 11, 237, 224, 38, 214, 230, 208, 39, 235, 207, 224, 40, 192, 3, 80, 41, 212, 236, 96, 42, 169, 31, 208, 43, 187, 101, 224, 44, 137, 1, 208, 45, 155, 71, 224, 46, 95, 169, 80, 47, 123, 41, 224, 48, 72, 197, 208, 49, 72, 150, 224, 50, 60, 110, 80, 51, 49, 179, 96, 52, 26, 254, 208, 53, 17, 149, 96, 53, 241, 166, 80, 55, 4, 8, 128, 55, 207, 1, 112, 56, 246, 95, 128, 57, 220, 249, 224, 58, 208, 237, 112, 59, 174, 91, 96, 60, 163, 160, 112, 61, 160, 178, 96, 62, 131, 130, 112, 63, 124, 159, 224, 64, 115, 54, 112, 65, 80, 164, 96, 66, 76, 143, 0, 67, 72, 79, 112, 68, 44, 113, 0, 69, 30, 246, 240, 70, 12, 83, 0, 70, 236, 99, 240, 71, 236, 53, 0, 72, 231, 245, 112, 73, 204, 23, 0, 74, 190, 156, 240, 75, 171, 249, 0, 76, 140, 9, 240, 77, 149, 21, 128, 78, 135, 155, 112, 79, 116, 247, 128, 80, 94, 66, 240, 81, 84, 217, 128, 82, 108, 73, 112, 83, 52, 187, 128, 84, 76, 43, 112, 85, 20, 157, 128, 86, 44, 13, 112, 86, 244, 127, 128, 88, 21, 41, 240, 88, 212, 97, 128, 89, 245, 11, 240, 90, 180, 67, 128, 91, 212, 237, 240, 92, 157, 96, 0, 93, 180, 207, 240, 94, 125, 66, 0, 95, 148, 177, 240, 96, 93, 36, 0, 97, 125, 206, 112, 98, 61, 6, 0, 99, 93, 176, 112, 100, 28, 232, 0, 101, 61, 146, 112, 102, 6, 4, 128, 103, 29, 116, 112, 103, 229, 230, 128, 104, 253, 86, 112, 105, 197, 200, 128, 106, 221, 56, 112, 107, 165, 170, 128, 108, 198, 84, 240, 109, 133, 140, 128, 110, 166, 54, 240, 111, 101, 110, 128, 112, 134, 24, 240, 113, 78, 139, 0, 114, 101, 250, 240, 115, 46, 109, 0, 116, 69, 220, 240, 117, 14, 79, 0, 118, 46, 249, 112, 118, 238, 49, 0, 120, 14, 219, 112, 120, 206, 19, 0, 121, 238, 189, 112, 122, 173, 245, 0, 123, 206, 159, 112, 124, 151, 17, 128, 125, 174, 129, 112, 126, 118, 243, 128, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 86, 182, 194, 250, 255, 255, 255, 255, 158, 48, 69, 136, 255, 255, 255, 255, 200, 89, 178, 224, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 205, 172, 254, 0, 255, 255, 255, 255, 206, 198, 244, 208, 255, 255, 255, 255, 207, 143, 102, 224, 255, 255, 255, 255, 208, 169, 121, 208, 255, 255, 255, 255, 209, 132, 96, 224, 255, 255, 255, 255, 210, 138, 201, 112, 255, 255, 255, 255, 211, 101, 176, 128, 255, 255, 255, 255, 212, 107, 224, 208, 255, 255, 255, 255, 215, 90, 20, 96, 255, 255, 255, 255, 215, 223, 31, 192, 255, 255, 255, 255, 216, 47, 181, 112, 255, 255, 255, 255, 217, 30, 70, 224, 255, 255, 255, 255, 218, 16, 232, 240, 255, 255, 255, 255, 218, 235, 179, 224, 255, 255, 255, 255, 219, 180, 52, 0, 255, 255, 255, 255, 220, 185, 32, 224, 255, 255, 255, 255, 221, 224, 141, 0, 255, 255, 255, 255, 222, 180, 206, 128, 255, 255, 255, 255, 223, 164, 191, 128, 255, 255, 255, 255, 224, 139, 118, 0, 255, 255, 255, 255, 225, 86, 125, 0, 255, 255, 255, 255, 226, 190, 74, 96, 255, 255, 255, 255, 227, 54, 52, 208, 255, 255, 255, 255, 228, 156, 247, 0, 255, 255, 255, 255, 229, 22, 22, 208, 255, 255, 255, 255, 230, 116, 211, 224, 255, 255, 255, 255, 231, 17, 210, 128, 255, 255, 255, 255, 232, 39, 255, 0, 255, 255, 255, 255, 232, 232, 79, 208, 0, 0, 0, 0, 8, 124, 139, 224, 0, 0, 0, 0, 8, 253, 176, 208, 0, 0, 0, 0, 9, 246, 234, 96, 0, 0, 0, 0, 10, 166, 51, 208, 0, 0, 0, 0, 19, 232, 170, 224, 0, 0, 0, 0, 20, 32, 9, 224, 0, 0, 0, 0, 26, 249, 116, 224, 0, 0, 0, 0, 27, 141, 28, 224, 0, 0, 0, 0, 28, 190, 248, 224, 0, 0, 0, 0, 29, 137, 241, 208, 0, 0, 0, 0, 30, 204, 255, 96, 0, 0, 0, 0, 31, 96, 153, 80, 0, 0, 0, 0, 32, 130, 177, 96, 0, 0, 0, 0, 33, 73, 181, 208, 0, 0, 0, 0, 34, 94, 158, 224, 0, 0, 0, 0, 35, 32, 93, 80, 0, 0, 0, 0, 36, 90, 48, 96, 0, 0, 0, 0, 37, 0, 63, 80, 0, 0, 0, 0, 38, 11, 237, 224, 0, 0, 0, 0, 38, 214, 230, 208, 0, 0, 0, 0, 39, 235, 207, 224, 0, 0, 0, 0, 40, 192, 3, 80, 0, 0, 0, 0, 41, 212, 236, 96, 0, 0, 0, 0, 42, 169, 31, 208, 0, 0, 0, 0, 43, 187, 101, 224, 0, 0, 0, 0, 44, 137, 1, 208, 0, 0, 0, 0, 45, 155, 71, 224, 0, 0, 0, 0, 46, 95, 169, 80, 0, 0, 0, 0, 47, 123, 41, 224, 0, 0, 0, 0, 48, 72, 197, 208, 0, 0, 0, 0, 49, 72, 150, 224, 0, 0, 0, 0, 50, 60, 110, 80, 0, 0, 0, 0, 51, 49, 179, 96, 0, 0, 0, 0, 52, 26, 254, 208, 0, 0, 0, 0, 53, 17, 149, 96, 0, 0, 0, 0, 53, 241, 166, 80, 0, 0, 0, 0, 55, 4, 8, 128, 0, 0, 0, 0, 55, 207, 1, 112, 0, 0, 0, 0, 56, 246, 95, 128, 0, 0, 0, 0, 57, 220, 249, 224, 0, 0, 0, 0, 58, 208, 237, 112, 0, 0, 0, 0, 59, 174, 91, 96, 0, 0, 0, 0, 60, 163, 160, 112, 0, 0, 0, 0, 61, 160, 178, 96, 0, 0, 0, 0, 62, 131, 130, 112, 0, 0, 0, 0, 63, 124, 159, 224, 0, 0, 0, 0, 64, 115, 54, 112, 0, 0, 0, 0, 65, 80, 164, 96, 0, 0, 0, 0, 66, 76, 143, 0, 0, 0, 0, 0, 67, 72, 79, 112, 0, 0, 0, 0, 68, 44, 113, 0, 0, 0, 0, 0, 69, 30, 246, 240, 0, 0, 0, 0, 70, 12, 83, 0, 0, 0, 0, 0, 70, 236, 99, 240, 0, 0, 0, 0, 71, 236, 53, 0, 0, 0, 0, 0, 72, 231, 245, 112, 0, 0, 0, 0, 73, 204, 23, 0, 0, 0, 0, 0, 74, 190, 156, 240, 0, 0, 0, 0, 75, 171, 249, 0, 0, 0, 0, 0, 76, 140, 9, 240, 0, 0, 0, 0, 77, 149, 21, 128, 0, 0, 0, 0, 78, 135, 155, 112, 0, 0, 0, 0, 79, 116, 247, 128, 0, 0, 0, 0, 80, 94, 66, 240, 0, 0, 0, 0, 81, 84, 217, 128, 0, 0, 0, 0, 82, 108, 73, 112, 0, 0, 0, 0, 83, 52, 187, 128, 0, 0, 0, 0, 84, 76, 43, 112, 0, 0, 0, 0, 85, 20, 157, 128, 0, 0, 0, 0, 86, 44, 13, 112, 0, 0, 0, 0, 86, 244, 127, 128, 0, 0, 0, 0, 88, 21, 41, 240, 0, 0, 0, 0, 88, 212, 97, 128, 0, 0, 0, 0, 89, 245, 11, 240, 0, 0, 0, 0, 90, 180, 67, 128, 0, 0, 0, 0, 91, 212, 237, 240, 0, 0, 0, 0, 92, 157, 96, 0, 0, 0, 0, 0, 93, 180, 207, 240, 0, 0, 0, 0, 94, 125, 66, 0, 0, 0, 0, 0, 95, 148, 177, 240, 0, 0, 0, 0, 96, 93, 36, 0, 0, 0, 0, 0, 97, 125, 206, 112, 0, 0, 0, 0, 98, 61, 6, 0, 0, 0, 0, 0, 99, 93, 176, 112, 0, 0, 0, 0, 100, 28, 232, 0, 0, 0, 0, 0, 101, 61, 146, 112, 0, 0, 0, 0, 102, 6, 4, 128, 0, 0, 0, 0, 103, 29, 116, 112, 0, 0, 0, 0, 103, 229, 230, 128, 0, 0, 0, 0, 104, 253, 86, 112, 0, 0, 0, 0, 105, 197, 200, 128, 0, 0, 0, 0, 106, 221, 56, 112, 0, 0, 0, 0, 107, 165, 170, 128, 0, 0, 0, 0, 108, 198, 84, 240, 0, 0, 0, 0, 109, 133, 140, 128, 0, 0, 0, 0, 110, 166, 54, 240, 0, 0, 0, 0, 111, 101, 110, 128, 0, 0, 0, 0, 112, 134, 24, 240, 0, 0, 0, 0, 113, 78, 139, 0, 0, 0, 0, 0, 114, 101, 250, 240, 0, 0, 0, 0, 115, 46, 109, 0, 0, 0, 0, 0, 116, 69, 220, 240, 0, 0, 0, 0, 117, 14, 79, 0, 0, 0, 0, 0, 118, 46, 249, 112, 0, 0, 0, 0, 118, 238, 49, 0, 0, 0, 0, 0, 120, 14, 219, 112, 0, 0, 0, 0, 120, 206, 19, 0, 0, 0, 0, 0, 121, 238, 189, 112, 0, 0, 0, 0, 122, 173, 245, 0, 0, 0, 0, 0, 123, 206, 159, 112, 0, 0, 0, 0, 124, 151, 17, 128, 0, 0, 0, 0, 125, 174, 129, 112, 0, 0, 0, 0, 126, 118, 243, 128, 0, 0, 0, 0, 127, 142, 99, 112, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 33, 6, 0, 0, 0, 0, 32, 248, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 12, 0, 0, 56, 64, 1, 16, 0, 0, 42, 48, 1, 8, 76, 77, 84, 0, 74, 77, 84, 0, 73, 68, 84, 0, 73, 83, 84, 0, 73, 68, 68, 84, 0, 10, 73, 83, 84, 45, 50, 73, 68, 84, 44, 77, 51, 46, 52, 46, 52, 47, 50, 54, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Jamaica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 147, 15, 180, 254, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 2, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 83, 84, 53, 10}, + "zoneinfo/Jamaica": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 147, 15, 180, 254, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 2, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 105, 135, 35, 126, 255, 255, 255, 255, 147, 15, 180, 254, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 184, 2, 0, 0, 255, 255, 184, 2, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 76, 77, 84, 0, 75, 77, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 10, 69, 83, 84, 53, 10}, - "zoneinfo/Japan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 215, 62, 2, 112, 215, 237, 89, 240, 216, 248, 250, 112, 217, 205, 59, 240, 219, 7, 0, 240, 219, 173, 29, 240, 220, 230, 226, 240, 221, 140, 255, 240, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 74, 83, 84, 45, 57, 10}, + "zoneinfo/Japan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 215, 62, 2, 112, 215, 237, 89, 240, 216, 248, 250, 112, 217, 205, 59, 240, 219, 7, 0, 240, 219, 173, 29, 240, 220, 230, 226, 240, 221, 140, 255, 240, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 101, 194, 164, 112, 255, 255, 255, 255, 215, 62, 2, 112, 255, 255, 255, 255, 215, 237, 89, 240, 255, 255, 255, 255, 216, 248, 250, 112, 255, 255, 255, 255, 217, 205, 59, 240, 255, 255, 255, 255, 219, 7, 0, 240, 255, 255, 255, 255, 219, 173, 29, 240, 255, 255, 255, 255, 220, 230, 226, 240, 255, 255, 255, 255, 221, 140, 255, 240, 3, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 131, 3, 0, 0, 0, 0, 140, 160, 1, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 8, 76, 77, 84, 0, 74, 68, 84, 0, 74, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 74, 83, 84, 45, 57, 10}, - "zoneinfo/Kwajalein": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 193, 237, 53, 208, 201, 234, 10, 96, 207, 70, 129, 240, 255, 134, 27, 80, 44, 118, 14, 64, 127, 255, 255, 255, 1, 2, 3, 1, 4, 5, 5, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 126, 144, 0, 12, 255, 255, 87, 64, 0, 16, 0, 0, 168, 192, 0, 20, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 48, 0, 43, 48, 57, 0, 45, 49, 50, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Kwajalein": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 193, 237, 53, 208, 201, 234, 10, 96, 207, 70, 129, 240, 255, 134, 27, 80, 44, 118, 14, 64, 127, 255, 255, 255, 1, 2, 3, 1, 4, 5, 5, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 126, 144, 0, 12, 255, 255, 87, 64, 0, 16, 0, 0, 168, 192, 0, 20, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 48, 0, 43, 48, 57, 0, 45, 49, 50, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 126, 54, 24, 32, 255, 255, 255, 255, 193, 237, 53, 208, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 207, 70, 129, 240, 255, 255, 255, 255, 255, 134, 27, 80, 0, 0, 0, 0, 44, 118, 14, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 1, 4, 5, 5, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 126, 144, 0, 12, 255, 255, 87, 64, 0, 16, 0, 0, 168, 192, 0, 20, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 48, 0, 43, 48, 57, 0, 45, 49, 50, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Libya": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 17, 161, 242, 193, 36, 221, 187, 177, 16, 222, 35, 173, 96, 225, 120, 210, 16, 225, 231, 101, 224, 229, 47, 63, 112, 229, 169, 204, 224, 235, 78, 198, 240, 22, 146, 66, 96, 23, 8, 247, 112, 23, 250, 43, 224, 24, 234, 42, 240, 25, 219, 95, 96, 26, 204, 175, 240, 27, 189, 228, 96, 28, 180, 122, 240, 29, 159, 23, 224, 30, 147, 11, 112, 31, 130, 238, 96, 32, 112, 74, 112, 33, 97, 126, 224, 34, 82, 207, 112, 35, 68, 3, 224, 36, 52, 2, 240, 37, 37, 55, 96, 38, 64, 183, 240, 50, 78, 241, 96, 51, 68, 54, 112, 52, 53, 106, 224, 80, 157, 153, 0, 81, 84, 217, 128, 82, 105, 180, 128, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 69, 84, 45, 50, 10}, + "zoneinfo/Libya": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 17, 161, 242, 193, 36, 221, 187, 177, 16, 222, 35, 173, 96, 225, 120, 210, 16, 225, 231, 101, 224, 229, 47, 63, 112, 229, 169, 204, 224, 235, 78, 198, 240, 22, 146, 66, 96, 23, 8, 247, 112, 23, 250, 43, 224, 24, 234, 42, 240, 25, 219, 95, 96, 26, 204, 175, 240, 27, 189, 228, 96, 28, 180, 122, 240, 29, 159, 23, 224, 30, 147, 11, 112, 31, 130, 238, 96, 32, 112, 74, 112, 33, 97, 126, 224, 34, 82, 207, 112, 35, 68, 3, 224, 36, 52, 2, 240, 37, 37, 55, 96, 38, 64, 183, 240, 50, 78, 241, 96, 51, 68, 54, 112, 52, 53, 106, 224, 80, 157, 153, 0, 81, 84, 217, 128, 82, 105, 180, 128, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 4, 0, 0, 0, 17, 255, 255, 255, 255, 161, 242, 193, 36, 255, 255, 255, 255, 221, 187, 177, 16, 255, 255, 255, 255, 222, 35, 173, 96, 255, 255, 255, 255, 225, 120, 210, 16, 255, 255, 255, 255, 225, 231, 101, 224, 255, 255, 255, 255, 229, 47, 63, 112, 255, 255, 255, 255, 229, 169, 204, 224, 255, 255, 255, 255, 235, 78, 198, 240, 0, 0, 0, 0, 22, 146, 66, 96, 0, 0, 0, 0, 23, 8, 247, 112, 0, 0, 0, 0, 23, 250, 43, 224, 0, 0, 0, 0, 24, 234, 42, 240, 0, 0, 0, 0, 25, 219, 95, 96, 0, 0, 0, 0, 26, 204, 175, 240, 0, 0, 0, 0, 27, 189, 228, 96, 0, 0, 0, 0, 28, 180, 122, 240, 0, 0, 0, 0, 29, 159, 23, 224, 0, 0, 0, 0, 30, 147, 11, 112, 0, 0, 0, 0, 31, 130, 238, 96, 0, 0, 0, 0, 32, 112, 74, 112, 0, 0, 0, 0, 33, 97, 126, 224, 0, 0, 0, 0, 34, 82, 207, 112, 0, 0, 0, 0, 35, 68, 3, 224, 0, 0, 0, 0, 36, 52, 2, 240, 0, 0, 0, 0, 37, 37, 55, 96, 0, 0, 0, 0, 38, 64, 183, 240, 0, 0, 0, 0, 50, 78, 241, 96, 0, 0, 0, 0, 51, 68, 54, 112, 0, 0, 0, 0, 52, 53, 106, 224, 0, 0, 0, 0, 80, 157, 153, 0, 0, 0, 0, 0, 81, 84, 217, 128, 0, 0, 0, 0, 82, 105, 180, 128, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 3, 2, 1, 3, 0, 0, 12, 92, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 9, 0, 0, 28, 32, 0, 13, 76, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 84, 0, 10, 69, 69, 84, 45, 50, 10}, - "zoneinfo/MET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 14, 16, 0, 0, 0, 0, 28, 32, 1, 4, 0, 0, 28, 32, 1, 4, 0, 0, 14, 16, 0, 0, 77, 69, 84, 0, 77, 69, 83, 84, 0, 0, 0, 1, 1, 0, 0, 0, 0, 10, 77, 69, 84, 45, 49, 77, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/MET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 200, 9, 113, 144, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 130, 37, 16, 209, 114, 22, 16, 210, 78, 64, 144, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 14, 16, 0, 5, 0, 0, 28, 32, 1, 0, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 77, 69, 83, 84, 0, 77, 69, 84, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 9, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 200, 9, 113, 144, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 130, 37, 16, 255, 255, 255, 255, 209, 114, 22, 16, 255, 255, 255, 255, 210, 78, 64, 144, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 14, 16, 0, 5, 0, 0, 28, 32, 1, 0, 0, 0, 28, 32, 1, 0, 0, 0, 14, 16, 0, 5, 77, 69, 83, 84, 0, 77, 69, 84, 0, 0, 0, 1, 1, 10, 77, 69, 84, 45, 49, 77, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/MST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 77, 83, 84, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/MST": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 77, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 255, 255, 157, 144, 0, 0, 77, 83, 84, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/MST7MDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 157, 144, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 171, 160, 1, 8, 255, 255, 171, 160, 1, 12, 77, 83, 84, 0, 77, 68, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/MST7MDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 1, 0, 255, 255, 171, 160, 1, 8, 255, 255, 171, 160, 1, 12, 255, 255, 157, 144, 0, 4, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 1, 0, 255, 255, 171, 160, 1, 8, 255, 255, 171, 160, 1, 12, 255, 255, 157, 144, 0, 4, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Mexico/BajaNorte": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Mexico/BajaNorte": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 165, 182, 246, 128, 169, 121, 79, 112, 175, 242, 124, 240, 182, 102, 100, 112, 183, 27, 16, 0, 184, 10, 242, 240, 203, 234, 141, 128, 210, 35, 244, 112, 210, 153, 186, 112, 215, 27, 89, 0, 216, 145, 180, 240, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 70, 15, 130, 160, 71, 36, 79, 144, 71, 248, 159, 32, 73, 4, 49, 144, 73, 216, 129, 32, 74, 228, 19, 144, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 165, 182, 246, 128, 255, 255, 255, 255, 169, 121, 79, 112, 255, 255, 255, 255, 175, 242, 124, 240, 255, 255, 255, 255, 182, 102, 100, 112, 255, 255, 255, 255, 183, 27, 16, 0, 255, 255, 255, 255, 184, 10, 242, 240, 255, 255, 255, 255, 203, 234, 141, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 153, 186, 112, 255, 255, 255, 255, 215, 27, 89, 0, 255, 255, 255, 255, 216, 145, 180, 240, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 14, 16, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 217, 16, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 70, 15, 130, 160, 0, 0, 0, 0, 71, 36, 79, 144, 0, 0, 0, 0, 71, 248, 159, 32, 0, 0, 0, 0, 73, 4, 49, 144, 0, 0, 0, 0, 73, 216, 129, 32, 0, 0, 0, 0, 74, 228, 19, 144, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 1, 2, 1, 2, 3, 2, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 146, 76, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 255, 255, 157, 144, 1, 20, 76, 77, 84, 0, 77, 83, 84, 0, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Mexico/BajaSur": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Mexico/BajaSur": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 6, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 203, 234, 113, 96, 216, 145, 180, 240, 0, 0, 112, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 245, 18, 144, 59, 182, 209, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 70, 15, 116, 144, 71, 36, 65, 128, 71, 248, 145, 16, 73, 4, 35, 128, 73, 216, 115, 16, 74, 228, 5, 128, 75, 184, 85, 16, 76, 205, 34, 0, 77, 152, 55, 16, 78, 173, 4, 0, 79, 120, 25, 16, 80, 140, 230, 0, 81, 97, 53, 144, 82, 108, 200, 0, 83, 65, 23, 144, 84, 76, 170, 0, 85, 32, 249, 144, 86, 44, 140, 0, 87, 0, 219, 144, 88, 21, 168, 128, 88, 224, 189, 144, 89, 245, 138, 128, 90, 192, 159, 144, 91, 213, 108, 128, 92, 169, 188, 16, 93, 181, 78, 128, 94, 137, 158, 16, 95, 149, 48, 128, 96, 105, 128, 16, 97, 126, 77, 0, 98, 73, 98, 16, 99, 94, 47, 0, 100, 41, 68, 16, 101, 62, 17, 0, 102, 18, 96, 144, 103, 29, 243, 0, 103, 242, 66, 144, 104, 253, 213, 0, 105, 210, 36, 144, 106, 221, 183, 0, 107, 178, 6, 144, 108, 198, 211, 128, 109, 145, 232, 144, 110, 166, 181, 128, 111, 113, 202, 144, 112, 134, 151, 128, 113, 90, 231, 16, 114, 102, 121, 128, 115, 58, 201, 16, 116, 70, 91, 128, 117, 26, 171, 16, 118, 47, 120, 0, 118, 250, 141, 16, 120, 15, 90, 0, 120, 218, 111, 16, 121, 239, 60, 0, 122, 186, 81, 16, 123, 207, 30, 0, 124, 163, 109, 144, 125, 175, 0, 0, 126, 131, 79, 144, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 255, 255, 255, 255, 203, 234, 113, 96, 255, 255, 255, 255, 216, 145, 180, 240, 0, 0, 0, 0, 0, 0, 112, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 245, 18, 144, 0, 0, 0, 0, 59, 182, 209, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 70, 15, 116, 144, 0, 0, 0, 0, 71, 36, 65, 128, 0, 0, 0, 0, 71, 248, 145, 16, 0, 0, 0, 0, 73, 4, 35, 128, 0, 0, 0, 0, 73, 216, 115, 16, 0, 0, 0, 0, 74, 228, 5, 128, 0, 0, 0, 0, 75, 184, 85, 16, 0, 0, 0, 0, 76, 205, 34, 0, 0, 0, 0, 0, 77, 152, 55, 16, 0, 0, 0, 0, 78, 173, 4, 0, 0, 0, 0, 0, 79, 120, 25, 16, 0, 0, 0, 0, 80, 140, 230, 0, 0, 0, 0, 0, 81, 97, 53, 144, 0, 0, 0, 0, 82, 108, 200, 0, 0, 0, 0, 0, 83, 65, 23, 144, 0, 0, 0, 0, 84, 76, 170, 0, 0, 0, 0, 0, 85, 32, 249, 144, 0, 0, 0, 0, 86, 44, 140, 0, 0, 0, 0, 0, 87, 0, 219, 144, 0, 0, 0, 0, 88, 21, 168, 128, 0, 0, 0, 0, 88, 224, 189, 144, 0, 0, 0, 0, 89, 245, 138, 128, 0, 0, 0, 0, 90, 192, 159, 144, 0, 0, 0, 0, 91, 213, 108, 128, 0, 0, 0, 0, 92, 169, 188, 16, 0, 0, 0, 0, 93, 181, 78, 128, 0, 0, 0, 0, 94, 137, 158, 16, 0, 0, 0, 0, 95, 149, 48, 128, 0, 0, 0, 0, 96, 105, 128, 16, 0, 0, 0, 0, 97, 126, 77, 0, 0, 0, 0, 0, 98, 73, 98, 16, 0, 0, 0, 0, 99, 94, 47, 0, 0, 0, 0, 0, 100, 41, 68, 16, 0, 0, 0, 0, 101, 62, 17, 0, 0, 0, 0, 0, 102, 18, 96, 144, 0, 0, 0, 0, 103, 29, 243, 0, 0, 0, 0, 0, 103, 242, 66, 144, 0, 0, 0, 0, 104, 253, 213, 0, 0, 0, 0, 0, 105, 210, 36, 144, 0, 0, 0, 0, 106, 221, 183, 0, 0, 0, 0, 0, 107, 178, 6, 144, 0, 0, 0, 0, 108, 198, 211, 128, 0, 0, 0, 0, 109, 145, 232, 144, 0, 0, 0, 0, 110, 166, 181, 128, 0, 0, 0, 0, 111, 113, 202, 144, 0, 0, 0, 0, 112, 134, 151, 128, 0, 0, 0, 0, 113, 90, 231, 16, 0, 0, 0, 0, 114, 102, 121, 128, 0, 0, 0, 0, 115, 58, 201, 16, 0, 0, 0, 0, 116, 70, 91, 128, 0, 0, 0, 0, 117, 26, 171, 16, 0, 0, 0, 0, 118, 47, 120, 0, 0, 0, 0, 0, 118, 250, 141, 16, 0, 0, 0, 0, 120, 15, 90, 0, 0, 0, 0, 0, 120, 218, 111, 16, 0, 0, 0, 0, 121, 239, 60, 0, 0, 0, 0, 0, 122, 186, 81, 16, 0, 0, 0, 0, 123, 207, 30, 0, 0, 0, 0, 0, 124, 163, 109, 144, 0, 0, 0, 0, 125, 175, 0, 0, 0, 0, 0, 0, 126, 131, 79, 144, 0, 0, 0, 0, 127, 142, 226, 0, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 255, 255, 156, 60, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 143, 128, 0, 12, 255, 255, 171, 160, 1, 16, 255, 255, 157, 144, 0, 4, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 80, 83, 84, 0, 77, 68, 84, 0, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Mexico/General": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 5, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 197, 222, 176, 96, 198, 151, 52, 80, 201, 85, 241, 224, 201, 234, 221, 80, 207, 2, 198, 224, 207, 183, 86, 80, 218, 153, 21, 224, 219, 118, 131, 208, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Mexico/General": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 5, 0, 0, 0, 20, 165, 182, 232, 112, 175, 242, 110, 224, 182, 102, 86, 96, 183, 67, 210, 96, 184, 12, 54, 96, 184, 253, 134, 240, 197, 222, 176, 96, 198, 151, 52, 80, 201, 85, 241, 224, 201, 234, 221, 80, 207, 2, 198, 224, 207, 183, 86, 80, 218, 153, 21, 224, 219, 118, 131, 208, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 245, 4, 128, 59, 182, 194, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 70, 15, 102, 128, 71, 36, 51, 112, 71, 248, 131, 0, 73, 4, 21, 112, 73, 216, 101, 0, 74, 227, 247, 112, 75, 184, 71, 0, 76, 205, 19, 240, 77, 152, 41, 0, 78, 172, 245, 240, 79, 120, 11, 0, 80, 140, 215, 240, 81, 97, 39, 128, 82, 108, 185, 240, 83, 65, 9, 128, 84, 76, 155, 240, 85, 32, 235, 128, 86, 44, 125, 240, 87, 0, 205, 128, 88, 21, 154, 112, 88, 224, 175, 128, 89, 245, 124, 112, 90, 192, 145, 128, 91, 213, 94, 112, 92, 169, 174, 0, 93, 181, 64, 112, 94, 137, 144, 0, 95, 149, 34, 112, 96, 105, 114, 0, 97, 126, 62, 240, 98, 73, 84, 0, 99, 94, 32, 240, 100, 41, 54, 0, 101, 62, 2, 240, 102, 18, 82, 128, 103, 29, 228, 240, 103, 242, 52, 128, 104, 253, 198, 240, 105, 210, 22, 128, 106, 221, 168, 240, 107, 177, 248, 128, 108, 198, 197, 112, 109, 145, 218, 128, 110, 166, 167, 112, 111, 113, 188, 128, 112, 134, 137, 112, 113, 90, 217, 0, 114, 102, 107, 112, 115, 58, 187, 0, 116, 70, 77, 112, 117, 26, 157, 0, 118, 47, 105, 240, 118, 250, 127, 0, 120, 15, 75, 240, 120, 218, 97, 0, 121, 239, 45, 240, 122, 186, 67, 0, 123, 207, 15, 240, 124, 163, 95, 128, 125, 174, 241, 240, 126, 131, 65, 128, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 165, 182, 232, 112, 255, 255, 255, 255, 175, 242, 110, 224, 255, 255, 255, 255, 182, 102, 86, 96, 255, 255, 255, 255, 183, 67, 210, 96, 255, 255, 255, 255, 184, 12, 54, 96, 255, 255, 255, 255, 184, 253, 134, 240, 255, 255, 255, 255, 197, 222, 176, 96, 255, 255, 255, 255, 198, 151, 52, 80, 255, 255, 255, 255, 201, 85, 241, 224, 255, 255, 255, 255, 201, 234, 221, 80, 255, 255, 255, 255, 207, 2, 198, 224, 255, 255, 255, 255, 207, 183, 86, 80, 255, 255, 255, 255, 218, 153, 21, 224, 255, 255, 255, 255, 219, 118, 131, 208, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 245, 4, 128, 0, 0, 0, 0, 59, 182, 194, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 70, 15, 102, 128, 0, 0, 0, 0, 71, 36, 51, 112, 0, 0, 0, 0, 71, 248, 131, 0, 0, 0, 0, 0, 73, 4, 21, 112, 0, 0, 0, 0, 73, 216, 101, 0, 0, 0, 0, 0, 74, 227, 247, 112, 0, 0, 0, 0, 75, 184, 71, 0, 0, 0, 0, 0, 76, 205, 19, 240, 0, 0, 0, 0, 77, 152, 41, 0, 0, 0, 0, 0, 78, 172, 245, 240, 0, 0, 0, 0, 79, 120, 11, 0, 0, 0, 0, 0, 80, 140, 215, 240, 0, 0, 0, 0, 81, 97, 39, 128, 0, 0, 0, 0, 82, 108, 185, 240, 0, 0, 0, 0, 83, 65, 9, 128, 0, 0, 0, 0, 84, 76, 155, 240, 0, 0, 0, 0, 85, 32, 235, 128, 0, 0, 0, 0, 86, 44, 125, 240, 0, 0, 0, 0, 87, 0, 205, 128, 0, 0, 0, 0, 88, 21, 154, 112, 0, 0, 0, 0, 88, 224, 175, 128, 0, 0, 0, 0, 89, 245, 124, 112, 0, 0, 0, 0, 90, 192, 145, 128, 0, 0, 0, 0, 91, 213, 94, 112, 0, 0, 0, 0, 92, 169, 174, 0, 0, 0, 0, 0, 93, 181, 64, 112, 0, 0, 0, 0, 94, 137, 144, 0, 0, 0, 0, 0, 95, 149, 34, 112, 0, 0, 0, 0, 96, 105, 114, 0, 0, 0, 0, 0, 97, 126, 62, 240, 0, 0, 0, 0, 98, 73, 84, 0, 0, 0, 0, 0, 99, 94, 32, 240, 0, 0, 0, 0, 100, 41, 54, 0, 0, 0, 0, 0, 101, 62, 2, 240, 0, 0, 0, 0, 102, 18, 82, 128, 0, 0, 0, 0, 103, 29, 228, 240, 0, 0, 0, 0, 103, 242, 52, 128, 0, 0, 0, 0, 104, 253, 198, 240, 0, 0, 0, 0, 105, 210, 22, 128, 0, 0, 0, 0, 106, 221, 168, 240, 0, 0, 0, 0, 107, 177, 248, 128, 0, 0, 0, 0, 108, 198, 197, 112, 0, 0, 0, 0, 109, 145, 218, 128, 0, 0, 0, 0, 110, 166, 167, 112, 0, 0, 0, 0, 111, 113, 188, 128, 0, 0, 0, 0, 112, 134, 137, 112, 0, 0, 0, 0, 113, 90, 217, 0, 0, 0, 0, 0, 114, 102, 107, 112, 0, 0, 0, 0, 115, 58, 187, 0, 0, 0, 0, 0, 116, 70, 77, 112, 0, 0, 0, 0, 117, 26, 157, 0, 0, 0, 0, 0, 118, 47, 105, 240, 0, 0, 0, 0, 118, 250, 127, 0, 0, 0, 0, 0, 120, 15, 75, 240, 0, 0, 0, 0, 120, 218, 97, 0, 0, 0, 0, 0, 121, 239, 45, 240, 0, 0, 0, 0, 122, 186, 67, 0, 0, 0, 0, 0, 123, 207, 15, 240, 0, 0, 0, 0, 124, 163, 95, 128, 0, 0, 0, 0, 125, 174, 241, 240, 0, 0, 0, 0, 126, 131, 65, 128, 0, 0, 0, 0, 127, 142, 211, 240, 1, 2, 1, 2, 1, 2, 3, 2, 3, 2, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 255, 255, 163, 12, 0, 0, 255, 255, 157, 144, 0, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 77, 83, 84, 0, 67, 83, 84, 0, 67, 68, 84, 0, 67, 87, 84, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 52, 46, 49, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/NZ": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/NZ": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 255, 255, 255, 255, 65, 183, 76, 168, 255, 255, 255, 255, 176, 180, 178, 232, 255, 255, 255, 255, 177, 81, 135, 88, 255, 255, 255, 255, 178, 120, 229, 104, 255, 255, 255, 255, 179, 67, 229, 96, 255, 255, 255, 255, 180, 88, 199, 104, 255, 255, 255, 255, 181, 35, 199, 96, 255, 255, 255, 255, 182, 56, 169, 104, 255, 255, 255, 255, 183, 3, 169, 96, 255, 255, 255, 255, 184, 24, 139, 104, 255, 255, 255, 255, 184, 236, 197, 224, 255, 255, 255, 255, 185, 248, 109, 104, 255, 255, 255, 255, 186, 204, 167, 224, 255, 255, 255, 255, 187, 216, 79, 104, 255, 255, 255, 255, 188, 227, 232, 224, 255, 255, 255, 255, 189, 174, 246, 232, 255, 255, 255, 255, 190, 195, 202, 224, 255, 255, 255, 255, 191, 142, 216, 232, 255, 255, 255, 255, 192, 163, 172, 224, 255, 255, 255, 255, 193, 110, 186, 232, 255, 255, 255, 255, 194, 131, 142, 224, 255, 255, 255, 255, 195, 78, 156, 232, 255, 255, 255, 255, 196, 99, 112, 224, 255, 255, 255, 255, 197, 46, 126, 232, 255, 255, 255, 255, 198, 76, 141, 96, 255, 255, 255, 255, 199, 14, 96, 232, 255, 255, 255, 255, 200, 44, 111, 96, 255, 255, 255, 255, 200, 247, 125, 104, 255, 255, 255, 255, 210, 218, 154, 64, 0, 0, 0, 0, 9, 24, 253, 224, 0, 0, 0, 0, 9, 172, 165, 224, 0, 0, 0, 0, 10, 239, 165, 96, 0, 0, 0, 0, 11, 158, 252, 224, 0, 0, 0, 0, 12, 216, 193, 224, 0, 0, 0, 0, 13, 126, 222, 224, 0, 0, 0, 0, 14, 184, 163, 224, 0, 0, 0, 0, 15, 94, 192, 224, 0, 0, 0, 0, 16, 152, 133, 224, 0, 0, 0, 0, 17, 62, 162, 224, 0, 0, 0, 0, 18, 120, 103, 224, 0, 0, 0, 0, 19, 30, 132, 224, 0, 0, 0, 0, 20, 88, 73, 224, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 43, 224, 0, 0, 0, 0, 22, 231, 131, 96, 0, 0, 0, 0, 24, 33, 72, 96, 0, 0, 0, 0, 24, 199, 101, 96, 0, 0, 0, 0, 26, 1, 42, 96, 0, 0, 0, 0, 26, 167, 71, 96, 0, 0, 0, 0, 27, 225, 12, 96, 0, 0, 0, 0, 28, 135, 41, 96, 0, 0, 0, 0, 29, 192, 238, 96, 0, 0, 0, 0, 30, 103, 11, 96, 0, 0, 0, 0, 31, 160, 208, 96, 0, 0, 0, 0, 32, 70, 237, 96, 0, 0, 0, 0, 33, 128, 178, 96, 0, 0, 0, 0, 34, 48, 9, 224, 0, 0, 0, 0, 35, 105, 206, 224, 0, 0, 0, 0, 36, 15, 235, 224, 0, 0, 0, 0, 37, 46, 1, 96, 0, 0, 0, 0, 38, 2, 66, 224, 0, 0, 0, 0, 39, 13, 227, 96, 0, 0, 0, 0, 39, 226, 36, 224, 0, 0, 0, 0, 40, 237, 197, 96, 0, 0, 0, 0, 41, 194, 6, 224, 0, 0, 0, 0, 42, 205, 167, 96, 0, 0, 0, 0, 43, 171, 35, 96, 0, 0, 0, 0, 44, 173, 137, 96, 0, 0, 0, 0, 45, 139, 5, 96, 0, 0, 0, 0, 46, 141, 107, 96, 0, 0, 0, 0, 47, 106, 231, 96, 0, 0, 0, 0, 48, 109, 77, 96, 0, 0, 0, 0, 49, 74, 201, 96, 0, 0, 0, 0, 50, 86, 105, 224, 0, 0, 0, 0, 51, 42, 171, 96, 0, 0, 0, 0, 52, 54, 75, 224, 0, 0, 0, 0, 53, 10, 141, 96, 0, 0, 0, 0, 54, 22, 45, 224, 0, 0, 0, 0, 54, 243, 169, 224, 0, 0, 0, 0, 55, 246, 15, 224, 0, 0, 0, 0, 56, 211, 139, 224, 0, 0, 0, 0, 57, 213, 241, 224, 0, 0, 0, 0, 58, 179, 109, 224, 0, 0, 0, 0, 59, 191, 14, 96, 0, 0, 0, 0, 60, 147, 79, 224, 0, 0, 0, 0, 61, 158, 240, 96, 0, 0, 0, 0, 62, 115, 49, 224, 0, 0, 0, 0, 63, 126, 210, 96, 0, 0, 0, 0, 64, 92, 78, 96, 0, 0, 0, 0, 65, 94, 180, 96, 0, 0, 0, 0, 66, 60, 48, 96, 0, 0, 0, 0, 67, 62, 150, 96, 0, 0, 0, 0, 68, 28, 18, 96, 0, 0, 0, 0, 69, 30, 120, 96, 0, 0, 0, 0, 69, 251, 244, 96, 0, 0, 0, 0, 70, 254, 90, 96, 0, 0, 0, 0, 71, 247, 133, 224, 0, 0, 0, 0, 72, 222, 60, 96, 0, 0, 0, 0, 73, 215, 103, 224, 0, 0, 0, 0, 74, 190, 30, 96, 0, 0, 0, 0, 75, 183, 73, 224, 0, 0, 0, 0, 76, 158, 0, 96, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/NZ-CHAT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 128, 0, 0, 0, 210, 218, 150, 188, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 52, 53, 62, 45, 49, 50, 58, 52, 53, 60, 43, 49, 51, 52, 53, 62, 44, 77, 57, 46, 53, 46, 48, 47, 50, 58, 52, 53, 44, 77, 52, 46, 49, 46, 48, 47, 51, 58, 52, 53, 10}, + "zoneinfo/NZ-CHAT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 128, 0, 0, 0, 210, 218, 150, 188, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 255, 255, 255, 255, 65, 183, 68, 132, 255, 255, 255, 255, 210, 218, 150, 188, 0, 0, 0, 0, 9, 24, 253, 224, 0, 0, 0, 0, 9, 172, 165, 224, 0, 0, 0, 0, 10, 239, 165, 96, 0, 0, 0, 0, 11, 158, 252, 224, 0, 0, 0, 0, 12, 216, 193, 224, 0, 0, 0, 0, 13, 126, 222, 224, 0, 0, 0, 0, 14, 184, 163, 224, 0, 0, 0, 0, 15, 94, 192, 224, 0, 0, 0, 0, 16, 152, 133, 224, 0, 0, 0, 0, 17, 62, 162, 224, 0, 0, 0, 0, 18, 120, 103, 224, 0, 0, 0, 0, 19, 30, 132, 224, 0, 0, 0, 0, 20, 88, 73, 224, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 43, 224, 0, 0, 0, 0, 22, 231, 131, 96, 0, 0, 0, 0, 24, 33, 72, 96, 0, 0, 0, 0, 24, 199, 101, 96, 0, 0, 0, 0, 26, 1, 42, 96, 0, 0, 0, 0, 26, 167, 71, 96, 0, 0, 0, 0, 27, 225, 12, 96, 0, 0, 0, 0, 28, 135, 41, 96, 0, 0, 0, 0, 29, 192, 238, 96, 0, 0, 0, 0, 30, 103, 11, 96, 0, 0, 0, 0, 31, 160, 208, 96, 0, 0, 0, 0, 32, 70, 237, 96, 0, 0, 0, 0, 33, 128, 178, 96, 0, 0, 0, 0, 34, 48, 9, 224, 0, 0, 0, 0, 35, 105, 206, 224, 0, 0, 0, 0, 36, 15, 235, 224, 0, 0, 0, 0, 37, 46, 1, 96, 0, 0, 0, 0, 38, 2, 66, 224, 0, 0, 0, 0, 39, 13, 227, 96, 0, 0, 0, 0, 39, 226, 36, 224, 0, 0, 0, 0, 40, 237, 197, 96, 0, 0, 0, 0, 41, 194, 6, 224, 0, 0, 0, 0, 42, 205, 167, 96, 0, 0, 0, 0, 43, 171, 35, 96, 0, 0, 0, 0, 44, 173, 137, 96, 0, 0, 0, 0, 45, 139, 5, 96, 0, 0, 0, 0, 46, 141, 107, 96, 0, 0, 0, 0, 47, 106, 231, 96, 0, 0, 0, 0, 48, 109, 77, 96, 0, 0, 0, 0, 49, 74, 201, 96, 0, 0, 0, 0, 50, 86, 105, 224, 0, 0, 0, 0, 51, 42, 171, 96, 0, 0, 0, 0, 52, 54, 75, 224, 0, 0, 0, 0, 53, 10, 141, 96, 0, 0, 0, 0, 54, 22, 45, 224, 0, 0, 0, 0, 54, 243, 169, 224, 0, 0, 0, 0, 55, 246, 15, 224, 0, 0, 0, 0, 56, 211, 139, 224, 0, 0, 0, 0, 57, 213, 241, 224, 0, 0, 0, 0, 58, 179, 109, 224, 0, 0, 0, 0, 59, 191, 14, 96, 0, 0, 0, 0, 60, 147, 79, 224, 0, 0, 0, 0, 61, 158, 240, 96, 0, 0, 0, 0, 62, 115, 49, 224, 0, 0, 0, 0, 63, 126, 210, 96, 0, 0, 0, 0, 64, 92, 78, 96, 0, 0, 0, 0, 65, 94, 180, 96, 0, 0, 0, 0, 66, 60, 48, 96, 0, 0, 0, 0, 67, 62, 150, 96, 0, 0, 0, 0, 68, 28, 18, 96, 0, 0, 0, 0, 69, 30, 120, 96, 0, 0, 0, 0, 69, 251, 244, 96, 0, 0, 0, 0, 70, 254, 90, 96, 0, 0, 0, 0, 71, 247, 133, 224, 0, 0, 0, 0, 72, 222, 60, 96, 0, 0, 0, 0, 73, 215, 103, 224, 0, 0, 0, 0, 74, 190, 30, 96, 0, 0, 0, 0, 75, 183, 73, 224, 0, 0, 0, 0, 76, 158, 0, 96, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 10, 60, 43, 49, 50, 52, 53, 62, 45, 49, 50, 58, 52, 53, 60, 43, 49, 51, 52, 53, 62, 44, 77, 57, 46, 53, 46, 48, 47, 50, 58, 52, 53, 44, 77, 52, 46, 49, 46, 48, 47, 51, 58, 52, 53, 10}, - "zoneinfo/Navajo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/Navajo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 162, 101, 254, 144, 255, 255, 255, 255, 163, 132, 6, 0, 255, 255, 255, 255, 164, 69, 224, 144, 255, 255, 255, 255, 164, 143, 166, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 148, 0, 255, 255, 255, 255, 249, 15, 88, 144, 255, 255, 255, 255, 250, 8, 118, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/PRC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/PRC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 200, 89, 94, 128, 201, 9, 249, 112, 201, 211, 189, 0, 203, 5, 138, 240, 203, 124, 64, 0, 210, 59, 62, 240, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 65, 124, 240, 30, 186, 82, 32, 31, 105, 155, 144, 32, 126, 132, 160, 33, 73, 125, 144, 34, 103, 161, 32, 35, 41, 95, 144, 36, 71, 131, 32, 37, 18, 124, 16, 38, 39, 101, 32, 38, 242, 94, 16, 40, 7, 71, 32, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 126, 54, 67, 41, 255, 255, 255, 255, 200, 89, 94, 128, 255, 255, 255, 255, 201, 9, 249, 112, 255, 255, 255, 255, 201, 211, 189, 0, 255, 255, 255, 255, 203, 5, 138, 240, 255, 255, 255, 255, 203, 124, 64, 0, 255, 255, 255, 255, 210, 59, 62, 240, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 65, 124, 240, 0, 0, 0, 0, 30, 186, 82, 32, 0, 0, 0, 0, 31, 105, 155, 144, 0, 0, 0, 0, 32, 126, 132, 160, 0, 0, 0, 0, 33, 73, 125, 144, 0, 0, 0, 0, 34, 103, 161, 32, 0, 0, 0, 0, 35, 41, 95, 144, 0, 0, 0, 0, 36, 71, 131, 32, 0, 0, 0, 0, 37, 18, 124, 16, 0, 0, 0, 0, 38, 39, 101, 32, 0, 0, 0, 0, 38, 242, 94, 16, 0, 0, 0, 0, 40, 7, 71, 32, 0, 0, 0, 0, 40, 210, 64, 16, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 113, 215, 0, 0, 0, 0, 126, 144, 1, 4, 0, 0, 112, 128, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/PST8PDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 4, 0, 0, 0, 16, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 143, 128, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 80, 83, 84, 0, 80, 68, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/PST8PDT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 0, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 143, 128, 0, 4, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 158, 166, 72, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 160, 134, 42, 160, 255, 255, 255, 255, 161, 154, 247, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 7, 141, 67, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 9, 173, 191, 32, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 1, 0, 1, 0, 2, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 255, 255, 143, 128, 0, 4, 255, 255, 157, 144, 1, 0, 255, 255, 157, 144, 1, 8, 255, 255, 157, 144, 1, 12, 255, 255, 143, 128, 0, 4, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/Pacific/Apia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 7, 0, 0, 0, 26, 128, 0, 0, 0, 145, 5, 252, 0, 218, 98, 4, 56, 76, 159, 39, 176, 77, 151, 43, 224, 78, 125, 226, 96, 78, 253, 139, 160, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 0, 0, 176, 128, 0, 0, 255, 255, 95, 0, 0, 0, 255, 255, 94, 72, 0, 4, 255, 255, 115, 96, 1, 10, 255, 255, 101, 80, 0, 14, 0, 0, 182, 208, 0, 18, 0, 0, 196, 224, 1, 22, 76, 77, 84, 0, 45, 49, 49, 51, 48, 0, 45, 49, 48, 0, 45, 49, 49, 0, 43, 49, 51, 0, 43, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 60, 43, 49, 52, 62, 44, 77, 57, 46, 53, 46, 48, 47, 51, 44, 77, 52, 46, 49, 46, 48, 47, 52, 10}, + "zoneinfo/Pacific/Apia": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 7, 0, 0, 0, 26, 128, 0, 0, 0, 145, 5, 252, 0, 218, 98, 4, 56, 76, 159, 39, 176, 77, 151, 43, 224, 78, 125, 226, 96, 78, 253, 139, 160, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 0, 0, 176, 128, 0, 0, 255, 255, 95, 0, 0, 0, 255, 255, 94, 72, 0, 4, 255, 255, 115, 96, 1, 10, 255, 255, 101, 80, 0, 14, 0, 0, 182, 208, 0, 18, 0, 0, 196, 224, 1, 22, 76, 77, 84, 0, 45, 49, 49, 51, 48, 0, 45, 49, 48, 0, 45, 49, 49, 0, 43, 49, 51, 0, 43, 49, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 7, 0, 0, 0, 26, 255, 255, 255, 255, 110, 61, 201, 0, 255, 255, 255, 255, 145, 5, 252, 0, 255, 255, 255, 255, 218, 98, 4, 56, 0, 0, 0, 0, 76, 159, 39, 176, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 78, 253, 139, 160, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 4, 3, 4, 3, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 0, 0, 176, 128, 0, 0, 255, 255, 95, 0, 0, 0, 255, 255, 94, 72, 0, 4, 255, 255, 115, 96, 1, 10, 255, 255, 101, 80, 0, 14, 0, 0, 182, 208, 0, 18, 0, 0, 196, 224, 1, 22, 76, 77, 84, 0, 45, 49, 49, 51, 48, 0, 45, 49, 48, 0, 45, 49, 49, 0, 43, 49, 51, 0, 43, 49, 52, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 60, 43, 49, 52, 62, 44, 77, 57, 46, 53, 46, 48, 47, 51, 44, 77, 52, 46, 49, 46, 48, 47, 52, 10}, - "zoneinfo/Pacific/Auckland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, + "zoneinfo/Pacific/Auckland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 128, 0, 0, 0, 176, 180, 178, 232, 177, 81, 135, 88, 178, 120, 229, 104, 179, 67, 229, 96, 180, 88, 199, 104, 181, 35, 199, 96, 182, 56, 169, 104, 183, 3, 169, 96, 184, 24, 139, 104, 184, 236, 197, 224, 185, 248, 109, 104, 186, 204, 167, 224, 187, 216, 79, 104, 188, 227, 232, 224, 189, 174, 246, 232, 190, 195, 202, 224, 191, 142, 216, 232, 192, 163, 172, 224, 193, 110, 186, 232, 194, 131, 142, 224, 195, 78, 156, 232, 196, 99, 112, 224, 197, 46, 126, 232, 198, 76, 141, 96, 199, 14, 96, 232, 200, 44, 111, 96, 200, 247, 125, 104, 210, 218, 154, 64, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 7, 0, 0, 0, 19, 255, 255, 255, 255, 65, 183, 76, 168, 255, 255, 255, 255, 176, 180, 178, 232, 255, 255, 255, 255, 177, 81, 135, 88, 255, 255, 255, 255, 178, 120, 229, 104, 255, 255, 255, 255, 179, 67, 229, 96, 255, 255, 255, 255, 180, 88, 199, 104, 255, 255, 255, 255, 181, 35, 199, 96, 255, 255, 255, 255, 182, 56, 169, 104, 255, 255, 255, 255, 183, 3, 169, 96, 255, 255, 255, 255, 184, 24, 139, 104, 255, 255, 255, 255, 184, 236, 197, 224, 255, 255, 255, 255, 185, 248, 109, 104, 255, 255, 255, 255, 186, 204, 167, 224, 255, 255, 255, 255, 187, 216, 79, 104, 255, 255, 255, 255, 188, 227, 232, 224, 255, 255, 255, 255, 189, 174, 246, 232, 255, 255, 255, 255, 190, 195, 202, 224, 255, 255, 255, 255, 191, 142, 216, 232, 255, 255, 255, 255, 192, 163, 172, 224, 255, 255, 255, 255, 193, 110, 186, 232, 255, 255, 255, 255, 194, 131, 142, 224, 255, 255, 255, 255, 195, 78, 156, 232, 255, 255, 255, 255, 196, 99, 112, 224, 255, 255, 255, 255, 197, 46, 126, 232, 255, 255, 255, 255, 198, 76, 141, 96, 255, 255, 255, 255, 199, 14, 96, 232, 255, 255, 255, 255, 200, 44, 111, 96, 255, 255, 255, 255, 200, 247, 125, 104, 255, 255, 255, 255, 210, 218, 154, 64, 0, 0, 0, 0, 9, 24, 253, 224, 0, 0, 0, 0, 9, 172, 165, 224, 0, 0, 0, 0, 10, 239, 165, 96, 0, 0, 0, 0, 11, 158, 252, 224, 0, 0, 0, 0, 12, 216, 193, 224, 0, 0, 0, 0, 13, 126, 222, 224, 0, 0, 0, 0, 14, 184, 163, 224, 0, 0, 0, 0, 15, 94, 192, 224, 0, 0, 0, 0, 16, 152, 133, 224, 0, 0, 0, 0, 17, 62, 162, 224, 0, 0, 0, 0, 18, 120, 103, 224, 0, 0, 0, 0, 19, 30, 132, 224, 0, 0, 0, 0, 20, 88, 73, 224, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 43, 224, 0, 0, 0, 0, 22, 231, 131, 96, 0, 0, 0, 0, 24, 33, 72, 96, 0, 0, 0, 0, 24, 199, 101, 96, 0, 0, 0, 0, 26, 1, 42, 96, 0, 0, 0, 0, 26, 167, 71, 96, 0, 0, 0, 0, 27, 225, 12, 96, 0, 0, 0, 0, 28, 135, 41, 96, 0, 0, 0, 0, 29, 192, 238, 96, 0, 0, 0, 0, 30, 103, 11, 96, 0, 0, 0, 0, 31, 160, 208, 96, 0, 0, 0, 0, 32, 70, 237, 96, 0, 0, 0, 0, 33, 128, 178, 96, 0, 0, 0, 0, 34, 48, 9, 224, 0, 0, 0, 0, 35, 105, 206, 224, 0, 0, 0, 0, 36, 15, 235, 224, 0, 0, 0, 0, 37, 46, 1, 96, 0, 0, 0, 0, 38, 2, 66, 224, 0, 0, 0, 0, 39, 13, 227, 96, 0, 0, 0, 0, 39, 226, 36, 224, 0, 0, 0, 0, 40, 237, 197, 96, 0, 0, 0, 0, 41, 194, 6, 224, 0, 0, 0, 0, 42, 205, 167, 96, 0, 0, 0, 0, 43, 171, 35, 96, 0, 0, 0, 0, 44, 173, 137, 96, 0, 0, 0, 0, 45, 139, 5, 96, 0, 0, 0, 0, 46, 141, 107, 96, 0, 0, 0, 0, 47, 106, 231, 96, 0, 0, 0, 0, 48, 109, 77, 96, 0, 0, 0, 0, 49, 74, 201, 96, 0, 0, 0, 0, 50, 86, 105, 224, 0, 0, 0, 0, 51, 42, 171, 96, 0, 0, 0, 0, 52, 54, 75, 224, 0, 0, 0, 0, 53, 10, 141, 96, 0, 0, 0, 0, 54, 22, 45, 224, 0, 0, 0, 0, 54, 243, 169, 224, 0, 0, 0, 0, 55, 246, 15, 224, 0, 0, 0, 0, 56, 211, 139, 224, 0, 0, 0, 0, 57, 213, 241, 224, 0, 0, 0, 0, 58, 179, 109, 224, 0, 0, 0, 0, 59, 191, 14, 96, 0, 0, 0, 0, 60, 147, 79, 224, 0, 0, 0, 0, 61, 158, 240, 96, 0, 0, 0, 0, 62, 115, 49, 224, 0, 0, 0, 0, 63, 126, 210, 96, 0, 0, 0, 0, 64, 92, 78, 96, 0, 0, 0, 0, 65, 94, 180, 96, 0, 0, 0, 0, 66, 60, 48, 96, 0, 0, 0, 0, 67, 62, 150, 96, 0, 0, 0, 0, 68, 28, 18, 96, 0, 0, 0, 0, 69, 30, 120, 96, 0, 0, 0, 0, 69, 251, 244, 96, 0, 0, 0, 0, 70, 254, 90, 96, 0, 0, 0, 0, 71, 247, 133, 224, 0, 0, 0, 0, 72, 222, 60, 96, 0, 0, 0, 0, 73, 215, 103, 224, 0, 0, 0, 0, 74, 190, 30, 96, 0, 0, 0, 0, 75, 183, 73, 224, 0, 0, 0, 0, 76, 158, 0, 96, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 2, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 6, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 0, 0, 163, 216, 0, 0, 0, 0, 175, 200, 1, 4, 0, 0, 161, 184, 0, 9, 0, 0, 168, 192, 1, 4, 0, 0, 182, 208, 1, 14, 0, 0, 168, 192, 0, 4, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 78, 90, 83, 84, 0, 78, 90, 77, 84, 0, 78, 90, 68, 84, 0, 0, 0, 0, 0, 1, 1, 0, 10, 78, 90, 83, 84, 45, 49, 50, 78, 90, 68, 84, 44, 77, 57, 46, 53, 46, 48, 44, 77, 52, 46, 49, 46, 48, 47, 51, 10}, - "zoneinfo/Pacific/Bougainville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 204, 67, 54, 96, 210, 43, 108, 240, 84, 158, 215, 128, 127, 255, 255, 255, 1, 2, 1, 3, 3, 0, 0, 145, 216, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Bougainville": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 204, 67, 54, 96, 210, 43, 108, 240, 84, 158, 215, 128, 127, 255, 255, 255, 1, 2, 1, 3, 3, 0, 0, 145, 216, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 0, 12, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 21, 255, 255, 255, 255, 86, 182, 82, 40, 255, 255, 255, 255, 114, 237, 164, 144, 255, 255, 255, 255, 204, 67, 54, 96, 255, 255, 255, 255, 210, 43, 108, 240, 0, 0, 0, 0, 84, 158, 215, 128, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 4, 0, 0, 145, 216, 0, 0, 0, 0, 137, 240, 0, 4, 0, 0, 140, 160, 0, 9, 0, 0, 126, 144, 0, 13, 0, 0, 154, 176, 0, 17, 76, 77, 84, 0, 80, 77, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 43, 49, 49, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Chatham": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 128, 0, 0, 0, 210, 218, 150, 188, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 52, 53, 62, 45, 49, 50, 58, 52, 53, 60, 43, 49, 51, 52, 53, 62, 44, 77, 57, 46, 53, 46, 48, 47, 50, 58, 52, 53, 44, 77, 52, 46, 49, 46, 48, 47, 51, 58, 52, 53, 10}, + "zoneinfo/Pacific/Chatham": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 128, 0, 0, 0, 210, 218, 150, 188, 9, 24, 253, 224, 9, 172, 165, 224, 10, 239, 165, 96, 11, 158, 252, 224, 12, 216, 193, 224, 13, 126, 222, 224, 14, 184, 163, 224, 15, 94, 192, 224, 16, 152, 133, 224, 17, 62, 162, 224, 18, 120, 103, 224, 19, 30, 132, 224, 20, 88, 73, 224, 20, 254, 102, 224, 22, 56, 43, 224, 22, 231, 131, 96, 24, 33, 72, 96, 24, 199, 101, 96, 26, 1, 42, 96, 26, 167, 71, 96, 27, 225, 12, 96, 28, 135, 41, 96, 29, 192, 238, 96, 30, 103, 11, 96, 31, 160, 208, 96, 32, 70, 237, 96, 33, 128, 178, 96, 34, 48, 9, 224, 35, 105, 206, 224, 36, 15, 235, 224, 37, 46, 1, 96, 38, 2, 66, 224, 39, 13, 227, 96, 39, 226, 36, 224, 40, 237, 197, 96, 41, 194, 6, 224, 42, 205, 167, 96, 43, 171, 35, 96, 44, 173, 137, 96, 45, 139, 5, 96, 46, 141, 107, 96, 47, 106, 231, 96, 48, 109, 77, 96, 49, 74, 201, 96, 50, 86, 105, 224, 51, 42, 171, 96, 52, 54, 75, 224, 53, 10, 141, 96, 54, 22, 45, 224, 54, 243, 169, 224, 55, 246, 15, 224, 56, 211, 139, 224, 57, 213, 241, 224, 58, 179, 109, 224, 59, 191, 14, 96, 60, 147, 79, 224, 61, 158, 240, 96, 62, 115, 49, 224, 63, 126, 210, 96, 64, 92, 78, 96, 65, 94, 180, 96, 66, 60, 48, 96, 67, 62, 150, 96, 68, 28, 18, 96, 69, 30, 120, 96, 69, 251, 244, 96, 70, 254, 90, 96, 71, 247, 133, 224, 72, 222, 60, 96, 73, 215, 103, 224, 74, 190, 30, 96, 75, 183, 73, 224, 76, 158, 0, 96, 77, 151, 43, 224, 78, 125, 226, 96, 79, 119, 13, 224, 80, 102, 254, 224, 81, 96, 42, 96, 82, 70, 224, 224, 83, 64, 12, 96, 84, 38, 194, 224, 85, 31, 238, 96, 86, 6, 164, 224, 86, 255, 208, 96, 87, 230, 134, 224, 88, 223, 178, 96, 89, 198, 104, 224, 90, 191, 148, 96, 91, 175, 133, 96, 92, 168, 176, 224, 93, 143, 103, 96, 94, 136, 146, 224, 95, 111, 73, 96, 96, 104, 116, 224, 97, 79, 43, 96, 98, 72, 86, 224, 99, 47, 13, 96, 100, 40, 56, 224, 101, 14, 239, 96, 102, 17, 85, 96, 102, 248, 11, 224, 103, 241, 55, 96, 104, 215, 237, 224, 105, 209, 25, 96, 106, 183, 207, 224, 107, 176, 251, 96, 108, 151, 177, 224, 109, 144, 221, 96, 110, 119, 147, 224, 111, 112, 191, 96, 112, 96, 176, 96, 113, 89, 219, 224, 114, 64, 146, 96, 115, 57, 189, 224, 116, 32, 116, 96, 117, 25, 159, 224, 118, 0, 86, 96, 118, 249, 129, 224, 119, 224, 56, 96, 120, 217, 99, 224, 121, 192, 26, 96, 122, 185, 69, 224, 123, 169, 54, 224, 124, 162, 98, 96, 125, 137, 24, 224, 126, 130, 68, 96, 127, 104, 250, 224, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 5, 0, 0, 0, 22, 255, 255, 255, 255, 65, 183, 68, 132, 255, 255, 255, 255, 210, 218, 150, 188, 0, 0, 0, 0, 9, 24, 253, 224, 0, 0, 0, 0, 9, 172, 165, 224, 0, 0, 0, 0, 10, 239, 165, 96, 0, 0, 0, 0, 11, 158, 252, 224, 0, 0, 0, 0, 12, 216, 193, 224, 0, 0, 0, 0, 13, 126, 222, 224, 0, 0, 0, 0, 14, 184, 163, 224, 0, 0, 0, 0, 15, 94, 192, 224, 0, 0, 0, 0, 16, 152, 133, 224, 0, 0, 0, 0, 17, 62, 162, 224, 0, 0, 0, 0, 18, 120, 103, 224, 0, 0, 0, 0, 19, 30, 132, 224, 0, 0, 0, 0, 20, 88, 73, 224, 0, 0, 0, 0, 20, 254, 102, 224, 0, 0, 0, 0, 22, 56, 43, 224, 0, 0, 0, 0, 22, 231, 131, 96, 0, 0, 0, 0, 24, 33, 72, 96, 0, 0, 0, 0, 24, 199, 101, 96, 0, 0, 0, 0, 26, 1, 42, 96, 0, 0, 0, 0, 26, 167, 71, 96, 0, 0, 0, 0, 27, 225, 12, 96, 0, 0, 0, 0, 28, 135, 41, 96, 0, 0, 0, 0, 29, 192, 238, 96, 0, 0, 0, 0, 30, 103, 11, 96, 0, 0, 0, 0, 31, 160, 208, 96, 0, 0, 0, 0, 32, 70, 237, 96, 0, 0, 0, 0, 33, 128, 178, 96, 0, 0, 0, 0, 34, 48, 9, 224, 0, 0, 0, 0, 35, 105, 206, 224, 0, 0, 0, 0, 36, 15, 235, 224, 0, 0, 0, 0, 37, 46, 1, 96, 0, 0, 0, 0, 38, 2, 66, 224, 0, 0, 0, 0, 39, 13, 227, 96, 0, 0, 0, 0, 39, 226, 36, 224, 0, 0, 0, 0, 40, 237, 197, 96, 0, 0, 0, 0, 41, 194, 6, 224, 0, 0, 0, 0, 42, 205, 167, 96, 0, 0, 0, 0, 43, 171, 35, 96, 0, 0, 0, 0, 44, 173, 137, 96, 0, 0, 0, 0, 45, 139, 5, 96, 0, 0, 0, 0, 46, 141, 107, 96, 0, 0, 0, 0, 47, 106, 231, 96, 0, 0, 0, 0, 48, 109, 77, 96, 0, 0, 0, 0, 49, 74, 201, 96, 0, 0, 0, 0, 50, 86, 105, 224, 0, 0, 0, 0, 51, 42, 171, 96, 0, 0, 0, 0, 52, 54, 75, 224, 0, 0, 0, 0, 53, 10, 141, 96, 0, 0, 0, 0, 54, 22, 45, 224, 0, 0, 0, 0, 54, 243, 169, 224, 0, 0, 0, 0, 55, 246, 15, 224, 0, 0, 0, 0, 56, 211, 139, 224, 0, 0, 0, 0, 57, 213, 241, 224, 0, 0, 0, 0, 58, 179, 109, 224, 0, 0, 0, 0, 59, 191, 14, 96, 0, 0, 0, 0, 60, 147, 79, 224, 0, 0, 0, 0, 61, 158, 240, 96, 0, 0, 0, 0, 62, 115, 49, 224, 0, 0, 0, 0, 63, 126, 210, 96, 0, 0, 0, 0, 64, 92, 78, 96, 0, 0, 0, 0, 65, 94, 180, 96, 0, 0, 0, 0, 66, 60, 48, 96, 0, 0, 0, 0, 67, 62, 150, 96, 0, 0, 0, 0, 68, 28, 18, 96, 0, 0, 0, 0, 69, 30, 120, 96, 0, 0, 0, 0, 69, 251, 244, 96, 0, 0, 0, 0, 70, 254, 90, 96, 0, 0, 0, 0, 71, 247, 133, 224, 0, 0, 0, 0, 72, 222, 60, 96, 0, 0, 0, 0, 73, 215, 103, 224, 0, 0, 0, 0, 74, 190, 30, 96, 0, 0, 0, 0, 75, 183, 73, 224, 0, 0, 0, 0, 76, 158, 0, 96, 0, 0, 0, 0, 77, 151, 43, 224, 0, 0, 0, 0, 78, 125, 226, 96, 0, 0, 0, 0, 79, 119, 13, 224, 0, 0, 0, 0, 80, 102, 254, 224, 0, 0, 0, 0, 81, 96, 42, 96, 0, 0, 0, 0, 82, 70, 224, 224, 0, 0, 0, 0, 83, 64, 12, 96, 0, 0, 0, 0, 84, 38, 194, 224, 0, 0, 0, 0, 85, 31, 238, 96, 0, 0, 0, 0, 86, 6, 164, 224, 0, 0, 0, 0, 86, 255, 208, 96, 0, 0, 0, 0, 87, 230, 134, 224, 0, 0, 0, 0, 88, 223, 178, 96, 0, 0, 0, 0, 89, 198, 104, 224, 0, 0, 0, 0, 90, 191, 148, 96, 0, 0, 0, 0, 91, 175, 133, 96, 0, 0, 0, 0, 92, 168, 176, 224, 0, 0, 0, 0, 93, 143, 103, 96, 0, 0, 0, 0, 94, 136, 146, 224, 0, 0, 0, 0, 95, 111, 73, 96, 0, 0, 0, 0, 96, 104, 116, 224, 0, 0, 0, 0, 97, 79, 43, 96, 0, 0, 0, 0, 98, 72, 86, 224, 0, 0, 0, 0, 99, 47, 13, 96, 0, 0, 0, 0, 100, 40, 56, 224, 0, 0, 0, 0, 101, 14, 239, 96, 0, 0, 0, 0, 102, 17, 85, 96, 0, 0, 0, 0, 102, 248, 11, 224, 0, 0, 0, 0, 103, 241, 55, 96, 0, 0, 0, 0, 104, 215, 237, 224, 0, 0, 0, 0, 105, 209, 25, 96, 0, 0, 0, 0, 106, 183, 207, 224, 0, 0, 0, 0, 107, 176, 251, 96, 0, 0, 0, 0, 108, 151, 177, 224, 0, 0, 0, 0, 109, 144, 221, 96, 0, 0, 0, 0, 110, 119, 147, 224, 0, 0, 0, 0, 111, 112, 191, 96, 0, 0, 0, 0, 112, 96, 176, 96, 0, 0, 0, 0, 113, 89, 219, 224, 0, 0, 0, 0, 114, 64, 146, 96, 0, 0, 0, 0, 115, 57, 189, 224, 0, 0, 0, 0, 116, 32, 116, 96, 0, 0, 0, 0, 117, 25, 159, 224, 0, 0, 0, 0, 118, 0, 86, 96, 0, 0, 0, 0, 118, 249, 129, 224, 0, 0, 0, 0, 119, 224, 56, 96, 0, 0, 0, 0, 120, 217, 99, 224, 0, 0, 0, 0, 121, 192, 26, 96, 0, 0, 0, 0, 122, 185, 69, 224, 0, 0, 0, 0, 123, 169, 54, 224, 0, 0, 0, 0, 124, 162, 98, 96, 0, 0, 0, 0, 125, 137, 24, 224, 0, 0, 0, 0, 126, 130, 68, 96, 0, 0, 0, 0, 127, 104, 250, 224, 0, 0, 0, 0, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 0, 0, 171, 252, 0, 0, 0, 0, 172, 68, 0, 4, 0, 0, 193, 92, 1, 10, 0, 0, 179, 76, 0, 16, 0, 0, 179, 76, 0, 16, 76, 77, 84, 0, 43, 49, 50, 49, 53, 0, 43, 49, 51, 52, 53, 0, 43, 49, 50, 52, 53, 0, 0, 0, 1, 1, 0, 10, 60, 43, 49, 50, 52, 53, 62, 45, 49, 50, 58, 52, 53, 60, 43, 49, 51, 52, 53, 62, 44, 77, 57, 46, 53, 46, 48, 47, 50, 58, 52, 53, 44, 77, 52, 46, 49, 46, 48, 47, 51, 58, 52, 53, 10}, - "zoneinfo/Pacific/Chuuk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 152, 17, 163, 224, 160, 57, 249, 240, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 2, 1, 1, 255, 255, 60, 204, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Pacific/Chuuk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 152, 17, 163, 224, 160, 57, 249, 240, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 2, 1, 1, 255, 255, 60, 204, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 20, 225, 191, 52, 255, 255, 255, 255, 126, 54, 38, 180, 255, 255, 255, 255, 152, 17, 163, 224, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 210, 17, 14, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 2, 255, 255, 60, 204, 0, 0, 0, 0, 142, 76, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Pacific/Easter": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 185, 199, 64, 136, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 10, 60, 45, 48, 54, 62, 54, 60, 45, 48, 53, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 50, 44, 77, 52, 46, 49, 46, 54, 47, 50, 50, 10}, + "zoneinfo/Pacific/Easter": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 128, 0, 0, 0, 185, 199, 64, 136, 253, 209, 60, 64, 254, 146, 250, 176, 255, 204, 205, 192, 0, 114, 220, 176, 1, 117, 80, 192, 2, 64, 73, 176, 3, 85, 50, 192, 4, 32, 43, 176, 5, 62, 79, 64, 6, 0, 13, 176, 7, 11, 188, 64, 7, 223, 239, 176, 8, 254, 19, 64, 9, 191, 209, 176, 10, 221, 245, 64, 11, 168, 238, 48, 12, 189, 215, 64, 13, 136, 208, 48, 14, 157, 185, 64, 15, 104, 178, 48, 16, 134, 213, 192, 17, 72, 148, 48, 18, 102, 183, 192, 19, 40, 118, 48, 20, 70, 153, 192, 21, 17, 146, 176, 22, 38, 123, 192, 22, 241, 116, 176, 24, 6, 93, 192, 24, 209, 86, 176, 25, 230, 63, 192, 26, 177, 56, 176, 27, 207, 92, 64, 28, 145, 26, 176, 29, 175, 62, 64, 30, 112, 252, 176, 31, 143, 32, 64, 32, 127, 3, 48, 33, 111, 2, 64, 34, 57, 251, 48, 35, 78, 228, 64, 36, 25, 221, 48, 37, 56, 0, 192, 37, 249, 191, 48, 38, 242, 248, 192, 39, 217, 161, 48, 40, 247, 196, 192, 41, 194, 189, 176, 42, 215, 166, 192, 43, 162, 159, 176, 44, 183, 136, 192, 45, 130, 129, 176, 46, 151, 106, 192, 47, 98, 99, 176, 48, 128, 135, 64, 49, 66, 69, 176, 50, 96, 105, 64, 51, 61, 215, 48, 52, 64, 75, 64, 53, 11, 68, 48, 54, 13, 184, 64, 55, 6, 213, 176, 56, 0, 15, 64, 56, 203, 8, 48, 57, 233, 43, 192, 58, 170, 234, 48, 59, 201, 13, 192, 60, 138, 204, 48, 61, 168, 239, 192, 62, 106, 174, 48, 63, 136, 209, 192, 64, 83, 202, 176, 65, 104, 179, 192, 66, 51, 172, 176, 67, 72, 149, 192, 68, 19, 142, 176, 69, 49, 178, 64, 69, 243, 112, 176, 71, 17, 148, 64, 71, 239, 2, 48, 72, 241, 118, 64, 73, 188, 111, 48, 74, 209, 88, 64, 75, 184, 0, 176, 76, 177, 58, 64, 77, 198, 7, 48, 78, 80, 130, 192, 79, 156, 174, 176, 80, 66, 217, 192, 81, 124, 144, 176, 82, 43, 246, 64, 83, 92, 114, 176, 84, 11, 216, 64, 87, 55, 230, 48, 87, 175, 236, 192, 89, 23, 200, 48, 89, 143, 206, 192, 90, 247, 170, 48, 91, 111, 176, 192, 92, 169, 103, 176, 93, 116, 124, 192, 94, 137, 73, 176, 95, 84, 94, 192, 96, 105, 43, 176, 97, 52, 64, 192, 98, 73, 13, 176, 99, 20, 34, 192, 100, 40, 239, 176, 100, 244, 4, 192, 102, 18, 12, 48, 102, 221, 33, 64, 103, 241, 238, 48, 104, 189, 3, 64, 105, 209, 208, 48, 106, 156, 229, 64, 107, 177, 178, 48, 108, 124, 199, 64, 109, 145, 148, 48, 110, 92, 169, 64, 111, 122, 176, 176, 112, 60, 139, 64, 113, 90, 146, 176, 114, 37, 167, 192, 115, 58, 116, 176, 116, 5, 137, 192, 117, 26, 86, 176, 117, 229, 107, 192, 118, 250, 56, 176, 119, 197, 77, 192, 120, 218, 26, 176, 121, 165, 47, 192, 122, 195, 55, 48, 123, 133, 17, 192, 124, 163, 25, 48, 125, 110, 46, 64, 126, 130, 251, 48, 127, 78, 16, 64, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 105, 135, 66, 8, 255, 255, 255, 255, 185, 199, 64, 136, 255, 255, 255, 255, 253, 209, 60, 64, 255, 255, 255, 255, 254, 146, 250, 176, 255, 255, 255, 255, 255, 204, 205, 192, 0, 0, 0, 0, 0, 114, 220, 176, 0, 0, 0, 0, 1, 117, 80, 192, 0, 0, 0, 0, 2, 64, 73, 176, 0, 0, 0, 0, 3, 85, 50, 192, 0, 0, 0, 0, 4, 32, 43, 176, 0, 0, 0, 0, 5, 62, 79, 64, 0, 0, 0, 0, 6, 0, 13, 176, 0, 0, 0, 0, 7, 11, 188, 64, 0, 0, 0, 0, 7, 223, 239, 176, 0, 0, 0, 0, 8, 254, 19, 64, 0, 0, 0, 0, 9, 191, 209, 176, 0, 0, 0, 0, 10, 221, 245, 64, 0, 0, 0, 0, 11, 168, 238, 48, 0, 0, 0, 0, 12, 189, 215, 64, 0, 0, 0, 0, 13, 136, 208, 48, 0, 0, 0, 0, 14, 157, 185, 64, 0, 0, 0, 0, 15, 104, 178, 48, 0, 0, 0, 0, 16, 134, 213, 192, 0, 0, 0, 0, 17, 72, 148, 48, 0, 0, 0, 0, 18, 102, 183, 192, 0, 0, 0, 0, 19, 40, 118, 48, 0, 0, 0, 0, 20, 70, 153, 192, 0, 0, 0, 0, 21, 17, 146, 176, 0, 0, 0, 0, 22, 38, 123, 192, 0, 0, 0, 0, 22, 241, 116, 176, 0, 0, 0, 0, 24, 6, 93, 192, 0, 0, 0, 0, 24, 209, 86, 176, 0, 0, 0, 0, 25, 230, 63, 192, 0, 0, 0, 0, 26, 177, 56, 176, 0, 0, 0, 0, 27, 207, 92, 64, 0, 0, 0, 0, 28, 145, 26, 176, 0, 0, 0, 0, 29, 175, 62, 64, 0, 0, 0, 0, 30, 112, 252, 176, 0, 0, 0, 0, 31, 143, 32, 64, 0, 0, 0, 0, 32, 127, 3, 48, 0, 0, 0, 0, 33, 111, 2, 64, 0, 0, 0, 0, 34, 57, 251, 48, 0, 0, 0, 0, 35, 78, 228, 64, 0, 0, 0, 0, 36, 25, 221, 48, 0, 0, 0, 0, 37, 56, 0, 192, 0, 0, 0, 0, 37, 249, 191, 48, 0, 0, 0, 0, 38, 242, 248, 192, 0, 0, 0, 0, 39, 217, 161, 48, 0, 0, 0, 0, 40, 247, 196, 192, 0, 0, 0, 0, 41, 194, 189, 176, 0, 0, 0, 0, 42, 215, 166, 192, 0, 0, 0, 0, 43, 162, 159, 176, 0, 0, 0, 0, 44, 183, 136, 192, 0, 0, 0, 0, 45, 130, 129, 176, 0, 0, 0, 0, 46, 151, 106, 192, 0, 0, 0, 0, 47, 98, 99, 176, 0, 0, 0, 0, 48, 128, 135, 64, 0, 0, 0, 0, 49, 66, 69, 176, 0, 0, 0, 0, 50, 96, 105, 64, 0, 0, 0, 0, 51, 61, 215, 48, 0, 0, 0, 0, 52, 64, 75, 64, 0, 0, 0, 0, 53, 11, 68, 48, 0, 0, 0, 0, 54, 13, 184, 64, 0, 0, 0, 0, 55, 6, 213, 176, 0, 0, 0, 0, 56, 0, 15, 64, 0, 0, 0, 0, 56, 203, 8, 48, 0, 0, 0, 0, 57, 233, 43, 192, 0, 0, 0, 0, 58, 170, 234, 48, 0, 0, 0, 0, 59, 201, 13, 192, 0, 0, 0, 0, 60, 138, 204, 48, 0, 0, 0, 0, 61, 168, 239, 192, 0, 0, 0, 0, 62, 106, 174, 48, 0, 0, 0, 0, 63, 136, 209, 192, 0, 0, 0, 0, 64, 83, 202, 176, 0, 0, 0, 0, 65, 104, 179, 192, 0, 0, 0, 0, 66, 51, 172, 176, 0, 0, 0, 0, 67, 72, 149, 192, 0, 0, 0, 0, 68, 19, 142, 176, 0, 0, 0, 0, 69, 49, 178, 64, 0, 0, 0, 0, 69, 243, 112, 176, 0, 0, 0, 0, 71, 17, 148, 64, 0, 0, 0, 0, 71, 239, 2, 48, 0, 0, 0, 0, 72, 241, 118, 64, 0, 0, 0, 0, 73, 188, 111, 48, 0, 0, 0, 0, 74, 209, 88, 64, 0, 0, 0, 0, 75, 184, 0, 176, 0, 0, 0, 0, 76, 177, 58, 64, 0, 0, 0, 0, 77, 198, 7, 48, 0, 0, 0, 0, 78, 80, 130, 192, 0, 0, 0, 0, 79, 156, 174, 176, 0, 0, 0, 0, 80, 66, 217, 192, 0, 0, 0, 0, 81, 124, 144, 176, 0, 0, 0, 0, 82, 43, 246, 64, 0, 0, 0, 0, 83, 92, 114, 176, 0, 0, 0, 0, 84, 11, 216, 64, 0, 0, 0, 0, 87, 55, 230, 48, 0, 0, 0, 0, 87, 175, 236, 192, 0, 0, 0, 0, 89, 23, 200, 48, 0, 0, 0, 0, 89, 143, 206, 192, 0, 0, 0, 0, 90, 247, 170, 48, 0, 0, 0, 0, 91, 111, 176, 192, 0, 0, 0, 0, 92, 169, 103, 176, 0, 0, 0, 0, 93, 116, 124, 192, 0, 0, 0, 0, 94, 137, 73, 176, 0, 0, 0, 0, 95, 84, 94, 192, 0, 0, 0, 0, 96, 105, 43, 176, 0, 0, 0, 0, 97, 52, 64, 192, 0, 0, 0, 0, 98, 73, 13, 176, 0, 0, 0, 0, 99, 20, 34, 192, 0, 0, 0, 0, 100, 40, 239, 176, 0, 0, 0, 0, 100, 244, 4, 192, 0, 0, 0, 0, 102, 18, 12, 48, 0, 0, 0, 0, 102, 221, 33, 64, 0, 0, 0, 0, 103, 241, 238, 48, 0, 0, 0, 0, 104, 189, 3, 64, 0, 0, 0, 0, 105, 209, 208, 48, 0, 0, 0, 0, 106, 156, 229, 64, 0, 0, 0, 0, 107, 177, 178, 48, 0, 0, 0, 0, 108, 124, 199, 64, 0, 0, 0, 0, 109, 145, 148, 48, 0, 0, 0, 0, 110, 92, 169, 64, 0, 0, 0, 0, 111, 122, 176, 176, 0, 0, 0, 0, 112, 60, 139, 64, 0, 0, 0, 0, 113, 90, 146, 176, 0, 0, 0, 0, 114, 37, 167, 192, 0, 0, 0, 0, 115, 58, 116, 176, 0, 0, 0, 0, 116, 5, 137, 192, 0, 0, 0, 0, 117, 26, 86, 176, 0, 0, 0, 0, 117, 229, 107, 192, 0, 0, 0, 0, 118, 250, 56, 176, 0, 0, 0, 0, 119, 197, 77, 192, 0, 0, 0, 0, 120, 218, 26, 176, 0, 0, 0, 0, 121, 165, 47, 192, 0, 0, 0, 0, 122, 195, 55, 48, 0, 0, 0, 0, 123, 133, 17, 192, 0, 0, 0, 0, 124, 163, 25, 48, 0, 0, 0, 0, 125, 110, 46, 64, 0, 0, 0, 0, 126, 130, 251, 48, 0, 0, 0, 0, 127, 78, 16, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 4, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 255, 255, 153, 120, 0, 0, 255, 255, 153, 120, 0, 4, 255, 255, 171, 160, 1, 8, 255, 255, 157, 144, 0, 12, 255, 255, 157, 144, 0, 12, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 16, 76, 77, 84, 0, 69, 77, 84, 0, 45, 48, 54, 0, 45, 48, 55, 0, 45, 48, 53, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 10, 60, 45, 48, 54, 62, 54, 60, 45, 48, 53, 62, 44, 77, 57, 46, 49, 46, 54, 47, 50, 50, 44, 77, 52, 46, 49, 46, 54, 47, 50, 50, 10}, - "zoneinfo/Pacific/Efate": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 3, 0, 0, 0, 12, 146, 245, 194, 180, 25, 210, 247, 208, 26, 194, 218, 192, 27, 218, 102, 208, 28, 162, 188, 192, 29, 155, 246, 80, 30, 130, 158, 192, 31, 123, 216, 80, 32, 107, 187, 64, 33, 91, 186, 80, 34, 75, 157, 64, 35, 59, 156, 80, 36, 43, 127, 64, 37, 27, 126, 80, 38, 11, 97, 64, 38, 251, 96, 80, 39, 235, 67, 64, 40, 228, 124, 208, 41, 129, 81, 64, 42, 233, 72, 208, 43, 97, 51, 64, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 157, 204, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Efate": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 3, 0, 0, 0, 12, 146, 245, 194, 180, 25, 210, 247, 208, 26, 194, 218, 192, 27, 218, 102, 208, 28, 162, 188, 192, 29, 155, 246, 80, 30, 130, 158, 192, 31, 123, 216, 80, 32, 107, 187, 64, 33, 91, 186, 80, 34, 75, 157, 64, 35, 59, 156, 80, 36, 43, 127, 64, 37, 27, 126, 80, 38, 11, 97, 64, 38, 251, 96, 80, 39, 235, 67, 64, 40, 228, 124, 208, 41, 129, 81, 64, 42, 233, 72, 208, 43, 97, 51, 64, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 157, 204, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 146, 245, 194, 180, 0, 0, 0, 0, 25, 210, 247, 208, 0, 0, 0, 0, 26, 194, 218, 192, 0, 0, 0, 0, 27, 218, 102, 208, 0, 0, 0, 0, 28, 162, 188, 192, 0, 0, 0, 0, 29, 155, 246, 80, 0, 0, 0, 0, 30, 130, 158, 192, 0, 0, 0, 0, 31, 123, 216, 80, 0, 0, 0, 0, 32, 107, 187, 64, 0, 0, 0, 0, 33, 91, 186, 80, 0, 0, 0, 0, 34, 75, 157, 64, 0, 0, 0, 0, 35, 59, 156, 80, 0, 0, 0, 0, 36, 43, 127, 64, 0, 0, 0, 0, 37, 27, 126, 80, 0, 0, 0, 0, 38, 11, 97, 64, 0, 0, 0, 0, 38, 251, 96, 80, 0, 0, 0, 0, 39, 235, 67, 64, 0, 0, 0, 0, 40, 228, 124, 208, 0, 0, 0, 0, 41, 129, 81, 64, 0, 0, 0, 0, 42, 233, 72, 208, 0, 0, 0, 0, 43, 97, 51, 64, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 157, 204, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Enderbury": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 18, 86, 4, 192, 47, 5, 57, 176, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 95, 156, 0, 0, 255, 255, 87, 64, 0, 4, 255, 255, 101, 80, 0, 8, 0, 0, 182, 208, 0, 12, 76, 77, 84, 0, 45, 49, 50, 0, 45, 49, 49, 0, 43, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + "zoneinfo/Pacific/Enderbury": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 18, 86, 4, 192, 47, 5, 57, 176, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 95, 156, 0, 0, 255, 255, 87, 64, 0, 4, 255, 255, 101, 80, 0, 8, 0, 0, 182, 208, 0, 12, 76, 77, 84, 0, 45, 49, 50, 0, 45, 49, 49, 0, 43, 49, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 126, 55, 85, 100, 0, 0, 0, 0, 18, 86, 4, 192, 0, 0, 0, 0, 47, 5, 57, 176, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 95, 156, 0, 0, 255, 255, 87, 64, 0, 4, 255, 255, 101, 80, 0, 8, 0, 0, 182, 208, 0, 12, 76, 77, 84, 0, 45, 49, 50, 0, 45, 49, 49, 0, 43, 49, 51, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, - "zoneinfo/Pacific/Fakaofo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 78, 253, 153, 176, 127, 255, 255, 255, 1, 2, 2, 255, 255, 95, 120, 0, 0, 255, 255, 101, 80, 0, 4, 0, 0, 182, 208, 0, 8, 76, 77, 84, 0, 45, 49, 49, 0, 43, 49, 51, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + "zoneinfo/Pacific/Fakaofo": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 128, 0, 0, 0, 78, 253, 153, 176, 127, 255, 255, 255, 1, 2, 2, 255, 255, 95, 120, 0, 0, 255, 255, 101, 80, 0, 4, 0, 0, 182, 208, 0, 8, 76, 77, 84, 0, 45, 49, 49, 0, 43, 49, 51, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 126, 55, 85, 136, 0, 0, 0, 0, 78, 253, 153, 176, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 255, 255, 95, 120, 0, 0, 255, 255, 101, 80, 0, 4, 0, 0, 182, 208, 0, 8, 76, 77, 84, 0, 45, 49, 49, 0, 43, 49, 51, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, - "zoneinfo/Pacific/Fiji": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0, 12, 154, 19, 177, 192, 54, 59, 23, 224, 54, 215, 250, 96, 56, 36, 52, 96, 56, 183, 220, 96, 75, 17, 44, 224, 75, 174, 15, 96, 76, 194, 234, 96, 77, 114, 65, 224, 78, 162, 204, 96, 79, 26, 196, 224, 80, 130, 174, 96, 80, 250, 166, 224, 82, 107, 202, 224, 82, 218, 122, 208, 84, 84, 231, 96, 84, 186, 106, 224, 86, 52, 201, 96, 86, 154, 76, 224, 88, 29, 229, 224, 88, 122, 46, 224, 89, 253, 199, 224, 90, 90, 16, 224, 91, 221, 169, 224, 92, 57, 242, 224, 93, 189, 139, 224, 94, 35, 15, 96, 95, 157, 109, 224, 96, 2, 241, 96, 97, 134, 138, 96, 97, 226, 211, 96, 99, 102, 108, 96, 99, 194, 181, 96, 101, 70, 78, 96, 101, 162, 151, 96, 103, 38, 48, 96, 103, 139, 179, 224, 105, 6, 18, 96, 105, 107, 149, 224, 106, 229, 244, 96, 107, 75, 119, 224, 108, 207, 16, 224, 109, 43, 89, 224, 110, 174, 242, 224, 111, 11, 59, 224, 112, 142, 212, 224, 112, 235, 29, 224, 114, 110, 182, 224, 114, 212, 58, 96, 116, 78, 152, 224, 116, 180, 28, 96, 118, 55, 181, 96, 118, 147, 254, 96, 120, 23, 151, 96, 120, 115, 224, 96, 121, 247, 121, 96, 122, 83, 194, 96, 123, 215, 91, 96, 124, 51, 164, 96, 125, 183, 61, 96, 126, 28, 192, 224, 127, 151, 31, 96, 127, 252, 162, 224, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 167, 192, 0, 0, 0, 0, 182, 208, 1, 4, 0, 0, 168, 192, 0, 8, 76, 77, 84, 0, 43, 49, 51, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 60, 43, 49, 51, 62, 44, 77, 49, 49, 46, 49, 46, 48, 44, 77, 49, 46, 50, 46, 50, 47, 49, 50, 51, 10}, + "zoneinfo/Pacific/Fiji": []byte{84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0, 12, 154, 19, 177, 192, 54, 59, 23, 224, 54, 215, 250, 96, 56, 36, 52, 96, 56, 183, 220, 96, 75, 17, 44, 224, 75, 174, 15, 96, 76, 194, 234, 96, 77, 114, 65, 224, 78, 162, 204, 96, 79, 26, 196, 224, 80, 130, 174, 96, 80, 250, 166, 224, 82, 107, 202, 224, 82, 218, 122, 208, 84, 84, 231, 96, 84, 186, 106, 224, 86, 52, 201, 96, 86, 154, 76, 224, 88, 29, 229, 224, 88, 122, 46, 224, 89, 253, 199, 224, 90, 90, 16, 224, 91, 221, 169, 224, 92, 57, 242, 224, 93, 189, 139, 224, 94, 35, 15, 96, 95, 157, 109, 224, 96, 2, 241, 96, 97, 134, 138, 96, 97, 226, 211, 96, 99, 102, 108, 96, 99, 194, 181, 96, 101, 70, 78, 96, 101, 162, 151, 96, 103, 38, 48, 96, 103, 139, 179, 224, 105, 6, 18, 96, 105, 107, 149, 224, 106, 229, 244, 96, 107, 75, 119, 224, 108, 207, 16, 224, 109, 43, 89, 224, 110, 174, 242, 224, 111, 11, 59, 224, 112, 142, 212, 224, 112, 235, 29, 224, 114, 110, 182, 224, 114, 212, 58, 96, 116, 78, 152, 224, 116, 180, 28, 96, 118, 55, 181, 96, 118, 147, 254, 96, 120, 23, 151, 96, 120, 115, 224, 96, 121, 247, 121, 96, 122, 83, 194, 96, 123, 215, 91, 96, 124, 51, 164, 96, 125, 183, 61, 96, 126, 28, 192, 224, 127, 151, 31, 96, 127, 252, 162, 224, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 167, 192, 0, 0, 0, 0, 182, 208, 1, 4, 0, 0, 168, 192, 0, 8, 76, 77, 84, 0, 43, 49, 51, 0, 43, 49, 50, 0, 84, 90, 105, 102, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 3, 0, 0, 0, 12, 255, 255, 255, 255, 154, 19, 177, 192, 0, 0, 0, 0, 54, 59, 23, 224, 0, 0, 0, 0, 54, 215, 250, 96, 0, 0, 0, 0, 56, 36, 52, 96, 0, 0, 0, 0, 56, 183, 220, 96, 0, 0, 0, 0, 75, 17, 44, 224, 0, 0, 0, 0, 75, 174, 15, 96, 0, 0, 0, 0, 76, 194, 234, 96, 0, 0, 0, 0, 77, 114, 65, 224, 0, 0, 0, 0, 78, 162, 204, 96, 0, 0, 0, 0, 79, 26, 196, 224, 0, 0, 0, 0, 80, 130, 174, 96, 0, 0, 0, 0, 80, 250, 166, 224, 0, 0, 0, 0, 82, 107, 202, 224, 0, 0, 0, 0, 82, 218, 122, 208, 0, 0, 0, 0, 84, 84, 231, 96, 0, 0, 0, 0, 84, 186, 106, 224, 0, 0, 0, 0, 86, 52, 201, 96, 0, 0, 0, 0, 86, 154, 76, 224, 0, 0, 0, 0, 88, 29, 229, 224, 0, 0, 0, 0, 88, 122, 46, 224, 0, 0, 0, 0, 89, 253, 199, 224, 0, 0, 0, 0, 90, 90, 16, 224, 0, 0, 0, 0, 91, 221, 169, 224, 0, 0, 0, 0, 92, 57, 242, 224, 0, 0, 0, 0, 93, 189, 139, 224, 0, 0, 0, 0, 94, 35, 15, 96, 0, 0, 0, 0, 95, 157, 109, 224, 0, 0, 0, 0, 96, 2, 241, 96, 0, 0, 0, 0, 97, 134, 138, 96, 0, 0, 0, 0, 97, 226, 211, 96, 0, 0, 0, 0, 99, 102, 108, 96, 0, 0, 0, 0, 99, 194, 181, 96, 0, 0, 0, 0, 101, 70, 78, 96, 0, 0, 0, 0, 101, 162, 151, 96, 0, 0, 0, 0, 103, 38, 48, 96, 0, 0, 0, 0, 103, 139, 179, 224, 0, 0, 0, 0, 105, 6, 18, 96, 0, 0, 0, 0, 105, 107, 149, 224, 0, 0, 0, 0, 106, 229, 244, 96, 0, 0, 0, 0, 107, 75, 119, 224, 0, 0, 0, 0, 108, 207, 16, 224, 0, 0, 0, 0, 109, 43, 89, 224, 0, 0, 0, 0, 110, 174, 242, 224, 0, 0, 0, 0, 111, 11, 59, 224, 0, 0, 0, 0, 112, 142, 212, 224, 0, 0, 0, 0, 112, 235, 29, 224, 0, 0, 0, 0, 114, 110, 182, 224, 0, 0, 0, 0, 114, 212, 58, 96, 0, 0, 0, 0, 116, 78, 152, 224, 0, 0, 0, 0, 116, 180, 28, 96, 0, 0, 0, 0, 118, 55, 181, 96, 0, 0, 0, 0, 118, 147, 254, 96, 0, 0, 0, 0, 120, 23, 151, 96, 0, 0, 0, 0, 120, 115, 224, 96, 0, 0, 0, 0, 121, 247, 121, 96, 0, 0, 0, 0, 122, 83, 194, 96, 0, 0, 0, 0, 123, 215, 91, 96, 0, 0, 0, 0, 124, 51, 164, 96, 0, 0, 0, 0, 125, 183, 61, 96, 0, 0, 0, 0, 126, 28, 192, 224, 0, 0, 0, 0, 127, 151, 31, 96, 0, 0, 0, 0, 127, 252, 162, 224, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 0, 0, 167, 192, 0, 0, 0, 0, 182, 208, 1, 4, 0, 0, 168, 192, 0, 8, 76, 77, 84, 0, 43, 49, 51, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 60, 43, 49, 51, 62, 44, 77, 49, 49, 46, 49, 46, 48, 44, 77, 49, 46, 50, 46, 50, 47, 49, 50, 51, 10}, - "zoneinfo/Pacific/Funafuti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 168, 4, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Funafuti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 168, 4, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 126, 54, 12, 252, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 168, 4, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Galapagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 12, 182, 164, 76, 128, 30, 24, 196, 80, 43, 23, 10, 224, 43, 113, 244, 80, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 172, 0, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 45, 48, 53, 0, 45, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 54, 62, 54, 10}, + "zoneinfo/Pacific/Galapagos": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 12, 182, 164, 76, 128, 30, 24, 196, 80, 43, 23, 10, 224, 43, 113, 244, 80, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 172, 0, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 45, 48, 53, 0, 45, 48, 54, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 12, 255, 255, 255, 255, 182, 164, 76, 128, 0, 0, 0, 0, 30, 24, 196, 80, 0, 0, 0, 0, 43, 23, 10, 224, 0, 0, 0, 0, 43, 113, 244, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 3, 255, 255, 172, 0, 0, 0, 255, 255, 185, 176, 0, 4, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 45, 48, 53, 0, 45, 48, 54, 0, 10, 60, 45, 48, 54, 62, 54, 10}, - "zoneinfo/Pacific/Gambier": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 148, 80, 72, 4, 127, 255, 255, 255, 1, 1, 255, 255, 129, 124, 0, 0, 255, 255, 129, 112, 0, 4, 76, 77, 84, 0, 45, 48, 57, 0, 0, 0, 0, 0, 10, 60, 45, 48, 57, 62, 57, 10}, + "zoneinfo/Pacific/Gambier": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 148, 80, 72, 4, 127, 255, 255, 255, 1, 1, 255, 255, 129, 124, 0, 0, 255, 255, 129, 112, 0, 4, 76, 77, 84, 0, 45, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 148, 80, 72, 4, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 129, 124, 0, 0, 255, 255, 129, 112, 0, 4, 76, 77, 84, 0, 45, 48, 57, 0, 10, 60, 45, 48, 57, 62, 57, 10}, - "zoneinfo/Pacific/Guadalcanal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 148, 79, 51, 140, 127, 255, 255, 255, 1, 1, 0, 0, 149, 244, 0, 0, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Guadalcanal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 148, 79, 51, 140, 127, 255, 255, 255, 1, 1, 0, 0, 149, 244, 0, 0, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 148, 79, 51, 140, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 149, 244, 0, 0, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Guam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 203, 55, 149, 224, 208, 46, 137, 240, 236, 55, 190, 0, 239, 54, 248, 240, 251, 155, 0, 0, 254, 63, 39, 140, 255, 1, 30, 0, 255, 93, 88, 240, 0, 151, 44, 0, 1, 70, 117, 112, 2, 119, 14, 0, 3, 38, 87, 112, 7, 112, 151, 0, 7, 204, 209, 240, 12, 8, 145, 0, 12, 124, 135, 44, 13, 191, 148, 128, 14, 101, 163, 112, 58, 67, 94, 96, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 255, 255, 54, 52, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 76, 77, 84, 0, 71, 83, 84, 0, 43, 48, 57, 0, 71, 68, 84, 0, 67, 104, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 104, 83, 84, 45, 49, 48, 10}, + "zoneinfo/Pacific/Guam": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 203, 55, 149, 224, 208, 46, 137, 240, 236, 55, 190, 0, 239, 54, 248, 240, 251, 155, 0, 0, 254, 63, 39, 140, 255, 1, 30, 0, 255, 93, 88, 240, 0, 151, 44, 0, 1, 70, 117, 112, 2, 119, 14, 0, 3, 38, 87, 112, 7, 112, 151, 0, 7, 204, 209, 240, 12, 8, 145, 0, 12, 124, 135, 44, 13, 191, 148, 128, 14, 101, 163, 112, 58, 67, 94, 96, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 255, 255, 54, 52, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 76, 77, 84, 0, 71, 83, 84, 0, 43, 48, 57, 0, 71, 68, 84, 0, 67, 104, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 20, 225, 197, 204, 255, 255, 255, 255, 126, 54, 45, 76, 255, 255, 255, 255, 203, 55, 149, 224, 255, 255, 255, 255, 208, 46, 137, 240, 255, 255, 255, 255, 236, 55, 190, 0, 255, 255, 255, 255, 239, 54, 248, 240, 255, 255, 255, 255, 251, 155, 0, 0, 255, 255, 255, 255, 254, 63, 39, 140, 255, 255, 255, 255, 255, 1, 30, 0, 255, 255, 255, 255, 255, 93, 88, 240, 0, 0, 0, 0, 0, 151, 44, 0, 0, 0, 0, 0, 1, 70, 117, 112, 0, 0, 0, 0, 2, 119, 14, 0, 0, 0, 0, 0, 3, 38, 87, 112, 0, 0, 0, 0, 7, 112, 151, 0, 0, 0, 0, 0, 7, 204, 209, 240, 0, 0, 0, 0, 12, 8, 145, 0, 0, 0, 0, 0, 12, 124, 135, 44, 0, 0, 0, 0, 13, 191, 148, 128, 0, 0, 0, 0, 14, 101, 163, 112, 0, 0, 0, 0, 58, 67, 94, 96, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 255, 255, 54, 52, 0, 0, 0, 0, 135, 180, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 76, 77, 84, 0, 71, 83, 84, 0, 43, 48, 57, 0, 71, 68, 84, 0, 67, 104, 83, 84, 0, 10, 67, 104, 83, 84, 45, 49, 48, 10}, - "zoneinfo/Pacific/Honolulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 35, 244, 112, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 72, 83, 84, 49, 48, 10}, + "zoneinfo/Pacific/Honolulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 35, 244, 112, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 116, 224, 112, 190, 255, 255, 255, 255, 187, 5, 67, 72, 255, 255, 255, 255, 187, 33, 113, 88, 255, 255, 255, 255, 203, 137, 61, 200, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 73, 56, 255, 255, 255, 255, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 72, 83, 84, 49, 48, 10}, - "zoneinfo/Pacific/Johnston": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 35, 244, 112, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 72, 83, 84, 49, 48, 10}, + "zoneinfo/Pacific/Johnston": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 35, 244, 112, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 116, 224, 112, 190, 255, 255, 255, 255, 187, 5, 67, 72, 255, 255, 255, 255, 187, 33, 113, 88, 255, 255, 255, 255, 203, 137, 61, 200, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 73, 56, 255, 255, 255, 255, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 72, 83, 84, 49, 48, 10}, - "zoneinfo/Pacific/Kiritimati": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 18, 85, 242, 0, 47, 5, 43, 160, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 108, 128, 0, 0, 255, 255, 106, 0, 0, 4, 255, 255, 115, 96, 0, 10, 0, 0, 196, 224, 0, 14, 76, 77, 84, 0, 45, 49, 48, 52, 48, 0, 45, 49, 48, 0, 43, 49, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 52, 62, 45, 49, 52, 10}, + "zoneinfo/Pacific/Kiritimati": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 128, 0, 0, 0, 18, 85, 242, 0, 47, 5, 43, 160, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 108, 128, 0, 0, 255, 255, 106, 0, 0, 4, 255, 255, 115, 96, 0, 10, 0, 0, 196, 224, 0, 14, 76, 77, 84, 0, 45, 49, 48, 52, 48, 0, 45, 49, 48, 0, 43, 49, 52, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 18, 255, 255, 255, 255, 126, 55, 72, 128, 0, 0, 0, 0, 18, 85, 242, 0, 0, 0, 0, 0, 47, 5, 43, 160, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 108, 128, 0, 0, 255, 255, 106, 0, 0, 4, 255, 255, 115, 96, 0, 10, 0, 0, 196, 224, 0, 14, 76, 77, 84, 0, 45, 49, 48, 52, 48, 0, 45, 49, 48, 0, 43, 49, 52, 0, 10, 60, 43, 49, 52, 62, 45, 49, 52, 10}, - "zoneinfo/Pacific/Kosrae": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 210, 17, 14, 240, 255, 134, 27, 80, 54, 139, 103, 64, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 4, 1, 1, 255, 255, 71, 76, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 168, 192, 0, 16, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Kosrae": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 210, 17, 14, 240, 255, 134, 27, 80, 54, 139, 103, 64, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 4, 1, 1, 255, 255, 71, 76, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 168, 192, 0, 16, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, 20, 255, 255, 255, 255, 20, 225, 180, 180, 255, 255, 255, 255, 126, 54, 28, 52, 255, 255, 255, 255, 152, 17, 149, 208, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 193, 237, 53, 208, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 210, 17, 14, 240, 255, 255, 255, 255, 255, 134, 27, 80, 0, 0, 0, 0, 54, 139, 103, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 3, 2, 5, 2, 2, 255, 255, 71, 76, 0, 0, 0, 0, 152, 204, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 168, 192, 0, 16, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 43, 49, 50, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Kwajalein": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 193, 237, 53, 208, 201, 234, 10, 96, 207, 70, 129, 240, 255, 134, 27, 80, 44, 118, 14, 64, 127, 255, 255, 255, 1, 2, 3, 1, 4, 5, 5, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 126, 144, 0, 12, 255, 255, 87, 64, 0, 16, 0, 0, 168, 192, 0, 20, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 48, 0, 43, 48, 57, 0, 45, 49, 50, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Kwajalein": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 128, 0, 0, 0, 193, 237, 53, 208, 201, 234, 10, 96, 207, 70, 129, 240, 255, 134, 27, 80, 44, 118, 14, 64, 127, 255, 255, 255, 1, 2, 3, 1, 4, 5, 5, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 126, 144, 0, 12, 255, 255, 87, 64, 0, 16, 0, 0, 168, 192, 0, 20, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 48, 0, 43, 48, 57, 0, 45, 49, 50, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 126, 54, 24, 32, 255, 255, 255, 255, 193, 237, 53, 208, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 207, 70, 129, 240, 255, 255, 255, 255, 255, 134, 27, 80, 0, 0, 0, 0, 44, 118, 14, 64, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 1, 4, 5, 5, 0, 0, 156, 224, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 140, 160, 0, 8, 0, 0, 126, 144, 0, 12, 255, 255, 87, 64, 0, 16, 0, 0, 168, 192, 0, 20, 76, 77, 84, 0, 43, 49, 49, 0, 43, 49, 48, 0, 43, 48, 57, 0, 45, 49, 50, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Majuro": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 207, 61, 71, 112, 255, 134, 27, 80, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 4, 4, 0, 0, 160, 128, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 168, 192, 0, 16, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Majuro": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 207, 61, 71, 112, 255, 134, 27, 80, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 4, 4, 0, 0, 160, 128, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 168, 192, 0, 16, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 126, 54, 20, 128, 255, 255, 255, 255, 152, 17, 149, 208, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 193, 237, 53, 208, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 207, 61, 71, 112, 255, 255, 255, 255, 255, 134, 27, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 4, 4, 0, 0, 160, 128, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 168, 192, 0, 16, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Marquesas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 148, 80, 76, 72, 127, 255, 255, 255, 1, 1, 255, 255, 125, 56, 0, 0, 255, 255, 122, 104, 0, 4, 76, 77, 84, 0, 45, 48, 57, 51, 48, 0, 0, 0, 0, 0, 10, 60, 45, 48, 57, 51, 48, 62, 57, 58, 51, 48, 10}, + "zoneinfo/Pacific/Marquesas": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 148, 80, 76, 72, 127, 255, 255, 255, 1, 1, 255, 255, 125, 56, 0, 0, 255, 255, 122, 104, 0, 4, 76, 77, 84, 0, 45, 48, 57, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 10, 255, 255, 255, 255, 148, 80, 76, 72, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 125, 56, 0, 0, 255, 255, 122, 104, 0, 4, 76, 77, 84, 0, 45, 48, 57, 51, 48, 0, 10, 60, 45, 48, 57, 51, 48, 62, 57, 58, 51, 48, 10}, - "zoneinfo/Pacific/Midway": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + "zoneinfo/Pacific/Midway": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 255, 255, 255, 255, 110, 61, 200, 8, 255, 255, 255, 255, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 10, 83, 83, 84, 49, 49, 10}, - "zoneinfo/Pacific/Nauru": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 18, 163, 231, 43, 4, 204, 144, 233, 200, 210, 67, 39, 240, 17, 33, 168, 232, 127, 255, 255, 255, 1, 2, 1, 3, 3, 0, 0, 156, 124, 0, 0, 0, 0, 161, 184, 0, 4, 0, 0, 126, 144, 0, 10, 0, 0, 168, 192, 0, 14, 76, 77, 84, 0, 43, 49, 49, 51, 48, 0, 43, 48, 57, 0, 43, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Nauru": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 18, 163, 231, 43, 4, 204, 144, 233, 200, 210, 67, 39, 240, 17, 33, 168, 232, 127, 255, 255, 255, 1, 2, 1, 3, 3, 0, 0, 156, 124, 0, 0, 0, 0, 161, 184, 0, 4, 0, 0, 126, 144, 0, 10, 0, 0, 168, 192, 0, 14, 76, 77, 84, 0, 43, 49, 49, 51, 48, 0, 43, 48, 57, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 18, 255, 255, 255, 255, 163, 231, 43, 4, 255, 255, 255, 255, 204, 144, 233, 200, 255, 255, 255, 255, 210, 67, 39, 240, 0, 0, 0, 0, 17, 33, 168, 232, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 1, 3, 3, 0, 0, 156, 124, 0, 0, 0, 0, 161, 184, 0, 4, 0, 0, 126, 144, 0, 10, 0, 0, 168, 192, 0, 14, 76, 77, 84, 0, 43, 49, 49, 51, 48, 0, 43, 48, 57, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Niue": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 20, 128, 0, 0, 0, 220, 67, 53, 96, 16, 116, 202, 56, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 96, 180, 0, 0, 255, 255, 96, 160, 0, 4, 255, 255, 94, 72, 0, 10, 255, 255, 101, 80, 0, 16, 76, 77, 84, 0, 45, 49, 49, 50, 48, 0, 45, 49, 49, 51, 48, 0, 45, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 49, 49, 62, 49, 49, 10}, + "zoneinfo/Pacific/Niue": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 20, 128, 0, 0, 0, 220, 67, 53, 96, 16, 116, 202, 56, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 96, 180, 0, 0, 255, 255, 96, 160, 0, 4, 255, 255, 94, 72, 0, 10, 255, 255, 101, 80, 0, 16, 76, 77, 84, 0, 45, 49, 49, 50, 48, 0, 45, 49, 49, 51, 48, 0, 45, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 20, 255, 255, 255, 255, 126, 55, 84, 76, 255, 255, 255, 255, 220, 67, 53, 96, 0, 0, 0, 0, 16, 116, 202, 56, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 3, 255, 255, 96, 180, 0, 0, 255, 255, 96, 160, 0, 4, 255, 255, 94, 72, 0, 10, 255, 255, 101, 80, 0, 16, 76, 77, 84, 0, 45, 49, 49, 50, 48, 0, 45, 49, 49, 51, 48, 0, 45, 49, 49, 0, 10, 60, 45, 49, 49, 62, 49, 49, 10}, - "zoneinfo/Pacific/Norfolk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 26, 128, 0, 0, 0, 220, 65, 248, 128, 9, 15, 202, 104, 9, 181, 217, 88, 86, 15, 230, 104, 127, 255, 255, 255, 1, 2, 3, 2, 4, 4, 0, 0, 157, 120, 0, 0, 0, 0, 157, 128, 0, 4, 0, 0, 161, 184, 0, 10, 0, 0, 175, 200, 1, 16, 0, 0, 154, 176, 0, 22, 76, 77, 84, 0, 43, 49, 49, 49, 50, 0, 43, 49, 49, 51, 48, 0, 43, 49, 50, 51, 48, 0, 43, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Norfolk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 26, 128, 0, 0, 0, 220, 65, 248, 128, 9, 15, 202, 104, 9, 181, 217, 88, 86, 15, 230, 104, 127, 255, 255, 255, 1, 2, 3, 2, 4, 4, 0, 0, 157, 120, 0, 0, 0, 0, 157, 128, 0, 4, 0, 0, 161, 184, 0, 10, 0, 0, 175, 200, 1, 16, 0, 0, 154, 176, 0, 22, 76, 77, 84, 0, 43, 49, 49, 49, 50, 0, 43, 49, 49, 51, 48, 0, 43, 49, 50, 51, 48, 0, 43, 49, 49, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 26, 255, 255, 255, 255, 126, 54, 23, 136, 255, 255, 255, 255, 220, 65, 248, 128, 0, 0, 0, 0, 9, 15, 202, 104, 0, 0, 0, 0, 9, 181, 217, 88, 0, 0, 0, 0, 86, 15, 230, 104, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 4, 0, 0, 157, 120, 0, 0, 0, 0, 157, 128, 0, 4, 0, 0, 161, 184, 0, 10, 0, 0, 175, 200, 1, 16, 0, 0, 154, 176, 0, 22, 76, 77, 84, 0, 43, 49, 49, 49, 50, 0, 43, 49, 49, 51, 48, 0, 43, 49, 50, 51, 48, 0, 43, 49, 49, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Noumea": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 12, 146, 245, 196, 116, 14, 230, 186, 80, 15, 86, 187, 192, 16, 198, 156, 80, 17, 55, 239, 64, 50, 160, 75, 240, 51, 24, 68, 112, 127, 255, 255, 255, 2, 1, 2, 1, 2, 3, 4, 4, 0, 0, 156, 12, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Noumea": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 12, 146, 245, 196, 116, 14, 230, 186, 80, 15, 86, 187, 192, 16, 198, 156, 80, 17, 55, 239, 64, 50, 160, 75, 240, 51, 24, 68, 112, 127, 255, 255, 255, 2, 1, 2, 1, 2, 3, 4, 4, 0, 0, 156, 12, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 146, 245, 196, 116, 0, 0, 0, 0, 14, 230, 186, 80, 0, 0, 0, 0, 15, 86, 187, 192, 0, 0, 0, 0, 16, 198, 156, 80, 0, 0, 0, 0, 17, 55, 239, 64, 0, 0, 0, 0, 50, 160, 75, 240, 0, 0, 0, 0, 51, 24, 68, 112, 0, 0, 0, 0, 127, 255, 255, 255, 2, 1, 2, 1, 2, 3, 4, 4, 0, 0, 156, 12, 0, 0, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 0, 0, 168, 192, 1, 4, 0, 0, 154, 176, 0, 8, 76, 77, 84, 0, 43, 49, 50, 0, 43, 49, 49, 0, 0, 0, 0, 1, 1, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Pago_Pago": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + "zoneinfo/Pacific/Pago_Pago": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 255, 255, 255, 255, 110, 61, 200, 8, 255, 255, 255, 255, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 10, 83, 83, 84, 49, 49, 10}, - "zoneinfo/Pacific/Palau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 44, 148, 0, 0, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 43, 48, 57, 0, 0, 0, 0, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, + "zoneinfo/Pacific/Palau": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 44, 148, 0, 0, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 8, 255, 255, 255, 255, 20, 225, 207, 108, 255, 255, 255, 255, 126, 54, 54, 236, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 255, 255, 44, 148, 0, 0, 0, 0, 126, 20, 0, 0, 0, 0, 126, 144, 0, 4, 76, 77, 84, 0, 43, 48, 57, 0, 10, 60, 43, 48, 57, 62, 45, 57, 10}, - "zoneinfo/Pacific/Pitcairn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 53, 68, 66, 8, 127, 255, 255, 255, 1, 2, 2, 255, 255, 134, 12, 0, 0, 255, 255, 136, 120, 0, 4, 255, 255, 143, 128, 0, 10, 76, 77, 84, 0, 45, 48, 56, 51, 48, 0, 45, 48, 56, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 48, 56, 62, 56, 10}, + "zoneinfo/Pacific/Pitcairn": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 128, 0, 0, 0, 53, 68, 66, 8, 127, 255, 255, 255, 1, 2, 2, 255, 255, 134, 12, 0, 0, 255, 255, 136, 120, 0, 4, 255, 255, 143, 128, 0, 10, 76, 77, 84, 0, 45, 48, 56, 51, 48, 0, 45, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 14, 255, 255, 255, 255, 126, 55, 46, 244, 0, 0, 0, 0, 53, 68, 66, 8, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 255, 255, 134, 12, 0, 0, 255, 255, 136, 120, 0, 4, 255, 255, 143, 128, 0, 10, 76, 77, 84, 0, 45, 48, 56, 51, 48, 0, 45, 48, 56, 0, 10, 60, 45, 48, 56, 62, 56, 10}, - "zoneinfo/Pacific/Pohnpei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 1, 255, 255, 66, 212, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Pohnpei": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 1, 255, 255, 66, 212, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 20, 225, 185, 44, 255, 255, 255, 255, 126, 54, 32, 172, 255, 255, 255, 255, 152, 17, 149, 208, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 193, 237, 53, 208, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 210, 17, 14, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 3, 2, 2, 255, 255, 66, 212, 0, 0, 0, 0, 148, 84, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Ponape": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 1, 255, 255, 66, 212, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, + "zoneinfo/Pacific/Ponape": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 152, 17, 149, 208, 160, 57, 249, 240, 193, 237, 53, 208, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 3, 2, 1, 1, 255, 255, 66, 212, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 20, 225, 185, 44, 255, 255, 255, 255, 126, 54, 32, 172, 255, 255, 255, 255, 152, 17, 149, 208, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 193, 237, 53, 208, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 210, 17, 14, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 4, 3, 2, 2, 255, 255, 66, 212, 0, 0, 0, 0, 148, 84, 0, 0, 0, 0, 154, 176, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 12, 0, 0, 154, 176, 0, 4, 76, 77, 84, 0, 43, 49, 49, 0, 43, 48, 57, 0, 43, 49, 48, 0, 10, 60, 43, 49, 49, 62, 45, 49, 49, 10}, - "zoneinfo/Pacific/Port_Moresby": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 137, 248, 0, 0, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Pacific/Port_Moresby": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 137, 248, 0, 0, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 13, 255, 255, 255, 255, 86, 182, 90, 8, 255, 255, 255, 255, 114, 237, 164, 144, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 2, 0, 0, 137, 248, 0, 0, 0, 0, 137, 240, 0, 4, 0, 0, 140, 160, 0, 9, 76, 77, 84, 0, 80, 77, 77, 84, 0, 43, 49, 48, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Pacific/Rarotonga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 20, 128, 0, 0, 0, 16, 172, 27, 40, 17, 63, 181, 24, 18, 121, 129, 32, 19, 31, 151, 24, 20, 89, 99, 32, 20, 255, 121, 24, 22, 57, 69, 32, 22, 232, 149, 152, 24, 34, 97, 160, 24, 200, 119, 152, 26, 2, 67, 160, 26, 168, 89, 152, 27, 226, 37, 160, 28, 136, 59, 152, 29, 194, 7, 160, 30, 104, 29, 152, 31, 161, 233, 160, 32, 71, 255, 152, 33, 129, 203, 160, 34, 49, 28, 24, 35, 106, 232, 32, 36, 16, 254, 24, 37, 74, 202, 32, 37, 240, 224, 24, 39, 42, 172, 32, 39, 208, 194, 24, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 106, 56, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 115, 96, 0, 10, 255, 255, 122, 104, 1, 14, 76, 77, 84, 0, 45, 49, 48, 51, 48, 0, 45, 49, 48, 0, 45, 48, 57, 51, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, + "zoneinfo/Pacific/Rarotonga": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 20, 128, 0, 0, 0, 16, 172, 27, 40, 17, 63, 181, 24, 18, 121, 129, 32, 19, 31, 151, 24, 20, 89, 99, 32, 20, 255, 121, 24, 22, 57, 69, 32, 22, 232, 149, 152, 24, 34, 97, 160, 24, 200, 119, 152, 26, 2, 67, 160, 26, 168, 89, 152, 27, 226, 37, 160, 28, 136, 59, 152, 29, 194, 7, 160, 30, 104, 29, 152, 31, 161, 233, 160, 32, 71, 255, 152, 33, 129, 203, 160, 34, 49, 28, 24, 35, 106, 232, 32, 36, 16, 254, 24, 37, 74, 202, 32, 37, 240, 224, 24, 39, 42, 172, 32, 39, 208, 194, 24, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 106, 56, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 115, 96, 0, 10, 255, 255, 122, 104, 1, 14, 76, 77, 84, 0, 45, 49, 48, 51, 48, 0, 45, 49, 48, 0, 45, 48, 57, 51, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 0, 0, 0, 20, 255, 255, 255, 255, 126, 55, 74, 200, 0, 0, 0, 0, 16, 172, 27, 40, 0, 0, 0, 0, 17, 63, 181, 24, 0, 0, 0, 0, 18, 121, 129, 32, 0, 0, 0, 0, 19, 31, 151, 24, 0, 0, 0, 0, 20, 89, 99, 32, 0, 0, 0, 0, 20, 255, 121, 24, 0, 0, 0, 0, 22, 57, 69, 32, 0, 0, 0, 0, 22, 232, 149, 152, 0, 0, 0, 0, 24, 34, 97, 160, 0, 0, 0, 0, 24, 200, 119, 152, 0, 0, 0, 0, 26, 2, 67, 160, 0, 0, 0, 0, 26, 168, 89, 152, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 136, 59, 152, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 104, 29, 152, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 71, 255, 152, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 49, 28, 24, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 16, 254, 24, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 37, 240, 224, 24, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 208, 194, 24, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 255, 255, 106, 56, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 115, 96, 0, 10, 255, 255, 122, 104, 1, 14, 76, 77, 84, 0, 45, 49, 48, 51, 48, 0, 45, 49, 48, 0, 45, 48, 57, 51, 48, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, - "zoneinfo/Pacific/Saipan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 203, 55, 149, 224, 208, 46, 137, 240, 236, 55, 190, 0, 239, 54, 248, 240, 251, 155, 0, 0, 254, 63, 39, 140, 255, 1, 30, 0, 255, 93, 88, 240, 0, 151, 44, 0, 1, 70, 117, 112, 2, 119, 14, 0, 3, 38, 87, 112, 7, 112, 151, 0, 7, 204, 209, 240, 12, 8, 145, 0, 12, 124, 135, 44, 13, 191, 148, 128, 14, 101, 163, 112, 58, 67, 94, 96, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 255, 255, 54, 52, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 76, 77, 84, 0, 71, 83, 84, 0, 43, 48, 57, 0, 71, 68, 84, 0, 67, 104, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 104, 83, 84, 45, 49, 48, 10}, + "zoneinfo/Pacific/Saipan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 5, 0, 0, 0, 21, 128, 0, 0, 0, 203, 55, 149, 224, 208, 46, 137, 240, 236, 55, 190, 0, 239, 54, 248, 240, 251, 155, 0, 0, 254, 63, 39, 140, 255, 1, 30, 0, 255, 93, 88, 240, 0, 151, 44, 0, 1, 70, 117, 112, 2, 119, 14, 0, 3, 38, 87, 112, 7, 112, 151, 0, 7, 204, 209, 240, 12, 8, 145, 0, 12, 124, 135, 44, 13, 191, 148, 128, 14, 101, 163, 112, 58, 67, 94, 96, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 255, 255, 54, 52, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 76, 77, 84, 0, 71, 83, 84, 0, 43, 48, 57, 0, 71, 68, 84, 0, 67, 104, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 21, 255, 255, 255, 255, 20, 225, 197, 204, 255, 255, 255, 255, 126, 54, 45, 76, 255, 255, 255, 255, 203, 55, 149, 224, 255, 255, 255, 255, 208, 46, 137, 240, 255, 255, 255, 255, 236, 55, 190, 0, 255, 255, 255, 255, 239, 54, 248, 240, 255, 255, 255, 255, 251, 155, 0, 0, 255, 255, 255, 255, 254, 63, 39, 140, 255, 255, 255, 255, 255, 1, 30, 0, 255, 255, 255, 255, 255, 93, 88, 240, 0, 0, 0, 0, 0, 151, 44, 0, 0, 0, 0, 0, 1, 70, 117, 112, 0, 0, 0, 0, 2, 119, 14, 0, 0, 0, 0, 0, 3, 38, 87, 112, 0, 0, 0, 0, 7, 112, 151, 0, 0, 0, 0, 0, 7, 204, 209, 240, 0, 0, 0, 0, 12, 8, 145, 0, 0, 0, 0, 0, 12, 124, 135, 44, 0, 0, 0, 0, 13, 191, 148, 128, 0, 0, 0, 0, 14, 101, 163, 112, 0, 0, 0, 0, 58, 67, 94, 96, 1, 2, 3, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 5, 255, 255, 54, 52, 0, 0, 0, 0, 135, 180, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 154, 176, 1, 12, 0, 0, 140, 160, 0, 16, 76, 77, 84, 0, 71, 83, 84, 0, 43, 48, 57, 0, 71, 68, 84, 0, 67, 104, 83, 84, 0, 10, 67, 104, 83, 84, 45, 49, 48, 10}, - "zoneinfo/Pacific/Samoa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + "zoneinfo/Pacific/Samoa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 255, 255, 255, 255, 110, 61, 200, 8, 255, 255, 255, 255, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 10, 83, 83, 84, 49, 49, 10}, - "zoneinfo/Pacific/Tahiti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 148, 80, 85, 184, 127, 255, 255, 255, 1, 1, 255, 255, 115, 200, 0, 0, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 45, 49, 48, 0, 0, 0, 0, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, + "zoneinfo/Pacific/Tahiti": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 148, 80, 85, 184, 127, 255, 255, 255, 1, 1, 255, 255, 115, 200, 0, 0, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 45, 49, 48, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 148, 80, 85, 184, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 255, 255, 115, 200, 0, 0, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 45, 49, 48, 0, 10, 60, 45, 49, 48, 62, 49, 48, 10}, - "zoneinfo/Pacific/Tarawa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 162, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Tarawa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 162, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 126, 54, 18, 204, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 162, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Tongatapu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 18, 128, 0, 0, 0, 201, 115, 66, 144, 55, 251, 71, 208, 56, 211, 125, 208, 58, 4, 8, 80, 58, 114, 184, 64, 59, 227, 234, 80, 60, 82, 154, 64, 88, 29, 215, 208, 88, 122, 32, 208, 127, 255, 255, 255, 1, 2, 3, 4, 5, 2, 5, 2, 5, 2, 2, 0, 0, 173, 72, 0, 0, 0, 0, 173, 112, 0, 4, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 76, 77, 84, 0, 43, 49, 50, 50, 48, 0, 43, 49, 51, 0, 43, 49, 52, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, + "zoneinfo/Pacific/Tongatapu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 18, 128, 0, 0, 0, 201, 115, 66, 144, 55, 251, 71, 208, 56, 211, 125, 208, 58, 4, 8, 80, 58, 114, 184, 64, 59, 227, 234, 80, 60, 82, 154, 64, 88, 29, 215, 208, 88, 122, 32, 208, 127, 255, 255, 255, 1, 2, 3, 4, 5, 2, 5, 2, 5, 2, 2, 0, 0, 173, 72, 0, 0, 0, 0, 173, 112, 0, 4, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 76, 77, 84, 0, 43, 49, 50, 50, 48, 0, 43, 49, 51, 0, 43, 49, 52, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 18, 255, 255, 255, 255, 126, 54, 7, 184, 255, 255, 255, 255, 201, 115, 66, 144, 0, 0, 0, 0, 55, 251, 71, 208, 0, 0, 0, 0, 56, 211, 125, 208, 0, 0, 0, 0, 58, 4, 8, 80, 0, 0, 0, 0, 58, 114, 184, 64, 0, 0, 0, 0, 59, 227, 234, 80, 0, 0, 0, 0, 60, 82, 154, 64, 0, 0, 0, 0, 88, 29, 215, 208, 0, 0, 0, 0, 88, 122, 32, 208, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 5, 2, 5, 2, 5, 2, 2, 0, 0, 173, 72, 0, 0, 0, 0, 173, 112, 0, 4, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 0, 0, 182, 208, 0, 10, 0, 0, 196, 224, 1, 14, 76, 77, 84, 0, 43, 49, 50, 50, 48, 0, 43, 49, 51, 0, 43, 49, 52, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 49, 51, 62, 45, 49, 51, 10}, - "zoneinfo/Pacific/Truk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 152, 17, 163, 224, 160, 57, 249, 240, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 2, 1, 1, 255, 255, 60, 204, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Pacific/Truk": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 152, 17, 163, 224, 160, 57, 249, 240, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 2, 1, 1, 255, 255, 60, 204, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 20, 225, 191, 52, 255, 255, 255, 255, 126, 54, 38, 180, 255, 255, 255, 255, 152, 17, 163, 224, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 210, 17, 14, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 2, 255, 255, 60, 204, 0, 0, 0, 0, 142, 76, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Pacific/Wake": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 156, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Wake": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 156, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 126, 54, 24, 204, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 156, 52, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Wallis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 172, 88, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 0, 0, 0, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, + "zoneinfo/Pacific/Wallis": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 128, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 172, 88, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 8, 255, 255, 255, 255, 126, 54, 8, 168, 0, 0, 0, 0, 127, 255, 255, 255, 1, 1, 0, 0, 172, 88, 0, 0, 0, 0, 168, 192, 0, 4, 76, 77, 84, 0, 43, 49, 50, 0, 10, 60, 43, 49, 50, 62, 45, 49, 50, 10}, - "zoneinfo/Pacific/Yap": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 152, 17, 163, 224, 160, 57, 249, 240, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 2, 1, 1, 255, 255, 60, 204, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, + "zoneinfo/Pacific/Yap": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 128, 0, 0, 0, 152, 17, 163, 224, 160, 57, 249, 240, 201, 234, 10, 96, 210, 17, 14, 240, 127, 255, 255, 255, 1, 2, 1, 2, 1, 1, 255, 255, 60, 204, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 12, 255, 255, 255, 255, 20, 225, 191, 52, 255, 255, 255, 255, 126, 54, 38, 180, 255, 255, 255, 255, 152, 17, 163, 224, 255, 255, 255, 255, 160, 57, 249, 240, 255, 255, 255, 255, 201, 234, 10, 96, 255, 255, 255, 255, 210, 17, 14, 240, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 2, 3, 2, 2, 255, 255, 60, 204, 0, 0, 0, 0, 142, 76, 0, 0, 0, 0, 140, 160, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 140, 160, 0, 4, 76, 77, 84, 0, 43, 49, 48, 0, 43, 48, 57, 0, 10, 60, 43, 49, 48, 62, 45, 49, 48, 10}, - "zoneinfo/Poland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 11, 0, 0, 0, 26, 128, 0, 0, 0, 153, 168, 42, 208, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 160, 154, 182, 0, 161, 101, 189, 0, 166, 125, 124, 96, 200, 118, 222, 16, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 128, 169, 96, 208, 132, 186, 0, 209, 149, 146, 112, 210, 138, 187, 96, 211, 98, 255, 112, 212, 75, 35, 144, 213, 94, 173, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 232, 84, 210, 0, 232, 241, 180, 128, 233, 225, 165, 128, 234, 209, 150, 128, 236, 20, 150, 0, 236, 186, 179, 0, 237, 170, 164, 0, 238, 154, 149, 0, 239, 212, 90, 0, 240, 122, 119, 0, 241, 180, 60, 0, 242, 90, 89, 0, 243, 148, 30, 0, 244, 58, 59, 0, 245, 125, 58, 128, 246, 26, 29, 0, 13, 42, 253, 112, 13, 164, 85, 128, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 10, 128, 19, 77, 54, 0, 20, 51, 236, 128, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 33, 218, 214, 240, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 3, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, + "zoneinfo/Poland": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 11, 0, 0, 0, 26, 128, 0, 0, 0, 153, 168, 42, 208, 155, 12, 23, 96, 155, 213, 218, 240, 156, 217, 174, 144, 157, 164, 181, 144, 158, 185, 144, 144, 159, 132, 151, 144, 160, 154, 182, 0, 161, 101, 189, 0, 166, 125, 124, 96, 200, 118, 222, 16, 204, 231, 75, 16, 205, 169, 23, 144, 206, 162, 67, 16, 207, 146, 52, 16, 208, 132, 186, 0, 209, 149, 146, 112, 210, 138, 187, 96, 211, 98, 255, 112, 212, 75, 35, 144, 213, 94, 173, 16, 214, 41, 180, 16, 215, 44, 26, 16, 216, 9, 150, 16, 217, 2, 193, 144, 217, 233, 120, 16, 232, 84, 210, 0, 232, 241, 180, 128, 233, 225, 165, 128, 234, 209, 150, 128, 236, 20, 150, 0, 236, 186, 179, 0, 237, 170, 164, 0, 238, 154, 149, 0, 239, 212, 90, 0, 240, 122, 119, 0, 241, 180, 60, 0, 242, 90, 89, 0, 243, 148, 30, 0, 244, 58, 59, 0, 245, 125, 58, 128, 246, 26, 29, 0, 13, 164, 85, 128, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 10, 128, 19, 77, 54, 0, 20, 51, 236, 128, 21, 35, 221, 128, 22, 19, 206, 128, 23, 3, 191, 128, 23, 243, 176, 128, 24, 227, 161, 128, 25, 211, 146, 128, 26, 195, 131, 128, 27, 188, 175, 0, 28, 172, 160, 0, 29, 156, 145, 0, 30, 140, 130, 0, 31, 124, 115, 0, 32, 108, 100, 0, 33, 92, 85, 0, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 11, 0, 0, 0, 26, 255, 255, 255, 255, 86, 182, 208, 80, 255, 255, 255, 255, 153, 168, 42, 208, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 218, 240, 255, 255, 255, 255, 156, 217, 174, 144, 255, 255, 255, 255, 157, 164, 181, 144, 255, 255, 255, 255, 158, 185, 144, 144, 255, 255, 255, 255, 159, 132, 151, 144, 255, 255, 255, 255, 160, 154, 182, 0, 255, 255, 255, 255, 161, 101, 189, 0, 255, 255, 255, 255, 166, 125, 124, 96, 255, 255, 255, 255, 200, 118, 222, 16, 255, 255, 255, 255, 204, 231, 75, 16, 255, 255, 255, 255, 205, 169, 23, 144, 255, 255, 255, 255, 206, 162, 67, 16, 255, 255, 255, 255, 207, 146, 52, 16, 255, 255, 255, 255, 208, 132, 186, 0, 255, 255, 255, 255, 209, 149, 146, 112, 255, 255, 255, 255, 210, 138, 187, 96, 255, 255, 255, 255, 211, 98, 255, 112, 255, 255, 255, 255, 212, 75, 35, 144, 255, 255, 255, 255, 213, 94, 173, 16, 255, 255, 255, 255, 214, 41, 180, 16, 255, 255, 255, 255, 215, 44, 26, 16, 255, 255, 255, 255, 216, 9, 150, 16, 255, 255, 255, 255, 217, 2, 193, 144, 255, 255, 255, 255, 217, 233, 120, 16, 255, 255, 255, 255, 232, 84, 210, 0, 255, 255, 255, 255, 232, 241, 180, 128, 255, 255, 255, 255, 233, 225, 165, 128, 255, 255, 255, 255, 234, 209, 150, 128, 255, 255, 255, 255, 236, 20, 150, 0, 255, 255, 255, 255, 236, 186, 179, 0, 255, 255, 255, 255, 237, 170, 164, 0, 255, 255, 255, 255, 238, 154, 149, 0, 255, 255, 255, 255, 239, 212, 90, 0, 255, 255, 255, 255, 240, 122, 119, 0, 255, 255, 255, 255, 241, 180, 60, 0, 255, 255, 255, 255, 242, 90, 89, 0, 255, 255, 255, 255, 243, 148, 30, 0, 255, 255, 255, 255, 244, 58, 59, 0, 255, 255, 255, 255, 245, 125, 58, 128, 255, 255, 255, 255, 246, 26, 29, 0, 0, 0, 0, 0, 13, 164, 85, 128, 0, 0, 0, 0, 14, 139, 12, 0, 0, 0, 0, 0, 15, 132, 55, 128, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 100, 25, 128, 0, 0, 0, 0, 18, 84, 10, 128, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 51, 236, 128, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 19, 206, 128, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 23, 243, 176, 128, 0, 0, 0, 0, 24, 227, 161, 128, 0, 0, 0, 0, 25, 211, 146, 128, 0, 0, 0, 0, 26, 195, 131, 128, 0, 0, 0, 0, 27, 188, 175, 0, 0, 0, 0, 0, 28, 172, 160, 0, 0, 0, 0, 0, 29, 156, 145, 0, 0, 0, 0, 0, 30, 140, 130, 0, 0, 0, 0, 0, 31, 124, 115, 0, 0, 0, 0, 0, 32, 108, 100, 0, 0, 0, 0, 0, 33, 92, 85, 0, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 3, 2, 3, 4, 5, 4, 8, 6, 7, 3, 2, 5, 4, 5, 4, 3, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 9, 10, 0, 0, 19, 176, 0, 0, 0, 0, 19, 176, 0, 4, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 0, 0, 42, 48, 1, 17, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 0, 22, 0, 0, 28, 32, 1, 8, 0, 0, 14, 16, 0, 13, 76, 77, 84, 0, 87, 77, 84, 0, 67, 69, 83, 84, 0, 67, 69, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 10, 67, 69, 84, 45, 49, 67, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 44, 77, 49, 48, 46, 53, 46, 48, 47, 51, 10}, - "zoneinfo/Portugal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 27, 128, 0, 0, 0, 146, 230, 142, 128, 155, 75, 109, 112, 155, 254, 199, 128, 156, 156, 237, 112, 157, 201, 131, 112, 158, 127, 114, 112, 159, 170, 182, 240, 160, 95, 84, 112, 161, 139, 234, 112, 162, 65, 217, 112, 163, 110, 111, 112, 164, 35, 12, 240, 165, 79, 162, 240, 170, 5, 239, 112, 170, 244, 142, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 217, 223, 112, 201, 1, 47, 112, 201, 241, 32, 112, 202, 226, 98, 240, 203, 181, 82, 240, 203, 236, 163, 224, 204, 128, 75, 224, 204, 220, 162, 240, 205, 149, 52, 240, 205, 195, 75, 96, 206, 114, 162, 224, 206, 197, 191, 112, 207, 117, 22, 240, 207, 172, 103, 224, 208, 82, 132, 224, 208, 165, 161, 112, 209, 84, 248, 240, 209, 140, 73, 224, 210, 50, 102, 224, 210, 133, 131, 112, 211, 89, 196, 240, 212, 73, 181, 240, 213, 57, 209, 32, 214, 41, 194, 32, 215, 25, 179, 32, 216, 9, 164, 32, 216, 249, 149, 32, 217, 233, 134, 32, 220, 185, 89, 32, 221, 178, 132, 160, 222, 162, 117, 160, 223, 146, 102, 160, 224, 130, 87, 160, 225, 114, 72, 160, 226, 98, 57, 160, 227, 82, 42, 160, 228, 66, 27, 160, 229, 50, 12, 160, 230, 33, 253, 160, 231, 27, 41, 32, 232, 11, 26, 32, 232, 251, 11, 32, 233, 234, 252, 32, 234, 218, 237, 32, 235, 202, 222, 32, 236, 186, 207, 32, 237, 170, 192, 32, 238, 154, 177, 32, 239, 138, 162, 32, 240, 122, 147, 32, 241, 106, 132, 32, 242, 99, 175, 160, 243, 83, 160, 160, 244, 67, 145, 160, 245, 51, 130, 160, 246, 35, 115, 160, 247, 19, 100, 160, 248, 3, 85, 160, 248, 243, 70, 160, 12, 171, 42, 0, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 6, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 9, 8, 9, 8, 9, 8, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/Portugal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 27, 128, 0, 0, 0, 146, 230, 142, 128, 155, 75, 109, 112, 155, 254, 199, 128, 156, 156, 237, 112, 157, 201, 131, 112, 158, 127, 114, 112, 159, 170, 182, 240, 160, 95, 84, 112, 161, 139, 234, 112, 162, 65, 217, 112, 163, 110, 111, 112, 164, 35, 12, 240, 165, 79, 162, 240, 170, 5, 239, 112, 170, 244, 142, 240, 173, 201, 167, 240, 174, 167, 35, 240, 175, 160, 79, 112, 176, 135, 5, 240, 177, 137, 107, 240, 178, 112, 34, 112, 179, 114, 136, 112, 180, 80, 4, 112, 183, 50, 76, 112, 184, 15, 200, 112, 184, 255, 185, 112, 185, 239, 170, 112, 188, 200, 183, 240, 189, 184, 168, 240, 190, 159, 95, 112, 191, 152, 138, 240, 192, 154, 240, 240, 193, 120, 108, 240, 194, 104, 93, 240, 195, 88, 78, 240, 196, 63, 5, 112, 197, 56, 48, 240, 198, 58, 150, 240, 199, 88, 172, 112, 199, 217, 223, 112, 201, 1, 47, 112, 201, 241, 32, 112, 202, 226, 98, 240, 203, 181, 82, 240, 203, 236, 163, 224, 204, 128, 75, 224, 204, 220, 162, 240, 205, 149, 52, 240, 205, 195, 75, 96, 206, 114, 162, 224, 206, 197, 191, 112, 207, 117, 22, 240, 207, 172, 103, 224, 208, 82, 132, 224, 208, 165, 161, 112, 209, 84, 248, 240, 209, 140, 73, 224, 210, 50, 102, 224, 210, 133, 131, 112, 211, 89, 196, 240, 212, 73, 181, 240, 213, 57, 209, 32, 214, 41, 194, 32, 215, 25, 179, 32, 216, 9, 164, 32, 216, 249, 149, 32, 217, 233, 134, 32, 220, 185, 89, 32, 221, 178, 132, 160, 222, 162, 117, 160, 223, 146, 102, 160, 224, 130, 87, 160, 225, 114, 72, 160, 226, 98, 57, 160, 227, 82, 42, 160, 228, 66, 27, 160, 229, 50, 12, 160, 230, 33, 253, 160, 231, 27, 41, 32, 232, 11, 26, 32, 232, 251, 11, 32, 233, 234, 252, 32, 234, 218, 237, 32, 235, 202, 222, 32, 236, 186, 207, 32, 237, 170, 192, 32, 238, 154, 177, 32, 239, 138, 162, 32, 240, 122, 147, 32, 241, 106, 132, 32, 242, 99, 175, 160, 243, 83, 160, 160, 244, 67, 145, 160, 245, 51, 130, 160, 246, 35, 115, 160, 247, 19, 100, 160, 248, 3, 85, 160, 248, 243, 70, 160, 12, 171, 42, 0, 13, 155, 27, 0, 14, 139, 12, 0, 15, 132, 55, 128, 16, 116, 40, 128, 17, 100, 25, 128, 18, 84, 24, 144, 19, 67, 251, 128, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 189, 160, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 0, 6, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 9, 8, 9, 8, 9, 8, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 12, 0, 0, 0, 27, 255, 255, 255, 255, 94, 61, 12, 29, 255, 255, 255, 255, 146, 230, 142, 128, 255, 255, 255, 255, 155, 75, 109, 112, 255, 255, 255, 255, 155, 254, 199, 128, 255, 255, 255, 255, 156, 156, 237, 112, 255, 255, 255, 255, 157, 201, 131, 112, 255, 255, 255, 255, 158, 127, 114, 112, 255, 255, 255, 255, 159, 170, 182, 240, 255, 255, 255, 255, 160, 95, 84, 112, 255, 255, 255, 255, 161, 139, 234, 112, 255, 255, 255, 255, 162, 65, 217, 112, 255, 255, 255, 255, 163, 110, 111, 112, 255, 255, 255, 255, 164, 35, 12, 240, 255, 255, 255, 255, 165, 79, 162, 240, 255, 255, 255, 255, 170, 5, 239, 112, 255, 255, 255, 255, 170, 244, 142, 240, 255, 255, 255, 255, 173, 201, 167, 240, 255, 255, 255, 255, 174, 167, 35, 240, 255, 255, 255, 255, 175, 160, 79, 112, 255, 255, 255, 255, 176, 135, 5, 240, 255, 255, 255, 255, 177, 137, 107, 240, 255, 255, 255, 255, 178, 112, 34, 112, 255, 255, 255, 255, 179, 114, 136, 112, 255, 255, 255, 255, 180, 80, 4, 112, 255, 255, 255, 255, 183, 50, 76, 112, 255, 255, 255, 255, 184, 15, 200, 112, 255, 255, 255, 255, 184, 255, 185, 112, 255, 255, 255, 255, 185, 239, 170, 112, 255, 255, 255, 255, 188, 200, 183, 240, 255, 255, 255, 255, 189, 184, 168, 240, 255, 255, 255, 255, 190, 159, 95, 112, 255, 255, 255, 255, 191, 152, 138, 240, 255, 255, 255, 255, 192, 154, 240, 240, 255, 255, 255, 255, 193, 120, 108, 240, 255, 255, 255, 255, 194, 104, 93, 240, 255, 255, 255, 255, 195, 88, 78, 240, 255, 255, 255, 255, 196, 63, 5, 112, 255, 255, 255, 255, 197, 56, 48, 240, 255, 255, 255, 255, 198, 58, 150, 240, 255, 255, 255, 255, 199, 88, 172, 112, 255, 255, 255, 255, 199, 217, 223, 112, 255, 255, 255, 255, 201, 1, 47, 112, 255, 255, 255, 255, 201, 241, 32, 112, 255, 255, 255, 255, 202, 226, 98, 240, 255, 255, 255, 255, 203, 181, 82, 240, 255, 255, 255, 255, 203, 236, 163, 224, 255, 255, 255, 255, 204, 128, 75, 224, 255, 255, 255, 255, 204, 220, 162, 240, 255, 255, 255, 255, 205, 149, 52, 240, 255, 255, 255, 255, 205, 195, 75, 96, 255, 255, 255, 255, 206, 114, 162, 224, 255, 255, 255, 255, 206, 197, 191, 112, 255, 255, 255, 255, 207, 117, 22, 240, 255, 255, 255, 255, 207, 172, 103, 224, 255, 255, 255, 255, 208, 82, 132, 224, 255, 255, 255, 255, 208, 165, 161, 112, 255, 255, 255, 255, 209, 84, 248, 240, 255, 255, 255, 255, 209, 140, 73, 224, 255, 255, 255, 255, 210, 50, 102, 224, 255, 255, 255, 255, 210, 133, 131, 112, 255, 255, 255, 255, 211, 89, 196, 240, 255, 255, 255, 255, 212, 73, 181, 240, 255, 255, 255, 255, 213, 57, 209, 32, 255, 255, 255, 255, 214, 41, 194, 32, 255, 255, 255, 255, 215, 25, 179, 32, 255, 255, 255, 255, 216, 9, 164, 32, 255, 255, 255, 255, 216, 249, 149, 32, 255, 255, 255, 255, 217, 233, 134, 32, 255, 255, 255, 255, 220, 185, 89, 32, 255, 255, 255, 255, 221, 178, 132, 160, 255, 255, 255, 255, 222, 162, 117, 160, 255, 255, 255, 255, 223, 146, 102, 160, 255, 255, 255, 255, 224, 130, 87, 160, 255, 255, 255, 255, 225, 114, 72, 160, 255, 255, 255, 255, 226, 98, 57, 160, 255, 255, 255, 255, 227, 82, 42, 160, 255, 255, 255, 255, 228, 66, 27, 160, 255, 255, 255, 255, 229, 50, 12, 160, 255, 255, 255, 255, 230, 33, 253, 160, 255, 255, 255, 255, 231, 27, 41, 32, 255, 255, 255, 255, 232, 11, 26, 32, 255, 255, 255, 255, 232, 251, 11, 32, 255, 255, 255, 255, 233, 234, 252, 32, 255, 255, 255, 255, 234, 218, 237, 32, 255, 255, 255, 255, 235, 202, 222, 32, 255, 255, 255, 255, 236, 186, 207, 32, 255, 255, 255, 255, 237, 170, 192, 32, 255, 255, 255, 255, 238, 154, 177, 32, 255, 255, 255, 255, 239, 138, 162, 32, 255, 255, 255, 255, 240, 122, 147, 32, 255, 255, 255, 255, 241, 106, 132, 32, 255, 255, 255, 255, 242, 99, 175, 160, 255, 255, 255, 255, 243, 83, 160, 160, 255, 255, 255, 255, 244, 67, 145, 160, 255, 255, 255, 255, 245, 51, 130, 160, 255, 255, 255, 255, 246, 35, 115, 160, 255, 255, 255, 255, 247, 19, 100, 160, 255, 255, 255, 255, 248, 3, 85, 160, 255, 255, 255, 255, 248, 243, 70, 160, 0, 0, 0, 0, 12, 171, 42, 0, 0, 0, 0, 0, 13, 155, 27, 0, 0, 0, 0, 0, 14, 139, 12, 0, 0, 0, 0, 0, 15, 132, 55, 128, 0, 0, 0, 0, 16, 116, 40, 128, 0, 0, 0, 0, 17, 100, 25, 128, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 67, 251, 128, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 189, 160, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 0, 6, 1, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 5, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 2, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 8, 9, 8, 9, 8, 9, 8, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 10, 6, 255, 255, 247, 99, 0, 0, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 0, 0, 28, 32, 1, 13, 0, 0, 0, 0, 0, 9, 0, 0, 14, 16, 0, 18, 0, 0, 14, 16, 0, 18, 0, 0, 28, 32, 1, 22, 0, 0, 14, 16, 1, 4, 0, 0, 0, 0, 0, 9, 76, 77, 84, 0, 87, 69, 83, 84, 0, 87, 69, 84, 0, 87, 69, 77, 84, 0, 67, 69, 84, 0, 67, 69, 83, 84, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/ROC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 195, 85, 73, 128, 210, 84, 89, 128, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 231, 153, 240, 218, 255, 38, 0, 219, 200, 205, 112, 220, 224, 89, 128, 221, 170, 0, 240, 222, 114, 115, 0, 223, 181, 100, 112, 224, 124, 133, 0, 225, 150, 151, 240, 226, 93, 184, 128, 227, 119, 203, 112, 228, 62, 236, 0, 229, 48, 32, 112, 230, 33, 113, 0, 231, 18, 165, 112, 232, 2, 164, 128, 232, 243, 216, 240, 233, 227, 216, 0, 234, 213, 12, 112, 235, 197, 11, 128, 236, 182, 63, 240, 237, 247, 252, 0, 238, 152, 196, 240, 239, 217, 47, 128, 240, 121, 248, 112, 7, 252, 86, 0, 8, 237, 138, 112, 9, 221, 137, 128, 10, 206, 189, 240, 17, 219, 161, 128, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 83, 84, 45, 56, 10}, + "zoneinfo/ROC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 128, 0, 0, 0, 195, 85, 73, 128, 210, 84, 89, 128, 211, 139, 123, 128, 212, 66, 173, 240, 213, 69, 34, 0, 214, 76, 191, 240, 215, 60, 191, 0, 216, 6, 102, 112, 217, 29, 242, 128, 217, 231, 153, 240, 218, 255, 38, 0, 219, 200, 205, 112, 220, 224, 89, 128, 221, 170, 0, 240, 222, 114, 115, 0, 223, 181, 100, 112, 224, 124, 133, 0, 225, 150, 151, 240, 226, 93, 184, 128, 227, 119, 203, 112, 228, 62, 236, 0, 229, 48, 32, 112, 230, 33, 113, 0, 231, 18, 165, 112, 232, 2, 164, 128, 232, 243, 216, 240, 233, 227, 216, 0, 234, 213, 12, 112, 235, 197, 11, 128, 236, 182, 63, 240, 237, 247, 252, 0, 238, 152, 196, 240, 239, 217, 47, 128, 240, 121, 248, 112, 7, 252, 86, 0, 8, 237, 138, 112, 9, 221, 137, 128, 10, 206, 189, 240, 17, 219, 161, 128, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 5, 0, 0, 0, 16, 255, 255, 255, 255, 116, 206, 240, 24, 255, 255, 255, 255, 195, 85, 73, 128, 255, 255, 255, 255, 210, 84, 89, 128, 255, 255, 255, 255, 211, 139, 123, 128, 255, 255, 255, 255, 212, 66, 173, 240, 255, 255, 255, 255, 213, 69, 34, 0, 255, 255, 255, 255, 214, 76, 191, 240, 255, 255, 255, 255, 215, 60, 191, 0, 255, 255, 255, 255, 216, 6, 102, 112, 255, 255, 255, 255, 217, 29, 242, 128, 255, 255, 255, 255, 217, 231, 153, 240, 255, 255, 255, 255, 218, 255, 38, 0, 255, 255, 255, 255, 219, 200, 205, 112, 255, 255, 255, 255, 220, 224, 89, 128, 255, 255, 255, 255, 221, 170, 0, 240, 255, 255, 255, 255, 222, 114, 115, 0, 255, 255, 255, 255, 223, 181, 100, 112, 255, 255, 255, 255, 224, 124, 133, 0, 255, 255, 255, 255, 225, 150, 151, 240, 255, 255, 255, 255, 226, 93, 184, 128, 255, 255, 255, 255, 227, 119, 203, 112, 255, 255, 255, 255, 228, 62, 236, 0, 255, 255, 255, 255, 229, 48, 32, 112, 255, 255, 255, 255, 230, 33, 113, 0, 255, 255, 255, 255, 231, 18, 165, 112, 255, 255, 255, 255, 232, 2, 164, 128, 255, 255, 255, 255, 232, 243, 216, 240, 255, 255, 255, 255, 233, 227, 216, 0, 255, 255, 255, 255, 234, 213, 12, 112, 255, 255, 255, 255, 235, 197, 11, 128, 255, 255, 255, 255, 236, 182, 63, 240, 255, 255, 255, 255, 237, 247, 252, 0, 255, 255, 255, 255, 238, 152, 196, 240, 255, 255, 255, 255, 239, 217, 47, 128, 255, 255, 255, 255, 240, 121, 248, 112, 0, 0, 0, 0, 7, 252, 86, 0, 0, 0, 0, 0, 8, 237, 138, 112, 0, 0, 0, 0, 9, 221, 137, 128, 0, 0, 0, 0, 10, 206, 189, 240, 0, 0, 0, 0, 17, 219, 161, 128, 0, 0, 0, 0, 18, 84, 221, 112, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, 113, 232, 0, 0, 0, 0, 112, 128, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 1, 12, 0, 0, 112, 128, 0, 4, 76, 77, 84, 0, 67, 83, 84, 0, 74, 83, 84, 0, 67, 68, 84, 0, 10, 67, 83, 84, 45, 56, 10}, - "zoneinfo/ROK": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 16, 139, 215, 240, 120, 146, 230, 22, 248, 210, 67, 39, 240, 226, 79, 41, 240, 228, 107, 183, 248, 229, 19, 24, 104, 230, 98, 3, 120, 231, 17, 76, 232, 232, 47, 112, 120, 232, 231, 244, 104, 234, 15, 82, 120, 234, 199, 214, 104, 235, 239, 52, 120, 236, 167, 184, 104, 237, 207, 22, 120, 238, 135, 154, 104, 240, 53, 113, 120, 32, 163, 96, 144, 33, 110, 103, 144, 34, 131, 66, 144, 35, 78, 73, 144, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 75, 83, 84, 45, 57, 10}, + "zoneinfo/ROK": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 16, 139, 215, 240, 120, 146, 230, 22, 248, 210, 67, 39, 240, 226, 79, 41, 240, 228, 107, 183, 248, 229, 19, 24, 104, 230, 98, 3, 120, 231, 17, 76, 232, 232, 47, 112, 120, 232, 231, 244, 104, 234, 15, 82, 120, 234, 199, 214, 104, 235, 239, 52, 120, 236, 167, 184, 104, 237, 207, 22, 120, 238, 135, 154, 104, 240, 53, 113, 120, 32, 163, 96, 144, 33, 110, 103, 144, 34, 131, 66, 144, 35, 78, 73, 144, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 6, 0, 0, 0, 16, 255, 255, 255, 255, 139, 215, 240, 120, 255, 255, 255, 255, 146, 230, 22, 248, 255, 255, 255, 255, 210, 67, 39, 240, 255, 255, 255, 255, 226, 79, 41, 240, 255, 255, 255, 255, 228, 107, 183, 248, 255, 255, 255, 255, 229, 19, 24, 104, 255, 255, 255, 255, 230, 98, 3, 120, 255, 255, 255, 255, 231, 17, 76, 232, 255, 255, 255, 255, 232, 47, 112, 120, 255, 255, 255, 255, 232, 231, 244, 104, 255, 255, 255, 255, 234, 15, 82, 120, 255, 255, 255, 255, 234, 199, 214, 104, 255, 255, 255, 255, 235, 239, 52, 120, 255, 255, 255, 255, 236, 167, 184, 104, 255, 255, 255, 255, 237, 207, 22, 120, 255, 255, 255, 255, 238, 135, 154, 104, 255, 255, 255, 255, 240, 53, 113, 120, 0, 0, 0, 0, 32, 163, 96, 144, 0, 0, 0, 0, 33, 110, 103, 144, 0, 0, 0, 0, 34, 131, 66, 144, 0, 0, 0, 0, 35, 78, 73, 144, 1, 2, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 3, 5, 3, 5, 3, 0, 0, 119, 8, 0, 0, 0, 0, 119, 136, 0, 4, 0, 0, 126, 144, 0, 8, 0, 0, 126, 144, 0, 4, 0, 0, 133, 152, 1, 12, 0, 0, 140, 160, 1, 12, 76, 77, 84, 0, 75, 83, 84, 0, 74, 83, 84, 0, 75, 68, 84, 0, 10, 75, 83, 84, 45, 57, 10}, - "zoneinfo/Singapore": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, + "zoneinfo/Singapore": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 128, 0, 0, 0, 134, 131, 133, 163, 186, 103, 78, 144, 192, 10, 228, 96, 202, 179, 229, 96, 203, 145, 95, 8, 210, 72, 109, 240, 22, 145, 245, 8, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 32, 255, 255, 255, 255, 126, 54, 83, 163, 255, 255, 255, 255, 134, 131, 133, 163, 255, 255, 255, 255, 186, 103, 78, 144, 255, 255, 255, 255, 192, 10, 228, 96, 255, 255, 255, 255, 202, 179, 229, 96, 255, 255, 255, 255, 203, 145, 95, 8, 255, 255, 255, 255, 210, 72, 109, 240, 0, 0, 0, 0, 22, 145, 245, 8, 0, 0, 0, 0, 127, 255, 255, 255, 1, 2, 3, 4, 5, 6, 5, 7, 7, 0, 0, 97, 93, 0, 0, 0, 0, 97, 93, 0, 4, 0, 0, 98, 112, 0, 8, 0, 0, 103, 32, 1, 12, 0, 0, 103, 32, 0, 12, 0, 0, 105, 120, 0, 18, 0, 0, 126, 144, 0, 24, 0, 0, 112, 128, 0, 28, 76, 77, 84, 0, 83, 77, 84, 0, 43, 48, 55, 0, 43, 48, 55, 50, 48, 0, 43, 48, 55, 51, 48, 0, 43, 48, 57, 0, 43, 48, 56, 0, 10, 60, 43, 48, 56, 62, 45, 56, 10}, - "zoneinfo/Turkey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 69, 152, 50, 224, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 3, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, + "zoneinfo/Turkey": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 11, 0, 0, 0, 25, 128, 0, 0, 0, 144, 139, 245, 152, 155, 12, 23, 96, 155, 213, 190, 208, 162, 101, 99, 224, 163, 123, 130, 80, 164, 78, 128, 96, 165, 63, 180, 208, 166, 37, 39, 224, 167, 39, 127, 208, 170, 40, 40, 96, 170, 225, 253, 208, 171, 249, 137, 224, 172, 195, 49, 80, 200, 127, 238, 96, 200, 255, 193, 208, 201, 74, 245, 96, 202, 206, 128, 80, 203, 203, 174, 96, 204, 229, 193, 80, 209, 113, 235, 224, 210, 107, 9, 80, 211, 162, 57, 96, 212, 67, 2, 80, 213, 76, 13, 224, 214, 41, 123, 208, 215, 43, 239, 224, 216, 9, 93, 208, 217, 2, 151, 96, 217, 233, 63, 208, 218, 239, 168, 96, 219, 210, 92, 80, 220, 212, 208, 96, 221, 179, 143, 208, 241, 244, 185, 96, 242, 100, 186, 208, 245, 104, 6, 96, 246, 31, 56, 208, 0, 160, 186, 224, 1, 107, 179, 208, 2, 128, 156, 224, 3, 75, 149, 208, 4, 105, 185, 96, 5, 52, 178, 80, 6, 110, 147, 112, 7, 57, 168, 128, 7, 251, 117, 0, 9, 25, 166, 160, 9, 219, 58, 224, 10, 240, 7, 208, 12, 16, 206, 96, 12, 217, 36, 80, 13, 164, 57, 96, 14, 166, 145, 80, 15, 132, 27, 96, 16, 134, 115, 80, 18, 103, 152, 192, 19, 77, 54, 0, 20, 71, 122, 192, 21, 35, 221, 128, 22, 39, 92, 192, 23, 3, 191, 128, 24, 7, 62, 192, 25, 137, 148, 80, 25, 220, 148, 192, 28, 198, 211, 208, 29, 155, 21, 80, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 9, 112, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 139, 131, 240, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 143, 221, 144, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 56, 190, 16, 84, 76, 71, 144, 85, 23, 78, 144, 86, 62, 158, 144, 86, 247, 48, 144, 87, 207, 46, 80, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 11, 0, 0, 0, 25, 255, 255, 255, 255, 86, 182, 200, 216, 255, 255, 255, 255, 144, 139, 245, 152, 255, 255, 255, 255, 155, 12, 23, 96, 255, 255, 255, 255, 155, 213, 190, 208, 255, 255, 255, 255, 162, 101, 99, 224, 255, 255, 255, 255, 163, 123, 130, 80, 255, 255, 255, 255, 164, 78, 128, 96, 255, 255, 255, 255, 165, 63, 180, 208, 255, 255, 255, 255, 166, 37, 39, 224, 255, 255, 255, 255, 167, 39, 127, 208, 255, 255, 255, 255, 170, 40, 40, 96, 255, 255, 255, 255, 170, 225, 253, 208, 255, 255, 255, 255, 171, 249, 137, 224, 255, 255, 255, 255, 172, 195, 49, 80, 255, 255, 255, 255, 200, 127, 238, 96, 255, 255, 255, 255, 200, 255, 193, 208, 255, 255, 255, 255, 201, 74, 245, 96, 255, 255, 255, 255, 202, 206, 128, 80, 255, 255, 255, 255, 203, 203, 174, 96, 255, 255, 255, 255, 204, 229, 193, 80, 255, 255, 255, 255, 209, 113, 235, 224, 255, 255, 255, 255, 210, 107, 9, 80, 255, 255, 255, 255, 211, 162, 57, 96, 255, 255, 255, 255, 212, 67, 2, 80, 255, 255, 255, 255, 213, 76, 13, 224, 255, 255, 255, 255, 214, 41, 123, 208, 255, 255, 255, 255, 215, 43, 239, 224, 255, 255, 255, 255, 216, 9, 93, 208, 255, 255, 255, 255, 217, 2, 151, 96, 255, 255, 255, 255, 217, 233, 63, 208, 255, 255, 255, 255, 218, 239, 168, 96, 255, 255, 255, 255, 219, 210, 92, 80, 255, 255, 255, 255, 220, 212, 208, 96, 255, 255, 255, 255, 221, 179, 143, 208, 255, 255, 255, 255, 241, 244, 185, 96, 255, 255, 255, 255, 242, 100, 186, 208, 255, 255, 255, 255, 245, 104, 6, 96, 255, 255, 255, 255, 246, 31, 56, 208, 0, 0, 0, 0, 0, 160, 186, 224, 0, 0, 0, 0, 1, 107, 179, 208, 0, 0, 0, 0, 2, 128, 156, 224, 0, 0, 0, 0, 3, 75, 149, 208, 0, 0, 0, 0, 4, 105, 185, 96, 0, 0, 0, 0, 5, 52, 178, 80, 0, 0, 0, 0, 6, 110, 147, 112, 0, 0, 0, 0, 7, 57, 168, 128, 0, 0, 0, 0, 7, 251, 117, 0, 0, 0, 0, 0, 9, 25, 166, 160, 0, 0, 0, 0, 9, 219, 58, 224, 0, 0, 0, 0, 10, 240, 7, 208, 0, 0, 0, 0, 12, 16, 206, 96, 0, 0, 0, 0, 12, 217, 36, 80, 0, 0, 0, 0, 13, 164, 57, 96, 0, 0, 0, 0, 14, 166, 145, 80, 0, 0, 0, 0, 15, 132, 27, 96, 0, 0, 0, 0, 16, 134, 115, 80, 0, 0, 0, 0, 18, 103, 152, 192, 0, 0, 0, 0, 19, 77, 54, 0, 0, 0, 0, 0, 20, 71, 122, 192, 0, 0, 0, 0, 21, 35, 221, 128, 0, 0, 0, 0, 22, 39, 92, 192, 0, 0, 0, 0, 23, 3, 191, 128, 0, 0, 0, 0, 24, 7, 62, 192, 0, 0, 0, 0, 25, 137, 148, 80, 0, 0, 0, 0, 25, 220, 148, 192, 0, 0, 0, 0, 28, 198, 211, 208, 0, 0, 0, 0, 29, 155, 21, 80, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 9, 112, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 139, 131, 240, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 143, 221, 144, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 56, 190, 16, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 62, 158, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 87, 207, 46, 80, 0, 0, 0, 0, 127, 255, 255, 255, 1, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 2, 3, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 5, 5, 0, 0, 27, 40, 0, 0, 0, 0, 27, 104, 0, 4, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 1, 8, 0, 0, 28, 32, 0, 13, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 73, 77, 84, 0, 69, 69, 83, 84, 0, 69, 69, 84, 0, 43, 48, 52, 0, 43, 48, 51, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 10, 60, 43, 48, 51, 62, 45, 51, 10}, - "zoneinfo/UCT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 67, 84, 0, 0, 0, 10, 85, 67, 84, 48, 10}, + "zoneinfo/UCT": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/US/Alaska": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 40, 128, 0, 0, 0, 203, 137, 54, 192, 210, 35, 244, 112, 210, 97, 66, 48, 250, 210, 71, 160, 254, 184, 99, 64, 255, 168, 70, 48, 0, 152, 69, 64, 1, 136, 40, 48, 2, 120, 39, 64, 3, 113, 68, 176, 4, 97, 67, 192, 5, 81, 38, 176, 6, 65, 37, 192, 7, 49, 8, 176, 7, 141, 95, 192, 9, 16, 234, 176, 9, 173, 219, 64, 10, 240, 204, 176, 11, 224, 203, 192, 12, 217, 233, 48, 13, 192, 173, 192, 14, 185, 203, 48, 15, 169, 202, 64, 16, 153, 173, 48, 17, 137, 172, 64, 18, 121, 143, 48, 19, 105, 142, 64, 20, 89, 113, 48, 21, 73, 112, 64, 22, 57, 83, 48, 23, 41, 82, 64, 24, 34, 111, 176, 25, 9, 52, 64, 26, 2, 81, 176, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 196, 248, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Alaska": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 40, 128, 0, 0, 0, 203, 137, 54, 192, 210, 35, 244, 112, 210, 97, 66, 48, 250, 210, 71, 160, 254, 184, 99, 64, 255, 168, 70, 48, 0, 152, 69, 64, 1, 136, 40, 48, 2, 120, 39, 64, 3, 113, 68, 176, 4, 97, 67, 192, 5, 81, 38, 176, 6, 65, 37, 192, 7, 49, 8, 176, 7, 141, 95, 192, 9, 16, 234, 176, 9, 173, 219, 64, 10, 240, 204, 176, 11, 224, 203, 192, 12, 217, 233, 48, 13, 192, 173, 192, 14, 185, 203, 48, 15, 169, 202, 64, 16, 153, 173, 48, 17, 137, 172, 64, 18, 121, 143, 48, 19, 105, 142, 64, 20, 89, 113, 48, 21, 73, 112, 64, 22, 57, 83, 48, 23, 41, 82, 64, 24, 34, 111, 176, 25, 9, 52, 64, 26, 2, 81, 176, 26, 43, 20, 16, 26, 242, 66, 176, 27, 226, 37, 160, 28, 210, 36, 176, 29, 194, 7, 160, 30, 178, 6, 176, 31, 161, 233, 160, 32, 118, 57, 48, 33, 129, 203, 160, 34, 86, 27, 48, 35, 106, 232, 32, 36, 53, 253, 48, 37, 74, 202, 32, 38, 21, 223, 48, 39, 42, 172, 32, 39, 254, 251, 176, 41, 10, 142, 32, 41, 222, 221, 176, 42, 234, 112, 32, 43, 190, 191, 176, 44, 211, 140, 160, 45, 158, 161, 176, 46, 179, 110, 160, 47, 126, 131, 176, 48, 147, 80, 160, 49, 103, 160, 48, 50, 115, 50, 160, 51, 71, 130, 48, 52, 83, 20, 160, 53, 39, 100, 48, 54, 50, 246, 160, 55, 7, 70, 48, 56, 28, 19, 32, 56, 231, 40, 48, 57, 251, 245, 32, 58, 199, 10, 48, 59, 219, 215, 32, 60, 176, 38, 176, 61, 187, 185, 32, 62, 144, 8, 176, 63, 155, 155, 32, 64, 111, 234, 176, 65, 132, 183, 160, 66, 79, 204, 176, 67, 100, 153, 160, 68, 47, 174, 176, 69, 68, 123, 160, 69, 243, 225, 48, 71, 45, 152, 32, 71, 211, 195, 48, 73, 13, 122, 32, 73, 179, 165, 48, 74, 237, 92, 32, 75, 156, 193, 176, 76, 214, 120, 160, 77, 124, 163, 176, 78, 182, 90, 160, 79, 92, 133, 176, 80, 150, 60, 160, 81, 60, 103, 176, 82, 118, 30, 160, 83, 28, 73, 176, 84, 86, 0, 160, 84, 252, 43, 176, 86, 53, 226, 160, 86, 229, 72, 48, 88, 30, 255, 32, 88, 197, 42, 48, 89, 254, 225, 32, 90, 165, 12, 48, 91, 222, 195, 32, 92, 132, 238, 48, 93, 190, 165, 32, 94, 100, 208, 48, 95, 158, 135, 32, 96, 77, 236, 176, 97, 135, 163, 160, 98, 45, 206, 176, 99, 103, 133, 160, 100, 13, 176, 176, 101, 71, 103, 160, 101, 237, 146, 176, 103, 39, 73, 160, 103, 205, 116, 176, 105, 7, 43, 160, 105, 173, 86, 176, 106, 231, 13, 160, 107, 150, 115, 48, 108, 208, 42, 32, 109, 118, 85, 48, 110, 176, 12, 32, 111, 86, 55, 48, 112, 143, 238, 32, 113, 54, 25, 48, 114, 111, 208, 32, 115, 21, 251, 48, 116, 79, 178, 32, 116, 255, 23, 176, 118, 56, 206, 160, 118, 222, 249, 176, 120, 24, 176, 160, 120, 190, 219, 176, 121, 248, 146, 160, 122, 158, 189, 176, 123, 216, 116, 160, 124, 126, 159, 176, 125, 184, 86, 160, 126, 94, 129, 176, 127, 152, 56, 160, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 196, 248, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 10, 0, 0, 0, 40, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 65, 72, 255, 255, 255, 255, 203, 137, 54, 192, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 66, 48, 255, 255, 255, 255, 250, 210, 71, 160, 255, 255, 255, 255, 254, 184, 99, 64, 255, 255, 255, 255, 255, 168, 70, 48, 0, 0, 0, 0, 0, 152, 69, 64, 0, 0, 0, 0, 1, 136, 40, 48, 0, 0, 0, 0, 2, 120, 39, 64, 0, 0, 0, 0, 3, 113, 68, 176, 0, 0, 0, 0, 4, 97, 67, 192, 0, 0, 0, 0, 5, 81, 38, 176, 0, 0, 0, 0, 6, 65, 37, 192, 0, 0, 0, 0, 7, 49, 8, 176, 0, 0, 0, 0, 7, 141, 95, 192, 0, 0, 0, 0, 9, 16, 234, 176, 0, 0, 0, 0, 9, 173, 219, 64, 0, 0, 0, 0, 10, 240, 204, 176, 0, 0, 0, 0, 11, 224, 203, 192, 0, 0, 0, 0, 12, 217, 233, 48, 0, 0, 0, 0, 13, 192, 173, 192, 0, 0, 0, 0, 14, 185, 203, 48, 0, 0, 0, 0, 15, 169, 202, 64, 0, 0, 0, 0, 16, 153, 173, 48, 0, 0, 0, 0, 17, 137, 172, 64, 0, 0, 0, 0, 18, 121, 143, 48, 0, 0, 0, 0, 19, 105, 142, 64, 0, 0, 0, 0, 20, 89, 113, 48, 0, 0, 0, 0, 21, 73, 112, 64, 0, 0, 0, 0, 22, 57, 83, 48, 0, 0, 0, 0, 23, 41, 82, 64, 0, 0, 0, 0, 24, 34, 111, 176, 0, 0, 0, 0, 25, 9, 52, 64, 0, 0, 0, 0, 26, 2, 81, 176, 0, 0, 0, 0, 26, 43, 20, 16, 0, 0, 0, 0, 26, 242, 66, 176, 0, 0, 0, 0, 27, 226, 37, 160, 0, 0, 0, 0, 28, 210, 36, 176, 0, 0, 0, 0, 29, 194, 7, 160, 0, 0, 0, 0, 30, 178, 6, 176, 0, 0, 0, 0, 31, 161, 233, 160, 0, 0, 0, 0, 32, 118, 57, 48, 0, 0, 0, 0, 33, 129, 203, 160, 0, 0, 0, 0, 34, 86, 27, 48, 0, 0, 0, 0, 35, 106, 232, 32, 0, 0, 0, 0, 36, 53, 253, 48, 0, 0, 0, 0, 37, 74, 202, 32, 0, 0, 0, 0, 38, 21, 223, 48, 0, 0, 0, 0, 39, 42, 172, 32, 0, 0, 0, 0, 39, 254, 251, 176, 0, 0, 0, 0, 41, 10, 142, 32, 0, 0, 0, 0, 41, 222, 221, 176, 0, 0, 0, 0, 42, 234, 112, 32, 0, 0, 0, 0, 43, 190, 191, 176, 0, 0, 0, 0, 44, 211, 140, 160, 0, 0, 0, 0, 45, 158, 161, 176, 0, 0, 0, 0, 46, 179, 110, 160, 0, 0, 0, 0, 47, 126, 131, 176, 0, 0, 0, 0, 48, 147, 80, 160, 0, 0, 0, 0, 49, 103, 160, 48, 0, 0, 0, 0, 50, 115, 50, 160, 0, 0, 0, 0, 51, 71, 130, 48, 0, 0, 0, 0, 52, 83, 20, 160, 0, 0, 0, 0, 53, 39, 100, 48, 0, 0, 0, 0, 54, 50, 246, 160, 0, 0, 0, 0, 55, 7, 70, 48, 0, 0, 0, 0, 56, 28, 19, 32, 0, 0, 0, 0, 56, 231, 40, 48, 0, 0, 0, 0, 57, 251, 245, 32, 0, 0, 0, 0, 58, 199, 10, 48, 0, 0, 0, 0, 59, 219, 215, 32, 0, 0, 0, 0, 60, 176, 38, 176, 0, 0, 0, 0, 61, 187, 185, 32, 0, 0, 0, 0, 62, 144, 8, 176, 0, 0, 0, 0, 63, 155, 155, 32, 0, 0, 0, 0, 64, 111, 234, 176, 0, 0, 0, 0, 65, 132, 183, 160, 0, 0, 0, 0, 66, 79, 204, 176, 0, 0, 0, 0, 67, 100, 153, 160, 0, 0, 0, 0, 68, 47, 174, 176, 0, 0, 0, 0, 69, 68, 123, 160, 0, 0, 0, 0, 69, 243, 225, 48, 0, 0, 0, 0, 71, 45, 152, 32, 0, 0, 0, 0, 71, 211, 195, 48, 0, 0, 0, 0, 73, 13, 122, 32, 0, 0, 0, 0, 73, 179, 165, 48, 0, 0, 0, 0, 74, 237, 92, 32, 0, 0, 0, 0, 75, 156, 193, 176, 0, 0, 0, 0, 76, 214, 120, 160, 0, 0, 0, 0, 77, 124, 163, 176, 0, 0, 0, 0, 78, 182, 90, 160, 0, 0, 0, 0, 79, 92, 133, 176, 0, 0, 0, 0, 80, 150, 60, 160, 0, 0, 0, 0, 81, 60, 103, 176, 0, 0, 0, 0, 82, 118, 30, 160, 0, 0, 0, 0, 83, 28, 73, 176, 0, 0, 0, 0, 84, 86, 0, 160, 0, 0, 0, 0, 84, 252, 43, 176, 0, 0, 0, 0, 86, 53, 226, 160, 0, 0, 0, 0, 86, 229, 72, 48, 0, 0, 0, 0, 88, 30, 255, 32, 0, 0, 0, 0, 88, 197, 42, 48, 0, 0, 0, 0, 89, 254, 225, 32, 0, 0, 0, 0, 90, 165, 12, 48, 0, 0, 0, 0, 91, 222, 195, 32, 0, 0, 0, 0, 92, 132, 238, 48, 0, 0, 0, 0, 93, 190, 165, 32, 0, 0, 0, 0, 94, 100, 208, 48, 0, 0, 0, 0, 95, 158, 135, 32, 0, 0, 0, 0, 96, 77, 236, 176, 0, 0, 0, 0, 97, 135, 163, 160, 0, 0, 0, 0, 98, 45, 206, 176, 0, 0, 0, 0, 99, 103, 133, 160, 0, 0, 0, 0, 100, 13, 176, 176, 0, 0, 0, 0, 101, 71, 103, 160, 0, 0, 0, 0, 101, 237, 146, 176, 0, 0, 0, 0, 103, 39, 73, 160, 0, 0, 0, 0, 103, 205, 116, 176, 0, 0, 0, 0, 105, 7, 43, 160, 0, 0, 0, 0, 105, 173, 86, 176, 0, 0, 0, 0, 106, 231, 13, 160, 0, 0, 0, 0, 107, 150, 115, 48, 0, 0, 0, 0, 108, 208, 42, 32, 0, 0, 0, 0, 109, 118, 85, 48, 0, 0, 0, 0, 110, 176, 12, 32, 0, 0, 0, 0, 111, 86, 55, 48, 0, 0, 0, 0, 112, 143, 238, 32, 0, 0, 0, 0, 113, 54, 25, 48, 0, 0, 0, 0, 114, 111, 208, 32, 0, 0, 0, 0, 115, 21, 251, 48, 0, 0, 0, 0, 116, 79, 178, 32, 0, 0, 0, 0, 116, 255, 23, 176, 0, 0, 0, 0, 118, 56, 206, 160, 0, 0, 0, 0, 118, 222, 249, 176, 0, 0, 0, 0, 120, 24, 176, 160, 0, 0, 0, 0, 120, 190, 219, 176, 0, 0, 0, 0, 121, 248, 146, 160, 0, 0, 0, 0, 122, 158, 189, 176, 0, 0, 0, 0, 123, 216, 116, 160, 0, 0, 0, 0, 124, 126, 159, 176, 0, 0, 0, 0, 125, 184, 86, 160, 0, 0, 0, 0, 126, 94, 129, 176, 0, 0, 0, 0, 127, 152, 56, 160, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 196, 248, 0, 0, 255, 255, 115, 120, 0, 0, 255, 255, 115, 96, 0, 4, 255, 255, 129, 112, 1, 8, 255, 255, 129, 112, 1, 12, 255, 255, 115, 96, 0, 16, 255, 255, 129, 112, 1, 21, 255, 255, 129, 112, 0, 26, 255, 255, 143, 128, 1, 30, 255, 255, 129, 112, 0, 35, 76, 77, 84, 0, 65, 83, 84, 0, 65, 87, 84, 0, 65, 80, 84, 0, 65, 72, 83, 84, 0, 65, 72, 68, 84, 0, 89, 83, 84, 0, 65, 75, 68, 84, 0, 65, 75, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 65, 75, 83, 84, 57, 65, 75, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Aleutian": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 171, 226, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Aleutian": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 9, 0, 0, 0, 33, 128, 0, 0, 0, 203, 137, 68, 208, 210, 35, 244, 112, 210, 97, 80, 64, 250, 210, 85, 176, 254, 184, 113, 80, 255, 168, 84, 64, 0, 152, 83, 80, 1, 136, 54, 64, 2, 120, 53, 80, 3, 113, 82, 192, 4, 97, 81, 208, 5, 81, 52, 192, 6, 65, 51, 208, 7, 49, 22, 192, 7, 141, 109, 208, 9, 16, 248, 192, 9, 173, 233, 80, 10, 240, 218, 192, 11, 224, 217, 208, 12, 217, 247, 64, 13, 192, 187, 208, 14, 185, 217, 64, 15, 169, 216, 80, 16, 153, 187, 64, 17, 137, 186, 80, 18, 121, 157, 64, 19, 105, 156, 80, 20, 89, 127, 64, 21, 73, 126, 80, 22, 57, 97, 64, 23, 41, 96, 80, 24, 34, 125, 192, 25, 9, 66, 80, 26, 2, 95, 192, 26, 43, 34, 32, 26, 242, 80, 192, 27, 226, 51, 176, 28, 210, 50, 192, 29, 194, 21, 176, 30, 178, 20, 192, 31, 161, 247, 176, 32, 118, 71, 64, 33, 129, 217, 176, 34, 86, 41, 64, 35, 106, 246, 48, 36, 54, 11, 64, 37, 74, 216, 48, 38, 21, 237, 64, 39, 42, 186, 48, 39, 255, 9, 192, 41, 10, 156, 48, 41, 222, 235, 192, 42, 234, 126, 48, 43, 190, 205, 192, 44, 211, 154, 176, 45, 158, 175, 192, 46, 179, 124, 176, 47, 126, 145, 192, 48, 147, 94, 176, 49, 103, 174, 64, 50, 115, 64, 176, 51, 71, 144, 64, 52, 83, 34, 176, 53, 39, 114, 64, 54, 51, 4, 176, 55, 7, 84, 64, 56, 28, 33, 48, 56, 231, 54, 64, 57, 252, 3, 48, 58, 199, 24, 64, 59, 219, 229, 48, 60, 176, 52, 192, 61, 187, 199, 48, 62, 144, 22, 192, 63, 155, 169, 48, 64, 111, 248, 192, 65, 132, 197, 176, 66, 79, 218, 192, 67, 100, 167, 176, 68, 47, 188, 192, 69, 68, 137, 176, 69, 243, 239, 64, 71, 45, 166, 48, 71, 211, 209, 64, 73, 13, 136, 48, 73, 179, 179, 64, 74, 237, 106, 48, 75, 156, 207, 192, 76, 214, 134, 176, 77, 124, 177, 192, 78, 182, 104, 176, 79, 92, 147, 192, 80, 150, 74, 176, 81, 60, 117, 192, 82, 118, 44, 176, 83, 28, 87, 192, 84, 86, 14, 176, 84, 252, 57, 192, 86, 53, 240, 176, 86, 229, 86, 64, 88, 31, 13, 48, 88, 197, 56, 64, 89, 254, 239, 48, 90, 165, 26, 64, 91, 222, 209, 48, 92, 132, 252, 64, 93, 190, 179, 48, 94, 100, 222, 64, 95, 158, 149, 48, 96, 77, 250, 192, 97, 135, 177, 176, 98, 45, 220, 192, 99, 103, 147, 176, 100, 13, 190, 192, 101, 71, 117, 176, 101, 237, 160, 192, 103, 39, 87, 176, 103, 205, 130, 192, 105, 7, 57, 176, 105, 173, 100, 192, 106, 231, 27, 176, 107, 150, 129, 64, 108, 208, 56, 48, 109, 118, 99, 64, 110, 176, 26, 48, 111, 86, 69, 64, 112, 143, 252, 48, 113, 54, 39, 64, 114, 111, 222, 48, 115, 22, 9, 64, 116, 79, 192, 48, 116, 255, 37, 192, 118, 56, 220, 176, 118, 223, 7, 192, 120, 24, 190, 176, 120, 190, 233, 192, 121, 248, 160, 176, 122, 158, 203, 192, 123, 216, 130, 176, 124, 126, 173, 192, 125, 184, 100, 176, 126, 94, 143, 192, 127, 152, 70, 176, 1, 2, 3, 1, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 8, 0, 0, 171, 226, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 10, 0, 0, 0, 33, 255, 255, 255, 255, 63, 194, 253, 209, 255, 255, 255, 255, 125, 135, 90, 94, 255, 255, 255, 255, 203, 137, 68, 208, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 80, 64, 255, 255, 255, 255, 250, 210, 85, 176, 255, 255, 255, 255, 254, 184, 113, 80, 255, 255, 255, 255, 255, 168, 84, 64, 0, 0, 0, 0, 0, 152, 83, 80, 0, 0, 0, 0, 1, 136, 54, 64, 0, 0, 0, 0, 2, 120, 53, 80, 0, 0, 0, 0, 3, 113, 82, 192, 0, 0, 0, 0, 4, 97, 81, 208, 0, 0, 0, 0, 5, 81, 52, 192, 0, 0, 0, 0, 6, 65, 51, 208, 0, 0, 0, 0, 7, 49, 22, 192, 0, 0, 0, 0, 7, 141, 109, 208, 0, 0, 0, 0, 9, 16, 248, 192, 0, 0, 0, 0, 9, 173, 233, 80, 0, 0, 0, 0, 10, 240, 218, 192, 0, 0, 0, 0, 11, 224, 217, 208, 0, 0, 0, 0, 12, 217, 247, 64, 0, 0, 0, 0, 13, 192, 187, 208, 0, 0, 0, 0, 14, 185, 217, 64, 0, 0, 0, 0, 15, 169, 216, 80, 0, 0, 0, 0, 16, 153, 187, 64, 0, 0, 0, 0, 17, 137, 186, 80, 0, 0, 0, 0, 18, 121, 157, 64, 0, 0, 0, 0, 19, 105, 156, 80, 0, 0, 0, 0, 20, 89, 127, 64, 0, 0, 0, 0, 21, 73, 126, 80, 0, 0, 0, 0, 22, 57, 97, 64, 0, 0, 0, 0, 23, 41, 96, 80, 0, 0, 0, 0, 24, 34, 125, 192, 0, 0, 0, 0, 25, 9, 66, 80, 0, 0, 0, 0, 26, 2, 95, 192, 0, 0, 0, 0, 26, 43, 34, 32, 0, 0, 0, 0, 26, 242, 80, 192, 0, 0, 0, 0, 27, 226, 51, 176, 0, 0, 0, 0, 28, 210, 50, 192, 0, 0, 0, 0, 29, 194, 21, 176, 0, 0, 0, 0, 30, 178, 20, 192, 0, 0, 0, 0, 31, 161, 247, 176, 0, 0, 0, 0, 32, 118, 71, 64, 0, 0, 0, 0, 33, 129, 217, 176, 0, 0, 0, 0, 34, 86, 41, 64, 0, 0, 0, 0, 35, 106, 246, 48, 0, 0, 0, 0, 36, 54, 11, 64, 0, 0, 0, 0, 37, 74, 216, 48, 0, 0, 0, 0, 38, 21, 237, 64, 0, 0, 0, 0, 39, 42, 186, 48, 0, 0, 0, 0, 39, 255, 9, 192, 0, 0, 0, 0, 41, 10, 156, 48, 0, 0, 0, 0, 41, 222, 235, 192, 0, 0, 0, 0, 42, 234, 126, 48, 0, 0, 0, 0, 43, 190, 205, 192, 0, 0, 0, 0, 44, 211, 154, 176, 0, 0, 0, 0, 45, 158, 175, 192, 0, 0, 0, 0, 46, 179, 124, 176, 0, 0, 0, 0, 47, 126, 145, 192, 0, 0, 0, 0, 48, 147, 94, 176, 0, 0, 0, 0, 49, 103, 174, 64, 0, 0, 0, 0, 50, 115, 64, 176, 0, 0, 0, 0, 51, 71, 144, 64, 0, 0, 0, 0, 52, 83, 34, 176, 0, 0, 0, 0, 53, 39, 114, 64, 0, 0, 0, 0, 54, 51, 4, 176, 0, 0, 0, 0, 55, 7, 84, 64, 0, 0, 0, 0, 56, 28, 33, 48, 0, 0, 0, 0, 56, 231, 54, 64, 0, 0, 0, 0, 57, 252, 3, 48, 0, 0, 0, 0, 58, 199, 24, 64, 0, 0, 0, 0, 59, 219, 229, 48, 0, 0, 0, 0, 60, 176, 52, 192, 0, 0, 0, 0, 61, 187, 199, 48, 0, 0, 0, 0, 62, 144, 22, 192, 0, 0, 0, 0, 63, 155, 169, 48, 0, 0, 0, 0, 64, 111, 248, 192, 0, 0, 0, 0, 65, 132, 197, 176, 0, 0, 0, 0, 66, 79, 218, 192, 0, 0, 0, 0, 67, 100, 167, 176, 0, 0, 0, 0, 68, 47, 188, 192, 0, 0, 0, 0, 69, 68, 137, 176, 0, 0, 0, 0, 69, 243, 239, 64, 0, 0, 0, 0, 71, 45, 166, 48, 0, 0, 0, 0, 71, 211, 209, 64, 0, 0, 0, 0, 73, 13, 136, 48, 0, 0, 0, 0, 73, 179, 179, 64, 0, 0, 0, 0, 74, 237, 106, 48, 0, 0, 0, 0, 75, 156, 207, 192, 0, 0, 0, 0, 76, 214, 134, 176, 0, 0, 0, 0, 77, 124, 177, 192, 0, 0, 0, 0, 78, 182, 104, 176, 0, 0, 0, 0, 79, 92, 147, 192, 0, 0, 0, 0, 80, 150, 74, 176, 0, 0, 0, 0, 81, 60, 117, 192, 0, 0, 0, 0, 82, 118, 44, 176, 0, 0, 0, 0, 83, 28, 87, 192, 0, 0, 0, 0, 84, 86, 14, 176, 0, 0, 0, 0, 84, 252, 57, 192, 0, 0, 0, 0, 86, 53, 240, 176, 0, 0, 0, 0, 86, 229, 86, 64, 0, 0, 0, 0, 88, 31, 13, 48, 0, 0, 0, 0, 88, 197, 56, 64, 0, 0, 0, 0, 89, 254, 239, 48, 0, 0, 0, 0, 90, 165, 26, 64, 0, 0, 0, 0, 91, 222, 209, 48, 0, 0, 0, 0, 92, 132, 252, 64, 0, 0, 0, 0, 93, 190, 179, 48, 0, 0, 0, 0, 94, 100, 222, 64, 0, 0, 0, 0, 95, 158, 149, 48, 0, 0, 0, 0, 96, 77, 250, 192, 0, 0, 0, 0, 97, 135, 177, 176, 0, 0, 0, 0, 98, 45, 220, 192, 0, 0, 0, 0, 99, 103, 147, 176, 0, 0, 0, 0, 100, 13, 190, 192, 0, 0, 0, 0, 101, 71, 117, 176, 0, 0, 0, 0, 101, 237, 160, 192, 0, 0, 0, 0, 103, 39, 87, 176, 0, 0, 0, 0, 103, 205, 130, 192, 0, 0, 0, 0, 105, 7, 57, 176, 0, 0, 0, 0, 105, 173, 100, 192, 0, 0, 0, 0, 106, 231, 27, 176, 0, 0, 0, 0, 107, 150, 129, 64, 0, 0, 0, 0, 108, 208, 56, 48, 0, 0, 0, 0, 109, 118, 99, 64, 0, 0, 0, 0, 110, 176, 26, 48, 0, 0, 0, 0, 111, 86, 69, 64, 0, 0, 0, 0, 112, 143, 252, 48, 0, 0, 0, 0, 113, 54, 39, 64, 0, 0, 0, 0, 114, 111, 222, 48, 0, 0, 0, 0, 115, 22, 9, 64, 0, 0, 0, 0, 116, 79, 192, 48, 0, 0, 0, 0, 116, 255, 37, 192, 0, 0, 0, 0, 118, 56, 220, 176, 0, 0, 0, 0, 118, 223, 7, 192, 0, 0, 0, 0, 120, 24, 190, 176, 0, 0, 0, 0, 120, 190, 233, 192, 0, 0, 0, 0, 121, 248, 160, 176, 0, 0, 0, 0, 122, 158, 203, 192, 0, 0, 0, 0, 123, 216, 130, 176, 0, 0, 0, 0, 124, 126, 173, 192, 0, 0, 0, 0, 125, 184, 100, 176, 0, 0, 0, 0, 126, 94, 143, 192, 0, 0, 0, 0, 127, 152, 70, 176, 1, 2, 3, 4, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 7, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 171, 226, 0, 0, 255, 255, 90, 98, 0, 0, 255, 255, 101, 80, 0, 4, 255, 255, 115, 96, 1, 8, 255, 255, 115, 96, 1, 12, 255, 255, 101, 80, 0, 16, 255, 255, 115, 96, 1, 20, 255, 255, 115, 96, 0, 24, 255, 255, 129, 112, 1, 29, 255, 255, 115, 96, 0, 25, 76, 77, 84, 0, 78, 83, 84, 0, 78, 87, 84, 0, 78, 80, 84, 0, 66, 83, 84, 0, 66, 68, 84, 0, 65, 72, 83, 84, 0, 72, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 10, 72, 83, 84, 49, 48, 72, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Arizona": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 207, 23, 223, 28, 207, 143, 229, 172, 208, 129, 26, 28, 250, 248, 117, 16, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 84, 55, 10}, + "zoneinfo/US/Arizona": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 203, 137, 12, 144, 207, 23, 223, 28, 207, 143, 229, 172, 208, 129, 26, 28, 250, 248, 117, 16, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 16, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 207, 23, 223, 28, 255, 255, 255, 255, 207, 143, 229, 172, 255, 255, 255, 255, 208, 129, 26, 28, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 2, 1, 2, 1, 2, 3, 2, 3, 2, 1, 2, 255, 255, 150, 238, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 10, 77, 83, 84, 55, 10}, - "zoneinfo/US/Central": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 162, 203, 116, 0, 163, 131, 247, 240, 164, 69, 210, 128, 165, 99, 217, 240, 166, 83, 217, 0, 167, 21, 151, 112, 168, 51, 187, 0, 168, 254, 179, 240, 170, 19, 157, 0, 170, 222, 149, 240, 171, 243, 127, 0, 172, 190, 119, 240, 173, 211, 97, 0, 174, 158, 89, 240, 175, 179, 67, 0, 176, 126, 59, 240, 177, 156, 95, 128, 178, 103, 88, 112, 179, 124, 65, 128, 180, 71, 58, 112, 181, 92, 35, 128, 182, 39, 28, 112, 183, 60, 5, 128, 184, 6, 254, 112, 185, 27, 231, 128, 185, 230, 224, 112, 187, 5, 4, 0, 187, 198, 194, 112, 188, 228, 230, 0, 189, 175, 222, 240, 190, 196, 200, 0, 191, 143, 192, 240, 192, 90, 214, 0, 193, 176, 60, 112, 194, 132, 140, 0, 195, 79, 132, 240, 196, 100, 110, 0, 197, 47, 102, 240, 198, 77, 138, 128, 199, 15, 72, 240, 200, 45, 108, 128, 200, 248, 101, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 248, 40, 133, 240, 249, 15, 74, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Central": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 162, 203, 116, 0, 163, 131, 247, 240, 164, 69, 210, 128, 165, 99, 217, 240, 166, 83, 217, 0, 167, 21, 151, 112, 168, 51, 187, 0, 168, 254, 179, 240, 170, 19, 157, 0, 170, 222, 149, 240, 171, 243, 127, 0, 172, 190, 119, 240, 173, 211, 97, 0, 174, 158, 89, 240, 175, 179, 67, 0, 176, 126, 59, 240, 177, 156, 95, 128, 178, 103, 88, 112, 179, 124, 65, 128, 180, 71, 58, 112, 181, 92, 35, 128, 182, 39, 28, 112, 183, 60, 5, 128, 184, 6, 254, 112, 185, 27, 231, 128, 185, 230, 224, 112, 187, 5, 4, 0, 187, 198, 194, 112, 188, 228, 230, 0, 189, 175, 222, 240, 190, 196, 200, 0, 191, 143, 192, 240, 192, 90, 214, 0, 193, 176, 60, 112, 194, 132, 140, 0, 195, 79, 132, 240, 196, 100, 110, 0, 197, 47, 102, 240, 198, 77, 138, 128, 199, 15, 72, 240, 200, 45, 108, 128, 200, 248, 101, 112, 202, 13, 78, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 233, 23, 0, 240, 234, 7, 0, 0, 234, 246, 226, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 242, 127, 165, 112, 243, 111, 164, 128, 244, 95, 135, 112, 245, 79, 134, 128, 246, 63, 105, 112, 247, 47, 104, 128, 248, 40, 133, 240, 249, 15, 74, 128, 250, 8, 103, 240, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 41, 222, 179, 128, 42, 234, 69, 240, 43, 190, 149, 128, 44, 211, 98, 112, 45, 158, 119, 128, 46, 179, 68, 112, 47, 126, 89, 128, 48, 147, 38, 112, 49, 103, 118, 0, 50, 115, 8, 112, 51, 71, 88, 0, 52, 82, 234, 112, 53, 39, 58, 0, 54, 50, 204, 112, 55, 7, 28, 0, 56, 27, 232, 240, 56, 230, 254, 0, 57, 251, 202, 240, 58, 198, 224, 0, 59, 219, 172, 240, 60, 175, 252, 128, 61, 187, 142, 240, 62, 143, 222, 128, 63, 155, 112, 240, 64, 111, 192, 128, 65, 132, 141, 112, 66, 79, 162, 128, 67, 100, 111, 112, 68, 47, 132, 128, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 162, 203, 116, 0, 255, 255, 255, 255, 163, 131, 247, 240, 255, 255, 255, 255, 164, 69, 210, 128, 255, 255, 255, 255, 165, 99, 217, 240, 255, 255, 255, 255, 166, 83, 217, 0, 255, 255, 255, 255, 167, 21, 151, 112, 255, 255, 255, 255, 168, 51, 187, 0, 255, 255, 255, 255, 168, 254, 179, 240, 255, 255, 255, 255, 170, 19, 157, 0, 255, 255, 255, 255, 170, 222, 149, 240, 255, 255, 255, 255, 171, 243, 127, 0, 255, 255, 255, 255, 172, 190, 119, 240, 255, 255, 255, 255, 173, 211, 97, 0, 255, 255, 255, 255, 174, 158, 89, 240, 255, 255, 255, 255, 175, 179, 67, 0, 255, 255, 255, 255, 176, 126, 59, 240, 255, 255, 255, 255, 177, 156, 95, 128, 255, 255, 255, 255, 178, 103, 88, 112, 255, 255, 255, 255, 179, 124, 65, 128, 255, 255, 255, 255, 180, 71, 58, 112, 255, 255, 255, 255, 181, 92, 35, 128, 255, 255, 255, 255, 182, 39, 28, 112, 255, 255, 255, 255, 183, 60, 5, 128, 255, 255, 255, 255, 184, 6, 254, 112, 255, 255, 255, 255, 185, 27, 231, 128, 255, 255, 255, 255, 185, 230, 224, 112, 255, 255, 255, 255, 187, 5, 4, 0, 255, 255, 255, 255, 187, 198, 194, 112, 255, 255, 255, 255, 188, 228, 230, 0, 255, 255, 255, 255, 189, 175, 222, 240, 255, 255, 255, 255, 190, 196, 200, 0, 255, 255, 255, 255, 191, 143, 192, 240, 255, 255, 255, 255, 192, 90, 214, 0, 255, 255, 255, 255, 193, 176, 60, 112, 255, 255, 255, 255, 194, 132, 140, 0, 255, 255, 255, 255, 195, 79, 132, 240, 255, 255, 255, 255, 196, 100, 110, 0, 255, 255, 255, 255, 197, 47, 102, 240, 255, 255, 255, 255, 198, 77, 138, 128, 255, 255, 255, 255, 199, 15, 72, 240, 255, 255, 255, 255, 200, 45, 108, 128, 255, 255, 255, 255, 200, 248, 101, 112, 255, 255, 255, 255, 202, 13, 78, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 87, 60, 240, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 233, 23, 0, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 246, 226, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 159, 195, 112, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 242, 127, 165, 112, 255, 255, 255, 255, 243, 111, 164, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 245, 79, 134, 128, 255, 255, 255, 255, 246, 63, 105, 112, 255, 255, 255, 255, 247, 47, 104, 128, 255, 255, 255, 255, 248, 40, 133, 240, 255, 255, 255, 255, 249, 15, 74, 128, 255, 255, 255, 255, 250, 8, 103, 240, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 41, 222, 179, 128, 0, 0, 0, 0, 42, 234, 69, 240, 0, 0, 0, 0, 43, 190, 149, 128, 0, 0, 0, 0, 44, 211, 98, 112, 0, 0, 0, 0, 45, 158, 119, 128, 0, 0, 0, 0, 46, 179, 68, 112, 0, 0, 0, 0, 47, 126, 89, 128, 0, 0, 0, 0, 48, 147, 38, 112, 0, 0, 0, 0, 49, 103, 118, 0, 0, 0, 0, 0, 50, 115, 8, 112, 0, 0, 0, 0, 51, 71, 88, 0, 0, 0, 0, 0, 52, 82, 234, 112, 0, 0, 0, 0, 53, 39, 58, 0, 0, 0, 0, 0, 54, 50, 204, 112, 0, 0, 0, 0, 55, 7, 28, 0, 0, 0, 0, 0, 56, 27, 232, 240, 0, 0, 0, 0, 56, 230, 254, 0, 0, 0, 0, 0, 57, 251, 202, 240, 0, 0, 0, 0, 58, 198, 224, 0, 0, 0, 0, 0, 59, 219, 172, 240, 0, 0, 0, 0, 60, 175, 252, 128, 0, 0, 0, 0, 61, 187, 142, 240, 0, 0, 0, 0, 62, 143, 222, 128, 0, 0, 0, 0, 63, 155, 112, 240, 0, 0, 0, 0, 64, 111, 192, 128, 0, 0, 0, 0, 65, 132, 141, 112, 0, 0, 0, 0, 66, 79, 162, 128, 0, 0, 0, 0, 67, 100, 111, 112, 0, 0, 0, 0, 68, 47, 132, 128, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 173, 212, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 0, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 1, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/East-Indiana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/East-Indiana": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 202, 87, 34, 128, 202, 216, 71, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 211, 117, 243, 0, 212, 64, 235, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 232, 242, 22, 240, 234, 7, 0, 0, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 7, 0, 0, 0, 28, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 202, 87, 34, 128, 255, 255, 255, 255, 202, 216, 71, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 211, 117, 243, 0, 255, 255, 255, 255, 212, 64, 235, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 255, 255, 175, 58, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 199, 192, 1, 24, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Eastern": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 162, 101, 226, 112, 163, 131, 233, 224, 164, 106, 174, 112, 165, 53, 167, 96, 166, 83, 202, 240, 167, 21, 137, 96, 168, 51, 172, 240, 168, 254, 165, 224, 170, 19, 142, 240, 170, 222, 135, 224, 171, 243, 112, 240, 172, 190, 105, 224, 173, 211, 82, 240, 174, 158, 75, 224, 175, 179, 52, 240, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 27, 217, 112, 185, 230, 210, 96, 187, 4, 245, 240, 187, 198, 180, 96, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 200, 248, 87, 96, 202, 13, 64, 112, 202, 216, 57, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 198, 240, 214, 32, 191, 224, 215, 53, 168, 240, 216, 0, 161, 224, 217, 21, 138, 240, 217, 224, 131, 224, 218, 254, 167, 112, 219, 192, 101, 224, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 87, 46, 224, 230, 71, 45, 240, 231, 55, 16, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Eastern": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 30, 112, 159, 186, 235, 96, 160, 134, 0, 112, 161, 154, 205, 96, 162, 101, 226, 112, 163, 131, 233, 224, 164, 106, 174, 112, 165, 53, 167, 96, 166, 83, 202, 240, 167, 21, 137, 96, 168, 51, 172, 240, 168, 254, 165, 224, 170, 19, 142, 240, 170, 222, 135, 224, 171, 243, 112, 240, 172, 190, 105, 224, 173, 211, 82, 240, 174, 158, 75, 224, 175, 179, 52, 240, 176, 126, 45, 224, 177, 156, 81, 112, 178, 103, 74, 96, 179, 124, 51, 112, 180, 71, 44, 96, 181, 92, 21, 112, 182, 39, 14, 96, 183, 59, 247, 112, 184, 6, 240, 96, 185, 27, 217, 112, 185, 230, 210, 96, 187, 4, 245, 240, 187, 198, 180, 96, 188, 228, 215, 240, 189, 175, 208, 224, 190, 196, 185, 240, 191, 143, 178, 224, 192, 164, 155, 240, 193, 111, 148, 224, 194, 132, 125, 240, 195, 79, 118, 224, 196, 100, 95, 240, 197, 47, 88, 224, 198, 77, 124, 112, 199, 15, 58, 224, 200, 45, 94, 112, 200, 248, 87, 96, 202, 13, 64, 112, 202, 216, 57, 96, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 211, 117, 228, 240, 212, 64, 221, 224, 213, 85, 198, 240, 214, 32, 191, 224, 215, 53, 168, 240, 216, 0, 161, 224, 217, 21, 138, 240, 217, 224, 131, 224, 218, 254, 167, 112, 219, 192, 101, 224, 220, 222, 137, 112, 221, 169, 130, 96, 222, 190, 107, 112, 223, 137, 100, 96, 224, 158, 77, 112, 225, 105, 70, 96, 226, 126, 47, 112, 227, 73, 40, 96, 228, 94, 17, 112, 229, 87, 46, 224, 230, 71, 45, 240, 231, 55, 16, 224, 232, 39, 15, 240, 233, 22, 242, 224, 234, 6, 241, 240, 234, 246, 212, 224, 235, 230, 211, 240, 236, 214, 182, 224, 237, 198, 181, 240, 238, 191, 211, 96, 239, 175, 210, 112, 240, 159, 181, 96, 241, 143, 180, 112, 242, 127, 151, 96, 243, 111, 150, 112, 244, 95, 121, 96, 245, 79, 120, 112, 246, 63, 91, 96, 247, 47, 90, 112, 248, 40, 119, 224, 249, 15, 60, 112, 250, 8, 89, 224, 250, 248, 88, 240, 251, 232, 59, 224, 252, 216, 58, 240, 253, 200, 29, 224, 254, 184, 28, 240, 255, 167, 255, 224, 0, 151, 254, 240, 1, 135, 225, 224, 2, 119, 224, 240, 3, 112, 254, 96, 4, 96, 253, 112, 5, 80, 224, 96, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 9, 173, 148, 240, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 3, 240, 144, 255, 255, 255, 255, 158, 166, 30, 112, 255, 255, 255, 255, 159, 186, 235, 96, 255, 255, 255, 255, 160, 134, 0, 112, 255, 255, 255, 255, 161, 154, 205, 96, 255, 255, 255, 255, 162, 101, 226, 112, 255, 255, 255, 255, 163, 131, 233, 224, 255, 255, 255, 255, 164, 106, 174, 112, 255, 255, 255, 255, 165, 53, 167, 96, 255, 255, 255, 255, 166, 83, 202, 240, 255, 255, 255, 255, 167, 21, 137, 96, 255, 255, 255, 255, 168, 51, 172, 240, 255, 255, 255, 255, 168, 254, 165, 224, 255, 255, 255, 255, 170, 19, 142, 240, 255, 255, 255, 255, 170, 222, 135, 224, 255, 255, 255, 255, 171, 243, 112, 240, 255, 255, 255, 255, 172, 190, 105, 224, 255, 255, 255, 255, 173, 211, 82, 240, 255, 255, 255, 255, 174, 158, 75, 224, 255, 255, 255, 255, 175, 179, 52, 240, 255, 255, 255, 255, 176, 126, 45, 224, 255, 255, 255, 255, 177, 156, 81, 112, 255, 255, 255, 255, 178, 103, 74, 96, 255, 255, 255, 255, 179, 124, 51, 112, 255, 255, 255, 255, 180, 71, 44, 96, 255, 255, 255, 255, 181, 92, 21, 112, 255, 255, 255, 255, 182, 39, 14, 96, 255, 255, 255, 255, 183, 59, 247, 112, 255, 255, 255, 255, 184, 6, 240, 96, 255, 255, 255, 255, 185, 27, 217, 112, 255, 255, 255, 255, 185, 230, 210, 96, 255, 255, 255, 255, 187, 4, 245, 240, 255, 255, 255, 255, 187, 198, 180, 96, 255, 255, 255, 255, 188, 228, 215, 240, 255, 255, 255, 255, 189, 175, 208, 224, 255, 255, 255, 255, 190, 196, 185, 240, 255, 255, 255, 255, 191, 143, 178, 224, 255, 255, 255, 255, 192, 164, 155, 240, 255, 255, 255, 255, 193, 111, 148, 224, 255, 255, 255, 255, 194, 132, 125, 240, 255, 255, 255, 255, 195, 79, 118, 224, 255, 255, 255, 255, 196, 100, 95, 240, 255, 255, 255, 255, 197, 47, 88, 224, 255, 255, 255, 255, 198, 77, 124, 112, 255, 255, 255, 255, 199, 15, 58, 224, 255, 255, 255, 255, 200, 45, 94, 112, 255, 255, 255, 255, 200, 248, 87, 96, 255, 255, 255, 255, 202, 13, 64, 112, 255, 255, 255, 255, 202, 216, 57, 96, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 211, 117, 228, 240, 255, 255, 255, 255, 212, 64, 221, 224, 255, 255, 255, 255, 213, 85, 198, 240, 255, 255, 255, 255, 214, 32, 191, 224, 255, 255, 255, 255, 215, 53, 168, 240, 255, 255, 255, 255, 216, 0, 161, 224, 255, 255, 255, 255, 217, 21, 138, 240, 255, 255, 255, 255, 217, 224, 131, 224, 255, 255, 255, 255, 218, 254, 167, 112, 255, 255, 255, 255, 219, 192, 101, 224, 255, 255, 255, 255, 220, 222, 137, 112, 255, 255, 255, 255, 221, 169, 130, 96, 255, 255, 255, 255, 222, 190, 107, 112, 255, 255, 255, 255, 223, 137, 100, 96, 255, 255, 255, 255, 224, 158, 77, 112, 255, 255, 255, 255, 225, 105, 70, 96, 255, 255, 255, 255, 226, 126, 47, 112, 255, 255, 255, 255, 227, 73, 40, 96, 255, 255, 255, 255, 228, 94, 17, 112, 255, 255, 255, 255, 229, 87, 46, 224, 255, 255, 255, 255, 230, 71, 45, 240, 255, 255, 255, 255, 231, 55, 16, 224, 255, 255, 255, 255, 232, 39, 15, 240, 255, 255, 255, 255, 233, 22, 242, 224, 255, 255, 255, 255, 234, 6, 241, 240, 255, 255, 255, 255, 234, 246, 212, 224, 255, 255, 255, 255, 235, 230, 211, 240, 255, 255, 255, 255, 236, 214, 182, 224, 255, 255, 255, 255, 237, 198, 181, 240, 255, 255, 255, 255, 238, 191, 211, 96, 255, 255, 255, 255, 239, 175, 210, 112, 255, 255, 255, 255, 240, 159, 181, 96, 255, 255, 255, 255, 241, 143, 180, 112, 255, 255, 255, 255, 242, 127, 151, 96, 255, 255, 255, 255, 243, 111, 150, 112, 255, 255, 255, 255, 244, 95, 121, 96, 255, 255, 255, 255, 245, 79, 120, 112, 255, 255, 255, 255, 246, 63, 91, 96, 255, 255, 255, 255, 247, 47, 90, 112, 255, 255, 255, 255, 248, 40, 119, 224, 255, 255, 255, 255, 249, 15, 60, 112, 255, 255, 255, 255, 250, 8, 89, 224, 255, 255, 255, 255, 250, 248, 88, 240, 255, 255, 255, 255, 251, 232, 59, 224, 255, 255, 255, 255, 252, 216, 58, 240, 255, 255, 255, 255, 253, 200, 29, 224, 255, 255, 255, 255, 254, 184, 28, 240, 255, 255, 255, 255, 255, 167, 255, 224, 0, 0, 0, 0, 0, 151, 254, 240, 0, 0, 0, 0, 1, 135, 225, 224, 0, 0, 0, 0, 2, 119, 224, 240, 0, 0, 0, 0, 3, 112, 254, 96, 0, 0, 0, 0, 4, 96, 253, 112, 0, 0, 0, 0, 5, 80, 224, 96, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 9, 173, 148, 240, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 186, 158, 0, 0, 255, 255, 199, 192, 1, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 76, 77, 84, 0, 69, 68, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Hawaii": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 35, 244, 112, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 72, 83, 84, 49, 48, 10}, + "zoneinfo/US/Hawaii": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 128, 0, 0, 0, 187, 5, 67, 72, 187, 33, 113, 88, 203, 137, 61, 200, 210, 35, 244, 112, 210, 97, 73, 56, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 20, 255, 255, 255, 255, 116, 224, 112, 190, 255, 255, 255, 255, 187, 5, 67, 72, 255, 255, 255, 255, 187, 33, 113, 88, 255, 255, 255, 255, 203, 137, 61, 200, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 73, 56, 255, 255, 255, 255, 213, 141, 115, 72, 1, 2, 1, 3, 4, 1, 5, 255, 255, 108, 2, 0, 0, 255, 255, 108, 88, 0, 4, 255, 255, 122, 104, 1, 8, 255, 255, 122, 104, 1, 12, 255, 255, 122, 104, 1, 16, 255, 255, 115, 96, 0, 4, 76, 77, 84, 0, 72, 83, 84, 0, 72, 68, 84, 0, 72, 87, 84, 0, 72, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 72, 83, 84, 49, 48, 10}, - "zoneinfo/US/Indiana-Starke": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Indiana-Starke": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 128, 0, 0, 0, 158, 166, 44, 128, 159, 186, 249, 112, 160, 134, 14, 128, 161, 154, 219, 112, 203, 136, 254, 128, 210, 35, 244, 112, 210, 97, 9, 240, 213, 85, 213, 0, 214, 32, 205, 240, 215, 53, 183, 0, 216, 0, 175, 240, 217, 21, 153, 0, 217, 224, 145, 240, 218, 254, 181, 128, 219, 192, 115, 240, 220, 222, 151, 128, 221, 169, 144, 112, 222, 190, 121, 128, 223, 137, 114, 112, 224, 158, 91, 128, 225, 105, 84, 112, 226, 126, 61, 128, 227, 73, 54, 112, 228, 94, 31, 128, 229, 87, 60, 240, 230, 71, 60, 0, 231, 55, 30, 240, 232, 39, 30, 0, 232, 242, 22, 240, 234, 7, 0, 0, 234, 209, 248, 240, 235, 230, 226, 0, 236, 214, 196, 240, 237, 198, 196, 0, 238, 191, 225, 112, 239, 175, 224, 128, 240, 159, 195, 112, 241, 143, 194, 128, 244, 95, 135, 112, 250, 248, 103, 0, 251, 232, 73, 240, 252, 216, 73, 0, 253, 200, 43, 240, 254, 184, 43, 0, 255, 168, 13, 240, 0, 152, 13, 0, 1, 135, 239, 240, 2, 119, 239, 0, 3, 113, 12, 112, 4, 97, 11, 128, 5, 80, 238, 112, 6, 64, 237, 128, 7, 48, 208, 112, 7, 141, 39, 128, 9, 16, 178, 112, 9, 173, 163, 0, 10, 240, 148, 112, 11, 224, 147, 128, 12, 217, 176, 240, 13, 192, 117, 128, 14, 185, 146, 240, 15, 169, 146, 0, 16, 153, 116, 240, 17, 137, 116, 0, 18, 121, 86, 240, 19, 105, 86, 0, 20, 89, 56, 240, 21, 73, 56, 0, 22, 57, 26, 240, 23, 41, 26, 0, 24, 34, 55, 112, 25, 8, 252, 0, 26, 2, 25, 112, 26, 242, 24, 128, 27, 225, 251, 112, 28, 209, 250, 128, 29, 193, 221, 112, 30, 177, 220, 128, 31, 161, 191, 112, 32, 118, 15, 0, 33, 129, 161, 112, 34, 85, 241, 0, 35, 106, 189, 240, 36, 53, 211, 0, 37, 74, 159, 240, 38, 21, 181, 0, 39, 42, 129, 240, 39, 254, 209, 128, 41, 10, 99, 240, 68, 47, 118, 112, 69, 68, 81, 112, 69, 243, 183, 0, 71, 45, 109, 240, 71, 211, 153, 0, 73, 13, 79, 240, 73, 179, 123, 0, 74, 237, 49, 240, 75, 156, 151, 128, 76, 214, 78, 112, 77, 124, 121, 128, 78, 182, 48, 112, 79, 92, 91, 128, 80, 150, 18, 112, 81, 60, 61, 128, 82, 117, 244, 112, 83, 28, 31, 128, 84, 85, 214, 112, 84, 252, 1, 128, 86, 53, 184, 112, 86, 229, 30, 0, 88, 30, 212, 240, 88, 197, 0, 0, 89, 254, 182, 240, 90, 164, 226, 0, 91, 222, 152, 240, 92, 132, 196, 0, 93, 190, 122, 240, 94, 100, 166, 0, 95, 158, 92, 240, 96, 77, 194, 128, 97, 135, 121, 112, 98, 45, 164, 128, 99, 103, 91, 112, 100, 13, 134, 128, 101, 71, 61, 112, 101, 237, 104, 128, 103, 39, 31, 112, 103, 205, 74, 128, 105, 7, 1, 112, 105, 173, 44, 128, 106, 230, 227, 112, 107, 150, 73, 0, 108, 207, 255, 240, 109, 118, 43, 0, 110, 175, 225, 240, 111, 86, 13, 0, 112, 143, 195, 240, 113, 53, 239, 0, 114, 111, 165, 240, 115, 21, 209, 0, 116, 79, 135, 240, 116, 254, 237, 128, 118, 56, 164, 112, 118, 222, 207, 128, 120, 24, 134, 112, 120, 190, 177, 128, 121, 248, 104, 112, 122, 158, 147, 128, 123, 216, 74, 112, 124, 126, 117, 128, 125, 184, 44, 112, 126, 94, 87, 128, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 7, 0, 0, 0, 24, 255, 255, 255, 255, 94, 3, 254, 160, 255, 255, 255, 255, 158, 166, 44, 128, 255, 255, 255, 255, 159, 186, 249, 112, 255, 255, 255, 255, 160, 134, 14, 128, 255, 255, 255, 255, 161, 154, 219, 112, 255, 255, 255, 255, 203, 136, 254, 128, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 9, 240, 255, 255, 255, 255, 213, 85, 213, 0, 255, 255, 255, 255, 214, 32, 205, 240, 255, 255, 255, 255, 215, 53, 183, 0, 255, 255, 255, 255, 216, 0, 175, 240, 255, 255, 255, 255, 217, 21, 153, 0, 255, 255, 255, 255, 217, 224, 145, 240, 255, 255, 255, 255, 218, 254, 181, 128, 255, 255, 255, 255, 219, 192, 115, 240, 255, 255, 255, 255, 220, 222, 151, 128, 255, 255, 255, 255, 221, 169, 144, 112, 255, 255, 255, 255, 222, 190, 121, 128, 255, 255, 255, 255, 223, 137, 114, 112, 255, 255, 255, 255, 224, 158, 91, 128, 255, 255, 255, 255, 225, 105, 84, 112, 255, 255, 255, 255, 226, 126, 61, 128, 255, 255, 255, 255, 227, 73, 54, 112, 255, 255, 255, 255, 228, 94, 31, 128, 255, 255, 255, 255, 229, 87, 60, 240, 255, 255, 255, 255, 230, 71, 60, 0, 255, 255, 255, 255, 231, 55, 30, 240, 255, 255, 255, 255, 232, 39, 30, 0, 255, 255, 255, 255, 232, 242, 22, 240, 255, 255, 255, 255, 234, 7, 0, 0, 255, 255, 255, 255, 234, 209, 248, 240, 255, 255, 255, 255, 235, 230, 226, 0, 255, 255, 255, 255, 236, 214, 196, 240, 255, 255, 255, 255, 237, 198, 196, 0, 255, 255, 255, 255, 238, 191, 225, 112, 255, 255, 255, 255, 239, 175, 224, 128, 255, 255, 255, 255, 240, 159, 195, 112, 255, 255, 255, 255, 241, 143, 194, 128, 255, 255, 255, 255, 244, 95, 135, 112, 255, 255, 255, 255, 250, 248, 103, 0, 255, 255, 255, 255, 251, 232, 73, 240, 255, 255, 255, 255, 252, 216, 73, 0, 255, 255, 255, 255, 253, 200, 43, 240, 255, 255, 255, 255, 254, 184, 43, 0, 255, 255, 255, 255, 255, 168, 13, 240, 0, 0, 0, 0, 0, 152, 13, 0, 0, 0, 0, 0, 1, 135, 239, 240, 0, 0, 0, 0, 2, 119, 239, 0, 0, 0, 0, 0, 3, 113, 12, 112, 0, 0, 0, 0, 4, 97, 11, 128, 0, 0, 0, 0, 5, 80, 238, 112, 0, 0, 0, 0, 6, 64, 237, 128, 0, 0, 0, 0, 7, 48, 208, 112, 0, 0, 0, 0, 7, 141, 39, 128, 0, 0, 0, 0, 9, 16, 178, 112, 0, 0, 0, 0, 9, 173, 163, 0, 0, 0, 0, 0, 10, 240, 148, 112, 0, 0, 0, 0, 11, 224, 147, 128, 0, 0, 0, 0, 12, 217, 176, 240, 0, 0, 0, 0, 13, 192, 117, 128, 0, 0, 0, 0, 14, 185, 146, 240, 0, 0, 0, 0, 15, 169, 146, 0, 0, 0, 0, 0, 16, 153, 116, 240, 0, 0, 0, 0, 17, 137, 116, 0, 0, 0, 0, 0, 18, 121, 86, 240, 0, 0, 0, 0, 19, 105, 86, 0, 0, 0, 0, 0, 20, 89, 56, 240, 0, 0, 0, 0, 21, 73, 56, 0, 0, 0, 0, 0, 22, 57, 26, 240, 0, 0, 0, 0, 23, 41, 26, 0, 0, 0, 0, 0, 24, 34, 55, 112, 0, 0, 0, 0, 25, 8, 252, 0, 0, 0, 0, 0, 26, 2, 25, 112, 0, 0, 0, 0, 26, 242, 24, 128, 0, 0, 0, 0, 27, 225, 251, 112, 0, 0, 0, 0, 28, 209, 250, 128, 0, 0, 0, 0, 29, 193, 221, 112, 0, 0, 0, 0, 30, 177, 220, 128, 0, 0, 0, 0, 31, 161, 191, 112, 0, 0, 0, 0, 32, 118, 15, 0, 0, 0, 0, 0, 33, 129, 161, 112, 0, 0, 0, 0, 34, 85, 241, 0, 0, 0, 0, 0, 35, 106, 189, 240, 0, 0, 0, 0, 36, 53, 211, 0, 0, 0, 0, 0, 37, 74, 159, 240, 0, 0, 0, 0, 38, 21, 181, 0, 0, 0, 0, 0, 39, 42, 129, 240, 0, 0, 0, 0, 39, 254, 209, 128, 0, 0, 0, 0, 41, 10, 99, 240, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 81, 112, 0, 0, 0, 0, 69, 243, 183, 0, 0, 0, 0, 0, 71, 45, 109, 240, 0, 0, 0, 0, 71, 211, 153, 0, 0, 0, 0, 0, 73, 13, 79, 240, 0, 0, 0, 0, 73, 179, 123, 0, 0, 0, 0, 0, 74, 237, 49, 240, 0, 0, 0, 0, 75, 156, 151, 128, 0, 0, 0, 0, 76, 214, 78, 112, 0, 0, 0, 0, 77, 124, 121, 128, 0, 0, 0, 0, 78, 182, 48, 112, 0, 0, 0, 0, 79, 92, 91, 128, 0, 0, 0, 0, 80, 150, 18, 112, 0, 0, 0, 0, 81, 60, 61, 128, 0, 0, 0, 0, 82, 117, 244, 112, 0, 0, 0, 0, 83, 28, 31, 128, 0, 0, 0, 0, 84, 85, 214, 112, 0, 0, 0, 0, 84, 252, 1, 128, 0, 0, 0, 0, 86, 53, 184, 112, 0, 0, 0, 0, 86, 229, 30, 0, 0, 0, 0, 0, 88, 30, 212, 240, 0, 0, 0, 0, 88, 197, 0, 0, 0, 0, 0, 0, 89, 254, 182, 240, 0, 0, 0, 0, 90, 164, 226, 0, 0, 0, 0, 0, 91, 222, 152, 240, 0, 0, 0, 0, 92, 132, 196, 0, 0, 0, 0, 0, 93, 190, 122, 240, 0, 0, 0, 0, 94, 100, 166, 0, 0, 0, 0, 0, 95, 158, 92, 240, 0, 0, 0, 0, 96, 77, 194, 128, 0, 0, 0, 0, 97, 135, 121, 112, 0, 0, 0, 0, 98, 45, 164, 128, 0, 0, 0, 0, 99, 103, 91, 112, 0, 0, 0, 0, 100, 13, 134, 128, 0, 0, 0, 0, 101, 71, 61, 112, 0, 0, 0, 0, 101, 237, 104, 128, 0, 0, 0, 0, 103, 39, 31, 112, 0, 0, 0, 0, 103, 205, 74, 128, 0, 0, 0, 0, 105, 7, 1, 112, 0, 0, 0, 0, 105, 173, 44, 128, 0, 0, 0, 0, 106, 230, 227, 112, 0, 0, 0, 0, 107, 150, 73, 0, 0, 0, 0, 0, 108, 207, 255, 240, 0, 0, 0, 0, 109, 118, 43, 0, 0, 0, 0, 0, 110, 175, 225, 240, 0, 0, 0, 0, 111, 86, 13, 0, 0, 0, 0, 0, 112, 143, 195, 240, 0, 0, 0, 0, 113, 53, 239, 0, 0, 0, 0, 0, 114, 111, 165, 240, 0, 0, 0, 0, 115, 21, 209, 0, 0, 0, 0, 0, 116, 79, 135, 240, 0, 0, 0, 0, 116, 254, 237, 128, 0, 0, 0, 0, 118, 56, 164, 112, 0, 0, 0, 0, 118, 222, 207, 128, 0, 0, 0, 0, 120, 24, 134, 112, 0, 0, 0, 0, 120, 190, 177, 128, 0, 0, 0, 0, 121, 248, 104, 112, 0, 0, 0, 0, 122, 158, 147, 128, 0, 0, 0, 0, 123, 216, 74, 112, 0, 0, 0, 0, 124, 126, 117, 128, 0, 0, 0, 0, 125, 184, 44, 112, 0, 0, 0, 0, 126, 94, 87, 128, 0, 0, 0, 0, 127, 152, 14, 112, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 5, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 174, 202, 0, 0, 255, 255, 185, 176, 1, 4, 255, 255, 171, 160, 0, 8, 255, 255, 185, 176, 1, 12, 255, 255, 185, 176, 1, 16, 255, 255, 185, 176, 0, 20, 255, 255, 171, 160, 0, 8, 76, 77, 84, 0, 67, 68, 84, 0, 67, 83, 84, 0, 67, 87, 84, 0, 67, 80, 84, 0, 69, 83, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 67, 83, 84, 54, 67, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Michigan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 6, 0, 0, 0, 24, 133, 189, 34, 91, 153, 60, 148, 0, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 215, 53, 168, 240, 216, 0, 161, 224, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Michigan": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 6, 0, 0, 0, 24, 133, 189, 34, 91, 153, 60, 148, 0, 203, 136, 240, 112, 210, 35, 244, 112, 210, 96, 251, 224, 215, 53, 168, 240, 216, 0, 161, 224, 6, 64, 223, 112, 7, 48, 194, 96, 7, 141, 25, 112, 9, 16, 164, 96, 10, 0, 163, 112, 10, 240, 134, 96, 11, 224, 133, 112, 12, 217, 162, 224, 13, 192, 103, 112, 14, 185, 132, 224, 15, 169, 131, 240, 16, 153, 102, 224, 17, 137, 101, 240, 18, 121, 72, 224, 19, 105, 71, 240, 20, 89, 42, 224, 21, 73, 41, 240, 22, 57, 12, 224, 23, 41, 11, 240, 24, 34, 41, 96, 25, 8, 237, 240, 26, 2, 11, 96, 26, 242, 10, 112, 27, 225, 237, 96, 28, 209, 236, 112, 29, 193, 207, 96, 30, 177, 206, 112, 31, 161, 177, 96, 32, 118, 0, 240, 33, 129, 147, 96, 34, 85, 226, 240, 35, 106, 175, 224, 36, 53, 196, 240, 37, 74, 145, 224, 38, 21, 166, 240, 39, 42, 115, 224, 39, 254, 195, 112, 41, 10, 85, 224, 41, 222, 165, 112, 42, 234, 55, 224, 43, 190, 135, 112, 44, 211, 84, 96, 45, 158, 105, 112, 46, 179, 54, 96, 47, 126, 75, 112, 48, 147, 24, 96, 49, 103, 103, 240, 50, 114, 250, 96, 51, 71, 73, 240, 52, 82, 220, 96, 53, 39, 43, 240, 54, 50, 190, 96, 55, 7, 13, 240, 56, 27, 218, 224, 56, 230, 239, 240, 57, 251, 188, 224, 58, 198, 209, 240, 59, 219, 158, 224, 60, 175, 238, 112, 61, 187, 128, 224, 62, 143, 208, 112, 63, 155, 98, 224, 64, 111, 178, 112, 65, 132, 127, 96, 66, 79, 148, 112, 67, 100, 97, 96, 68, 47, 118, 112, 69, 68, 67, 96, 69, 243, 168, 240, 71, 45, 95, 224, 71, 211, 138, 240, 73, 13, 65, 224, 73, 179, 108, 240, 74, 237, 35, 224, 75, 156, 137, 112, 76, 214, 64, 96, 77, 124, 107, 112, 78, 182, 34, 96, 79, 92, 77, 112, 80, 150, 4, 96, 81, 60, 47, 112, 82, 117, 230, 96, 83, 28, 17, 112, 84, 85, 200, 96, 84, 251, 243, 112, 86, 53, 170, 96, 86, 229, 15, 240, 88, 30, 198, 224, 88, 196, 241, 240, 89, 254, 168, 224, 90, 164, 211, 240, 91, 222, 138, 224, 92, 132, 181, 240, 93, 190, 108, 224, 94, 100, 151, 240, 95, 158, 78, 224, 96, 77, 180, 112, 97, 135, 107, 96, 98, 45, 150, 112, 99, 103, 77, 96, 100, 13, 120, 112, 101, 71, 47, 96, 101, 237, 90, 112, 103, 39, 17, 96, 103, 205, 60, 112, 105, 6, 243, 96, 105, 173, 30, 112, 106, 230, 213, 96, 107, 150, 58, 240, 108, 207, 241, 224, 109, 118, 28, 240, 110, 175, 211, 224, 111, 85, 254, 240, 112, 143, 181, 224, 113, 53, 224, 240, 114, 111, 151, 224, 115, 21, 194, 240, 116, 79, 121, 224, 116, 254, 223, 112, 118, 56, 150, 96, 118, 222, 193, 112, 120, 24, 120, 96, 120, 190, 163, 112, 121, 248, 90, 96, 122, 158, 133, 112, 123, 216, 60, 96, 124, 126, 103, 112, 125, 184, 30, 96, 126, 94, 73, 112, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 6, 0, 0, 0, 24, 255, 255, 255, 255, 133, 189, 34, 91, 255, 255, 255, 255, 153, 60, 148, 0, 255, 255, 255, 255, 203, 136, 240, 112, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 96, 251, 224, 255, 255, 255, 255, 215, 53, 168, 240, 255, 255, 255, 255, 216, 0, 161, 224, 0, 0, 0, 0, 6, 64, 223, 112, 0, 0, 0, 0, 7, 48, 194, 96, 0, 0, 0, 0, 7, 141, 25, 112, 0, 0, 0, 0, 9, 16, 164, 96, 0, 0, 0, 0, 10, 0, 163, 112, 0, 0, 0, 0, 10, 240, 134, 96, 0, 0, 0, 0, 11, 224, 133, 112, 0, 0, 0, 0, 12, 217, 162, 224, 0, 0, 0, 0, 13, 192, 103, 112, 0, 0, 0, 0, 14, 185, 132, 224, 0, 0, 0, 0, 15, 169, 131, 240, 0, 0, 0, 0, 16, 153, 102, 224, 0, 0, 0, 0, 17, 137, 101, 240, 0, 0, 0, 0, 18, 121, 72, 224, 0, 0, 0, 0, 19, 105, 71, 240, 0, 0, 0, 0, 20, 89, 42, 224, 0, 0, 0, 0, 21, 73, 41, 240, 0, 0, 0, 0, 22, 57, 12, 224, 0, 0, 0, 0, 23, 41, 11, 240, 0, 0, 0, 0, 24, 34, 41, 96, 0, 0, 0, 0, 25, 8, 237, 240, 0, 0, 0, 0, 26, 2, 11, 96, 0, 0, 0, 0, 26, 242, 10, 112, 0, 0, 0, 0, 27, 225, 237, 96, 0, 0, 0, 0, 28, 209, 236, 112, 0, 0, 0, 0, 29, 193, 207, 96, 0, 0, 0, 0, 30, 177, 206, 112, 0, 0, 0, 0, 31, 161, 177, 96, 0, 0, 0, 0, 32, 118, 0, 240, 0, 0, 0, 0, 33, 129, 147, 96, 0, 0, 0, 0, 34, 85, 226, 240, 0, 0, 0, 0, 35, 106, 175, 224, 0, 0, 0, 0, 36, 53, 196, 240, 0, 0, 0, 0, 37, 74, 145, 224, 0, 0, 0, 0, 38, 21, 166, 240, 0, 0, 0, 0, 39, 42, 115, 224, 0, 0, 0, 0, 39, 254, 195, 112, 0, 0, 0, 0, 41, 10, 85, 224, 0, 0, 0, 0, 41, 222, 165, 112, 0, 0, 0, 0, 42, 234, 55, 224, 0, 0, 0, 0, 43, 190, 135, 112, 0, 0, 0, 0, 44, 211, 84, 96, 0, 0, 0, 0, 45, 158, 105, 112, 0, 0, 0, 0, 46, 179, 54, 96, 0, 0, 0, 0, 47, 126, 75, 112, 0, 0, 0, 0, 48, 147, 24, 96, 0, 0, 0, 0, 49, 103, 103, 240, 0, 0, 0, 0, 50, 114, 250, 96, 0, 0, 0, 0, 51, 71, 73, 240, 0, 0, 0, 0, 52, 82, 220, 96, 0, 0, 0, 0, 53, 39, 43, 240, 0, 0, 0, 0, 54, 50, 190, 96, 0, 0, 0, 0, 55, 7, 13, 240, 0, 0, 0, 0, 56, 27, 218, 224, 0, 0, 0, 0, 56, 230, 239, 240, 0, 0, 0, 0, 57, 251, 188, 224, 0, 0, 0, 0, 58, 198, 209, 240, 0, 0, 0, 0, 59, 219, 158, 224, 0, 0, 0, 0, 60, 175, 238, 112, 0, 0, 0, 0, 61, 187, 128, 224, 0, 0, 0, 0, 62, 143, 208, 112, 0, 0, 0, 0, 63, 155, 98, 224, 0, 0, 0, 0, 64, 111, 178, 112, 0, 0, 0, 0, 65, 132, 127, 96, 0, 0, 0, 0, 66, 79, 148, 112, 0, 0, 0, 0, 67, 100, 97, 96, 0, 0, 0, 0, 68, 47, 118, 112, 0, 0, 0, 0, 69, 68, 67, 96, 0, 0, 0, 0, 69, 243, 168, 240, 0, 0, 0, 0, 71, 45, 95, 224, 0, 0, 0, 0, 71, 211, 138, 240, 0, 0, 0, 0, 73, 13, 65, 224, 0, 0, 0, 0, 73, 179, 108, 240, 0, 0, 0, 0, 74, 237, 35, 224, 0, 0, 0, 0, 75, 156, 137, 112, 0, 0, 0, 0, 76, 214, 64, 96, 0, 0, 0, 0, 77, 124, 107, 112, 0, 0, 0, 0, 78, 182, 34, 96, 0, 0, 0, 0, 79, 92, 77, 112, 0, 0, 0, 0, 80, 150, 4, 96, 0, 0, 0, 0, 81, 60, 47, 112, 0, 0, 0, 0, 82, 117, 230, 96, 0, 0, 0, 0, 83, 28, 17, 112, 0, 0, 0, 0, 84, 85, 200, 96, 0, 0, 0, 0, 84, 251, 243, 112, 0, 0, 0, 0, 86, 53, 170, 96, 0, 0, 0, 0, 86, 229, 15, 240, 0, 0, 0, 0, 88, 30, 198, 224, 0, 0, 0, 0, 88, 196, 241, 240, 0, 0, 0, 0, 89, 254, 168, 224, 0, 0, 0, 0, 90, 164, 211, 240, 0, 0, 0, 0, 91, 222, 138, 224, 0, 0, 0, 0, 92, 132, 181, 240, 0, 0, 0, 0, 93, 190, 108, 224, 0, 0, 0, 0, 94, 100, 151, 240, 0, 0, 0, 0, 95, 158, 78, 224, 0, 0, 0, 0, 96, 77, 180, 112, 0, 0, 0, 0, 97, 135, 107, 96, 0, 0, 0, 0, 98, 45, 150, 112, 0, 0, 0, 0, 99, 103, 77, 96, 0, 0, 0, 0, 100, 13, 120, 112, 0, 0, 0, 0, 101, 71, 47, 96, 0, 0, 0, 0, 101, 237, 90, 112, 0, 0, 0, 0, 103, 39, 17, 96, 0, 0, 0, 0, 103, 205, 60, 112, 0, 0, 0, 0, 105, 6, 243, 96, 0, 0, 0, 0, 105, 173, 30, 112, 0, 0, 0, 0, 106, 230, 213, 96, 0, 0, 0, 0, 107, 150, 58, 240, 0, 0, 0, 0, 108, 207, 241, 224, 0, 0, 0, 0, 109, 118, 28, 240, 0, 0, 0, 0, 110, 175, 211, 224, 0, 0, 0, 0, 111, 85, 254, 240, 0, 0, 0, 0, 112, 143, 181, 224, 0, 0, 0, 0, 113, 53, 224, 240, 0, 0, 0, 0, 114, 111, 151, 224, 0, 0, 0, 0, 115, 21, 194, 240, 0, 0, 0, 0, 116, 79, 121, 224, 0, 0, 0, 0, 116, 254, 223, 112, 0, 0, 0, 0, 118, 56, 150, 96, 0, 0, 0, 0, 118, 222, 193, 112, 0, 0, 0, 0, 120, 24, 120, 96, 0, 0, 0, 0, 120, 190, 163, 112, 0, 0, 0, 0, 121, 248, 90, 96, 0, 0, 0, 0, 122, 158, 133, 112, 0, 0, 0, 0, 123, 216, 60, 96, 0, 0, 0, 0, 124, 126, 103, 112, 0, 0, 0, 0, 125, 184, 30, 96, 0, 0, 0, 0, 126, 94, 73, 112, 0, 0, 0, 0, 127, 152, 0, 96, 1, 2, 3, 4, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 255, 255, 178, 37, 0, 0, 255, 255, 171, 160, 0, 4, 255, 255, 185, 176, 0, 8, 255, 255, 199, 192, 1, 12, 255, 255, 199, 192, 1, 16, 255, 255, 199, 192, 1, 20, 76, 77, 84, 0, 67, 83, 84, 0, 69, 83, 84, 0, 69, 87, 84, 0, 69, 80, 84, 0, 69, 68, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 10, 69, 83, 84, 53, 69, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Mountain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Mountain": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 58, 144, 159, 187, 7, 128, 160, 134, 28, 144, 161, 154, 233, 128, 162, 101, 254, 144, 163, 132, 6, 0, 164, 69, 224, 144, 164, 143, 166, 128, 203, 137, 12, 144, 210, 35, 244, 112, 210, 97, 24, 0, 247, 47, 118, 144, 248, 40, 148, 0, 249, 15, 88, 144, 250, 8, 118, 0, 250, 248, 117, 16, 251, 232, 88, 0, 252, 216, 87, 16, 253, 200, 58, 0, 254, 184, 57, 16, 255, 168, 28, 0, 0, 152, 27, 16, 1, 135, 254, 0, 2, 119, 253, 16, 3, 113, 26, 128, 4, 97, 25, 144, 5, 80, 252, 128, 6, 64, 251, 144, 7, 48, 222, 128, 7, 141, 53, 144, 9, 16, 192, 128, 9, 173, 177, 16, 10, 240, 162, 128, 11, 224, 161, 144, 12, 217, 191, 0, 13, 192, 131, 144, 14, 185, 161, 0, 15, 169, 160, 16, 16, 153, 131, 0, 17, 137, 130, 16, 18, 121, 101, 0, 19, 105, 100, 16, 20, 89, 71, 0, 21, 73, 70, 16, 22, 57, 41, 0, 23, 41, 40, 16, 24, 34, 69, 128, 25, 9, 10, 16, 26, 2, 39, 128, 26, 242, 38, 144, 27, 226, 9, 128, 28, 210, 8, 144, 29, 193, 235, 128, 30, 177, 234, 144, 31, 161, 205, 128, 32, 118, 29, 16, 33, 129, 175, 128, 34, 85, 255, 16, 35, 106, 204, 0, 36, 53, 225, 16, 37, 74, 174, 0, 38, 21, 195, 16, 39, 42, 144, 0, 39, 254, 223, 144, 41, 10, 114, 0, 41, 222, 193, 144, 42, 234, 84, 0, 43, 190, 163, 144, 44, 211, 112, 128, 45, 158, 133, 144, 46, 179, 82, 128, 47, 126, 103, 144, 48, 147, 52, 128, 49, 103, 132, 16, 50, 115, 22, 128, 51, 71, 102, 16, 52, 82, 248, 128, 53, 39, 72, 16, 54, 50, 218, 128, 55, 7, 42, 16, 56, 27, 247, 0, 56, 231, 12, 16, 57, 251, 217, 0, 58, 198, 238, 16, 59, 219, 187, 0, 60, 176, 10, 144, 61, 187, 157, 0, 62, 143, 236, 144, 63, 155, 127, 0, 64, 111, 206, 144, 65, 132, 155, 128, 66, 79, 176, 144, 67, 100, 125, 128, 68, 47, 146, 144, 69, 68, 95, 128, 69, 243, 197, 16, 71, 45, 124, 0, 71, 211, 167, 16, 73, 13, 94, 0, 73, 179, 137, 16, 74, 237, 64, 0, 75, 156, 165, 144, 76, 214, 92, 128, 77, 124, 135, 144, 78, 182, 62, 128, 79, 92, 105, 144, 80, 150, 32, 128, 81, 60, 75, 144, 82, 118, 2, 128, 83, 28, 45, 144, 84, 85, 228, 128, 84, 252, 15, 144, 86, 53, 198, 128, 86, 229, 44, 16, 88, 30, 227, 0, 88, 197, 14, 16, 89, 254, 197, 0, 90, 164, 240, 16, 91, 222, 167, 0, 92, 132, 210, 16, 93, 190, 137, 0, 94, 100, 180, 16, 95, 158, 107, 0, 96, 77, 208, 144, 97, 135, 135, 128, 98, 45, 178, 144, 99, 103, 105, 128, 100, 13, 148, 144, 101, 71, 75, 128, 101, 237, 118, 144, 103, 39, 45, 128, 103, 205, 88, 144, 105, 7, 15, 128, 105, 173, 58, 144, 106, 230, 241, 128, 107, 150, 87, 16, 108, 208, 14, 0, 109, 118, 57, 16, 110, 175, 240, 0, 111, 86, 27, 16, 112, 143, 210, 0, 113, 53, 253, 16, 114, 111, 180, 0, 115, 21, 223, 16, 116, 79, 150, 0, 116, 254, 251, 144, 118, 56, 178, 128, 118, 222, 221, 144, 120, 24, 148, 128, 120, 190, 191, 144, 121, 248, 118, 128, 122, 158, 161, 144, 123, 216, 88, 128, 124, 126, 131, 144, 125, 184, 58, 128, 126, 94, 101, 144, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 4, 12, 176, 255, 255, 255, 255, 158, 166, 58, 144, 255, 255, 255, 255, 159, 187, 7, 128, 255, 255, 255, 255, 160, 134, 28, 144, 255, 255, 255, 255, 161, 154, 233, 128, 255, 255, 255, 255, 162, 101, 254, 144, 255, 255, 255, 255, 163, 132, 6, 0, 255, 255, 255, 255, 164, 69, 224, 144, 255, 255, 255, 255, 164, 143, 166, 128, 255, 255, 255, 255, 203, 137, 12, 144, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 24, 0, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 148, 0, 255, 255, 255, 255, 249, 15, 88, 144, 255, 255, 255, 255, 250, 8, 118, 0, 255, 255, 255, 255, 250, 248, 117, 16, 255, 255, 255, 255, 251, 232, 88, 0, 255, 255, 255, 255, 252, 216, 87, 16, 255, 255, 255, 255, 253, 200, 58, 0, 255, 255, 255, 255, 254, 184, 57, 16, 255, 255, 255, 255, 255, 168, 28, 0, 0, 0, 0, 0, 0, 152, 27, 16, 0, 0, 0, 0, 1, 135, 254, 0, 0, 0, 0, 0, 2, 119, 253, 16, 0, 0, 0, 0, 3, 113, 26, 128, 0, 0, 0, 0, 4, 97, 25, 144, 0, 0, 0, 0, 5, 80, 252, 128, 0, 0, 0, 0, 6, 64, 251, 144, 0, 0, 0, 0, 7, 48, 222, 128, 0, 0, 0, 0, 7, 141, 53, 144, 0, 0, 0, 0, 9, 16, 192, 128, 0, 0, 0, 0, 9, 173, 177, 16, 0, 0, 0, 0, 10, 240, 162, 128, 0, 0, 0, 0, 11, 224, 161, 144, 0, 0, 0, 0, 12, 217, 191, 0, 0, 0, 0, 0, 13, 192, 131, 144, 0, 0, 0, 0, 14, 185, 161, 0, 0, 0, 0, 0, 15, 169, 160, 16, 0, 0, 0, 0, 16, 153, 131, 0, 0, 0, 0, 0, 17, 137, 130, 16, 0, 0, 0, 0, 18, 121, 101, 0, 0, 0, 0, 0, 19, 105, 100, 16, 0, 0, 0, 0, 20, 89, 71, 0, 0, 0, 0, 0, 21, 73, 70, 16, 0, 0, 0, 0, 22, 57, 41, 0, 0, 0, 0, 0, 23, 41, 40, 16, 0, 0, 0, 0, 24, 34, 69, 128, 0, 0, 0, 0, 25, 9, 10, 16, 0, 0, 0, 0, 26, 2, 39, 128, 0, 0, 0, 0, 26, 242, 38, 144, 0, 0, 0, 0, 27, 226, 9, 128, 0, 0, 0, 0, 28, 210, 8, 144, 0, 0, 0, 0, 29, 193, 235, 128, 0, 0, 0, 0, 30, 177, 234, 144, 0, 0, 0, 0, 31, 161, 205, 128, 0, 0, 0, 0, 32, 118, 29, 16, 0, 0, 0, 0, 33, 129, 175, 128, 0, 0, 0, 0, 34, 85, 255, 16, 0, 0, 0, 0, 35, 106, 204, 0, 0, 0, 0, 0, 36, 53, 225, 16, 0, 0, 0, 0, 37, 74, 174, 0, 0, 0, 0, 0, 38, 21, 195, 16, 0, 0, 0, 0, 39, 42, 144, 0, 0, 0, 0, 0, 39, 254, 223, 144, 0, 0, 0, 0, 41, 10, 114, 0, 0, 0, 0, 0, 41, 222, 193, 144, 0, 0, 0, 0, 42, 234, 84, 0, 0, 0, 0, 0, 43, 190, 163, 144, 0, 0, 0, 0, 44, 211, 112, 128, 0, 0, 0, 0, 45, 158, 133, 144, 0, 0, 0, 0, 46, 179, 82, 128, 0, 0, 0, 0, 47, 126, 103, 144, 0, 0, 0, 0, 48, 147, 52, 128, 0, 0, 0, 0, 49, 103, 132, 16, 0, 0, 0, 0, 50, 115, 22, 128, 0, 0, 0, 0, 51, 71, 102, 16, 0, 0, 0, 0, 52, 82, 248, 128, 0, 0, 0, 0, 53, 39, 72, 16, 0, 0, 0, 0, 54, 50, 218, 128, 0, 0, 0, 0, 55, 7, 42, 16, 0, 0, 0, 0, 56, 27, 247, 0, 0, 0, 0, 0, 56, 231, 12, 16, 0, 0, 0, 0, 57, 251, 217, 0, 0, 0, 0, 0, 58, 198, 238, 16, 0, 0, 0, 0, 59, 219, 187, 0, 0, 0, 0, 0, 60, 176, 10, 144, 0, 0, 0, 0, 61, 187, 157, 0, 0, 0, 0, 0, 62, 143, 236, 144, 0, 0, 0, 0, 63, 155, 127, 0, 0, 0, 0, 0, 64, 111, 206, 144, 0, 0, 0, 0, 65, 132, 155, 128, 0, 0, 0, 0, 66, 79, 176, 144, 0, 0, 0, 0, 67, 100, 125, 128, 0, 0, 0, 0, 68, 47, 146, 144, 0, 0, 0, 0, 69, 68, 95, 128, 0, 0, 0, 0, 69, 243, 197, 16, 0, 0, 0, 0, 71, 45, 124, 0, 0, 0, 0, 0, 71, 211, 167, 16, 0, 0, 0, 0, 73, 13, 94, 0, 0, 0, 0, 0, 73, 179, 137, 16, 0, 0, 0, 0, 74, 237, 64, 0, 0, 0, 0, 0, 75, 156, 165, 144, 0, 0, 0, 0, 76, 214, 92, 128, 0, 0, 0, 0, 77, 124, 135, 144, 0, 0, 0, 0, 78, 182, 62, 128, 0, 0, 0, 0, 79, 92, 105, 144, 0, 0, 0, 0, 80, 150, 32, 128, 0, 0, 0, 0, 81, 60, 75, 144, 0, 0, 0, 0, 82, 118, 2, 128, 0, 0, 0, 0, 83, 28, 45, 144, 0, 0, 0, 0, 84, 85, 228, 128, 0, 0, 0, 0, 84, 252, 15, 144, 0, 0, 0, 0, 86, 53, 198, 128, 0, 0, 0, 0, 86, 229, 44, 16, 0, 0, 0, 0, 88, 30, 227, 0, 0, 0, 0, 0, 88, 197, 14, 16, 0, 0, 0, 0, 89, 254, 197, 0, 0, 0, 0, 0, 90, 164, 240, 16, 0, 0, 0, 0, 91, 222, 167, 0, 0, 0, 0, 0, 92, 132, 210, 16, 0, 0, 0, 0, 93, 190, 137, 0, 0, 0, 0, 0, 94, 100, 180, 16, 0, 0, 0, 0, 95, 158, 107, 0, 0, 0, 0, 0, 96, 77, 208, 144, 0, 0, 0, 0, 97, 135, 135, 128, 0, 0, 0, 0, 98, 45, 178, 144, 0, 0, 0, 0, 99, 103, 105, 128, 0, 0, 0, 0, 100, 13, 148, 144, 0, 0, 0, 0, 101, 71, 75, 128, 0, 0, 0, 0, 101, 237, 118, 144, 0, 0, 0, 0, 103, 39, 45, 128, 0, 0, 0, 0, 103, 205, 88, 144, 0, 0, 0, 0, 105, 7, 15, 128, 0, 0, 0, 0, 105, 173, 58, 144, 0, 0, 0, 0, 106, 230, 241, 128, 0, 0, 0, 0, 107, 150, 87, 16, 0, 0, 0, 0, 108, 208, 14, 0, 0, 0, 0, 0, 109, 118, 57, 16, 0, 0, 0, 0, 110, 175, 240, 0, 0, 0, 0, 0, 111, 86, 27, 16, 0, 0, 0, 0, 112, 143, 210, 0, 0, 0, 0, 0, 113, 53, 253, 16, 0, 0, 0, 0, 114, 111, 180, 0, 0, 0, 0, 0, 115, 21, 223, 16, 0, 0, 0, 0, 116, 79, 150, 0, 0, 0, 0, 0, 116, 254, 251, 144, 0, 0, 0, 0, 118, 56, 178, 128, 0, 0, 0, 0, 118, 222, 221, 144, 0, 0, 0, 0, 120, 24, 148, 128, 0, 0, 0, 0, 120, 190, 191, 144, 0, 0, 0, 0, 121, 248, 118, 128, 0, 0, 0, 0, 122, 158, 161, 144, 0, 0, 0, 0, 123, 216, 88, 128, 0, 0, 0, 0, 124, 126, 131, 144, 0, 0, 0, 0, 125, 184, 58, 128, 0, 0, 0, 0, 126, 94, 101, 144, 0, 0, 0, 0, 127, 152, 28, 128, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 157, 148, 0, 0, 255, 255, 171, 160, 1, 4, 255, 255, 157, 144, 0, 8, 255, 255, 171, 160, 1, 12, 255, 255, 171, 160, 1, 16, 76, 77, 84, 0, 77, 68, 84, 0, 77, 83, 84, 0, 77, 87, 84, 0, 77, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 77, 83, 84, 55, 77, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Pacific": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 214, 254, 116, 92, 216, 128, 173, 144, 218, 254, 195, 144, 219, 192, 144, 16, 220, 222, 165, 144, 221, 169, 172, 144, 222, 190, 135, 144, 223, 137, 142, 144, 224, 158, 105, 144, 225, 105, 112, 144, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 239, 175, 238, 144, 240, 113, 187, 16, 241, 143, 208, 144, 242, 127, 193, 144, 243, 111, 178, 144, 244, 95, 163, 144, 245, 79, 148, 144, 246, 63, 133, 144, 247, 47, 118, 144, 248, 40, 162, 16, 249, 15, 88, 144, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, + "zoneinfo/US/Pacific": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 128, 0, 0, 0, 158, 166, 72, 160, 159, 187, 21, 144, 160, 134, 42, 160, 161, 154, 247, 144, 203, 137, 26, 160, 210, 35, 244, 112, 210, 97, 38, 16, 214, 254, 116, 92, 216, 128, 173, 144, 218, 254, 195, 144, 219, 192, 144, 16, 220, 222, 165, 144, 221, 169, 172, 144, 222, 190, 135, 144, 223, 137, 142, 144, 224, 158, 105, 144, 225, 105, 112, 144, 226, 126, 75, 144, 227, 73, 82, 144, 228, 94, 45, 144, 229, 41, 52, 144, 230, 71, 74, 16, 231, 18, 81, 16, 232, 39, 44, 16, 232, 242, 51, 16, 234, 7, 14, 16, 234, 210, 21, 16, 235, 230, 240, 16, 236, 177, 247, 16, 237, 198, 210, 16, 238, 145, 217, 16, 239, 175, 238, 144, 240, 113, 187, 16, 241, 143, 208, 144, 242, 127, 193, 144, 243, 111, 178, 144, 244, 95, 163, 144, 245, 79, 148, 144, 246, 63, 133, 144, 247, 47, 118, 144, 248, 40, 162, 16, 249, 15, 88, 144, 250, 8, 132, 16, 250, 248, 131, 32, 251, 232, 102, 16, 252, 216, 101, 32, 253, 200, 72, 16, 254, 184, 71, 32, 255, 168, 42, 16, 0, 152, 41, 32, 1, 136, 12, 16, 2, 120, 11, 32, 3, 113, 40, 144, 4, 97, 39, 160, 5, 81, 10, 144, 6, 65, 9, 160, 7, 48, 236, 144, 7, 141, 67, 160, 9, 16, 206, 144, 9, 173, 191, 32, 10, 240, 176, 144, 11, 224, 175, 160, 12, 217, 205, 16, 13, 192, 145, 160, 14, 185, 175, 16, 15, 169, 174, 32, 16, 153, 145, 16, 17, 137, 144, 32, 18, 121, 115, 16, 19, 105, 114, 32, 20, 89, 85, 16, 21, 73, 84, 32, 22, 57, 55, 16, 23, 41, 54, 32, 24, 34, 83, 144, 25, 9, 24, 32, 26, 2, 53, 144, 26, 242, 52, 160, 27, 226, 23, 144, 28, 210, 22, 160, 29, 193, 249, 144, 30, 177, 248, 160, 31, 161, 219, 144, 32, 118, 43, 32, 33, 129, 189, 144, 34, 86, 13, 32, 35, 106, 218, 16, 36, 53, 239, 32, 37, 74, 188, 16, 38, 21, 209, 32, 39, 42, 158, 16, 39, 254, 237, 160, 41, 10, 128, 16, 41, 222, 207, 160, 42, 234, 98, 16, 43, 190, 177, 160, 44, 211, 126, 144, 45, 158, 147, 160, 46, 179, 96, 144, 47, 126, 117, 160, 48, 147, 66, 144, 49, 103, 146, 32, 50, 115, 36, 144, 51, 71, 116, 32, 52, 83, 6, 144, 53, 39, 86, 32, 54, 50, 232, 144, 55, 7, 56, 32, 56, 28, 5, 16, 56, 231, 26, 32, 57, 251, 231, 16, 58, 198, 252, 32, 59, 219, 201, 16, 60, 176, 24, 160, 61, 187, 171, 16, 62, 143, 250, 160, 63, 155, 141, 16, 64, 111, 220, 160, 65, 132, 169, 144, 66, 79, 190, 160, 67, 100, 139, 144, 68, 47, 160, 160, 69, 68, 109, 144, 69, 243, 211, 32, 71, 45, 138, 16, 71, 211, 181, 32, 73, 13, 108, 16, 73, 179, 151, 32, 74, 237, 78, 16, 75, 156, 179, 160, 76, 214, 106, 144, 77, 124, 149, 160, 78, 182, 76, 144, 79, 92, 119, 160, 80, 150, 46, 144, 81, 60, 89, 160, 82, 118, 16, 144, 83, 28, 59, 160, 84, 85, 242, 144, 84, 252, 29, 160, 86, 53, 212, 144, 86, 229, 58, 32, 88, 30, 241, 16, 88, 197, 28, 32, 89, 254, 211, 16, 90, 164, 254, 32, 91, 222, 181, 16, 92, 132, 224, 32, 93, 190, 151, 16, 94, 100, 194, 32, 95, 158, 121, 16, 96, 77, 222, 160, 97, 135, 149, 144, 98, 45, 192, 160, 99, 103, 119, 144, 100, 13, 162, 160, 101, 71, 89, 144, 101, 237, 132, 160, 103, 39, 59, 144, 103, 205, 102, 160, 105, 7, 29, 144, 105, 173, 72, 160, 106, 230, 255, 144, 107, 150, 101, 32, 108, 208, 28, 16, 109, 118, 71, 32, 110, 175, 254, 16, 111, 86, 41, 32, 112, 143, 224, 16, 113, 54, 11, 32, 114, 111, 194, 16, 115, 21, 237, 32, 116, 79, 164, 16, 116, 255, 9, 160, 118, 56, 192, 144, 118, 222, 235, 160, 120, 24, 162, 144, 120, 190, 205, 160, 121, 248, 132, 144, 122, 158, 175, 160, 123, 216, 102, 144, 124, 126, 145, 160, 125, 184, 72, 144, 126, 94, 115, 160, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 5, 0, 0, 0, 20, 255, 255, 255, 255, 94, 4, 26, 192, 255, 255, 255, 255, 158, 166, 72, 160, 255, 255, 255, 255, 159, 187, 21, 144, 255, 255, 255, 255, 160, 134, 42, 160, 255, 255, 255, 255, 161, 154, 247, 144, 255, 255, 255, 255, 203, 137, 26, 160, 255, 255, 255, 255, 210, 35, 244, 112, 255, 255, 255, 255, 210, 97, 38, 16, 255, 255, 255, 255, 214, 254, 116, 92, 255, 255, 255, 255, 216, 128, 173, 144, 255, 255, 255, 255, 218, 254, 195, 144, 255, 255, 255, 255, 219, 192, 144, 16, 255, 255, 255, 255, 220, 222, 165, 144, 255, 255, 255, 255, 221, 169, 172, 144, 255, 255, 255, 255, 222, 190, 135, 144, 255, 255, 255, 255, 223, 137, 142, 144, 255, 255, 255, 255, 224, 158, 105, 144, 255, 255, 255, 255, 225, 105, 112, 144, 255, 255, 255, 255, 226, 126, 75, 144, 255, 255, 255, 255, 227, 73, 82, 144, 255, 255, 255, 255, 228, 94, 45, 144, 255, 255, 255, 255, 229, 41, 52, 144, 255, 255, 255, 255, 230, 71, 74, 16, 255, 255, 255, 255, 231, 18, 81, 16, 255, 255, 255, 255, 232, 39, 44, 16, 255, 255, 255, 255, 232, 242, 51, 16, 255, 255, 255, 255, 234, 7, 14, 16, 255, 255, 255, 255, 234, 210, 21, 16, 255, 255, 255, 255, 235, 230, 240, 16, 255, 255, 255, 255, 236, 177, 247, 16, 255, 255, 255, 255, 237, 198, 210, 16, 255, 255, 255, 255, 238, 145, 217, 16, 255, 255, 255, 255, 239, 175, 238, 144, 255, 255, 255, 255, 240, 113, 187, 16, 255, 255, 255, 255, 241, 143, 208, 144, 255, 255, 255, 255, 242, 127, 193, 144, 255, 255, 255, 255, 243, 111, 178, 144, 255, 255, 255, 255, 244, 95, 163, 144, 255, 255, 255, 255, 245, 79, 148, 144, 255, 255, 255, 255, 246, 63, 133, 144, 255, 255, 255, 255, 247, 47, 118, 144, 255, 255, 255, 255, 248, 40, 162, 16, 255, 255, 255, 255, 249, 15, 88, 144, 255, 255, 255, 255, 250, 8, 132, 16, 255, 255, 255, 255, 250, 248, 131, 32, 255, 255, 255, 255, 251, 232, 102, 16, 255, 255, 255, 255, 252, 216, 101, 32, 255, 255, 255, 255, 253, 200, 72, 16, 255, 255, 255, 255, 254, 184, 71, 32, 255, 255, 255, 255, 255, 168, 42, 16, 0, 0, 0, 0, 0, 152, 41, 32, 0, 0, 0, 0, 1, 136, 12, 16, 0, 0, 0, 0, 2, 120, 11, 32, 0, 0, 0, 0, 3, 113, 40, 144, 0, 0, 0, 0, 4, 97, 39, 160, 0, 0, 0, 0, 5, 81, 10, 144, 0, 0, 0, 0, 6, 65, 9, 160, 0, 0, 0, 0, 7, 48, 236, 144, 0, 0, 0, 0, 7, 141, 67, 160, 0, 0, 0, 0, 9, 16, 206, 144, 0, 0, 0, 0, 9, 173, 191, 32, 0, 0, 0, 0, 10, 240, 176, 144, 0, 0, 0, 0, 11, 224, 175, 160, 0, 0, 0, 0, 12, 217, 205, 16, 0, 0, 0, 0, 13, 192, 145, 160, 0, 0, 0, 0, 14, 185, 175, 16, 0, 0, 0, 0, 15, 169, 174, 32, 0, 0, 0, 0, 16, 153, 145, 16, 0, 0, 0, 0, 17, 137, 144, 32, 0, 0, 0, 0, 18, 121, 115, 16, 0, 0, 0, 0, 19, 105, 114, 32, 0, 0, 0, 0, 20, 89, 85, 16, 0, 0, 0, 0, 21, 73, 84, 32, 0, 0, 0, 0, 22, 57, 55, 16, 0, 0, 0, 0, 23, 41, 54, 32, 0, 0, 0, 0, 24, 34, 83, 144, 0, 0, 0, 0, 25, 9, 24, 32, 0, 0, 0, 0, 26, 2, 53, 144, 0, 0, 0, 0, 26, 242, 52, 160, 0, 0, 0, 0, 27, 226, 23, 144, 0, 0, 0, 0, 28, 210, 22, 160, 0, 0, 0, 0, 29, 193, 249, 144, 0, 0, 0, 0, 30, 177, 248, 160, 0, 0, 0, 0, 31, 161, 219, 144, 0, 0, 0, 0, 32, 118, 43, 32, 0, 0, 0, 0, 33, 129, 189, 144, 0, 0, 0, 0, 34, 86, 13, 32, 0, 0, 0, 0, 35, 106, 218, 16, 0, 0, 0, 0, 36, 53, 239, 32, 0, 0, 0, 0, 37, 74, 188, 16, 0, 0, 0, 0, 38, 21, 209, 32, 0, 0, 0, 0, 39, 42, 158, 16, 0, 0, 0, 0, 39, 254, 237, 160, 0, 0, 0, 0, 41, 10, 128, 16, 0, 0, 0, 0, 41, 222, 207, 160, 0, 0, 0, 0, 42, 234, 98, 16, 0, 0, 0, 0, 43, 190, 177, 160, 0, 0, 0, 0, 44, 211, 126, 144, 0, 0, 0, 0, 45, 158, 147, 160, 0, 0, 0, 0, 46, 179, 96, 144, 0, 0, 0, 0, 47, 126, 117, 160, 0, 0, 0, 0, 48, 147, 66, 144, 0, 0, 0, 0, 49, 103, 146, 32, 0, 0, 0, 0, 50, 115, 36, 144, 0, 0, 0, 0, 51, 71, 116, 32, 0, 0, 0, 0, 52, 83, 6, 144, 0, 0, 0, 0, 53, 39, 86, 32, 0, 0, 0, 0, 54, 50, 232, 144, 0, 0, 0, 0, 55, 7, 56, 32, 0, 0, 0, 0, 56, 28, 5, 16, 0, 0, 0, 0, 56, 231, 26, 32, 0, 0, 0, 0, 57, 251, 231, 16, 0, 0, 0, 0, 58, 198, 252, 32, 0, 0, 0, 0, 59, 219, 201, 16, 0, 0, 0, 0, 60, 176, 24, 160, 0, 0, 0, 0, 61, 187, 171, 16, 0, 0, 0, 0, 62, 143, 250, 160, 0, 0, 0, 0, 63, 155, 141, 16, 0, 0, 0, 0, 64, 111, 220, 160, 0, 0, 0, 0, 65, 132, 169, 144, 0, 0, 0, 0, 66, 79, 190, 160, 0, 0, 0, 0, 67, 100, 139, 144, 0, 0, 0, 0, 68, 47, 160, 160, 0, 0, 0, 0, 69, 68, 109, 144, 0, 0, 0, 0, 69, 243, 211, 32, 0, 0, 0, 0, 71, 45, 138, 16, 0, 0, 0, 0, 71, 211, 181, 32, 0, 0, 0, 0, 73, 13, 108, 16, 0, 0, 0, 0, 73, 179, 151, 32, 0, 0, 0, 0, 74, 237, 78, 16, 0, 0, 0, 0, 75, 156, 179, 160, 0, 0, 0, 0, 76, 214, 106, 144, 0, 0, 0, 0, 77, 124, 149, 160, 0, 0, 0, 0, 78, 182, 76, 144, 0, 0, 0, 0, 79, 92, 119, 160, 0, 0, 0, 0, 80, 150, 46, 144, 0, 0, 0, 0, 81, 60, 89, 160, 0, 0, 0, 0, 82, 118, 16, 144, 0, 0, 0, 0, 83, 28, 59, 160, 0, 0, 0, 0, 84, 85, 242, 144, 0, 0, 0, 0, 84, 252, 29, 160, 0, 0, 0, 0, 86, 53, 212, 144, 0, 0, 0, 0, 86, 229, 58, 32, 0, 0, 0, 0, 88, 30, 241, 16, 0, 0, 0, 0, 88, 197, 28, 32, 0, 0, 0, 0, 89, 254, 211, 16, 0, 0, 0, 0, 90, 164, 254, 32, 0, 0, 0, 0, 91, 222, 181, 16, 0, 0, 0, 0, 92, 132, 224, 32, 0, 0, 0, 0, 93, 190, 151, 16, 0, 0, 0, 0, 94, 100, 194, 32, 0, 0, 0, 0, 95, 158, 121, 16, 0, 0, 0, 0, 96, 77, 222, 160, 0, 0, 0, 0, 97, 135, 149, 144, 0, 0, 0, 0, 98, 45, 192, 160, 0, 0, 0, 0, 99, 103, 119, 144, 0, 0, 0, 0, 100, 13, 162, 160, 0, 0, 0, 0, 101, 71, 89, 144, 0, 0, 0, 0, 101, 237, 132, 160, 0, 0, 0, 0, 103, 39, 59, 144, 0, 0, 0, 0, 103, 205, 102, 160, 0, 0, 0, 0, 105, 7, 29, 144, 0, 0, 0, 0, 105, 173, 72, 160, 0, 0, 0, 0, 106, 230, 255, 144, 0, 0, 0, 0, 107, 150, 101, 32, 0, 0, 0, 0, 108, 208, 28, 16, 0, 0, 0, 0, 109, 118, 71, 32, 0, 0, 0, 0, 110, 175, 254, 16, 0, 0, 0, 0, 111, 86, 41, 32, 0, 0, 0, 0, 112, 143, 224, 16, 0, 0, 0, 0, 113, 54, 11, 32, 0, 0, 0, 0, 114, 111, 194, 16, 0, 0, 0, 0, 115, 21, 237, 32, 0, 0, 0, 0, 116, 79, 164, 16, 0, 0, 0, 0, 116, 255, 9, 160, 0, 0, 0, 0, 118, 56, 192, 144, 0, 0, 0, 0, 118, 222, 235, 160, 0, 0, 0, 0, 120, 24, 162, 144, 0, 0, 0, 0, 120, 190, 205, 160, 0, 0, 0, 0, 121, 248, 132, 144, 0, 0, 0, 0, 122, 158, 175, 160, 0, 0, 0, 0, 123, 216, 102, 144, 0, 0, 0, 0, 124, 126, 145, 160, 0, 0, 0, 0, 125, 184, 72, 144, 0, 0, 0, 0, 126, 94, 115, 160, 0, 0, 0, 0, 127, 152, 42, 144, 2, 1, 2, 1, 2, 3, 4, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 255, 255, 145, 38, 0, 0, 255, 255, 157, 144, 1, 4, 255, 255, 143, 128, 0, 8, 255, 255, 157, 144, 1, 12, 255, 255, 157, 144, 1, 16, 76, 77, 84, 0, 80, 68, 84, 0, 80, 83, 84, 0, 80, 87, 84, 0, 80, 80, 84, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 80, 83, 84, 56, 80, 68, 84, 44, 77, 51, 46, 50, 46, 48, 44, 77, 49, 49, 46, 49, 46, 48, 10}, - "zoneinfo/US/Samoa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 0, 0, 0, 0, 0, 0, 10, 83, 83, 84, 49, 49, 10}, + "zoneinfo/US/Samoa": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 128, 0, 0, 0, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 8, 255, 255, 255, 255, 110, 61, 200, 8, 255, 255, 255, 255, 145, 5, 251, 8, 1, 2, 0, 0, 177, 120, 0, 0, 255, 255, 95, 248, 0, 0, 255, 255, 101, 80, 0, 4, 76, 77, 84, 0, 83, 83, 84, 0, 10, 83, 83, 84, 49, 49, 10}, - "zoneinfo/UTC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + "zoneinfo/UTC": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/Universal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + "zoneinfo/Universal": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, - "zoneinfo/W-SU": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 128, 0, 0, 0, 155, 95, 30, 199, 157, 62, 242, 121, 158, 42, 238, 249, 158, 247, 57, 105, 159, 132, 87, 249, 160, 216, 108, 233, 161, 0, 57, 128, 161, 60, 166, 64, 164, 16, 109, 192, 164, 61, 50, 176, 165, 21, 104, 176, 165, 61, 3, 192, 167, 30, 69, 80, 181, 164, 25, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 75, 45, 51, 10}, + "zoneinfo/W-SU": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 128, 0, 0, 0, 155, 95, 30, 199, 157, 62, 242, 121, 158, 42, 238, 249, 158, 247, 57, 105, 159, 132, 87, 249, 160, 216, 108, 233, 161, 0, 57, 128, 161, 60, 166, 64, 164, 16, 109, 192, 164, 61, 50, 176, 165, 21, 104, 176, 165, 61, 3, 192, 167, 30, 69, 80, 181, 164, 25, 96, 21, 39, 167, 208, 22, 24, 220, 64, 23, 8, 219, 80, 23, 250, 15, 192, 24, 234, 14, 208, 25, 219, 67, 64, 26, 204, 147, 208, 27, 188, 160, 240, 28, 172, 145, 240, 29, 156, 130, 240, 30, 140, 115, 240, 31, 124, 100, 240, 32, 108, 85, 240, 33, 92, 70, 240, 34, 76, 55, 240, 35, 60, 40, 240, 36, 44, 25, 240, 37, 28, 10, 240, 38, 11, 251, 240, 39, 5, 39, 112, 39, 245, 24, 112, 40, 229, 23, 128, 41, 120, 191, 128, 41, 212, 250, 112, 42, 196, 235, 112, 43, 180, 220, 112, 44, 164, 205, 112, 45, 148, 190, 112, 46, 132, 175, 112, 47, 116, 160, 112, 48, 100, 145, 112, 49, 93, 188, 240, 50, 114, 151, 240, 51, 61, 158, 240, 52, 82, 121, 240, 53, 29, 128, 240, 54, 50, 91, 240, 54, 253, 98, 240, 56, 27, 120, 112, 56, 221, 68, 240, 57, 251, 90, 112, 58, 189, 38, 240, 59, 219, 60, 112, 60, 166, 67, 112, 61, 187, 30, 112, 62, 134, 37, 112, 63, 155, 0, 112, 64, 102, 7, 112, 65, 132, 28, 240, 66, 69, 233, 112, 67, 99, 254, 240, 68, 37, 203, 112, 69, 67, 224, 240, 70, 5, 173, 112, 71, 35, 194, 240, 71, 238, 201, 240, 73, 3, 164, 240, 73, 206, 171, 240, 74, 227, 134, 240, 75, 174, 141, 240, 76, 204, 163, 112, 77, 142, 111, 240, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 17, 0, 0, 0, 38, 255, 255, 255, 255, 86, 182, 192, 199, 255, 255, 255, 255, 155, 95, 30, 199, 255, 255, 255, 255, 157, 62, 242, 121, 255, 255, 255, 255, 158, 42, 238, 249, 255, 255, 255, 255, 158, 247, 57, 105, 255, 255, 255, 255, 159, 132, 87, 249, 255, 255, 255, 255, 160, 216, 108, 233, 255, 255, 255, 255, 161, 0, 57, 128, 255, 255, 255, 255, 161, 60, 166, 64, 255, 255, 255, 255, 164, 16, 109, 192, 255, 255, 255, 255, 164, 61, 50, 176, 255, 255, 255, 255, 165, 21, 104, 176, 255, 255, 255, 255, 165, 61, 3, 192, 255, 255, 255, 255, 167, 30, 69, 80, 255, 255, 255, 255, 181, 164, 25, 96, 0, 0, 0, 0, 21, 39, 167, 208, 0, 0, 0, 0, 22, 24, 220, 64, 0, 0, 0, 0, 23, 8, 219, 80, 0, 0, 0, 0, 23, 250, 15, 192, 0, 0, 0, 0, 24, 234, 14, 208, 0, 0, 0, 0, 25, 219, 67, 64, 0, 0, 0, 0, 26, 204, 147, 208, 0, 0, 0, 0, 27, 188, 160, 240, 0, 0, 0, 0, 28, 172, 145, 240, 0, 0, 0, 0, 29, 156, 130, 240, 0, 0, 0, 0, 30, 140, 115, 240, 0, 0, 0, 0, 31, 124, 100, 240, 0, 0, 0, 0, 32, 108, 85, 240, 0, 0, 0, 0, 33, 92, 70, 240, 0, 0, 0, 0, 34, 76, 55, 240, 0, 0, 0, 0, 35, 60, 40, 240, 0, 0, 0, 0, 36, 44, 25, 240, 0, 0, 0, 0, 37, 28, 10, 240, 0, 0, 0, 0, 38, 11, 251, 240, 0, 0, 0, 0, 39, 5, 39, 112, 0, 0, 0, 0, 39, 245, 24, 112, 0, 0, 0, 0, 40, 229, 23, 128, 0, 0, 0, 0, 41, 120, 191, 128, 0, 0, 0, 0, 41, 212, 250, 112, 0, 0, 0, 0, 42, 196, 235, 112, 0, 0, 0, 0, 43, 180, 220, 112, 0, 0, 0, 0, 44, 164, 205, 112, 0, 0, 0, 0, 45, 148, 190, 112, 0, 0, 0, 0, 46, 132, 175, 112, 0, 0, 0, 0, 47, 116, 160, 112, 0, 0, 0, 0, 48, 100, 145, 112, 0, 0, 0, 0, 49, 93, 188, 240, 0, 0, 0, 0, 50, 114, 151, 240, 0, 0, 0, 0, 51, 61, 158, 240, 0, 0, 0, 0, 52, 82, 121, 240, 0, 0, 0, 0, 53, 29, 128, 240, 0, 0, 0, 0, 54, 50, 91, 240, 0, 0, 0, 0, 54, 253, 98, 240, 0, 0, 0, 0, 56, 27, 120, 112, 0, 0, 0, 0, 56, 221, 68, 240, 0, 0, 0, 0, 57, 251, 90, 112, 0, 0, 0, 0, 58, 189, 38, 240, 0, 0, 0, 0, 59, 219, 60, 112, 0, 0, 0, 0, 60, 166, 67, 112, 0, 0, 0, 0, 61, 187, 30, 112, 0, 0, 0, 0, 62, 134, 37, 112, 0, 0, 0, 0, 63, 155, 0, 112, 0, 0, 0, 0, 64, 102, 7, 112, 0, 0, 0, 0, 65, 132, 28, 240, 0, 0, 0, 0, 66, 69, 233, 112, 0, 0, 0, 0, 67, 99, 254, 240, 0, 0, 0, 0, 68, 37, 203, 112, 0, 0, 0, 0, 69, 67, 224, 240, 0, 0, 0, 0, 70, 5, 173, 112, 0, 0, 0, 0, 71, 35, 194, 240, 0, 0, 0, 0, 71, 238, 201, 240, 0, 0, 0, 0, 73, 3, 164, 240, 0, 0, 0, 0, 73, 206, 171, 240, 0, 0, 0, 0, 74, 227, 134, 240, 0, 0, 0, 0, 75, 174, 141, 240, 0, 0, 0, 0, 76, 204, 163, 112, 0, 0, 0, 0, 77, 142, 111, 240, 0, 0, 0, 0, 84, 76, 29, 96, 1, 3, 2, 3, 4, 2, 4, 5, 6, 7, 8, 7, 6, 9, 6, 7, 6, 7, 6, 7, 6, 7, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 12, 13, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 14, 10, 0, 0, 35, 57, 0, 0, 0, 0, 35, 57, 0, 4, 0, 0, 49, 135, 1, 8, 0, 0, 35, 119, 0, 4, 0, 0, 63, 151, 1, 12, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 70, 80, 1, 25, 0, 0, 28, 32, 0, 29, 0, 0, 42, 48, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 1, 33, 0, 0, 28, 32, 0, 29, 0, 0, 56, 64, 0, 21, 0, 0, 56, 64, 1, 17, 0, 0, 42, 48, 0, 21, 76, 77, 84, 0, 77, 77, 84, 0, 77, 83, 84, 0, 77, 68, 83, 84, 0, 77, 83, 68, 0, 77, 83, 75, 0, 43, 48, 53, 0, 69, 69, 84, 0, 69, 69, 83, 84, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 77, 83, 75, 45, 51, 10}, - "zoneinfo/WET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 2, 0, 0, 0, 9, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 1, 4, 87, 69, 84, 0, 87, 69, 83, 84, 0, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, + "zoneinfo/WET": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 4, 0, 0, 0, 9, 13, 164, 99, 144, 14, 139, 26, 16, 15, 132, 69, 144, 16, 116, 54, 144, 17, 100, 39, 144, 18, 84, 24, 144, 19, 77, 68, 16, 20, 51, 250, 144, 21, 35, 235, 144, 22, 19, 220, 144, 23, 3, 205, 144, 23, 243, 190, 144, 24, 227, 175, 144, 25, 211, 160, 144, 26, 195, 145, 144, 27, 188, 189, 16, 28, 172, 174, 16, 29, 156, 159, 16, 30, 140, 144, 16, 31, 124, 129, 16, 32, 108, 114, 16, 33, 92, 99, 16, 34, 76, 84, 16, 35, 60, 69, 16, 36, 44, 54, 16, 37, 28, 39, 16, 38, 12, 24, 16, 39, 5, 67, 144, 39, 245, 52, 144, 40, 229, 37, 144, 41, 213, 22, 144, 42, 197, 7, 144, 43, 180, 248, 144, 44, 164, 233, 144, 45, 148, 218, 144, 46, 132, 203, 144, 47, 116, 188, 144, 48, 100, 173, 144, 49, 93, 217, 16, 50, 114, 180, 16, 51, 61, 187, 16, 52, 82, 150, 16, 53, 29, 157, 16, 54, 50, 120, 16, 54, 253, 127, 16, 56, 27, 148, 144, 56, 221, 97, 16, 57, 251, 118, 144, 58, 189, 67, 16, 59, 219, 88, 144, 60, 166, 95, 144, 61, 187, 58, 144, 62, 134, 65, 144, 63, 155, 28, 144, 64, 102, 35, 144, 65, 132, 57, 16, 66, 70, 5, 144, 67, 100, 27, 16, 68, 37, 231, 144, 69, 67, 253, 16, 70, 5, 201, 144, 71, 35, 223, 16, 71, 238, 230, 16, 73, 3, 193, 16, 73, 206, 200, 16, 74, 227, 163, 16, 75, 174, 170, 16, 76, 204, 191, 144, 77, 142, 140, 16, 78, 172, 161, 144, 79, 110, 110, 16, 80, 140, 131, 144, 81, 87, 138, 144, 82, 108, 101, 144, 83, 55, 108, 144, 84, 76, 71, 144, 85, 23, 78, 144, 86, 44, 41, 144, 86, 247, 48, 144, 88, 21, 70, 16, 88, 215, 18, 144, 89, 245, 40, 16, 90, 182, 244, 144, 91, 213, 10, 16, 92, 160, 17, 16, 93, 180, 236, 16, 94, 127, 243, 16, 95, 148, 206, 16, 96, 95, 213, 16, 97, 125, 234, 144, 98, 63, 183, 16, 99, 93, 204, 144, 100, 31, 153, 16, 101, 61, 174, 144, 102, 8, 181, 144, 103, 29, 144, 144, 103, 232, 151, 144, 104, 253, 114, 144, 105, 200, 121, 144, 106, 221, 84, 144, 107, 168, 91, 144, 108, 198, 113, 16, 109, 136, 61, 144, 110, 166, 83, 16, 111, 104, 31, 144, 112, 134, 53, 16, 113, 81, 60, 16, 114, 102, 23, 16, 115, 49, 30, 16, 116, 69, 249, 16, 117, 17, 0, 16, 118, 47, 21, 144, 118, 240, 226, 16, 120, 14, 247, 144, 120, 208, 196, 16, 121, 238, 217, 144, 122, 176, 166, 16, 123, 206, 187, 144, 124, 153, 194, 144, 125, 174, 157, 144, 126, 121, 164, 144, 127, 142, 127, 144, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 14, 16, 1, 0, 0, 0, 14, 16, 1, 0, 0, 0, 0, 0, 0, 5, 87, 69, 83, 84, 0, 87, 69, 84, 0, 1, 1, 1, 1, 1, 1, 1, 1, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 0, 13, 164, 99, 144, 0, 0, 0, 0, 14, 139, 26, 16, 0, 0, 0, 0, 15, 132, 69, 144, 0, 0, 0, 0, 16, 116, 54, 144, 0, 0, 0, 0, 17, 100, 39, 144, 0, 0, 0, 0, 18, 84, 24, 144, 0, 0, 0, 0, 19, 77, 68, 16, 0, 0, 0, 0, 20, 51, 250, 144, 0, 0, 0, 0, 21, 35, 235, 144, 0, 0, 0, 0, 22, 19, 220, 144, 0, 0, 0, 0, 23, 3, 205, 144, 0, 0, 0, 0, 23, 243, 190, 144, 0, 0, 0, 0, 24, 227, 175, 144, 0, 0, 0, 0, 25, 211, 160, 144, 0, 0, 0, 0, 26, 195, 145, 144, 0, 0, 0, 0, 27, 188, 189, 16, 0, 0, 0, 0, 28, 172, 174, 16, 0, 0, 0, 0, 29, 156, 159, 16, 0, 0, 0, 0, 30, 140, 144, 16, 0, 0, 0, 0, 31, 124, 129, 16, 0, 0, 0, 0, 32, 108, 114, 16, 0, 0, 0, 0, 33, 92, 99, 16, 0, 0, 0, 0, 34, 76, 84, 16, 0, 0, 0, 0, 35, 60, 69, 16, 0, 0, 0, 0, 36, 44, 54, 16, 0, 0, 0, 0, 37, 28, 39, 16, 0, 0, 0, 0, 38, 12, 24, 16, 0, 0, 0, 0, 39, 5, 67, 144, 0, 0, 0, 0, 39, 245, 52, 144, 0, 0, 0, 0, 40, 229, 37, 144, 0, 0, 0, 0, 41, 213, 22, 144, 0, 0, 0, 0, 42, 197, 7, 144, 0, 0, 0, 0, 43, 180, 248, 144, 0, 0, 0, 0, 44, 164, 233, 144, 0, 0, 0, 0, 45, 148, 218, 144, 0, 0, 0, 0, 46, 132, 203, 144, 0, 0, 0, 0, 47, 116, 188, 144, 0, 0, 0, 0, 48, 100, 173, 144, 0, 0, 0, 0, 49, 93, 217, 16, 0, 0, 0, 0, 50, 114, 180, 16, 0, 0, 0, 0, 51, 61, 187, 16, 0, 0, 0, 0, 52, 82, 150, 16, 0, 0, 0, 0, 53, 29, 157, 16, 0, 0, 0, 0, 54, 50, 120, 16, 0, 0, 0, 0, 54, 253, 127, 16, 0, 0, 0, 0, 56, 27, 148, 144, 0, 0, 0, 0, 56, 221, 97, 16, 0, 0, 0, 0, 57, 251, 118, 144, 0, 0, 0, 0, 58, 189, 67, 16, 0, 0, 0, 0, 59, 219, 88, 144, 0, 0, 0, 0, 60, 166, 95, 144, 0, 0, 0, 0, 61, 187, 58, 144, 0, 0, 0, 0, 62, 134, 65, 144, 0, 0, 0, 0, 63, 155, 28, 144, 0, 0, 0, 0, 64, 102, 35, 144, 0, 0, 0, 0, 65, 132, 57, 16, 0, 0, 0, 0, 66, 70, 5, 144, 0, 0, 0, 0, 67, 100, 27, 16, 0, 0, 0, 0, 68, 37, 231, 144, 0, 0, 0, 0, 69, 67, 253, 16, 0, 0, 0, 0, 70, 5, 201, 144, 0, 0, 0, 0, 71, 35, 223, 16, 0, 0, 0, 0, 71, 238, 230, 16, 0, 0, 0, 0, 73, 3, 193, 16, 0, 0, 0, 0, 73, 206, 200, 16, 0, 0, 0, 0, 74, 227, 163, 16, 0, 0, 0, 0, 75, 174, 170, 16, 0, 0, 0, 0, 76, 204, 191, 144, 0, 0, 0, 0, 77, 142, 140, 16, 0, 0, 0, 0, 78, 172, 161, 144, 0, 0, 0, 0, 79, 110, 110, 16, 0, 0, 0, 0, 80, 140, 131, 144, 0, 0, 0, 0, 81, 87, 138, 144, 0, 0, 0, 0, 82, 108, 101, 144, 0, 0, 0, 0, 83, 55, 108, 144, 0, 0, 0, 0, 84, 76, 71, 144, 0, 0, 0, 0, 85, 23, 78, 144, 0, 0, 0, 0, 86, 44, 41, 144, 0, 0, 0, 0, 86, 247, 48, 144, 0, 0, 0, 0, 88, 21, 70, 16, 0, 0, 0, 0, 88, 215, 18, 144, 0, 0, 0, 0, 89, 245, 40, 16, 0, 0, 0, 0, 90, 182, 244, 144, 0, 0, 0, 0, 91, 213, 10, 16, 0, 0, 0, 0, 92, 160, 17, 16, 0, 0, 0, 0, 93, 180, 236, 16, 0, 0, 0, 0, 94, 127, 243, 16, 0, 0, 0, 0, 95, 148, 206, 16, 0, 0, 0, 0, 96, 95, 213, 16, 0, 0, 0, 0, 97, 125, 234, 144, 0, 0, 0, 0, 98, 63, 183, 16, 0, 0, 0, 0, 99, 93, 204, 144, 0, 0, 0, 0, 100, 31, 153, 16, 0, 0, 0, 0, 101, 61, 174, 144, 0, 0, 0, 0, 102, 8, 181, 144, 0, 0, 0, 0, 103, 29, 144, 144, 0, 0, 0, 0, 103, 232, 151, 144, 0, 0, 0, 0, 104, 253, 114, 144, 0, 0, 0, 0, 105, 200, 121, 144, 0, 0, 0, 0, 106, 221, 84, 144, 0, 0, 0, 0, 107, 168, 91, 144, 0, 0, 0, 0, 108, 198, 113, 16, 0, 0, 0, 0, 109, 136, 61, 144, 0, 0, 0, 0, 110, 166, 83, 16, 0, 0, 0, 0, 111, 104, 31, 144, 0, 0, 0, 0, 112, 134, 53, 16, 0, 0, 0, 0, 113, 81, 60, 16, 0, 0, 0, 0, 114, 102, 23, 16, 0, 0, 0, 0, 115, 49, 30, 16, 0, 0, 0, 0, 116, 69, 249, 16, 0, 0, 0, 0, 117, 17, 0, 16, 0, 0, 0, 0, 118, 47, 21, 144, 0, 0, 0, 0, 118, 240, 226, 16, 0, 0, 0, 0, 120, 14, 247, 144, 0, 0, 0, 0, 120, 208, 196, 16, 0, 0, 0, 0, 121, 238, 217, 144, 0, 0, 0, 0, 122, 176, 166, 16, 0, 0, 0, 0, 123, 206, 187, 144, 0, 0, 0, 0, 124, 153, 194, 144, 0, 0, 0, 0, 125, 174, 157, 144, 0, 0, 0, 0, 126, 121, 164, 144, 0, 0, 0, 0, 127, 142, 127, 144, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 14, 16, 1, 0, 0, 0, 14, 16, 1, 0, 0, 0, 0, 0, 0, 5, 87, 69, 83, 84, 0, 87, 69, 84, 0, 1, 1, 1, 1, 1, 1, 1, 1, 10, 87, 69, 84, 48, 87, 69, 83, 84, 44, 77, 51, 46, 53, 46, 48, 47, 49, 44, 77, 49, 48, 46, 53, 46, 48, 10}, - "zoneinfo/Zulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 0, 0, 10, 85, 84, 67, 48, 10}, + "zoneinfo/Zulu": []byte{84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 84, 90, 105, 102, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 85, 84, 67, 0, 10, 85, 84, 67, 48, 10}, } diff --git a/vendor/cloud.google.com/go/CHANGES.md b/vendor/cloud.google.com/go/CHANGES.md new file mode 100644 index 00000000000..e50e9106601 --- /dev/null +++ b/vendor/cloud.google.com/go/CHANGES.md @@ -0,0 +1,1391 @@ +# Changes + +## v0.47.0 + +This release drops support for Go 1.9 and Go 1.10: we continue to officially +support Go 1.11, Go 1.12, and Go 1.13. + +- Various updates to autogenerated clients. +- Add cloudbuild/apiv1 client. + +## v0.46.3 + +This is an empty release that was created solely to aid in storage's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.46.2 + +This is an empty release that was created solely to aid in spanner's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.46.1 + +This is an empty release that was created solely to aid in firestore's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.46.0 + +- spanner: + - Retry "Session not found" for read-only transactions. + - Retry aborted PDMLs. +- spanner/spannertest: + - Fix a bug that was causing 0X-prefixed number to be parsed incorrectly. +- storage: + - Add HMACKeyOptions. + - Remove *REGIONAL from StorageClass documentation. Using MULTI_REGIONAL, + DURABLE_REDUCED_AVAILABILITY, and REGIONAL are no longer best practice + StorageClasses but they are still acceptable values. +- trace: + - Remove cloud.google.com/go/trace. Package cloud.google.com/go/trace has been + marked OBSOLETE for several years: it is now no longer provided. If you + relied on this package, please vendor it or switch to using + https://cloud.google.com/trace/docs/setup/go (which obsoleted it). + +## v0.45.1 + +This is an empty release that was created solely to aid in pubsub's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.45.0 + +- compute/metadata: + - Add Email method. +- storage: + - Fix duplicated retry logic. + - Add ReaderObjectAttrs.StartOffset. + - Support reading last N bytes of a file when a negative range is given, such + as `obj.NewRangeReader(ctx, -10, -1)`. + - Add HMACKey listing functionality. +- spanner/spannertest: + - Support primary keys with no columns. + - Fix MinInt64 parsing. + - Implement deletion of key ranges. + - Handle reads during a read-write transaction. + - Handle returning DATE values. +- pubsub: + - Fix Ack/Modack request size calculation. +- logging: + - Add auto-detection of monitored resources on GAE Standard. + +## v0.44.3 + +This is an empty release that was created solely to aid in bigtable's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.44.2 + +This is an empty release that was created solely to aid in bigquery's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.44.1 + +This is an empty release that was created solely to aid in datastore's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.44.0 + +- datastore: + - Interface elements whose underlying types are supported, are now supported. + - Reduce time to initial retry from 1s to 100ms. +- firestore: + - Add Increment transformation. +- storage: + - Allow emulator with STORAGE_EMULATOR_HOST. + - Add methods for HMAC key management. +- pubsub: + - Add PublishCount and PublishLatency measurements. + - Add DefaultPublishViews and DefaultSubscribeViews for convenience of + importing all views. + - Add add Subscription.PushConfig.AuthenticationMethod. +- spanner: + - Allow emulator usage with SPANNER_EMULATOR_HOST. + - Add cloud.google.com/go/spanner/spannertest, a spanner emulator. + - Add cloud.google.com/go/spanner/spansql which contains types and a parser + for the Cloud Spanner SQL dialect. +- asset: + - Add apiv1p2beta1 client. + +## v0.43.0 + +This is an empty release that was created solely to aid in logging's module +carve-out. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. + +## v0.42.0 + +- bigtable: + - Add an admin method to update an instance and clusters. + - Fix bttest regex matching behavior for alternations (things like `|a`). + - Expose BlockAllFilter filter. +- bigquery: + - Add Routines API support. +- storage: + - Add read-only Bucket.LocationType. +- logging: + - Add TraceSampled to Entry. + - Fix to properly extract {Trace, Span}Id from X-Cloud-Trace-Context. +- pubsub: + - Add Cloud Key Management to TopicConfig. + - Change ExpirationPolicy to optional.Duration. +- automl: + - Add apiv1beta1 client. +- iam: + - Fix compilation problem with iam/credentials/apiv1. + +## v0.41.0 + +- bigtable: + - Check results from PredicateFilter in bttest, which fixes certain false matches. +- profiler: + - debugLog checks user defined logging options before logging. +- spanner: + - PartitionedUpdates respect query parameters. + - StartInstance allows specifying cloud API access scopes. +- bigquery: + - Use empty slice instead of nil for ValueSaver, fixing an issue with zero-length, repeated, nested fields causing panics. +- firestore: + - Return same number of snapshots as doc refs (in the form of duplicate records) during GetAll. +- replay: + - Change references to IPv4 addresses to localhost, making replay compatible with IPv6. + +## v0.40.0 + +- all: + - Update to protobuf-golang v1.3.1. +- datastore: + - Attempt to decode GAE-encoded keys if initial decoding attempt fails. + - Support integer time conversion. +- pubsub: + - Add PublishSettings.BundlerByteLimit. If users receive pubsub.ErrOverflow, + this value should be adjusted higher. + - Use IPv6 compatible target in testutil. +- bigtable: + - Fix Latin-1 regexp filters in bttest, allowing \C. + - Expose PassAllFilter. +- profiler: + - Add log messages for slow path in start. + - Fix start to allow retry until success. +- firestore: + - Add admin client. +- containeranalysis: + - Add apiv1 client. +- grafeas: + - Add apiv1 client. + +## 0.39.0 + +- bigtable: + - Implement DeleteInstance in bttest. + - Return an error on invalid ReadRowsRequest.RowRange key ranges in bttest. +- bigquery: + - Move RequirePartitionFilter outside of TimePartioning. + - Expose models API. +- firestore: + - Allow array values in create and update calls. + - Add CollectionGroup method. +- pubsub: + - Add ExpirationPolicy to Subscription. +- storage: + - Add V4 signing. +- rpcreplay: + - Match streams by first sent request. This further improves rpcreplay's + ability to distinguish streams. +- httpreplay: + - Set up Man-In-The-Middle config only once. This should improve proxy + creation when multiple proxies are used in a single process. + - Remove error on empty Content-Type, allowing requests with no Content-Type + header but a non-empty body. +- all: + - Fix an edge case bug in auto-generated library pagination by properly + propagating pagetoken. + +## 0.38.0 + +This update includes a substantial reduction in our transitive dependency list +by way of updating to opencensus@v0.21.0. + +- spanner: + - Error implements GRPCStatus, allowing status.Convert. +- bigtable: + - Fix a bug in bttest that prevents single column queries returning results + that match other filters. + - Remove verbose retry logging. +- logging: + - Ensure RequestUrl has proper UTF-8, removing the need for users to wrap and + rune replace manually. +- recaptchaenterprise: + - Add v1beta1 client. +- phishingprotection: + - Add v1beta1 client. + +## 0.37.4 + +This patch releases re-builds the go.sum. This was not possible in the +previous release. + +- firestore: + - Add sentinel value DetectProjectID for auto-detecting project ID. + - Add OpenCensus tracing for public methods. + - Marked stable. All future changes come with a backwards compatibility + guarantee. + - Removed firestore/apiv1beta1. All users relying on this low-level library + should migrate to firestore/apiv1. Note that most users should use the + high-level firestore package instead. +- pubsub: + - Allow large messages in synchronous pull case. + - Cap bundler byte limit. This should prevent OOM conditions when there are + a very large number of message publishes occurring. +- storage: + - Add ETag to BucketAttrs and ObjectAttrs. +- datastore: + - Removed some non-sensical OpenCensus traces. +- webrisk: + - Add v1 client. +- asset: + - Add v1 client. +- cloudtasks: + - Add v2 client. + +## 0.37.3 + +This patch release removes github.com/golang/lint from the transitive +dependency list, resolving `go get -u` problems. + +Note: this release intentionally has a broken go.sum. Please use v0.37.4. + +## 0.37.2 + +This patch release is mostly intended to bring in v0.3.0 of +google.golang.org/api, which fixes a GCF deployment issue. + +Note: we had to-date accidentally marked Redis as stable. In this release, we've +fixed it by downgrading its documentation to alpha, as it is in other languages +and docs. + +- all: + - Document context in generated libraries. + +## 0.37.1 + +Small go.mod version bumps to bring in v0.2.0 of google.golang.org/api, which +introduces a new oauth2 url. + +## 0.37.0 + +- spanner: + - Add BatchDML method. + - Reduced initial time between retries. +- bigquery: + - Produce better error messages for InferSchema. + - Add logical type control for avro loads. + - Add support for the GEOGRAPHY type. +- datastore: + - Add sentinel value DetectProjectID for auto-detecting project ID. + - Allow flatten tag on struct pointers. + - Fixed a bug that caused queries to panic with invalid queries. Instead they + will now return an error. +- profiler: + - Add ability to override GCE zone and instance. +- pubsub: + - BEHAVIOR CHANGE: Refactor error code retry logic. RPCs should now more + consistently retry specific error codes based on whether they're idempotent + or non-idempotent. +- httpreplay: Fixed a bug when a non-GET request had a zero-length body causing + the Content-Length header to be dropped. +- iot: + - Add new apiv1 client. +- securitycenter: + - Add new apiv1 client. +- cloudscheduler: + - Add new apiv1 client. + +## 0.36.0 + +- spanner: + - Reduce minimum retry backoff from 1s to 100ms. This makes time between + retries much faster and should improve latency. +- storage: + - Add support for Bucket Policy Only. +- kms: + - Add ResourceIAM helper method. + - Deprecate KeyRingIAM and CryptoKeyIAM. Please use ResourceIAM. +- firestore: + - Switch from v1beta1 API to v1 API. + - Allow emulator with FIRESTORE_EMULATOR_HOST. +- bigquery: + - Add NumLongTermBytes to Table. + - Add TotalBytesProcessedAccuracy to QueryStatistics. +- irm: + - Add new v1alpha2 client. +- talent: + - Add new v4beta1 client. +- rpcreplay: + - Fix connection to work with grpc >= 1.17. + - It is now required for an actual gRPC server to be running for Dial to + succeed. + +## 0.35.1 + +- spanner: + - Adds OpenCensus views back to public API. + +## v0.35.0 + +- all: + - Add go.mod and go.sum. + - Switch usage of gax-go to gax-go/v2. +- bigquery: + - Fix bug where time partitioning could not be removed from a table. + - Fix panic that occurred with empty query parameters. +- bttest: + - Fix bug where deleted rows were returned by ReadRows. +- bigtable/emulator: + - Configure max message size to 256 MiB. +- firestore: + - Allow non-transactional queries in transactions. + - Allow StartAt/EndBefore on direct children at any depth. + - QuerySnapshotIterator.Stop may be called in an error state. + - Fix bug the prevented reset of transaction write state in between retries. +- functions/metadata: + - Make Metadata.Resource a pointer. +- logging: + - Make SpanID available in logging.Entry. +- metadata: + - Wrap !200 error code in a typed err. +- profiler: + - Add function to check if function name is within a particular file in the + profile. + - Set parent field in create profile request. + - Return kubernetes client to start cluster, so client can be used to poll + cluster. + - Add function for checking if filename is in profile. +- pubsub: + - Fix bug where messages expired without an initial modack in + synchronous=true mode. + - Receive does not retry ResourceExhausted errors. +- spanner: + - client.Close now cancels existing requests and should be much faster for + large amounts of sessions. + - Correctly allow MinOpened sessions to be spun up. + +## v0.34.0 + +- functions/metadata: + - Switch to using JSON in context. + - Make Resource a value. +- vision: Fix ProductSearch return type. +- datastore: Add an example for how to handle MultiError. + +## v0.33.1 + +- compute: Removes an erroneously added go.mod. +- logging: Populate source location in fromLogEntry. + +## v0.33.0 + +- bttest: + - Add support for apply_label_transformer. +- expr: + - Add expr library. +- firestore: + - Support retrieval of missing documents. +- kms: + - Add IAM methods. +- pubsub: + - Clarify extension documentation. +- scheduler: + - Add v1beta1 client. +- vision: + - Add product search helper. + - Add new product search client. + +## v0.32.0 + +Note: This release is the last to support Go 1.6 and 1.8. + +- bigquery: + - Add support for removing an expiration. + - Ignore NeverExpire in Table.Create. + - Validate table expiration time. +- cbt: + - Add note about not supporting arbitrary bytes. +- datastore: + - Align key checks. +- firestore: + - Return an error when using Start/End without providing values. +- pubsub: + - Add pstest Close method. + - Clarify MaxExtension documentation. +- securitycenter: + - Add v1beta1 client. +- spanner: + - Allow nil in mutations. + - Improve doc of SessionPoolConfig.MaxOpened. + - Increase session deletion timeout from 5s to 15s. + +## v0.31.0 + +- bigtable: + - Group mutations across multiple requests. +- bigquery: + - Link to bigquery troubleshooting errors page in bigquery.Error comment. +- cbt: + - Fix go generate command. + - Document usage of both maxage + maxversions. +- datastore: + - Passing nil keys results in ErrInvalidKey. +- firestore: + - Clarify what Document.DataTo does with untouched struct fields. +- profile: + - Validate service name in agent. +- pubsub: + - Fix deadlock with pstest and ctx.Cancel. + - Fix a possible deadlock in pstest. +- trace: + - Update doc URL with new fragment. + +Special thanks to @fastest963 for going above and beyond helping us to debug +hard-to-reproduce Pub/Sub issues. + +## v0.30.0 + +- spanner: DML support added. See https://godoc.org/cloud.google.com/go/spanner#hdr-DML_and_Partitioned_DML for more information. +- bigtable: bttest supports row sample filter. +- functions: metadata package added for accessing Cloud Functions resource metadata. + +## v0.29.0 + +- bigtable: + - Add retry to all idempotent RPCs. + - cbt supports complex GC policies. + - Emulator supports arbitrary bytes in regex filters. +- firestore: Add ArrayUnion and ArrayRemove. +- logging: Add the ContextFunc option to supply the context used for + asynchronous RPCs. +- profiler: Ignore NotDefinedError when fetching the instance name +- pubsub: + - BEHAVIOR CHANGE: Receive doesn't retry if an RPC returns codes.Cancelled. + - BEHAVIOR CHANGE: Receive retries on Unavailable intead of returning. + - Fix deadlock. + - Restore Ack/Nack/Modacks metrics. + - Improve context handling in iterator. + - Implement synchronous mode for Receive. + - pstest: add Pull. +- spanner: Add a metric for the number of sessions currently opened. +- storage: + - Canceling the context releases all resources. + - Add additional RetentionPolicy attributes. +- vision/apiv1: Add LocalizeObjects method. + +## v0.28.0 + +- bigtable: + - Emulator returns Unimplemented for snapshot RPCs. +- bigquery: + - Support zero-length repeated, nested fields. +- cloud assets: + - Add v1beta client. +- datastore: + - Don't nil out transaction ID on retry. +- firestore: + - BREAKING CHANGE: When watching a query with Query.Snapshots, QuerySnapshotIterator.Next + returns a QuerySnapshot which contains read time, result size, change list and the DocumentIterator + (previously, QuerySnapshotIterator.Next returned just the DocumentIterator). See: https://godoc.org/cloud.google.com/go/firestore#Query.Snapshots. + - Add array-contains operator. +- IAM: + - Add iam/credentials/apiv1 client. +- pubsub: + - Canceling the context passed to Subscription.Receive causes Receive to return when + processing finishes on all messages currently in progress, even if new messages are arriving. +- redis: + - Add redis/apiv1 client. +- storage: + - Add Reader.Attrs. + - Deprecate several Reader getter methods: please use Reader.Attrs for these instead. + - Add ObjectHandle.Bucket and ObjectHandle.Object methods. + +## v0.27.0 + +- bigquery: + - Allow modification of encryption configuration and partitioning options to a table via the Update call. + - Add a SchemaFromJSON function that converts a JSON table schema. +- bigtable: + - Restore cbt count functionality. +- containeranalysis: + - Add v1beta client. +- spanner: + - Fix a case where an iterator might not be closed correctly. +- storage: + - Add ServiceAccount method https://godoc.org/cloud.google.com/go/storage#Client.ServiceAccount. + - Add a method to Reader that returns the parsed value of the Last-Modified header. + +## v0.26.0 + +- bigquery: + - Support filtering listed jobs by min/max creation time. + - Support data clustering (https://godoc.org/cloud.google.com/go/bigquery#Clustering). + - Include job creator email in Job struct. +- bigtable: + - Add `RowSampleFilter`. + - emulator: BREAKING BEHAVIOR CHANGE: Regexps in row, family, column and value filters + must match the entire target string to succeed. Previously, the emulator was + succeeding on partial matches. + NOTE: As of this release, this change only affects the emulator when run + from this repo (bigtable/cmd/emulator/cbtemulator.go). The version launched + from `gcloud` will be updated in a subsequent `gcloud` release. +- dataproc: Add apiv1beta2 client. +- datastore: Save non-nil pointer fields on omitempty. +- logging: populate Entry.Trace from the HTTP X-Cloud-Trace-Context header. +- logging/logadmin: Support writer_identity and include_children. +- pubsub: + - Support labels on topics and subscriptions. + - Support message storage policy for topics. + - Use the distribution of ack times to determine when to extend ack deadlines. + The only user-visible effect of this change should be that programs that + call only `Subscription.Receive` need no IAM permissions other than `Pub/Sub + Subscriber`. +- storage: + - Support predefined ACLs. + - Support additional ACL fields other than Entity and Role. + - Support bucket websites. + - Support bucket logging. + + +## v0.25.0 + +- Added [Code of Conduct](https://github.com/googleapis/google-cloud-go/blob/master/CODE_OF_CONDUCT.md) +- bigtable: + - cbt: Support a GC policy of "never". +- errorreporting: + - Support User. + - Close now calls Flush. + - Use OnError (previously ignored). + - Pass through the RPC error as-is to OnError. +- httpreplay: A tool for recording and replaying HTTP requests + (for the bigquery and storage clients in this repo). +- kms: v1 client added +- logging: add SourceLocation to Entry. +- storage: improve CRC checking on read. + +## v0.24.0 + +- bigquery: Support for the NUMERIC type. +- bigtable: + - cbt: Optionally specify columns for read/lookup + - Support instance-level administration. +- oslogin: New client for the OS Login API. +- pubsub: + - The package is now stable. There will be no further breaking changes. + - Internal changes to improve Subscription.Receive behavior. +- storage: Support updating bucket lifecycle config. +- spanner: Support struct-typed parameter bindings. +- texttospeech: New client for the Text-to-Speech API. + +## v0.23.0 + +- bigquery: Add DDL stats to query statistics. +- bigtable: + - cbt: Add cells-per-column limit for row lookup. + - cbt: Make it possible to combine read filters. +- dlp: v2beta2 client removed. Use the v2 client instead. +- firestore, spanner: Fix compilation errors due to protobuf changes. + +## v0.22.0 + +- bigtable: + - cbt: Support cells per column limit for row read. + - bttest: Correctly handle empty RowSet. + - Fix ReadModifyWrite operation in emulator. + - Fix API path in GetCluster. + +- bigquery: + - BEHAVIOR CHANGE: Retry on 503 status code. + - Add dataset.DeleteWithContents. + - Add SchemaUpdateOptions for query jobs. + - Add Timeline to QueryStatistics. + - Add more stats to ExplainQueryStage. + - Support Parquet data format. + +- datastore: + - Support omitempty for times. + +- dlp: + - **BREAKING CHANGE:** Remove v1beta1 client. Please migrate to the v2 client, + which is now out of beta. + - Add v2 client. + +- firestore: + - BEHAVIOR CHANGE: Treat set({}, MergeAll) as valid. + +- iam: + - Support JWT signing via SignJwt callopt. + +- profiler: + - BEHAVIOR CHANGE: PollForSerialOutput returns an error when context.Done. + - BEHAVIOR CHANGE: Increase the initial backoff to 1 minute. + - Avoid returning empty serial port output. + +- pubsub: + - BEHAVIOR CHANGE: Don't backoff during next retryable error once stream is healthy. + - BEHAVIOR CHANGE: Don't backoff on EOF. + - pstest: Support Acknowledge and ModifyAckDeadline RPCs. + +- redis: + - Add v1 beta Redis client. + +- spanner: + - Support SessionLabels. + +- speech: + - Add api v1 beta1 client. + +- storage: + - BEHAVIOR CHANGE: Retry reads when retryable error occurs. + - Fix delete of object in requester-pays bucket. + - Support KMS integration. + +## v0.21.0 + +- bigquery: + - Add OpenCensus tracing. + +- firestore: + - **BREAKING CHANGE:** If a document does not exist, return a DocumentSnapshot + whose Exists method returns false. DocumentRef.Get and Transaction.Get + return the non-nil DocumentSnapshot in addition to a NotFound error. + **DocumentRef.GetAll and Transaction.GetAll return a non-nil + DocumentSnapshot instead of nil.** + - Add DocumentIterator.Stop. **Call Stop whenever you are done with a + DocumentIterator.** + - Added Query.Snapshots and DocumentRef.Snapshots, which provide realtime + notification of updates. See https://cloud.google.com/firestore/docs/query-data/listen. + - Canceling an RPC now always returns a grpc.Status with codes.Canceled. + +- spanner: + - Add `CommitTimestamp`, which supports inserting the commit timestamp of a + transaction into a column. + +## v0.20.0 + +- bigquery: Support SchemaUpdateOptions for load jobs. + +- bigtable: + - Add SampleRowKeys. + - cbt: Support union, intersection GCPolicy. + - Retry admin RPCS. + - Add trace spans to retries. + +- datastore: Add OpenCensus tracing. + +- firestore: + - Fix queries involving Null and NaN. + - Allow Timestamp protobuffers for time values. + +- logging: Add a WriteTimeout option. + +- spanner: Support Batch API. + +- storage: Add OpenCensus tracing. + +## v0.19.0 + +- bigquery: + - Support customer-managed encryption keys. + +- bigtable: + - Improved emulator support. + - Support GetCluster. + +- datastore: + - Add general mutations. + - Support pointer struct fields. + - Support transaction options. + +- firestore: + - Add Transaction.GetAll. + - Support document cursors. + +- logging: + - Support concurrent RPCs to the service. + - Support per-entry resources. + +- profiler: + - Add config options to disable heap and thread profiling. + - Read the project ID from $GOOGLE_CLOUD_PROJECT when it's set. + +- pubsub: + - BEHAVIOR CHANGE: Release flow control after ack/nack (instead of after the + callback returns). + - Add SubscriptionInProject. + - Add OpenCensus instrumentation for streaming pull. + +- storage: + - Support CORS. + +## v0.18.0 + +- bigquery: + - Marked stable. + - Schema inference of nullable fields supported. + - Added TimePartitioning to QueryConfig. + +- firestore: Data provided to DocumentRef.Set with a Merge option can contain + Delete sentinels. + +- logging: Clients can accept parent resources other than projects. + +- pubsub: + - pubsub/pstest: A lighweight fake for pubsub. Experimental; feedback welcome. + - Support updating more subscription metadata: AckDeadline, + RetainAckedMessages and RetentionDuration. + +- oslogin/apiv1beta: New client for the Cloud OS Login API. + +- rpcreplay: A package for recording and replaying gRPC traffic. + +- spanner: + - Add a ReadWithOptions that supports a row limit, as well as an index. + - Support query plan and execution statistics. + - Added [OpenCensus](http://opencensus.io) support. + +- storage: Clarify checksum validation for gzipped files (it is not validated + when the file is served uncompressed). + + +## v0.17.0 + +- firestore BREAKING CHANGES: + - Remove UpdateMap and UpdateStruct; rename UpdatePaths to Update. + Change + `docref.UpdateMap(ctx, map[string]interface{}{"a.b", 1})` + to + `docref.Update(ctx, []firestore.Update{{Path: "a.b", Value: 1}})` + + Change + `docref.UpdateStruct(ctx, []string{"Field"}, aStruct)` + to + `docref.Update(ctx, []firestore.Update{{Path: "Field", Value: aStruct.Field}})` + - Rename MergePaths to Merge; require args to be FieldPaths + - A value stored as an integer can be read into a floating-point field, and vice versa. +- bigtable/cmd/cbt: + - Support deleting a column. + - Add regex option for row read. +- spanner: Mark stable. +- storage: + - Add Reader.ContentEncoding method. + - Fix handling of SignedURL headers. +- bigquery: + - If Uploader.Put is called with no rows, it returns nil without making a + call. + - Schema inference supports the "nullable" option in struct tags for + non-required fields. + - TimePartitioning supports "Field". + + +## v0.16.0 + +- Other bigquery changes: + - `JobIterator.Next` returns `*Job`; removed `JobInfo` (BREAKING CHANGE). + - UseStandardSQL is deprecated; set UseLegacySQL to true if you need + Legacy SQL. + - Uploader.Put will generate a random insert ID if you do not provide one. + - Support time partitioning for load jobs. + - Support dry-run queries. + - A `Job` remembers its last retrieved status. + - Support retrieving job configuration. + - Support labels for jobs and tables. + - Support dataset access lists. + - Improve support for external data sources, including data from Bigtable and + Google Sheets, and tables with external data. + - Support updating a table's view configuration. + - Fix uploading civil times with nanoseconds. + +- storage: + - Support PubSub notifications. + - Support Requester Pays buckets. + +- profiler: Support goroutine and mutex profile types. + +## v0.15.0 + +- firestore: beta release. See the + [announcement](https://firebase.googleblog.com/2017/10/introducing-cloud-firestore.html). + +- errorreporting: The existing package has been redesigned. + +- errors: This package has been removed. Use errorreporting. + + +## v0.14.0 + +- bigquery BREAKING CHANGES: + - Standard SQL is the default for queries and views. + - `Table.Create` takes `TableMetadata` as a second argument, instead of + options. + - `Dataset.Create` takes `DatasetMetadata` as a second argument. + - `DatasetMetadata` field `ID` renamed to `FullID` + - `TableMetadata` field `ID` renamed to `FullID` + +- Other bigquery changes: + - The client will append a random suffix to a provided job ID if you set + `AddJobIDSuffix` to true in a job config. + - Listing jobs is supported. + - Better retry logic. + +- vision, language, speech: clients are now stable + +- monitoring: client is now beta + +- profiler: + - Rename InstanceName to Instance, ZoneName to Zone + - Auto-detect service name and version on AppEngine. + +## v0.13.0 + +- bigquery: UseLegacySQL options for CreateTable and QueryConfig. Use these + options to continue using Legacy SQL after the client switches its default + to Standard SQL. + +- bigquery: Support for updating dataset labels. + +- bigquery: Set DatasetIterator.ProjectID to list datasets in a project other + than the client's. DatasetsInProject is no longer needed and is deprecated. + +- bigtable: Fail ListInstances when any zones fail. + +- spanner: support decoding of slices of basic types (e.g. []string, []int64, + etc.) + +- logging/logadmin: UpdateSink no longer creates a sink if it is missing + (actually a change to the underlying service, not the client) + +- profiler: Service and ServiceVersion replace Target in Config. + +## v0.12.0 + +- pubsub: Subscription.Receive now uses streaming pull. + +- pubsub: add Client.TopicInProject to access topics in a different project + than the client. + +- errors: renamed errorreporting. The errors package will be removed shortly. + +- datastore: improved retry behavior. + +- bigquery: support updates to dataset metadata, with etags. + +- bigquery: add etag support to Table.Update (BREAKING: etag argument added). + +- bigquery: generate all job IDs on the client. + +- storage: support bucket lifecycle configurations. + + +## v0.11.0 + +- Clients for spanner, pubsub and video are now in beta. + +- New client for DLP. + +- spanner: performance and testing improvements. + +- storage: requester-pays buckets are supported. + +- storage, profiler, bigtable, bigquery: bug fixes and other minor improvements. + +- pubsub: bug fixes and other minor improvements + +## v0.10.0 + +- pubsub: Subscription.ModifyPushConfig replaced with Subscription.Update. + +- pubsub: Subscription.Receive now runs concurrently for higher throughput. + +- vision: cloud.google.com/go/vision is deprecated. Use +cloud.google.com/go/vision/apiv1 instead. + +- translation: now stable. + +- trace: several changes to the surface. See the link below. + +### Code changes required from v0.9.0 + +- pubsub: Replace + + ``` + sub.ModifyPushConfig(ctx, pubsub.PushConfig{Endpoint: "https://example.com/push"}) + ``` + + with + + ``` + sub.Update(ctx, pubsub.SubscriptionConfigToUpdate{ + PushConfig: &pubsub.PushConfig{Endpoint: "https://example.com/push"}, + }) + ``` + +- trace: traceGRPCServerInterceptor will be provided from *trace.Client. +Given an initialized `*trace.Client` named `tc`, instead of + + ``` + s := grpc.NewServer(grpc.UnaryInterceptor(trace.GRPCServerInterceptor(tc))) + ``` + + write + + ``` + s := grpc.NewServer(grpc.UnaryInterceptor(tc.GRPCServerInterceptor())) + ``` + +- trace trace.GRPCClientInterceptor will also provided from *trace.Client. +Instead of + + ``` + conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(trace.GRPCClientInterceptor())) + ``` + + write + + ``` + conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor())) + ``` + +- trace: We removed the deprecated `trace.EnableGRPCTracing`. Use the gRPC +interceptor as a dial option as shown below when initializing Cloud package +clients: + + ``` + c, err := pubsub.NewClient(ctx, "project-id", option.WithGRPCDialOption(grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor()))) + if err != nil { + ... + } + ``` + + +## v0.9.0 + +- Breaking changes to some autogenerated clients. +- rpcreplay package added. + +## v0.8.0 + +- profiler package added. +- storage: + - Retry Objects.Insert call. + - Add ProgressFunc to WRiter. +- pubsub: breaking changes: + - Publish is now asynchronous ([announcement](https://groups.google.com/d/topic/google-api-go-announce/aaqRDIQ3rvU/discussion)). + - Subscription.Pull replaced by Subscription.Receive, which takes a callback ([announcement](https://groups.google.com/d/topic/google-api-go-announce/8pt6oetAdKc/discussion)). + - Message.Done replaced with Message.Ack and Message.Nack. + +## v0.7.0 + +- Release of a client library for Spanner. See +the +[blog +post](https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html). +Note that although the Spanner service is beta, the Go client library is alpha. + +## v0.6.0 + +- Beta release of BigQuery, DataStore, Logging and Storage. See the +[blog post](https://cloudplatform.googleblog.com/2016/12/announcing-new-google-cloud-client.html). + +- bigquery: + - struct support. Read a row directly into a struct with +`RowIterator.Next`, and upload a row directly from a struct with `Uploader.Put`. +You can also use field tags. See the [package documentation][cloud-bigquery-ref] +for details. + + - The `ValueList` type was removed. It is no longer necessary. Instead of + ```go + var v ValueList + ... it.Next(&v) .. + ``` + use + + ```go + var v []Value + ... it.Next(&v) ... + ``` + + - Previously, repeatedly calling `RowIterator.Next` on the same `[]Value` or + `ValueList` would append to the slice. Now each call resets the size to zero first. + + - Schema inference will infer the SQL type BYTES for a struct field of + type []byte. Previously it inferred STRING. + + - The types `uint`, `uint64` and `uintptr` are no longer supported in schema + inference. BigQuery's integer type is INT64, and those types may hold values + that are not correctly represented in a 64-bit signed integer. + +## v0.5.0 + +- bigquery: + - The SQL types DATE, TIME and DATETIME are now supported. They correspond to + the `Date`, `Time` and `DateTime` types in the new `cloud.google.com/go/civil` + package. + - Support for query parameters. + - Support deleting a dataset. + - Values from INTEGER columns will now be returned as int64, not int. This + will avoid errors arising from large values on 32-bit systems. +- datastore: + - Nested Go structs encoded as Entity values, instead of a +flattened list of the embedded struct's fields. This means that you may now have twice-nested slices, eg. + ```go + type State struct { + Cities []struct{ + Populations []int + } + } + ``` + See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/79jtrdeuJAg) for +more details. + - Contexts no longer hold namespaces; instead you must set a key's namespace + explicitly. Also, key functions have been changed and renamed. + - The WithNamespace function has been removed. To specify a namespace in a Query, use the Query.Namespace method: + ```go + q := datastore.NewQuery("Kind").Namespace("ns") + ``` + - All the fields of Key are exported. That means you can construct any Key with a struct literal: + ```go + k := &Key{Kind: "Kind", ID: 37, Namespace: "ns"} + ``` + - As a result of the above, the Key methods Kind, ID, d.Name, Parent, SetParent and Namespace have been removed. + - `NewIncompleteKey` has been removed, replaced by `IncompleteKey`. Replace + ```go + NewIncompleteKey(ctx, kind, parent) + ``` + with + ```go + IncompleteKey(kind, parent) + ``` + and if you do use namespaces, make sure you set the namespace on the returned key. + - `NewKey` has been removed, replaced by `NameKey` and `IDKey`. Replace + ```go + NewKey(ctx, kind, name, 0, parent) + NewKey(ctx, kind, "", id, parent) + ``` + with + ```go + NameKey(kind, name, parent) + IDKey(kind, id, parent) + ``` + and if you do use namespaces, make sure you set the namespace on the returned key. + - The `Done` variable has been removed. Replace `datastore.Done` with `iterator.Done`, from the package `google.golang.org/api/iterator`. + - The `Client.Close` method will have a return type of error. It will return the result of closing the underlying gRPC connection. + - See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/hqXtM_4Ix-0) for +more details. + +## v0.4.0 + +- bigquery: + -`NewGCSReference` is now a function, not a method on `Client`. + - `Table.LoaderFrom` now accepts a `ReaderSource`, enabling + loading data into a table from a file or any `io.Reader`. + * Client.Table and Client.OpenTable have been removed. + Replace + ```go + client.OpenTable("project", "dataset", "table") + ``` + with + ```go + client.DatasetInProject("project", "dataset").Table("table") + ``` + + * Client.CreateTable has been removed. + Replace + ```go + client.CreateTable(ctx, "project", "dataset", "table") + ``` + with + ```go + client.DatasetInProject("project", "dataset").Table("table").Create(ctx) + ``` + + * Dataset.ListTables have been replaced with Dataset.Tables. + Replace + ```go + tables, err := ds.ListTables(ctx) + ``` + with + ```go + it := ds.Tables(ctx) + for { + table, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: use table. + } + ``` + + * Client.Read has been replaced with Job.Read, Table.Read and Query.Read. + Replace + ```go + it, err := client.Read(ctx, job) + ``` + with + ```go + it, err := job.Read(ctx) + ``` + and similarly for reading from tables or queries. + + * The iterator returned from the Read methods is now named RowIterator. Its + behavior is closer to the other iterators in these libraries. It no longer + supports the Schema method; see the next item. + Replace + ```go + for it.Next(ctx) { + var vals ValueList + if err := it.Get(&vals); err != nil { + // TODO: Handle error. + } + // TODO: use vals. + } + if err := it.Err(); err != nil { + // TODO: Handle error. + } + ``` + with + ``` + for { + var vals ValueList + err := it.Next(&vals) + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: use vals. + } + ``` + Instead of the `RecordsPerRequest(n)` option, write + ```go + it.PageInfo().MaxSize = n + ``` + Instead of the `StartIndex(i)` option, write + ```go + it.StartIndex = i + ``` + + * ValueLoader.Load now takes a Schema in addition to a slice of Values. + Replace + ```go + func (vl *myValueLoader) Load(v []bigquery.Value) + ``` + with + ```go + func (vl *myValueLoader) Load(v []bigquery.Value, s bigquery.Schema) + ``` + + + * Table.Patch is replace by Table.Update. + Replace + ```go + p := table.Patch() + p.Description("new description") + metadata, err := p.Apply(ctx) + ``` + with + ```go + metadata, err := table.Update(ctx, bigquery.TableMetadataToUpdate{ + Description: "new description", + }) + ``` + + * Client.Copy is replaced by separate methods for each of its four functions. + All options have been replaced by struct fields. + + * To load data from Google Cloud Storage into a table, use Table.LoaderFrom. + + Replace + ```go + client.Copy(ctx, table, gcsRef) + ``` + with + ```go + table.LoaderFrom(gcsRef).Run(ctx) + ``` + Instead of passing options to Copy, set fields on the Loader: + ```go + loader := table.LoaderFrom(gcsRef) + loader.WriteDisposition = bigquery.WriteTruncate + ``` + + * To extract data from a table into Google Cloud Storage, use + Table.ExtractorTo. Set fields on the returned Extractor instead of + passing options. + + Replace + ```go + client.Copy(ctx, gcsRef, table) + ``` + with + ```go + table.ExtractorTo(gcsRef).Run(ctx) + ``` + + * To copy data into a table from one or more other tables, use + Table.CopierFrom. Set fields on the returned Copier instead of passing options. + + Replace + ```go + client.Copy(ctx, dstTable, srcTable) + ``` + with + ```go + dst.Table.CopierFrom(srcTable).Run(ctx) + ``` + + * To start a query job, create a Query and call its Run method. Set fields + on the query instead of passing options. + + Replace + ```go + client.Copy(ctx, table, query) + ``` + with + ```go + query.Run(ctx) + ``` + + * Table.NewUploader has been renamed to Table.Uploader. Instead of options, + configure an Uploader by setting its fields. + Replace + ```go + u := table.NewUploader(bigquery.UploadIgnoreUnknownValues()) + ``` + with + ```go + u := table.NewUploader(bigquery.UploadIgnoreUnknownValues()) + u.IgnoreUnknownValues = true + ``` + +- pubsub: remove `pubsub.Done`. Use `iterator.Done` instead, where `iterator` is the package +`google.golang.org/api/iterator`. + +## v0.3.0 + +- storage: + * AdminClient replaced by methods on Client. + Replace + ```go + adminClient.CreateBucket(ctx, bucketName, attrs) + ``` + with + ```go + client.Bucket(bucketName).Create(ctx, projectID, attrs) + ``` + + * BucketHandle.List replaced by BucketHandle.Objects. + Replace + ```go + for query != nil { + objs, err := bucket.List(d.ctx, query) + if err != nil { ... } + query = objs.Next + for _, obj := range objs.Results { + fmt.Println(obj) + } + } + ``` + with + ```go + iter := bucket.Objects(d.ctx, query) + for { + obj, err := iter.Next() + if err == iterator.Done { + break + } + if err != nil { ... } + fmt.Println(obj) + } + ``` + (The `iterator` package is at `google.golang.org/api/iterator`.) + + Replace `Query.Cursor` with `ObjectIterator.PageInfo().Token`. + + Replace `Query.MaxResults` with `ObjectIterator.PageInfo().MaxSize`. + + + * ObjectHandle.CopyTo replaced by ObjectHandle.CopierFrom. + Replace + ```go + attrs, err := src.CopyTo(ctx, dst, nil) + ``` + with + ```go + attrs, err := dst.CopierFrom(src).Run(ctx) + ``` + + Replace + ```go + attrs, err := src.CopyTo(ctx, dst, &storage.ObjectAttrs{ContextType: "text/html"}) + ``` + with + ```go + c := dst.CopierFrom(src) + c.ContextType = "text/html" + attrs, err := c.Run(ctx) + ``` + + * ObjectHandle.ComposeFrom replaced by ObjectHandle.ComposerFrom. + Replace + ```go + attrs, err := dst.ComposeFrom(ctx, []*storage.ObjectHandle{src1, src2}, nil) + ``` + with + ```go + attrs, err := dst.ComposerFrom(src1, src2).Run(ctx) + ``` + + * ObjectHandle.Update's ObjectAttrs argument replaced by ObjectAttrsToUpdate. + Replace + ```go + attrs, err := obj.Update(ctx, &storage.ObjectAttrs{ContextType: "text/html"}) + ``` + with + ```go + attrs, err := obj.Update(ctx, storage.ObjectAttrsToUpdate{ContextType: "text/html"}) + ``` + + * ObjectHandle.WithConditions replaced by ObjectHandle.If. + Replace + ```go + obj.WithConditions(storage.Generation(gen), storage.IfMetaGenerationMatch(mgen)) + ``` + with + ```go + obj.Generation(gen).If(storage.Conditions{MetagenerationMatch: mgen}) + ``` + + Replace + ```go + obj.WithConditions(storage.IfGenerationMatch(0)) + ``` + with + ```go + obj.If(storage.Conditions{DoesNotExist: true}) + ``` + + * `storage.Done` replaced by `iterator.Done` (from package `google.golang.org/api/iterator`). + +- Package preview/logging deleted. Use logging instead. + +## v0.2.0 + +- Logging client replaced with preview version (see below). + +- New clients for some of Google's Machine Learning APIs: Vision, Speech, and +Natural Language. + +- Preview version of a new [Stackdriver Logging][cloud-logging] client in +[`cloud.google.com/go/preview/logging`](https://godoc.org/cloud.google.com/go/preview/logging). +This client uses gRPC as its transport layer, and supports log reading, sinks +and metrics. It will replace the current client at `cloud.google.com/go/logging` shortly. + + diff --git a/vendor/cloud.google.com/go/CODE_OF_CONDUCT.md b/vendor/cloud.google.com/go/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..8fd1bc9c22b --- /dev/null +++ b/vendor/cloud.google.com/go/CODE_OF_CONDUCT.md @@ -0,0 +1,44 @@ +# 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/) + diff --git a/vendor/cloud.google.com/go/CONTRIBUTING.md b/vendor/cloud.google.com/go/CONTRIBUTING.md new file mode 100644 index 00000000000..cc2adfefb95 --- /dev/null +++ b/vendor/cloud.google.com/go/CONTRIBUTING.md @@ -0,0 +1,306 @@ +# Contributing + +1. [Install Go](https://golang.org/dl/). + 1. Ensure that your `GOBIN` directory (by default `$(go env GOPATH)/bin`) + is in your `PATH`. + 1. Check it's working by running `go version`. + * If it doesn't work, check the install location, usually + `/usr/local/go`, is on your `PATH`. + +1. Sign one of the +[contributor license agreements](#contributor-license-agreements) below. + +1. Run `GO111MODULE=off go get golang.org/x/review/git-codereview` to install +the code reviewing tool. + + 1. Ensure it's working by running `git codereview` (check your `PATH` if + not). + + 1. If you would like, you may want to set up aliases for `git-codereview`, + such that `git codereview change` becomes `git change`. See the + [godoc](https://godoc.org/golang.org/x/review/git-codereview) for details. + + * Should you run into issues with the `git-codereview` tool, please note + that all error messages will assume that you have set up these aliases. + +1. Change to a directory of your choosing and clone the repo.b + + ``` + cd ~/code + git clone https://code.googlesource.com/gocloud + ``` + + * If you have already checked out the source, make sure that the remote + `git` `origin` is https://code.googlesource.com/gocloud: + + ``` + git remote -v + # ... + git remote set-url origin https://code.googlesource.com/gocloud + ``` + + * The project uses [Go Modules](https://blog.golang.org/using-go-modules) + for dependency management See + [`gopls`](https://github.com/golang/go/wiki/gopls) for making your editor + work with modules. + +1. Change to the project directory: + + ``` + cd ~/code/gocloud + ``` + +1. Make sure your `git` auth is configured correctly by visiting +https://code.googlesource.com, clicking "Generate Password" at the top-right, +and following the directions. Otherwise, `git codereview mail` in the next step +will fail. + +1. Now you are ready to make changes. Don't create a new branch or make commits in the traditional +way. Use the following`git codereview` commands to create a commit and create a Gerrit CL: + + ``` + git codereview change # Use this instead of git checkout -b + # Make changes. + git add ... + git codereview change # Use this instead of git commit + git codereview mail # If this fails, the error message will contain instructions to fix it. + ``` + + * This will create a new `git` branch for you to develop on. Once your + change is merged, you can delete this branch. + +1. As you make changes for code review, ammend the commit and re-mail the +change: + + ``` + # Make more changes. + git add ... + git codereview change + git codereview mail + ``` + + * **Warning**: do not change the `Change-Id` at the bottom of the commit + message - it's how Gerrit knows which change this is (or if it's new). + + * When you fixes issues from code review, respond to each code review + message then click **Reply** at the top of the page. + + * Each new mailed amendment will create a new patch set for + your change in Gerrit. Patch sets can be compared and reviewed. + + * **Note**: if your change includes a breaking change, our breaking change + detector will cause CI/CD to fail. If your breaking change is acceptable + in some way, add a `BREAKING_CHANGE_ACCEPTABLE=` line to the commit + message to cause the detector not to be run and to make it clear why that is + acceptable. + +1. Finally, add reviewers to your CL when it's ready for review. Reviewers will +not be added automatically. If you're not sure who to add for your code review, +add deklerk@, tbp@, cbro@, and codyoss@. + + +## Integration Tests + +In addition to the unit tests, you may run the integration test suite. These +directions describe setting up your environment to run integration tests for +_all_ packages: note that many of these instructions may be redundant if you +intend only to run integration tests on a single package. + +#### GCP Setup + +To run the integrations tests, creation and configuration of two projects in +the Google Developers Console is required: one specifically for Firestore +integration tests, and another for all other integration tests. We'll refer to +these projects as "general project" and "Firestore project". + +After creating each project, you must [create a service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount) +for each project. Ensure the project-level **Owner** +[IAM role](console.cloud.google.com/iam-admin/iam/project) role is added to +each service account. During the creation of the service account, you should +download the JSON credential file for use later. + +Next, ensure the following APIs are enabled in the general project: + +- BigQuery API +- BigQuery Data Transfer API +- Cloud Dataproc API +- Cloud Dataproc Control API Private +- Cloud Datastore API +- Cloud Firestore API +- Cloud Key Management Service (KMS) API +- Cloud Natural Language API +- Cloud OS Login API +- Cloud Pub/Sub API +- Cloud Resource Manager API +- Cloud Spanner API +- Cloud Speech API +- Cloud Translation API +- Cloud Video Intelligence API +- Cloud Vision API +- Compute Engine API +- Compute Engine Instance Group Manager API +- Container Registry API +- Firebase Rules API +- Google Cloud APIs +- Google Cloud Deployment Manager V2 API +- Google Cloud SQL +- Google Cloud Storage +- Google Cloud Storage JSON API +- Google Compute Engine Instance Group Updater API +- Google Compute Engine Instance Groups API +- Kubernetes Engine API +- Stackdriver Error Reporting API + +Next, create a Datastore database in the general project, and a Firestore +database in the Firestore project. + +Finally, in the general project, create an API key for the translate API: + +- Go to GCP Developer Console. +- Navigate to APIs & Services > Credentials. +- Click Create Credentials > API Key. +- Save this key for use in `GCLOUD_TESTS_API_KEY` as described below. + +#### Local Setup + +Once the two projects are created and configured, set the following environment +variables: + +- `GCLOUD_TESTS_GOLANG_PROJECT_ID`: Developers Console project's ID (e.g. +bamboo-shift-455) for the general project. +- `GCLOUD_TESTS_GOLANG_KEY`: The path to the JSON key file of the general +project's service account. +- `GCLOUD_TESTS_GOLANG_FIRESTORE_PROJECT_ID`: Developers Console project's ID +(e.g. doorway-cliff-677) for the Firestore project. +- `GCLOUD_TESTS_GOLANG_FIRESTORE_KEY`: The path to the JSON key file of the +Firestore project's service account. +- `GCLOUD_TESTS_GOLANG_KEYRING`: The full name of the keyring for the tests, +in the form +"projects/P/locations/L/keyRings/R". The creation of this is described below. +- `GCLOUD_TESTS_API_KEY`: API key for using the Translate API. +- `GCLOUD_TESTS_GOLANG_ZONE`: Compute Engine zone. + +Install the [gcloud command-line tool][gcloudcli] to your machine and use it to +create some resources used in integration tests. + +From the project's root directory: + +``` sh +# Sets the default project in your env. +$ gcloud config set project $GCLOUD_TESTS_GOLANG_PROJECT_ID + +# Authenticates the gcloud tool with your account. +$ gcloud auth login + +# Create the indexes used in the datastore integration tests. +$ gcloud datastore indexes create datastore/testdata/index.yaml + +# Creates a Google Cloud storage bucket with the same name as your test project, +# and with the Stackdriver Logging service account as owner, for the sink +# integration tests in logging. +$ gsutil mb gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID +$ gsutil acl ch -g cloud-logs@google.com:O gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID + +# Creates a PubSub topic for integration tests of storage notifications. +$ gcloud beta pubsub topics create go-storage-notification-test +# Next, go to the Pub/Sub dashboard in GCP console. Authorize the user +# "service-@gs-project-accounts.iam.gserviceaccount.com" +# as a publisher to that topic. + +# Creates a Spanner instance for the spanner integration tests. +$ gcloud beta spanner instances create go-integration-test --config regional-us-central1 --nodes 10 --description 'Instance for go client test' +# NOTE: Spanner instances are priced by the node-hour, so you may want to +# delete the instance after testing with 'gcloud beta spanner instances delete'. + +$ export MY_KEYRING=some-keyring-name +$ export MY_LOCATION=global +# Creates a KMS keyring, in the same location as the default location for your +# project's buckets. +$ gcloud kms keyrings create $MY_KEYRING --location $MY_LOCATION +# Creates two keys in the keyring, named key1 and key2. +$ gcloud kms keys create key1 --keyring $MY_KEYRING --location $MY_LOCATION --purpose encryption +$ gcloud kms keys create key2 --keyring $MY_KEYRING --location $MY_LOCATION --purpose encryption +# Sets the GCLOUD_TESTS_GOLANG_KEYRING environment variable. +$ export GCLOUD_TESTS_GOLANG_KEYRING=projects/$GCLOUD_TESTS_GOLANG_PROJECT_ID/locations/$MY_LOCATION/keyRings/$MY_KEYRING +# Authorizes Google Cloud Storage to encrypt and decrypt using key1. +gsutil kms authorize -p $GCLOUD_TESTS_GOLANG_PROJECT_ID -k $GCLOUD_TESTS_GOLANG_KEYRING/cryptoKeys/key1 +``` + +#### Running + +Once you've done the necessary setup, you can run the integration tests by +running: + +``` sh +$ go test -v cloud.google.com/go/... +``` + +#### Replay + +Some packages can record the RPCs during integration tests to a file for +subsequent replay. To record, pass the `-record` flag to `go test`. The +recording will be saved to the _package_`.replay` file. To replay integration +tests from a saved recording, the replay file must be present, the `-short` +flag must be passed to `go test`, and the `GCLOUD_TESTS_GOLANG_ENABLE_REPLAY` +environment variable must have a non-empty value. + +## 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 diff --git a/vendor/cloud.google.com/go/README.md b/vendor/cloud.google.com/go/README.md new file mode 100644 index 00000000000..2a66eeff715 --- /dev/null +++ b/vendor/cloud.google.com/go/README.md @@ -0,0 +1,235 @@ +# Google Cloud Client Libraries for Go + +[![GoDoc](https://godoc.org/cloud.google.com/go?status.svg)](https://godoc.org/cloud.google.com/go) + +Go packages for [Google Cloud Platform](https://cloud.google.com) services. + +``` go +import "cloud.google.com/go" +``` + +To install the packages on your system, *do not clone the repo*. Instead: + +1. Change to your project directory: + + ``` + cd /my/cloud/project + ``` +1. Get the package you want to use. Some products have their own module, so it's + best to `go get` the package(s) you want to use: + + ``` + $ go get cloud.google.com/go/firestore # Replace with the package you want to use. + ``` + +**NOTE:** Some of these packages are under development, and may occasionally +make backwards-incompatible changes. + +**NOTE:** Github repo is a mirror of [https://code.googlesource.com/gocloud](https://code.googlesource.com/gocloud). + +## Supported APIs + +Google API | Status | Package +------------------------------------------------|--------------|----------------------------------------------------------- +[Asset][cloud-asset] | alpha | [`cloud.google.com/go/asset/v1beta`][cloud-asset-ref] +[BigQuery][cloud-bigquery] | stable | [`cloud.google.com/go/bigquery`][cloud-bigquery-ref] +[Bigtable][cloud-bigtable] | stable | [`cloud.google.com/go/bigtable`][cloud-bigtable-ref] +[Cloudtasks][cloud-tasks] | stable | [`cloud.google.com/go/cloudtasks/apiv2`][cloud-tasks-ref] +[Container][cloud-container] | stable | [`cloud.google.com/go/container/apiv1`][cloud-container-ref] +[ContainerAnalysis][cloud-containeranalysis] | beta | [`cloud.google.com/go/containeranalysis/apiv1beta1`][cloud-containeranalysis-ref] +[Dataproc][cloud-dataproc] | stable | [`cloud.google.com/go/dataproc/apiv1`][cloud-dataproc-ref] +[Datastore][cloud-datastore] | stable | [`cloud.google.com/go/datastore`][cloud-datastore-ref] +[Debugger][cloud-debugger] | alpha | [`cloud.google.com/go/debugger/apiv2`][cloud-debugger-ref] +[Dialogflow][cloud-dialogflow] | alpha | [`cloud.google.com/go/dialogflow/apiv2`][cloud-dialogflow-ref] +[Data Loss Prevention][cloud-dlp] | alpha | [`cloud.google.com/go/dlp/apiv2`][cloud-dlp-ref] +[ErrorReporting][cloud-errors] | alpha | [`cloud.google.com/go/errorreporting`][cloud-errors-ref] +[Firestore][cloud-firestore] | stable | [`cloud.google.com/go/firestore`][cloud-firestore-ref] +[IAM][cloud-iam] | stable | [`cloud.google.com/go/iam`][cloud-iam-ref] +[IoT][cloud-iot] | alpha | [`cloud.google.com/iot/apiv1`][cloud-iot-ref] +[KMS][cloud-kms] | stable | [`cloud.google.com/go/kms`][cloud-kms-ref] +[Natural Language][cloud-natural-language] | stable | [`cloud.google.com/go/language/apiv1`][cloud-natural-language-ref] +[Logging][cloud-logging] | stable | [`cloud.google.com/go/logging`][cloud-logging-ref] +[Monitoring][cloud-monitoring] | alpha | [`cloud.google.com/go/monitoring/apiv3`][cloud-monitoring-ref] +[OS Login][cloud-oslogin] | alpha | [`cloud.google.com/go/oslogin/apiv1`][cloud-oslogin-ref] +[Pub/Sub][cloud-pubsub] | stable | [`cloud.google.com/go/pubsub`][cloud-pubsub-ref] +[Phishing Protection][cloud-phishingprotection] | alpha | [`cloud.google.com/go/phishingprotection/apiv1betad1`][cloud-phishingprotection-ref] +[reCAPTCHA Enterprise][cloud-recaptcha] | alpha | [`cloud.google.com/go/recaptchaenterprise/apiv1betad1`][cloud-recaptcha-ref] +[Memorystore][cloud-memorystore] | alpha | [`cloud.google.com/go/redis/apiv1`][cloud-memorystore-ref] +[Scheduler][cloud-scheduler] | stable | [`cloud.google.com/go/scheduler/apiv1`][cloud-scheduler-ref] +[Spanner][cloud-spanner] | stable | [`cloud.google.com/go/spanner`][cloud-spanner-ref] +[Speech][cloud-speech] | stable | [`cloud.google.com/go/speech/apiv1`][cloud-speech-ref] +[Storage][cloud-storage] | stable | [`cloud.google.com/go/storage`][cloud-storage-ref] +[Talent][cloud-talent] | alpha | [`cloud.google.com/go/talent/apiv4beta1`][cloud-talent-ref] +[Text To Speech][cloud-texttospeech] | alpha | [`cloud.google.com/go/texttospeech/apiv1`][cloud-texttospeech-ref] +[Trace][cloud-trace] | alpha | [`cloud.google.com/go/trace/apiv2`][cloud-trace-ref] +[Translate][cloud-translate] | stable | [`cloud.google.com/go/translate`][cloud-translate-ref] +[Video Intelligence][cloud-video] | alpha | [`cloud.google.com/go/videointelligence/apiv1beta1`][cloud-video-ref] +[Vision][cloud-vision] | stable | [`cloud.google.com/go/vision/apiv1`][cloud-vision-ref] + +> **Alpha status**: the API is still being actively developed. As a +> result, it might change in backward-incompatible ways and is not recommended +> for production use. +> +> **Beta status**: the API is largely complete, but still has outstanding +> features and bugs to be addressed. There may be minor backwards-incompatible +> changes where necessary. +> +> **Stable status**: the API is mature and ready for production use. We will +> continue addressing bugs and feature requests. + +Documentation and examples are available at [godoc.org/cloud.google.com/go](godoc.org/cloud.google.com/go) + +## Go Versions Supported + +We support the two most recent major versions of Go. If Google App Engine uses +an older version, we support that as well. + +## Authorization + +By default, each API will use [Google Application Default Credentials](https://developers.google.com/identity/protocols/application-default-credentials) +for authorization credentials used in calling the API endpoints. This will allow your +application to run in many environments without requiring explicit configuration. + +[snip]:# (auth) +```go +client, err := storage.NewClient(ctx) +``` + +To authorize using a +[JSON key file](https://cloud.google.com/iam/docs/managing-service-account-keys), +pass +[`option.WithCredentialsFile`](https://godoc.org/google.golang.org/api/option#WithCredentialsFile) +to the `NewClient` function of the desired package. For example: + +[snip]:# (auth-JSON) +```go +client, err := storage.NewClient(ctx, option.WithCredentialsFile("path/to/keyfile.json")) +``` + +You can exert more control over authorization by using the +[`golang.org/x/oauth2`](https://godoc.org/golang.org/x/oauth2) package to +create an `oauth2.TokenSource`. Then pass +[`option.WithTokenSource`](https://godoc.org/google.golang.org/api/option#WithTokenSource) +to the `NewClient` function: +[snip]:# (auth-ts) +```go +tokenSource := ... +client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource)) +``` + +## Contributing + +Contributions are welcome. Please, see the +[CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md) +document for details. We're using Gerrit for our code reviews. Please don't open pull +requests against this repo, new pull requests will be automatically closed. + +Please note that this project is released with a Contributor Code of Conduct. +By participating in this project you agree to abide by its terms. +See [Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md#contributor-code-of-conduct) +for more information. + +[cloud-datastore]: https://cloud.google.com/datastore/ +[cloud-datastore-ref]: https://godoc.org/cloud.google.com/go/datastore + +[cloud-firestore]: https://cloud.google.com/firestore/ +[cloud-firestore-ref]: https://godoc.org/cloud.google.com/go/firestore + +[cloud-pubsub]: https://cloud.google.com/pubsub/ +[cloud-pubsub-ref]: https://godoc.org/cloud.google.com/go/pubsub + +[cloud-storage]: https://cloud.google.com/storage/ +[cloud-storage-ref]: https://godoc.org/cloud.google.com/go/storage + +[cloud-bigtable]: https://cloud.google.com/bigtable/ +[cloud-bigtable-ref]: https://godoc.org/cloud.google.com/go/bigtable + +[cloud-bigquery]: https://cloud.google.com/bigquery/ +[cloud-bigquery-ref]: https://godoc.org/cloud.google.com/go/bigquery + +[cloud-logging]: https://cloud.google.com/logging/ +[cloud-logging-ref]: https://godoc.org/cloud.google.com/go/logging + +[cloud-monitoring]: https://cloud.google.com/monitoring/ +[cloud-monitoring-ref]: https://godoc.org/cloud.google.com/go/monitoring/apiv3 + +[cloud-vision]: https://cloud.google.com/vision +[cloud-vision-ref]: https://godoc.org/cloud.google.com/go/vision/apiv1 + +[cloud-language]: https://cloud.google.com/natural-language +[cloud-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1 + +[cloud-oslogin]: https://cloud.google.com/compute/docs/oslogin/rest +[cloud-oslogin-ref]: https://cloud.google.com/go/oslogin/apiv1 + +[cloud-speech]: https://cloud.google.com/speech +[cloud-speech-ref]: https://godoc.org/cloud.google.com/go/speech/apiv1 + +[cloud-spanner]: https://cloud.google.com/spanner/ +[cloud-spanner-ref]: https://godoc.org/cloud.google.com/go/spanner + +[cloud-translate]: https://cloud.google.com/translate +[cloud-translate-ref]: https://godoc.org/cloud.google.com/go/translate + +[cloud-video]: https://cloud.google.com/video-intelligence/ +[cloud-video-ref]: https://godoc.org/cloud.google.com/go/videointelligence/apiv1beta1 + +[cloud-errors]: https://cloud.google.com/error-reporting/ +[cloud-errors-ref]: https://godoc.org/cloud.google.com/go/errorreporting + +[cloud-container]: https://cloud.google.com/containers/ +[cloud-container-ref]: https://godoc.org/cloud.google.com/go/container/apiv1 + +[cloud-debugger]: https://cloud.google.com/debugger/ +[cloud-debugger-ref]: https://godoc.org/cloud.google.com/go/debugger/apiv2 + +[cloud-dlp]: https://cloud.google.com/dlp/ +[cloud-dlp-ref]: https://godoc.org/cloud.google.com/go/dlp/apiv2beta1 + +[cloud-dataproc]: https://cloud.google.com/dataproc/ +[cloud-dataproc-ref]: https://godoc.org/cloud.google.com/go/dataproc/apiv1 + +[cloud-iam]: https://cloud.google.com/iam/ +[cloud-iam-ref]: https://godoc.org/cloud.google.com/go/iam + +[cloud-kms]: https://cloud.google.com/kms/ +[cloud-kms-ref]: https://godoc.org/cloud.google.com/go/kms/apiv1 + +[cloud-natural-language]: https://cloud.google.com/natural-language/ +[cloud-natural-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1 + +[cloud-memorystore]: https://cloud.google.com/memorystore/ +[cloud-memorystore-ref]: https://godoc.org/cloud.google.com/go/redis/apiv1 + +[cloud-texttospeech]: https://cloud.google.com/texttospeech/ +[cloud-texttospeech-ref]: https://godoc.org/cloud.google.com/go/texttospeech/apiv1 + +[cloud-trace]: https://cloud.google.com/trace/ +[cloud-trace-ref]: https://godoc.org/cloud.google.com/go/trace/apiv2 + +[cloud-dialogflow]: https://cloud.google.com/dialogflow-enterprise/ +[cloud-dialogflow-ref]: https://godoc.org/cloud.google.com/go/dialogflow/apiv2 + +[cloud-containeranalysis]: https://cloud.google.com/container-registry/docs/container-analysis +[cloud-containeranalysis-ref]: https://godoc.org/cloud.google.com/go/devtools/containeranalysis/apiv1beta1 + +[cloud-asset]: https://cloud.google.com/security-command-center/docs/how-to-asset-inventory +[cloud-asset-ref]: https://godoc.org/cloud.google.com/go/asset/apiv1 + +[cloud-tasks]: https://cloud.google.com/tasks/ +[cloud-tasks-ref]: https://godoc.org/cloud.google.com/go/cloudtasks/apiv2 + +[cloud-scheduler]: https://cloud.google.com/scheduler +[cloud-scheduler-ref]: https://godoc.org/cloud.google.com/go/scheduler/apiv1 + +[cloud-iot]: https://cloud.google.com/iot-core/ +[cloud-iot-ref]: https://godoc.org/cloud.google.com/go/iot/apiv1 + +[cloud-phishingprotection]: https://cloud.google.com/phishing-protection/ +[cloud-phishingprotection-ref]: https://cloud.google.com/go/phishingprotection/apiv1beta1 + +[cloud-recaptcha]: https://cloud.google.com/recaptcha-enterprise/ +[cloud-recaptcha-ref]: https://cloud.google.com/go/recaptchaenterprise/apiv1beta1 + +[cloud-talent]: https://cloud.google.com/solutions/talent-solution/ +[cloud-talent-ref]: https://godoc.org/cloud.google.com/go/talent/apiv4beta1 diff --git a/vendor/cloud.google.com/go/RELEASING.md b/vendor/cloud.google.com/go/RELEASING.md new file mode 100644 index 00000000000..328e964fdec --- /dev/null +++ b/vendor/cloud.google.com/go/RELEASING.md @@ -0,0 +1,75 @@ +# Expectations + +In CONTRIBUTING.md, we expect users to have a remote called `origin` that points +to the `https://code.googlesource.com/gocloud` repository. For releasing, we +also use a `github` remote, setup to point to the replica repository hosted +on github at `https://github.com/googleapis/google-cloud-go` + +If you don't already have an 'origin' remote from cloning the master repository, +you can add it: + +`git remote add origin https://code.googlesource.com/gocloud` + +Add the github remote as well, using the name `github`: + +`git remote add github https://github.com/googleapis/google-cloud-go` + +# How to release `cloud.google.com/go` + +1. Navigate `google-cloud-go/` and switch to master. +1. `git pull` +1. Determine the current release version with `git tag -l`. It should look + something like `vX.Y.Z`. We'll call the current version `$CV` and the new + version `$NV`. +1. On master, run `git log $CV...` to list all the changes since the last + release. NOTE: You must manually exclude changes from submodules [1]. +1. Edit `CHANGES.md` to include a summary of the changes. +1. `cd internal/version && go generate && cd -` +1. `./tidyall.sh` +1. Mail the CL: `git add -A && git change && git mail` +1. Wait for the CL to be submitted. Once it's submitted, and without submitting + any other CLs in the meantime: + a. Switch to master. + b. `git pull` + c. Tag the repo with the next version: `git tag $NV`. + d. Push the tag to both the googlesource and github repositories: + `git push origin $NV` + `git push github $NV` +1. Update [the releases page](https://github.com/googleapis/google-cloud-go/releases) + with the new release, copying the contents of `CHANGES.md`. + +# How to release a submodule + +We have several submodules, including cloud.google.com/go/logging, +cloud.google.com/go/datastore, and so on. + +To release a submodule: + +(these instructions assume we're releasing cloud.google.com/go/datastore - adjust accordingly) + +1. Navigate `google-cloud-go/` and switch to master. +1. `git pull` +1. Determine the current release version with `git tag -l | grep datastore`. It + should look something like `datastore/vX.Y.Z`. We'll call the current version + `$CV` and the new version `$NV`, which should look something like `datastore/vX.Y+1.Z` + (assuming a minor bump). +1. On master, run `git log $CV.. -- datastore/` to list all the changes to the + submodule directory since the last release. +1. Edit `datastore/CHANGES.md` to include a summary of the changes. +1. `./tidyall.sh` +1. `cd internal/version && go generate && cd -` +1. Mail the CL: `git add -A && git change && git mail` +1. Wait for the CL to be submitted. Once it's submitted, and without submitting + any other CLs in the meantime: + a. Switch to master. + b. `git pull` + c. Tag the repo with the next version: `git tag $NV`. + d. Push the tag to both the googlesource and github repositories: + `git push origin $NV` + `git push github $NV` +1. Update [the releases page](https://github.com/googleapis/google-cloud-go/releases) + with the new release, copying the contents of `datastore/CHANGES.md`. + +# Appendix + +1: This should get better as submodule tooling matures. diff --git a/vendor/cloud.google.com/go/compute/metadata/.repo-metadata.json b/vendor/cloud.google.com/go/compute/metadata/.repo-metadata.json new file mode 100644 index 00000000000..ca022ccc41a --- /dev/null +++ b/vendor/cloud.google.com/go/compute/metadata/.repo-metadata.json @@ -0,0 +1,12 @@ +{ + "name": "metadata", + "name_pretty": "Google Compute Engine Metadata API", + "product_documentation": "https://cloud.google.com/compute/docs/storing-retrieving-metadata", + "client_documentation": "https://godoc.org/cloud.google.com/go/compute/metadata", + "release_level": "ga", + "language": "go", + "repo": "googleapis/google-cloud-go", + "distribution_name": "cloud.google.com/go/compute/metadata", + "api_id": "compute:metadata", + "requires_billing": false +} diff --git a/vendor/cloud.google.com/go/doc.go b/vendor/cloud.google.com/go/doc.go new file mode 100644 index 00000000000..237d84561ce --- /dev/null +++ b/vendor/cloud.google.com/go/doc.go @@ -0,0 +1,100 @@ +// Copyright 2014 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 cloud is the root of the packages used to access Google Cloud +Services. See https://godoc.org/cloud.google.com/go for a full list +of sub-packages. + + +Client Options + +All clients in sub-packages are configurable via client options. These options are +described here: https://godoc.org/google.golang.org/api/option. + + +Authentication and Authorization + +All the clients in sub-packages support authentication via Google Application Default +Credentials (see https://cloud.google.com/docs/authentication/production), or +by providing a JSON key file for a Service Account. See the authentication examples +in this package for details. + + +Timeouts and Cancellation + +By default, all requests in sub-packages will run indefinitely, retrying on transient +errors when correctness allows. To set timeouts or arrange for cancellation, use +contexts. See the examples for details. + +Do not attempt to control the initial connection (dialing) of a service by setting a +timeout on the context passed to NewClient. Dialing is non-blocking, so timeouts +would be ineffective and would only interfere with credential refreshing, which uses +the same context. + + +Connection Pooling + +Connection pooling differs in clients based on their transport. Cloud +clients either rely on HTTP or gRPC transports to communicate +with Google Cloud. + +Cloud clients that use HTTP (bigquery, compute, storage, and translate) rely on the +underlying HTTP transport to cache connections for later re-use. These are cached to +the default http.MaxIdleConns and http.MaxIdleConnsPerHost settings in +http.DefaultTransport. + +For gRPC clients (all others in this repo), connection pooling is configurable. Users +of cloud client libraries may specify option.WithGRPCConnectionPool(n) as a client +option to NewClient calls. This configures the underlying gRPC connections to be +pooled and addressed in a round robin fashion. + + +Using the Libraries with Docker + +Minimal docker images like Alpine lack CA certificates. This causes RPCs to appear to +hang, because gRPC retries indefinitely. See https://github.com/googleapis/google-cloud-go/issues/928 +for more information. + + +Debugging + +To see gRPC logs, set the environment variable GRPC_GO_LOG_SEVERITY_LEVEL. See +https://godoc.org/google.golang.org/grpc/grpclog for more information. + +For HTTP logging, set the GODEBUG environment variable to "http2debug=1" or "http2debug=2". + + +Client Stability + +Clients in this repository are considered alpha or beta unless otherwise +marked as stable in the README.md. Semver is not used to communicate stability +of clients. + +Alpha and beta clients may change or go away without notice. + +Clients marked stable will maintain compatibility with future versions for as +long as we can reasonably sustain. Incompatible changes might be made in some +situations, including: + +- Security bugs may prompt backwards-incompatible changes. + +- Situations in which components are no longer feasible to maintain without +making breaking changes, including removal. + +- Parts of the client surface may be outright unstable and subject to change. +These parts of the surface will be labeled with the note, "It is EXPERIMENTAL +and subject to change or removal without notice." +*/ +package cloud // import "cloud.google.com/go" diff --git a/vendor/cloud.google.com/go/gapics.txt b/vendor/cloud.google.com/go/gapics.txt new file mode 100644 index 00000000000..6322cf0cb98 --- /dev/null +++ b/vendor/cloud.google.com/go/gapics.txt @@ -0,0 +1,56 @@ +google/api/expr/artman_cel.yaml +google/cloud/asset/artman_cloudasset_v1beta1.yaml +google/cloud/asset/artman_cloudasset_v1p2beta1.yaml +google/cloud/asset/artman_cloudasset_v1.yaml +google/iam/credentials/artman_iamcredentials_v1.yaml +google/cloud/automl/artman_automl_v1.yaml +google/cloud/automl/artman_automl_v1beta1.yaml +google/cloud/bigquery/datatransfer/artman_bigquerydatatransfer.yaml +google/cloud/bigquery/storage/artman_bigquerystorage_v1beta1.yaml +google/cloud/dataproc/artman_dataproc_v1.yaml +google/cloud/dataproc/artman_dataproc_v1beta2.yaml +google/cloud/dialogflow/v2/artman_dialogflow_v2.yaml +google/cloud/iot/artman_cloudiot.yaml +google/cloud/irm/artman_irm_v1alpha2.yaml +google/cloud/kms/artman_cloudkms.yaml +google/cloud/language/artman_language_v1.yaml +google/cloud/language/artman_language_v1beta2.yaml +google/cloud/oslogin/artman_oslogin_v1.yaml +google/cloud/oslogin/artman_oslogin_v1beta.yaml +google/cloud/phishingprotection/artman_phishingprotection_v1beta1.yaml +google/cloud/recaptchaenterprise/artman_recaptchaenterprise_v1beta1.yaml +google/cloud/recommender/artman_recommender_v1beta1.yaml +google/cloud/redis/artman_redis_v1beta1.yaml +google/cloud/redis/artman_redis_v1.yaml +google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml +google/cloud/scheduler/artman_cloudscheduler_v1.yaml +google/cloud/securitycenter/artman_securitycenter_v1beta1.yaml +google/cloud/securitycenter/artman_securitycenter_v1.yaml +google/cloud/speech/artman_speech_v1.yaml +google/cloud/speech/artman_speech_v1p1beta1.yaml +google/cloud/talent/artman_talent_v4beta1.yaml +google/cloud/tasks/artman_cloudtasks_v2beta2.yaml +google/cloud/tasks/artman_cloudtasks_v2beta3.yaml +google/cloud/tasks/artman_cloudtasks_v2.yaml +google/cloud/translate/artman_translate_v3.yaml +google/cloud/videointelligence/artman_videointelligence_v1.yaml +google/cloud/videointelligence/artman_videointelligence_v1beta2.yaml +google/cloud/vision/artman_vision_v1.yaml +google/cloud/vision/artman_vision_v1p1beta1.yaml +google/cloud/webrisk/artman_webrisk_v1beta1.yaml +google/devtools/artman_clouddebugger.yaml +google/devtools/cloudbuild/artman_cloudbuild.yaml +google/devtools/clouderrorreporting/artman_errorreporting.yaml +google/devtools/cloudtrace/artman_cloudtrace_v1.yaml +google/devtools/cloudtrace/artman_cloudtrace_v2.yaml +google/devtools/containeranalysis/artman_containeranalysis_v1beta1.yaml +google/firestore/artman_firestore.yaml +google/firestore/admin/artman_firestore_v1.yaml +google/logging/artman_logging.yaml +google/longrunning/artman_longrunning.yaml +google/monitoring/artman_monitoring.yaml +google/privacy/dlp/artman_dlp_v2.yaml +google/pubsub/artman_pubsub.yaml +google/spanner/admin/database/artman_spanner_admin_database.yaml +google/spanner/admin/instance/artman_spanner_admin_instance.yaml +google/spanner/artman_spanner.yaml diff --git a/vendor/cloud.google.com/go/go.mod b/vendor/cloud.google.com/go/go.mod new file mode 100644 index 00000000000..ed36e69b2f4 --- /dev/null +++ b/vendor/cloud.google.com/go/go.mod @@ -0,0 +1,28 @@ +module cloud.google.com/go + +go 1.11 + +require ( + cloud.google.com/go/bigquery v1.0.1 + cloud.google.com/go/datastore v1.0.0 + cloud.google.com/go/pubsub v1.0.1 + cloud.google.com/go/storage v1.0.0 + github.com/golang/mock v1.3.1 + github.com/golang/protobuf v1.3.2 + github.com/google/go-cmp v0.3.0 + github.com/google/martian v2.1.0+incompatible + github.com/google/pprof v0.0.0-20190515194954-54271f7e092f + github.com/googleapis/gax-go/v2 v2.0.5 + github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 + go.opencensus.io v0.22.0 + golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3 + golang.org/x/lint v0.0.0-20190930215403-16217165b5de + golang.org/x/net v0.0.0-20190620200207-3b0461eec859 + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/text v0.3.2 + golang.org/x/tools v0.0.0-20191010171213-8abd42400456 + google.golang.org/api v0.9.0 + google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03 + google.golang.org/grpc v1.21.1 + honnef.co/go/tools v0.0.1-2019.2.3 +) diff --git a/vendor/cloud.google.com/go/go.sum b/vendor/cloud.google.com/go/go.sum new file mode 100644 index 00000000000..8fe2311104c --- /dev/null +++ b/vendor/cloud.google.com/go/go.sum @@ -0,0 +1,208 @@ +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/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0 h1:VV2nUM3wwLLGh9lSABFgZMjInyUbJeaRSE64WuAIQ+4= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c h1:964Od4U6p2jUkFxvCydnIczKteheJEzHRToSGK3Bnlw= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57 h1:eqyIo2HjKhKe/mJzTG8n4VqvLXIOEG+SLdDqX7xGtkY= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3DiiP4gmNz33uK0U5HDUaF0a/HVQ= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +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/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/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/exp v0.0.0-20190121172915-509febef88a4 h1:c2HOrn5iMezYjSlGPncknSEr/8x5LELb/ilJbXi9DEA= +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 h1:OeRHuibLsmZkFj773W4LcfAGsSxJgfPONhr8cmO+eLA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3 h1:n9HxLrNxWWtEb1cA950nuEEj3QnKbtsCJ6KjcgisNUs= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= +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 h1:hX65Cu3JDlGH3uEdK7I99Ii+9kjD6mvnnpfLdEAH0x4= +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 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac h1:8R1esu+8QioDxo4E4mX6bFztO+dMTM49DNAaWfO5OeY= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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/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-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 h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= +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 h1:uOCk1iQW6Vc18bnC13MfzScl+wdKBmM9Y9kU7Z83/lw= +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-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +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 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/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-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +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-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b h1:ag/x1USPSsqHud38I9BAC88qdNLDHHtQ4mlgQIZPPNA= +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 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/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 h1:H3uGjxCR/6Ds0Mjgyp7LMK81+LvmbvWWEnJhzk1Pi9E= +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 h1:97SnQk1GYRXJgvwZ8fadnxDOWfKvkNQHH3CtZntPSrM= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/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 h1:Dh6fw+p6FyRl5x/FvNswO1ji0lIGzm3KP8Y9VkS9PTE= +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 h1:On1qIo75ByTwFJ4/W2bIqHcwJ9XAqtSWUs8GwRrIhtc= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e h1:1xWUkZQQ9Z9UuZgNaIR6OQOE7rUFglXUUBZlO+dGg6I= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010171213-8abd42400456 h1:LR16zMCx87X52rsLOtnByklL2K/xWUKAo1Nm7AA4HA0= +golang.org/x/tools v0.0.0-20191010171213-8abd42400456/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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 h1:VGGbLNyPF7dvYHhcUGYBBGCRDDK0RRJAI6KCvo0CL+E= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19 h1:Lj2SnHtxkRGJDqnGaSjo+CCdIieEnwVazbOXILwQemk= +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 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64 h1:iKtrH9Y8mcbADOP0YFaEMth7OfuHY9xHOwNj4znpM1A= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03 h1:4HYDjxeNXAOTv3o1N2tjo8UUSlhQgAD52FVkwxnWgM8= +google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a h1:/8zB6iBfHCl1qAnEAWwGPNrUvapuy6CPla1VM0k8hQw= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/vendor/cloud.google.com/go/iam/.repo-metadata.json b/vendor/cloud.google.com/go/iam/.repo-metadata.json new file mode 100644 index 00000000000..0edb2d8b454 --- /dev/null +++ b/vendor/cloud.google.com/go/iam/.repo-metadata.json @@ -0,0 +1,12 @@ +{ + "name": "iam", + "name_pretty": "Cloud Identify and Access Management API", + "product_documentation": "https://cloud.google.com/iam", + "client_documentation": "https://godoc.org/cloud.google.com/go/iam", + "release_level": "ga", + "language": "go", + "repo": "googleapis/google-cloud-go", + "distribution_name": "cloud.google.com/go/iam", + "api_id": "iam.googleapis.com", + "requires_billing": true +} diff --git a/vendor/cloud.google.com/go/internal/version/version.go b/vendor/cloud.google.com/go/internal/version/version.go index d291921b18f..61d6779ed25 100644 --- a/vendor/cloud.google.com/go/internal/version/version.go +++ b/vendor/cloud.google.com/go/internal/version/version.go @@ -26,7 +26,7 @@ import ( // Repo is the current version of the client libraries in this // repo. It should be a date in YYYYMMDD format. -const Repo = "20190802" +const Repo = "20191008" // Go returns the Go runtime version. The returned string // has no whitespace. diff --git a/vendor/cloud.google.com/go/issue_template.md b/vendor/cloud.google.com/go/issue_template.md new file mode 100644 index 00000000000..e2ccef3e78d --- /dev/null +++ b/vendor/cloud.google.com/go/issue_template.md @@ -0,0 +1,17 @@ +(delete this for feature requests) + +## Client + +e.g. PubSub + +## Describe Your Environment + +e.g. Alpine Docker on GKE + +## Expected Behavior + +e.g. Messages arrive really fast. + +## Actual Behavior + +e.g. Messages arrive really slowly. \ No newline at end of file diff --git a/vendor/cloud.google.com/go/manuals.txt b/vendor/cloud.google.com/go/manuals.txt new file mode 100644 index 00000000000..58b7bd12941 --- /dev/null +++ b/vendor/cloud.google.com/go/manuals.txt @@ -0,0 +1,8 @@ +errorreporting/apiv1beta1 +firestore/apiv1beta1 +firestore/apiv1 +logging/apiv2 +longrunning/autogen +pubsub/apiv1 +spanner/apiv1 +trace/apiv1 diff --git a/vendor/cloud.google.com/go/microgens.csv b/vendor/cloud.google.com/go/microgens.csv new file mode 100644 index 00000000000..ef02c96d026 --- /dev/null +++ b/vendor/cloud.google.com/go/microgens.csv @@ -0,0 +1 @@ +input directory path, go module;package flag, gRPC ServiceConfig path flag, API service config path flag, release level diff --git a/vendor/cloud.google.com/go/regen-gapic.sh b/vendor/cloud.google.com/go/regen-gapic.sh new file mode 100644 index 00000000000..fadf6c9feba --- /dev/null +++ b/vendor/cloud.google.com/go/regen-gapic.sh @@ -0,0 +1,81 @@ +#!/bin/bash +# Copyright 2019 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. + +# This script generates all GAPIC clients in this repo. +# See instructions at go/yoshi-site. + +set -ex + +GOCLOUD_DIR="$(dirname "$0")" +HOST_MOUNT="$PWD" + +# need to mount the /var/folders properly for macos +# https://stackoverflow.com/questions/45122459/docker-mounts-denied-the-paths-are-not-shared-from-os-x-and-are-not-known/45123074 +if [[ "$OSTYPE" == "darwin"* ]] && [[ "$HOST_MOUNT" == "/var/folders"* ]]; then + HOST_MOUNT=/private$HOST_MOUNT +fi + +microgen() { + input=$1 + options="${@:2}" + + # see https://github.com/googleapis/gapic-generator-go/blob/master/README.md#docker-wrapper for details + docker run \ + --user $UID \ + --mount type=bind,source=$HOST_MOUNT,destination=/conf,readonly \ + --mount type=bind,source=$HOST_MOUNT/$input,destination=/in/$input,readonly \ + --mount type=bind,source=/tmp,destination=/out \ + --rm \ + gcr.io/gapic-images/gapic-generator-go:0.8.1 \ + $options +} + +for gencfg in $(cat $GOCLOUD_DIR/gapics.txt); do + rm -rf artman-genfiles/* + artman --config "$gencfg" generate go_gapic + cp -r artman-genfiles/gapi-*/cloud.google.com/go/* $GOCLOUD_DIR +done + +rm -rf /tmp/cloud.google.com +{ + # skip the first line with column titles + read -r + while IFS=, read -r input mod retrycfg apicfg release + do + microgen $input "$mod" "$retrycfg" "$apicfg" "$release" + done +} < $GOCLOUD_DIR/microgens.csv + +# copy generated code if any was created +[ -d "/tmp/cloud.google.com/go" ] && cp -r /tmp/cloud.google.com/go/* $GOCLOUD_DIR + +pushd $GOCLOUD_DIR + gofmt -s -d -l -w . && goimports -w . + + # NOTE(pongad): `sed -i` doesn't work on Macs, because -i option needs an argument. + # `-i ''` doesn't work on GNU, since the empty string is treated as a file name. + # So we just create the backup and delete it after. + ver=$(date +%Y%m%d) + git ls-files -mo | while read modified; do + dir=${modified%/*.*} + find . -path "*/$dir/doc.go" -exec sed -i.backup -e "s/^const versionClient.*/const versionClient = \"$ver\"/" '{}' + + done +popd + +for manualdir in $(cat $GOCLOUD_DIR/manuals.txt); do + find "$GOCLOUD_DIR/$manualdir" -name '*.go' -exec sed -i.backup -e 's/setGoogleClientInfo/SetGoogleClientInfo/g' '{}' '+' +done + +find $GOCLOUD_DIR -name '*.backup' -delete diff --git a/vendor/cloud.google.com/go/storage/.repo-metadata.json b/vendor/cloud.google.com/go/storage/.repo-metadata.json new file mode 100644 index 00000000000..a42f91cd35f --- /dev/null +++ b/vendor/cloud.google.com/go/storage/.repo-metadata.json @@ -0,0 +1,12 @@ +{ + "name": "storage", + "name_pretty": "storage", + "product_documentation": "https://cloud.google.com/storage", + "client_documentation": "https://godoc.org/cloud.google.com/go/storage", + "release_level": "ga", + "language": "go", + "repo": "googleapis/google-cloud-go", + "distribution_name": "cloud.google.com/go/storage", + "api_id": "storage:v2", + "requires_billing": true +} diff --git a/vendor/cloud.google.com/go/storage/CHANGES.md b/vendor/cloud.google.com/go/storage/CHANGES.md new file mode 100644 index 00000000000..02b1456583f --- /dev/null +++ b/vendor/cloud.google.com/go/storage/CHANGES.md @@ -0,0 +1,17 @@ +# Changes + +## v1.1.1 + +- Send BucketPolicyOnly even when it's disabled. + +## v1.1.0 + +- Performance improvements for ObjectIterator and BucketIterator. +- Fix Bucket.ObjectIterator size calculation checks. +- Added HMACKeyOptions to all the methods which allows for options such as + UserProject to be set per invocation and optionally be used. + +## v1.0.0 + +This is the first tag to carve out storage as its own module. See: +https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository. \ No newline at end of file diff --git a/vendor/github.com/opencontainers/runc/LICENSE b/vendor/cloud.google.com/go/storage/LICENSE similarity index 94% rename from vendor/github.com/opencontainers/runc/LICENSE rename to vendor/cloud.google.com/go/storage/LICENSE index 27448585ad4..d6456956733 100644 --- a/vendor/github.com/opencontainers/runc/LICENSE +++ b/vendor/cloud.google.com/go/storage/LICENSE @@ -176,7 +176,18 @@ END OF TERMS AND CONDITIONS - Copyright 2014 Docker, Inc. + 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. diff --git a/vendor/cloud.google.com/go/storage/bucket.go b/vendor/cloud.google.com/go/storage/bucket.go index 07c470d3e0d..8091cdf5ffb 100644 --- a/vendor/cloud.google.com/go/storage/bucket.go +++ b/vendor/cloud.google.com/go/storage/bucket.go @@ -267,14 +267,8 @@ type BucketAttrs struct { // StorageClass is the default storage class of the bucket. This defines // how objects in the bucket are stored and determines the SLA - // and the cost of storage. Typical values are "MULTI_REGIONAL", - // "REGIONAL", "NEARLINE", "COLDLINE", "STANDARD" and - // "DURABLE_REDUCED_AVAILABILITY". Defaults to "STANDARD", which - // is equivalent to "MULTI_REGIONAL" or "REGIONAL" depending on - // the bucket's location settings. - // - // "DURABLE_REDUCED_AVAILABILITY", "MULTI_REGIONAL" and "REGIONAL" - // are considered legacy storage classes. + // and the cost of storage. Typical values are "NEARLINE", "COLDLINE" and + // "STANDARD". Defaults to "STANDARD". StorageClass string // Created is the creation time of the bucket. @@ -446,8 +440,7 @@ type LifecycleCondition struct { // MatchesStorageClasses is the condition matching the object's storage // class. // - // Values include "MULTI_REGIONAL", "REGIONAL", "NEARLINE", "COLDLINE", - // "STANDARD", and "DURABLE_REDUCED_AVAILABILITY". + // Values include "NEARLINE", "COLDLINE" and "STANDARD". MatchesStorageClasses []string // NumNewerVersions is the condition matching objects with a number of newer versions. @@ -702,7 +695,8 @@ func (ua *BucketAttrsToUpdate) toRawBucket() *raw.Bucket { if ua.BucketPolicyOnly != nil { rb.IamConfiguration = &raw.BucketIamConfiguration{ BucketPolicyOnly: &raw.BucketIamConfigurationBucketPolicyOnly{ - Enabled: ua.BucketPolicyOnly.Enabled, + Enabled: ua.BucketPolicyOnly.Enabled, + ForceSendFields: []string{"Enabled"}, }, } } @@ -1043,6 +1037,8 @@ func toBucketPolicyOnly(b *raw.BucketIamConfiguration) BucketPolicyOnly { // Objects returns an iterator over the objects in the bucket that match the Query q. // If q is nil, no filtering is done. +// +// Note: The returned iterator is not safe for concurrent operations without explicit synchronization. func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectIterator { it := &ObjectIterator{ ctx: ctx, @@ -1050,8 +1046,13 @@ func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectIterator { } it.pageInfo, it.nextFunc = iterator.NewPageInfo( it.fetch, - func() int { return len(it.items) }, - func() interface{} { b := it.items; it.items = nil; return b }) + func() int { return len(it.items) - it.index }, + func() interface{} { + b := it.items + it.items = nil + it.index = 0 + return b + }) if q != nil { it.query = *q } @@ -1059,6 +1060,8 @@ func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectIterator { } // An ObjectIterator is an iterator over ObjectAttrs. +// +// Note: This iterator is not safe for concurrent operations without explicit synchronization. type ObjectIterator struct { ctx context.Context bucket *BucketHandle @@ -1066,9 +1069,12 @@ type ObjectIterator struct { pageInfo *iterator.PageInfo nextFunc func() error items []*ObjectAttrs + index int } // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +// +// Note: This method is not safe for concurrent operations without explicit synchronization. func (it *ObjectIterator) PageInfo() *iterator.PageInfo { return it.pageInfo } // Next returns the next result. Its second return value is iterator.Done if @@ -1078,12 +1084,16 @@ func (it *ObjectIterator) PageInfo() *iterator.PageInfo { return it.pageInfo } // If Query.Delimiter is non-empty, some of the ObjectAttrs returned by Next will // have a non-empty Prefix field, and a zero value for all other fields. These // represent prefixes. +// +// Note: This method is not safe for concurrent operations without explicit synchronization. func (it *ObjectIterator) Next() (*ObjectAttrs, error) { if err := it.nextFunc(); err != nil { return nil, err } - item := it.items[0] - it.items = it.items[1:] + + item := it.items[it.index] + it.index++ + return item, nil } @@ -1126,6 +1136,8 @@ func (it *ObjectIterator) fetch(pageSize int, pageToken string) (string, error) // optionally set the iterator's Prefix field to restrict the list to buckets // whose names begin with the prefix. By default, all buckets in the project // are returned. +// +// Note: The returned iterator is not safe for concurrent operations without explicit synchronization. func (c *Client) Buckets(ctx context.Context, projectID string) *BucketIterator { it := &BucketIterator{ ctx: ctx, @@ -1134,12 +1146,19 @@ func (c *Client) Buckets(ctx context.Context, projectID string) *BucketIterator } it.pageInfo, it.nextFunc = iterator.NewPageInfo( it.fetch, - func() int { return len(it.buckets) }, - func() interface{} { b := it.buckets; it.buckets = nil; return b }) + func() int { return len(it.buckets) - it.index }, + func() interface{} { + b := it.buckets + it.buckets = nil + it.index = 0 + return b + }) return it } // A BucketIterator is an iterator over BucketAttrs. +// +// Note: This iterator is not safe for concurrent operations without explicit synchronization. type BucketIterator struct { // Prefix restricts the iterator to buckets whose names begin with it. Prefix string @@ -1150,21 +1169,28 @@ type BucketIterator struct { buckets []*BucketAttrs pageInfo *iterator.PageInfo nextFunc func() error + index int } // Next returns the next result. Its second return value is iterator.Done if // there are no more results. Once Next returns iterator.Done, all subsequent // calls will return iterator.Done. +// +// Note: This method is not safe for concurrent operations without explicit synchronization. func (it *BucketIterator) Next() (*BucketAttrs, error) { if err := it.nextFunc(); err != nil { return nil, err } - b := it.buckets[0] - it.buckets = it.buckets[1:] + + b := it.buckets[it.index] + it.index++ + return b, nil } // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +// +// Note: This method is not safe for concurrent operations without explicit synchronization. func (it *BucketIterator) PageInfo() *iterator.PageInfo { return it.pageInfo } func (it *BucketIterator) fetch(pageSize int, pageToken string) (token string, err error) { diff --git a/vendor/cloud.google.com/go/storage/go.mod b/vendor/cloud.google.com/go/storage/go.mod new file mode 100644 index 00000000000..82cbfee2402 --- /dev/null +++ b/vendor/cloud.google.com/go/storage/go.mod @@ -0,0 +1,16 @@ +module cloud.google.com/go/storage + +go 1.11 + +require ( + cloud.google.com/go v0.46.3 + github.com/golang/protobuf v1.3.2 + github.com/google/go-cmp v0.3.0 + github.com/googleapis/gax-go/v2 v2.0.5 + golang.org/x/exp v0.0.0-20190912063710-ac5d2bfcbfe0 // indirect + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/tools v0.0.0-20190917162342-3b4f30a44f3b // indirect + google.golang.org/api v0.9.0 + google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 + google.golang.org/grpc v1.21.1 +) diff --git a/vendor/cloud.google.com/go/storage/go.sum b/vendor/cloud.google.com/go/storage/go.sum new file mode 100644 index 00000000000..142c4ffd7e6 --- /dev/null +++ b/vendor/cloud.google.com/go/storage/go.sum @@ -0,0 +1,160 @@ +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 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +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/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 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +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 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +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/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 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +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 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +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/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/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/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 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20190912063710-ac5d2bfcbfe0 h1:gv2NhgEnkBiGICjHa2gpjiAzweNyNn1bR4Ce/Niz1os= +golang.org/x/exp v0.0.0-20190912063710-ac5d2bfcbfe0/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +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 h1:8R1esu+8QioDxo4E4mX6bFztO+dMTM49DNAaWfO5OeY= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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/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-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-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +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 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +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 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/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-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-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 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +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/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-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 h1:On1qIo75ByTwFJ4/W2bIqHcwJ9XAqtSWUs8GwRrIhtc= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190917162342-3b4f30a44f3b h1:5PDpbTpVmeVPIQOoxshLbs4ATaIDQrZN5z3nTUtm2+8= +golang.org/x/tools v0.0.0-20190917162342-3b4f30a44f3b/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/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 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +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 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +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 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +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 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +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.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/vendor/cloud.google.com/go/storage/go_mod_tidy_hack.go b/vendor/cloud.google.com/go/storage/go_mod_tidy_hack.go new file mode 100644 index 00000000000..7df7a1d7155 --- /dev/null +++ b/vendor/cloud.google.com/go/storage/go_mod_tidy_hack.go @@ -0,0 +1,22 @@ +// Copyright 2019 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. + +// This file, and the cloud.google.com/go import, won't actually become part of +// the resultant binary. +// +build modhack + +package storage + +// Necessary for safely adding multi-module repo. See: https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository +import _ "cloud.google.com/go" diff --git a/vendor/cloud.google.com/go/storage/hmac.go b/vendor/cloud.google.com/go/storage/hmac.go index 4a5c1b5121f..7d8185f37b8 100644 --- a/vendor/cloud.google.com/go/storage/hmac.go +++ b/vendor/cloud.google.com/go/storage/hmac.go @@ -25,6 +25,8 @@ import ( ) // HMACState is the state of the HMAC key. +// +// This type is EXPERIMENTAL and subject to change or removal without notice. type HMACState string const ( @@ -105,9 +107,21 @@ func (c *Client) HMACKeyHandle(projectID, accessID string) *HMACKeyHandle { // Get invokes an RPC to retrieve the HMAC key referenced by the // HMACKeyHandle's accessID. // +// Options such as UserProjectForHMACKeys can be used to set the +// userProject to be billed against for operations. +// // This method is EXPERIMENTAL and subject to change or removal without notice. -func (hkh *HMACKeyHandle) Get(ctx context.Context) (*HMACKey, error) { +func (hkh *HMACKeyHandle) Get(ctx context.Context, opts ...HMACKeyOption) (*HMACKey, error) { call := hkh.raw.Get(hkh.projectID, hkh.accessID) + + desc := new(hmacKeyDesc) + for _, opt := range opts { + opt.withHMACKeyDesc(desc) + } + if desc.userProjectID != "" { + call = call.UserProject(desc.userProjectID) + } + setClientHeader(call.Header()) var metadata *raw.HmacKeyMetadata @@ -131,8 +145,15 @@ func (hkh *HMACKeyHandle) Get(ctx context.Context) (*HMACKey, error) { // After deletion, a key cannot be used to authenticate requests. // // This method is EXPERIMENTAL and subject to change or removal without notice. -func (hkh *HMACKeyHandle) Delete(ctx context.Context) error { +func (hkh *HMACKeyHandle) Delete(ctx context.Context, opts ...HMACKeyOption) error { delCall := hkh.raw.Delete(hkh.projectID, hkh.accessID) + desc := new(hmacKeyDesc) + for _, opt := range opts { + opt.withHMACKeyDesc(desc) + } + if desc.userProjectID != "" { + delCall = delCall.UserProject(desc.userProjectID) + } setClientHeader(delCall.Header()) return runWithRetry(ctx, func() error { @@ -173,7 +194,7 @@ func pbHmacKeyToHMACKey(pb *raw.HmacKey, updatedTimeCanBeNil bool) (*HMACKey, er // CreateHMACKey invokes an RPC for Google Cloud Storage to create a new HMACKey. // // This method is EXPERIMENTAL and subject to change or removal without notice. -func (c *Client) CreateHMACKey(ctx context.Context, projectID, serviceAccountEmail string) (*HMACKey, error) { +func (c *Client) CreateHMACKey(ctx context.Context, projectID, serviceAccountEmail string, opts ...HMACKeyOption) (*HMACKey, error) { if projectID == "" { return nil, errors.New("storage: expecting a non-blank projectID") } @@ -183,6 +204,14 @@ func (c *Client) CreateHMACKey(ctx context.Context, projectID, serviceAccountEma svc := raw.NewProjectsHmacKeysService(c.raw) call := svc.Create(projectID, serviceAccountEmail) + desc := new(hmacKeyDesc) + for _, opt := range opts { + opt.withHMACKeyDesc(desc) + } + if desc.userProjectID != "" { + call = call.UserProject(desc.userProjectID) + } + setClientHeader(call.Header()) var hkPb *raw.HmacKey @@ -212,7 +241,7 @@ type HMACKeyAttrsToUpdate struct { // Update mutates the HMACKey referred to by accessID. // // This method is EXPERIMENTAL and subject to change or removal without notice. -func (h *HMACKeyHandle) Update(ctx context.Context, au HMACKeyAttrsToUpdate) (*HMACKey, error) { +func (h *HMACKeyHandle) Update(ctx context.Context, au HMACKeyAttrsToUpdate, opts ...HMACKeyOption) (*HMACKey, error) { if au.State != Active && au.State != Inactive { return nil, fmt.Errorf("storage: invalid state %q for update, must be either %q or %q", au.State, Active, Inactive) } @@ -221,6 +250,14 @@ func (h *HMACKeyHandle) Update(ctx context.Context, au HMACKeyAttrsToUpdate) (*H Etag: au.Etag, State: string(au.State), }) + + desc := new(hmacKeyDesc) + for _, opt := range opts { + opt.withHMACKeyDesc(desc) + } + if desc.userProjectID != "" { + call = call.UserProject(desc.userProjectID) + } setClientHeader(call.Header()) var metadata *raw.HmacKeyMetadata @@ -241,6 +278,8 @@ func (h *HMACKeyHandle) Update(ctx context.Context, au HMACKeyAttrsToUpdate) (*H // An HMACKeysIterator is an iterator over HMACKeys. // +// Note: This iterator is not safe for concurrent operations without explicit synchronization. +// // This type is EXPERIMENTAL and subject to change or removal without notice. type HMACKeysIterator struct { ctx context.Context @@ -250,18 +289,25 @@ type HMACKeysIterator struct { pageInfo *iterator.PageInfo nextFunc func() error index int + desc hmacKeyDesc } // ListHMACKeys returns an iterator for listing HMACKeys. // +// Note: This iterator is not safe for concurrent operations without explicit synchronization. +// // This method is EXPERIMENTAL and subject to change or removal without notice. -func (c *Client) ListHMACKeys(ctx context.Context, projectID string) *HMACKeysIterator { +func (c *Client) ListHMACKeys(ctx context.Context, projectID string, opts ...HMACKeyOption) *HMACKeysIterator { it := &HMACKeysIterator{ ctx: ctx, raw: raw.NewProjectsHmacKeysService(c.raw), projectID: projectID, } + for _, opt := range opts { + opt.withHMACKeyDesc(&it.desc) + } + it.pageInfo, it.nextFunc = iterator.NewPageInfo( it.fetch, func() int { return len(it.hmacKeys) - it.index }, @@ -278,6 +324,8 @@ func (c *Client) ListHMACKeys(ctx context.Context, projectID string) *HMACKeysIt // there are no more results. Once Next returns iterator.Done, all subsequent // calls will return iterator.Done. // +// Note: This iterator is not safe for concurrent operations without explicit synchronization. +// // This method is EXPERIMENTAL and subject to change or removal without notice. func (it *HMACKeysIterator) Next() (*HMACKey, error) { if err := it.nextFunc(); err != nil { @@ -292,16 +340,26 @@ func (it *HMACKeysIterator) Next() (*HMACKey, error) { // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. // +// Note: This iterator is not safe for concurrent operations without explicit synchronization. +// // This method is EXPERIMENTAL and subject to change or removal without notice. func (it *HMACKeysIterator) PageInfo() *iterator.PageInfo { return it.pageInfo } func (it *HMACKeysIterator) fetch(pageSize int, pageToken string) (token string, err error) { call := it.raw.List(it.projectID) setClientHeader(call.Header()) - call = call.PageToken(pageToken) - // By default we'll also show deleted keys and then - // let users filter on their own. - call = call.ShowDeletedKeys(true) + if pageToken != "" { + call = call.PageToken(pageToken) + } + if it.desc.showDeletedKeys { + call = call.ShowDeletedKeys(true) + } + if it.desc.userProjectID != "" { + call = call.UserProject(it.desc.userProjectID) + } + if it.desc.forServiceAccountEmail != "" { + call = call.ServiceAccountEmail(it.desc.forServiceAccountEmail) + } if pageSize > 0 { call = call.MaxResults(int64(pageSize)) } @@ -328,3 +386,56 @@ func (it *HMACKeysIterator) fetch(pageSize int, pageToken string) (token string, } return resp.NextPageToken, nil } + +type hmacKeyDesc struct { + forServiceAccountEmail string + showDeletedKeys bool + userProjectID string +} + +// HMACKeyOption configures the behavior of HMACKey related methods and actions. +// +// This interface is EXPERIMENTAL and subject to change or removal without notice. +type HMACKeyOption interface { + withHMACKeyDesc(*hmacKeyDesc) +} + +type hmacKeyDescFunc func(*hmacKeyDesc) + +func (hkdf hmacKeyDescFunc) withHMACKeyDesc(hkd *hmacKeyDesc) { + hkdf(hkd) +} + +// ForHMACKeyServiceAccountEmail returns HMAC Keys that are +// associated with the email address of a service account in the project. +// +// Only one service account email can be used as a filter, so if multiple +// of these options are applied, the last email to be set will be used. +// +// This option is EXPERIMENTAL and subject to change or removal without notice. +func ForHMACKeyServiceAccountEmail(serviceAccountEmail string) HMACKeyOption { + return hmacKeyDescFunc(func(hkd *hmacKeyDesc) { + hkd.forServiceAccountEmail = serviceAccountEmail + }) +} + +// ShowDeletedHMACKeys will also list keys whose state is "DELETED". +// +// This option is EXPERIMENTAL and subject to change or removal without notice. +func ShowDeletedHMACKeys() HMACKeyOption { + return hmacKeyDescFunc(func(hkd *hmacKeyDesc) { + hkd.showDeletedKeys = true + }) +} + +// UserProjectForHMACKeys will bill the request against userProjectID +// if userProjectID is non-empty. +// +// Note: This is a noop right now and only provided for API compatibility. +// +// This option is EXPERIMENTAL and subject to change or removal without notice. +func UserProjectForHMACKeys(userProjectID string) HMACKeyOption { + return hmacKeyDescFunc(func(hkd *hmacKeyDesc) { + hkd.userProjectID = userProjectID + }) +} diff --git a/vendor/cloud.google.com/go/storage/storage.go b/vendor/cloud.google.com/go/storage/storage.go index d35bd7568e7..1ffb10f6446 100644 --- a/vendor/cloud.google.com/go/storage/storage.go +++ b/vendor/cloud.google.com/go/storage/storage.go @@ -992,10 +992,8 @@ type ObjectAttrs struct { // StorageClass is the storage class of the object. // This value defines how objects in the bucket are stored and // determines the SLA and the cost of storage. Typical values are - // "MULTI_REGIONAL", "REGIONAL", "NEARLINE", "COLDLINE", "STANDARD" - // and "DURABLE_REDUCED_AVAILABILITY". - // It defaults to "STANDARD", which is equivalent to "MULTI_REGIONAL" - // or "REGIONAL" depending on the bucket's location settings. + // "NEARLINE", "COLDLINE" and "STANDARD". + // It defaults to "STANDARD". StorageClass string // Created is the time the object was created. This field is read-only. diff --git a/vendor/cloud.google.com/go/tidyall.sh b/vendor/cloud.google.com/go/tidyall.sh new file mode 100644 index 00000000000..20c362e7ba3 --- /dev/null +++ b/vendor/cloud.google.com/go/tidyall.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Copyright 2019 Google Inc. +# +# 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. + +# Run at repo root. + +go mod tidy +for i in `find . -name go.mod`; do +pushd `dirname $i`; + go mod tidy; +popd; +done diff --git a/vendor/cloud.google.com/go/tools.go b/vendor/cloud.google.com/go/tools.go new file mode 100644 index 00000000000..fa01cc44ccc --- /dev/null +++ b/vendor/cloud.google.com/go/tools.go @@ -0,0 +1,33 @@ +// +build tools + +// Copyright 2018 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. + +// This package exists to cause `go mod` and `go get` to believe these tools +// are dependencies, even though they are not runtime dependencies of any +// package (these are tools used by our CI builds). This means they will appear +// in our `go.mod` file, but will not be a part of the build. Also, since the +// build target is something non-existent, these should not be included in any +// binaries. + +package cloud + +import ( + _ "github.com/golang/protobuf/protoc-gen-go" + _ "github.com/jstemmer/go-junit-report" + _ "golang.org/x/exp/cmd/apidiff" + _ "golang.org/x/lint/golint" + _ "golang.org/x/tools/cmd/goimports" + _ "honnef.co/go/tools/cmd/staticcheck" +) diff --git a/vendor/github.com/BurntSushi/toml/.gitignore b/vendor/github.com/BurntSushi/toml/.gitignore new file mode 100644 index 00000000000..0cd3800377d --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/.gitignore @@ -0,0 +1,5 @@ +TAGS +tags +.*.swp +tomlcheck/tomlcheck +toml.test diff --git a/vendor/github.com/BurntSushi/toml/.travis.yml b/vendor/github.com/BurntSushi/toml/.travis.yml new file mode 100644 index 00000000000..8b8afc4f0e0 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/.travis.yml @@ -0,0 +1,15 @@ +language: go +go: + - 1.1 + - 1.2 + - 1.3 + - 1.4 + - 1.5 + - 1.6 + - tip +install: + - go install ./... + - go get github.com/BurntSushi/toml-test +script: + - export PATH="$PATH:$HOME/gopath/bin" + - make test diff --git a/vendor/github.com/BurntSushi/toml/COMPATIBLE b/vendor/github.com/BurntSushi/toml/COMPATIBLE new file mode 100644 index 00000000000..6efcfd0ce55 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/COMPATIBLE @@ -0,0 +1,3 @@ +Compatible with TOML version +[v0.4.0](https://github.com/toml-lang/toml/blob/v0.4.0/versions/en/toml-v0.4.0.md) + diff --git a/vendor/github.com/BurntSushi/toml/COPYING b/vendor/github.com/BurntSushi/toml/COPYING new file mode 100644 index 00000000000..01b5743200b --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/COPYING @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 TOML authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/BurntSushi/toml/Makefile b/vendor/github.com/BurntSushi/toml/Makefile new file mode 100644 index 00000000000..3600848d331 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/Makefile @@ -0,0 +1,19 @@ +install: + go install ./... + +test: install + go test -v + toml-test toml-test-decoder + toml-test -encoder toml-test-encoder + +fmt: + gofmt -w *.go */*.go + colcheck *.go */*.go + +tags: + find ./ -name '*.go' -print0 | xargs -0 gotags > TAGS + +push: + git push origin master + git push github master + diff --git a/vendor/github.com/BurntSushi/toml/README.md b/vendor/github.com/BurntSushi/toml/README.md new file mode 100644 index 00000000000..7c1b37ecc7a --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/README.md @@ -0,0 +1,218 @@ +## TOML parser and encoder for Go with reflection + +TOML stands for Tom's Obvious, Minimal Language. This Go package provides a +reflection interface similar to Go's standard library `json` and `xml` +packages. This package also supports the `encoding.TextUnmarshaler` and +`encoding.TextMarshaler` interfaces so that you can define custom data +representations. (There is an example of this below.) + +Spec: https://github.com/toml-lang/toml + +Compatible with TOML version +[v0.4.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md) + +Documentation: https://godoc.org/github.com/BurntSushi/toml + +Installation: + +```bash +go get github.com/BurntSushi/toml +``` + +Try the toml validator: + +```bash +go get github.com/BurntSushi/toml/cmd/tomlv +tomlv some-toml-file.toml +``` + +[![Build Status](https://travis-ci.org/BurntSushi/toml.svg?branch=master)](https://travis-ci.org/BurntSushi/toml) [![GoDoc](https://godoc.org/github.com/BurntSushi/toml?status.svg)](https://godoc.org/github.com/BurntSushi/toml) + +### Testing + +This package passes all tests in +[toml-test](https://github.com/BurntSushi/toml-test) for both the decoder +and the encoder. + +### Examples + +This package works similarly to how the Go standard library handles `XML` +and `JSON`. Namely, data is loaded into Go values via reflection. + +For the simplest example, consider some TOML file as just a list of keys +and values: + +```toml +Age = 25 +Cats = [ "Cauchy", "Plato" ] +Pi = 3.14 +Perfection = [ 6, 28, 496, 8128 ] +DOB = 1987-07-05T05:45:00Z +``` + +Which could be defined in Go as: + +```go +type Config struct { + Age int + Cats []string + Pi float64 + Perfection []int + DOB time.Time // requires `import time` +} +``` + +And then decoded with: + +```go +var conf Config +if _, err := toml.Decode(tomlData, &conf); err != nil { + // handle error +} +``` + +You can also use struct tags if your struct field name doesn't map to a TOML +key value directly: + +```toml +some_key_NAME = "wat" +``` + +```go +type TOML struct { + ObscureKey string `toml:"some_key_NAME"` +} +``` + +### Using the `encoding.TextUnmarshaler` interface + +Here's an example that automatically parses duration strings into +`time.Duration` values: + +```toml +[[song]] +name = "Thunder Road" +duration = "4m49s" + +[[song]] +name = "Stairway to Heaven" +duration = "8m03s" +``` + +Which can be decoded with: + +```go +type song struct { + Name string + Duration duration +} +type songs struct { + Song []song +} +var favorites songs +if _, err := toml.Decode(blob, &favorites); err != nil { + log.Fatal(err) +} + +for _, s := range favorites.Song { + fmt.Printf("%s (%s)\n", s.Name, s.Duration) +} +``` + +And you'll also need a `duration` type that satisfies the +`encoding.TextUnmarshaler` interface: + +```go +type duration struct { + time.Duration +} + +func (d *duration) UnmarshalText(text []byte) error { + var err error + d.Duration, err = time.ParseDuration(string(text)) + return err +} +``` + +### More complex usage + +Here's an example of how to load the example from the official spec page: + +```toml +# This is a TOML document. Boom. + +title = "TOML Example" + +[owner] +name = "Tom Preston-Werner" +organization = "GitHub" +bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." +dob = 1979-05-27T07:32:00Z # First class dates? Why not? + +[database] +server = "192.168.1.1" +ports = [ 8001, 8001, 8002 ] +connection_max = 5000 +enabled = true + +[servers] + + # You can indent as you please. Tabs or spaces. TOML don't care. + [servers.alpha] + ip = "10.0.0.1" + dc = "eqdc10" + + [servers.beta] + ip = "10.0.0.2" + dc = "eqdc10" + +[clients] +data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it + +# Line breaks are OK when inside arrays +hosts = [ + "alpha", + "omega" +] +``` + +And the corresponding Go types are: + +```go +type tomlConfig struct { + Title string + Owner ownerInfo + DB database `toml:"database"` + Servers map[string]server + Clients clients +} + +type ownerInfo struct { + Name string + Org string `toml:"organization"` + Bio string + DOB time.Time +} + +type database struct { + Server string + Ports []int + ConnMax int `toml:"connection_max"` + Enabled bool +} + +type server struct { + IP string + DC string +} + +type clients struct { + Data [][]interface{} + Hosts []string +} +``` + +Note that a case insensitive match will be tried if an exact match can't be +found. + +A working example of the above can be found in `_examples/example.{go,toml}`. diff --git a/vendor/github.com/BurntSushi/toml/decode.go b/vendor/github.com/BurntSushi/toml/decode.go new file mode 100644 index 00000000000..b0fd51d5b6e --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/decode.go @@ -0,0 +1,509 @@ +package toml + +import ( + "fmt" + "io" + "io/ioutil" + "math" + "reflect" + "strings" + "time" +) + +func e(format string, args ...interface{}) error { + return fmt.Errorf("toml: "+format, args...) +} + +// Unmarshaler is the interface implemented by objects that can unmarshal a +// TOML description of themselves. +type Unmarshaler interface { + UnmarshalTOML(interface{}) error +} + +// Unmarshal decodes the contents of `p` in TOML format into a pointer `v`. +func Unmarshal(p []byte, v interface{}) error { + _, err := Decode(string(p), v) + return err +} + +// Primitive is a TOML value that hasn't been decoded into a Go value. +// When using the various `Decode*` functions, the type `Primitive` may +// be given to any value, and its decoding will be delayed. +// +// A `Primitive` value can be decoded using the `PrimitiveDecode` function. +// +// The underlying representation of a `Primitive` value is subject to change. +// Do not rely on it. +// +// N.B. Primitive values are still parsed, so using them will only avoid +// the overhead of reflection. They can be useful when you don't know the +// exact type of TOML data until run time. +type Primitive struct { + undecoded interface{} + context Key +} + +// DEPRECATED! +// +// Use MetaData.PrimitiveDecode instead. +func PrimitiveDecode(primValue Primitive, v interface{}) error { + md := MetaData{decoded: make(map[string]bool)} + return md.unify(primValue.undecoded, rvalue(v)) +} + +// PrimitiveDecode is just like the other `Decode*` functions, except it +// decodes a TOML value that has already been parsed. Valid primitive values +// can *only* be obtained from values filled by the decoder functions, +// including this method. (i.e., `v` may contain more `Primitive` +// values.) +// +// Meta data for primitive values is included in the meta data returned by +// the `Decode*` functions with one exception: keys returned by the Undecoded +// method will only reflect keys that were decoded. Namely, any keys hidden +// behind a Primitive will be considered undecoded. Executing this method will +// update the undecoded keys in the meta data. (See the example.) +func (md *MetaData) PrimitiveDecode(primValue Primitive, v interface{}) error { + md.context = primValue.context + defer func() { md.context = nil }() + return md.unify(primValue.undecoded, rvalue(v)) +} + +// Decode will decode the contents of `data` in TOML format into a pointer +// `v`. +// +// TOML hashes correspond to Go structs or maps. (Dealer's choice. They can be +// used interchangeably.) +// +// TOML arrays of tables correspond to either a slice of structs or a slice +// of maps. +// +// TOML datetimes correspond to Go `time.Time` values. +// +// All other TOML types (float, string, int, bool and array) correspond +// to the obvious Go types. +// +// An exception to the above rules is if a type implements the +// encoding.TextUnmarshaler interface. In this case, any primitive TOML value +// (floats, strings, integers, booleans and datetimes) will be converted to +// a byte string and given to the value's UnmarshalText method. See the +// Unmarshaler example for a demonstration with time duration strings. +// +// Key mapping +// +// TOML keys can map to either keys in a Go map or field names in a Go +// struct. The special `toml` struct tag may be used to map TOML keys to +// struct fields that don't match the key name exactly. (See the example.) +// A case insensitive match to struct names will be tried if an exact match +// can't be found. +// +// The mapping between TOML values and Go values is loose. That is, there +// may exist TOML values that cannot be placed into your representation, and +// there may be parts of your representation that do not correspond to +// TOML values. This loose mapping can be made stricter by using the IsDefined +// and/or Undecoded methods on the MetaData returned. +// +// This decoder will not handle cyclic types. If a cyclic type is passed, +// `Decode` will not terminate. +func Decode(data string, v interface{}) (MetaData, error) { + rv := reflect.ValueOf(v) + if rv.Kind() != reflect.Ptr { + return MetaData{}, e("Decode of non-pointer %s", reflect.TypeOf(v)) + } + if rv.IsNil() { + return MetaData{}, e("Decode of nil %s", reflect.TypeOf(v)) + } + p, err := parse(data) + if err != nil { + return MetaData{}, err + } + md := MetaData{ + p.mapping, p.types, p.ordered, + make(map[string]bool, len(p.ordered)), nil, + } + return md, md.unify(p.mapping, indirect(rv)) +} + +// DecodeFile is just like Decode, except it will automatically read the +// contents of the file at `fpath` and decode it for you. +func DecodeFile(fpath string, v interface{}) (MetaData, error) { + bs, err := ioutil.ReadFile(fpath) + if err != nil { + return MetaData{}, err + } + return Decode(string(bs), v) +} + +// DecodeReader is just like Decode, except it will consume all bytes +// from the reader and decode it for you. +func DecodeReader(r io.Reader, v interface{}) (MetaData, error) { + bs, err := ioutil.ReadAll(r) + if err != nil { + return MetaData{}, err + } + return Decode(string(bs), v) +} + +// unify performs a sort of type unification based on the structure of `rv`, +// which is the client representation. +// +// Any type mismatch produces an error. Finding a type that we don't know +// how to handle produces an unsupported type error. +func (md *MetaData) unify(data interface{}, rv reflect.Value) error { + + // Special case. Look for a `Primitive` value. + if rv.Type() == reflect.TypeOf((*Primitive)(nil)).Elem() { + // Save the undecoded data and the key context into the primitive + // value. + context := make(Key, len(md.context)) + copy(context, md.context) + rv.Set(reflect.ValueOf(Primitive{ + undecoded: data, + context: context, + })) + return nil + } + + // Special case. Unmarshaler Interface support. + if rv.CanAddr() { + if v, ok := rv.Addr().Interface().(Unmarshaler); ok { + return v.UnmarshalTOML(data) + } + } + + // Special case. Handle time.Time values specifically. + // TODO: Remove this code when we decide to drop support for Go 1.1. + // This isn't necessary in Go 1.2 because time.Time satisfies the encoding + // interfaces. + if rv.Type().AssignableTo(rvalue(time.Time{}).Type()) { + return md.unifyDatetime(data, rv) + } + + // Special case. Look for a value satisfying the TextUnmarshaler interface. + if v, ok := rv.Interface().(TextUnmarshaler); ok { + return md.unifyText(data, v) + } + // BUG(burntsushi) + // The behavior here is incorrect whenever a Go type satisfies the + // encoding.TextUnmarshaler interface but also corresponds to a TOML + // hash or array. In particular, the unmarshaler should only be applied + // to primitive TOML values. But at this point, it will be applied to + // all kinds of values and produce an incorrect error whenever those values + // are hashes or arrays (including arrays of tables). + + k := rv.Kind() + + // laziness + if k >= reflect.Int && k <= reflect.Uint64 { + return md.unifyInt(data, rv) + } + switch k { + case reflect.Ptr: + elem := reflect.New(rv.Type().Elem()) + err := md.unify(data, reflect.Indirect(elem)) + if err != nil { + return err + } + rv.Set(elem) + return nil + case reflect.Struct: + return md.unifyStruct(data, rv) + case reflect.Map: + return md.unifyMap(data, rv) + case reflect.Array: + return md.unifyArray(data, rv) + case reflect.Slice: + return md.unifySlice(data, rv) + case reflect.String: + return md.unifyString(data, rv) + case reflect.Bool: + return md.unifyBool(data, rv) + case reflect.Interface: + // we only support empty interfaces. + if rv.NumMethod() > 0 { + return e("unsupported type %s", rv.Type()) + } + return md.unifyAnything(data, rv) + case reflect.Float32: + fallthrough + case reflect.Float64: + return md.unifyFloat64(data, rv) + } + return e("unsupported type %s", rv.Kind()) +} + +func (md *MetaData) unifyStruct(mapping interface{}, rv reflect.Value) error { + tmap, ok := mapping.(map[string]interface{}) + if !ok { + if mapping == nil { + return nil + } + return e("type mismatch for %s: expected table but found %T", + rv.Type().String(), mapping) + } + + for key, datum := range tmap { + var f *field + fields := cachedTypeFields(rv.Type()) + for i := range fields { + ff := &fields[i] + if ff.name == key { + f = ff + break + } + if f == nil && strings.EqualFold(ff.name, key) { + f = ff + } + } + if f != nil { + subv := rv + for _, i := range f.index { + subv = indirect(subv.Field(i)) + } + if isUnifiable(subv) { + md.decoded[md.context.add(key).String()] = true + md.context = append(md.context, key) + if err := md.unify(datum, subv); err != nil { + return err + } + md.context = md.context[0 : len(md.context)-1] + } else if f.name != "" { + // Bad user! No soup for you! + return e("cannot write unexported field %s.%s", + rv.Type().String(), f.name) + } + } + } + return nil +} + +func (md *MetaData) unifyMap(mapping interface{}, rv reflect.Value) error { + tmap, ok := mapping.(map[string]interface{}) + if !ok { + if tmap == nil { + return nil + } + return badtype("map", mapping) + } + if rv.IsNil() { + rv.Set(reflect.MakeMap(rv.Type())) + } + for k, v := range tmap { + md.decoded[md.context.add(k).String()] = true + md.context = append(md.context, k) + + rvkey := indirect(reflect.New(rv.Type().Key())) + rvval := reflect.Indirect(reflect.New(rv.Type().Elem())) + if err := md.unify(v, rvval); err != nil { + return err + } + md.context = md.context[0 : len(md.context)-1] + + rvkey.SetString(k) + rv.SetMapIndex(rvkey, rvval) + } + return nil +} + +func (md *MetaData) unifyArray(data interface{}, rv reflect.Value) error { + datav := reflect.ValueOf(data) + if datav.Kind() != reflect.Slice { + if !datav.IsValid() { + return nil + } + return badtype("slice", data) + } + sliceLen := datav.Len() + if sliceLen != rv.Len() { + return e("expected array length %d; got TOML array of length %d", + rv.Len(), sliceLen) + } + return md.unifySliceArray(datav, rv) +} + +func (md *MetaData) unifySlice(data interface{}, rv reflect.Value) error { + datav := reflect.ValueOf(data) + if datav.Kind() != reflect.Slice { + if !datav.IsValid() { + return nil + } + return badtype("slice", data) + } + n := datav.Len() + if rv.IsNil() || rv.Cap() < n { + rv.Set(reflect.MakeSlice(rv.Type(), n, n)) + } + rv.SetLen(n) + return md.unifySliceArray(datav, rv) +} + +func (md *MetaData) unifySliceArray(data, rv reflect.Value) error { + sliceLen := data.Len() + for i := 0; i < sliceLen; i++ { + v := data.Index(i).Interface() + sliceval := indirect(rv.Index(i)) + if err := md.unify(v, sliceval); err != nil { + return err + } + } + return nil +} + +func (md *MetaData) unifyDatetime(data interface{}, rv reflect.Value) error { + if _, ok := data.(time.Time); ok { + rv.Set(reflect.ValueOf(data)) + return nil + } + return badtype("time.Time", data) +} + +func (md *MetaData) unifyString(data interface{}, rv reflect.Value) error { + if s, ok := data.(string); ok { + rv.SetString(s) + return nil + } + return badtype("string", data) +} + +func (md *MetaData) unifyFloat64(data interface{}, rv reflect.Value) error { + if num, ok := data.(float64); ok { + switch rv.Kind() { + case reflect.Float32: + fallthrough + case reflect.Float64: + rv.SetFloat(num) + default: + panic("bug") + } + return nil + } + return badtype("float", data) +} + +func (md *MetaData) unifyInt(data interface{}, rv reflect.Value) error { + if num, ok := data.(int64); ok { + if rv.Kind() >= reflect.Int && rv.Kind() <= reflect.Int64 { + switch rv.Kind() { + case reflect.Int, reflect.Int64: + // No bounds checking necessary. + case reflect.Int8: + if num < math.MinInt8 || num > math.MaxInt8 { + return e("value %d is out of range for int8", num) + } + case reflect.Int16: + if num < math.MinInt16 || num > math.MaxInt16 { + return e("value %d is out of range for int16", num) + } + case reflect.Int32: + if num < math.MinInt32 || num > math.MaxInt32 { + return e("value %d is out of range for int32", num) + } + } + rv.SetInt(num) + } else if rv.Kind() >= reflect.Uint && rv.Kind() <= reflect.Uint64 { + unum := uint64(num) + switch rv.Kind() { + case reflect.Uint, reflect.Uint64: + // No bounds checking necessary. + case reflect.Uint8: + if num < 0 || unum > math.MaxUint8 { + return e("value %d is out of range for uint8", num) + } + case reflect.Uint16: + if num < 0 || unum > math.MaxUint16 { + return e("value %d is out of range for uint16", num) + } + case reflect.Uint32: + if num < 0 || unum > math.MaxUint32 { + return e("value %d is out of range for uint32", num) + } + } + rv.SetUint(unum) + } else { + panic("unreachable") + } + return nil + } + return badtype("integer", data) +} + +func (md *MetaData) unifyBool(data interface{}, rv reflect.Value) error { + if b, ok := data.(bool); ok { + rv.SetBool(b) + return nil + } + return badtype("boolean", data) +} + +func (md *MetaData) unifyAnything(data interface{}, rv reflect.Value) error { + rv.Set(reflect.ValueOf(data)) + return nil +} + +func (md *MetaData) unifyText(data interface{}, v TextUnmarshaler) error { + var s string + switch sdata := data.(type) { + case TextMarshaler: + text, err := sdata.MarshalText() + if err != nil { + return err + } + s = string(text) + case fmt.Stringer: + s = sdata.String() + case string: + s = sdata + case bool: + s = fmt.Sprintf("%v", sdata) + case int64: + s = fmt.Sprintf("%d", sdata) + case float64: + s = fmt.Sprintf("%f", sdata) + default: + return badtype("primitive (string-like)", data) + } + if err := v.UnmarshalText([]byte(s)); err != nil { + return err + } + return nil +} + +// rvalue returns a reflect.Value of `v`. All pointers are resolved. +func rvalue(v interface{}) reflect.Value { + return indirect(reflect.ValueOf(v)) +} + +// indirect returns the value pointed to by a pointer. +// Pointers are followed until the value is not a pointer. +// New values are allocated for each nil pointer. +// +// An exception to this rule is if the value satisfies an interface of +// interest to us (like encoding.TextUnmarshaler). +func indirect(v reflect.Value) reflect.Value { + if v.Kind() != reflect.Ptr { + if v.CanSet() { + pv := v.Addr() + if _, ok := pv.Interface().(TextUnmarshaler); ok { + return pv + } + } + return v + } + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + return indirect(reflect.Indirect(v)) +} + +func isUnifiable(rv reflect.Value) bool { + if rv.CanSet() { + return true + } + if _, ok := rv.Interface().(TextUnmarshaler); ok { + return true + } + return false +} + +func badtype(expected string, data interface{}) error { + return e("cannot load TOML value of type %T into a Go %s", data, expected) +} diff --git a/vendor/github.com/BurntSushi/toml/decode_meta.go b/vendor/github.com/BurntSushi/toml/decode_meta.go new file mode 100644 index 00000000000..b9914a6798c --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/decode_meta.go @@ -0,0 +1,121 @@ +package toml + +import "strings" + +// MetaData allows access to meta information about TOML data that may not +// be inferrable via reflection. In particular, whether a key has been defined +// and the TOML type of a key. +type MetaData struct { + mapping map[string]interface{} + types map[string]tomlType + keys []Key + decoded map[string]bool + context Key // Used only during decoding. +} + +// IsDefined returns true if the key given exists in the TOML data. The key +// should be specified hierarchially. e.g., +// +// // access the TOML key 'a.b.c' +// IsDefined("a", "b", "c") +// +// IsDefined will return false if an empty key given. Keys are case sensitive. +func (md *MetaData) IsDefined(key ...string) bool { + if len(key) == 0 { + return false + } + + var hash map[string]interface{} + var ok bool + var hashOrVal interface{} = md.mapping + for _, k := range key { + if hash, ok = hashOrVal.(map[string]interface{}); !ok { + return false + } + if hashOrVal, ok = hash[k]; !ok { + return false + } + } + return true +} + +// Type returns a string representation of the type of the key specified. +// +// Type will return the empty string if given an empty key or a key that +// does not exist. Keys are case sensitive. +func (md *MetaData) Type(key ...string) string { + fullkey := strings.Join(key, ".") + if typ, ok := md.types[fullkey]; ok { + return typ.typeString() + } + return "" +} + +// Key is the type of any TOML key, including key groups. Use (MetaData).Keys +// to get values of this type. +type Key []string + +func (k Key) String() string { + return strings.Join(k, ".") +} + +func (k Key) maybeQuotedAll() string { + var ss []string + for i := range k { + ss = append(ss, k.maybeQuoted(i)) + } + return strings.Join(ss, ".") +} + +func (k Key) maybeQuoted(i int) string { + quote := false + for _, c := range k[i] { + if !isBareKeyChar(c) { + quote = true + break + } + } + if quote { + return "\"" + strings.Replace(k[i], "\"", "\\\"", -1) + "\"" + } + return k[i] +} + +func (k Key) add(piece string) Key { + newKey := make(Key, len(k)+1) + copy(newKey, k) + newKey[len(k)] = piece + return newKey +} + +// Keys returns a slice of every key in the TOML data, including key groups. +// Each key is itself a slice, where the first element is the top of the +// hierarchy and the last is the most specific. +// +// The list will have the same order as the keys appeared in the TOML data. +// +// All keys returned are non-empty. +func (md *MetaData) Keys() []Key { + return md.keys +} + +// Undecoded returns all keys that have not been decoded in the order in which +// they appear in the original TOML document. +// +// This includes keys that haven't been decoded because of a Primitive value. +// Once the Primitive value is decoded, the keys will be considered decoded. +// +// Also note that decoding into an empty interface will result in no decoding, +// and so no keys will be considered decoded. +// +// In this sense, the Undecoded keys correspond to keys in the TOML document +// that do not have a concrete type in your representation. +func (md *MetaData) Undecoded() []Key { + undecoded := make([]Key, 0, len(md.keys)) + for _, key := range md.keys { + if !md.decoded[key.String()] { + undecoded = append(undecoded, key) + } + } + return undecoded +} diff --git a/vendor/github.com/BurntSushi/toml/doc.go b/vendor/github.com/BurntSushi/toml/doc.go new file mode 100644 index 00000000000..b371f396edc --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/doc.go @@ -0,0 +1,27 @@ +/* +Package toml provides facilities for decoding and encoding TOML configuration +files via reflection. There is also support for delaying decoding with +the Primitive type, and querying the set of keys in a TOML document with the +MetaData type. + +The specification implemented: https://github.com/toml-lang/toml + +The sub-command github.com/BurntSushi/toml/cmd/tomlv can be used to verify +whether a file is a valid TOML document. It can also be used to print the +type of each key in a TOML document. + +Testing + +There are two important types of tests used for this package. The first is +contained inside '*_test.go' files and uses the standard Go unit testing +framework. These tests are primarily devoted to holistically testing the +decoder and encoder. + +The second type of testing is used to verify the implementation's adherence +to the TOML specification. These tests have been factored into their own +project: https://github.com/BurntSushi/toml-test + +The reason the tests are in a separate project is so that they can be used by +any implementation of TOML. Namely, it is language agnostic. +*/ +package toml diff --git a/vendor/github.com/BurntSushi/toml/encode.go b/vendor/github.com/BurntSushi/toml/encode.go new file mode 100644 index 00000000000..d905c21a246 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/encode.go @@ -0,0 +1,568 @@ +package toml + +import ( + "bufio" + "errors" + "fmt" + "io" + "reflect" + "sort" + "strconv" + "strings" + "time" +) + +type tomlEncodeError struct{ error } + +var ( + errArrayMixedElementTypes = errors.New( + "toml: cannot encode array with mixed element types") + errArrayNilElement = errors.New( + "toml: cannot encode array with nil element") + errNonString = errors.New( + "toml: cannot encode a map with non-string key type") + errAnonNonStruct = errors.New( + "toml: cannot encode an anonymous field that is not a struct") + errArrayNoTable = errors.New( + "toml: TOML array element cannot contain a table") + errNoKey = errors.New( + "toml: top-level values must be Go maps or structs") + errAnything = errors.New("") // used in testing +) + +var quotedReplacer = strings.NewReplacer( + "\t", "\\t", + "\n", "\\n", + "\r", "\\r", + "\"", "\\\"", + "\\", "\\\\", +) + +// Encoder controls the encoding of Go values to a TOML document to some +// io.Writer. +// +// The indentation level can be controlled with the Indent field. +type Encoder struct { + // A single indentation level. By default it is two spaces. + Indent string + + // hasWritten is whether we have written any output to w yet. + hasWritten bool + w *bufio.Writer +} + +// NewEncoder returns a TOML encoder that encodes Go values to the io.Writer +// given. By default, a single indentation level is 2 spaces. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + w: bufio.NewWriter(w), + Indent: " ", + } +} + +// Encode writes a TOML representation of the Go value to the underlying +// io.Writer. If the value given cannot be encoded to a valid TOML document, +// then an error is returned. +// +// The mapping between Go values and TOML values should be precisely the same +// as for the Decode* functions. Similarly, the TextMarshaler interface is +// supported by encoding the resulting bytes as strings. (If you want to write +// arbitrary binary data then you will need to use something like base64 since +// TOML does not have any binary types.) +// +// When encoding TOML hashes (i.e., Go maps or structs), keys without any +// sub-hashes are encoded first. +// +// If a Go map is encoded, then its keys are sorted alphabetically for +// deterministic output. More control over this behavior may be provided if +// there is demand for it. +// +// Encoding Go values without a corresponding TOML representation---like map +// types with non-string keys---will cause an error to be returned. Similarly +// for mixed arrays/slices, arrays/slices with nil elements, embedded +// non-struct types and nested slices containing maps or structs. +// (e.g., [][]map[string]string is not allowed but []map[string]string is OK +// and so is []map[string][]string.) +func (enc *Encoder) Encode(v interface{}) error { + rv := eindirect(reflect.ValueOf(v)) + if err := enc.safeEncode(Key([]string{}), rv); err != nil { + return err + } + return enc.w.Flush() +} + +func (enc *Encoder) safeEncode(key Key, rv reflect.Value) (err error) { + defer func() { + if r := recover(); r != nil { + if terr, ok := r.(tomlEncodeError); ok { + err = terr.error + return + } + panic(r) + } + }() + enc.encode(key, rv) + return nil +} + +func (enc *Encoder) encode(key Key, rv reflect.Value) { + // Special case. Time needs to be in ISO8601 format. + // Special case. If we can marshal the type to text, then we used that. + // Basically, this prevents the encoder for handling these types as + // generic structs (or whatever the underlying type of a TextMarshaler is). + switch rv.Interface().(type) { + case time.Time, TextMarshaler: + enc.keyEqElement(key, rv) + return + } + + k := rv.Kind() + switch k { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, + reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, + reflect.Uint64, + reflect.Float32, reflect.Float64, reflect.String, reflect.Bool: + enc.keyEqElement(key, rv) + case reflect.Array, reflect.Slice: + if typeEqual(tomlArrayHash, tomlTypeOfGo(rv)) { + enc.eArrayOfTables(key, rv) + } else { + enc.keyEqElement(key, rv) + } + case reflect.Interface: + if rv.IsNil() { + return + } + enc.encode(key, rv.Elem()) + case reflect.Map: + if rv.IsNil() { + return + } + enc.eTable(key, rv) + case reflect.Ptr: + if rv.IsNil() { + return + } + enc.encode(key, rv.Elem()) + case reflect.Struct: + enc.eTable(key, rv) + default: + panic(e("unsupported type for key '%s': %s", key, k)) + } +} + +// eElement encodes any value that can be an array element (primitives and +// arrays). +func (enc *Encoder) eElement(rv reflect.Value) { + switch v := rv.Interface().(type) { + case time.Time: + // Special case time.Time as a primitive. Has to come before + // TextMarshaler below because time.Time implements + // encoding.TextMarshaler, but we need to always use UTC. + enc.wf(v.UTC().Format("2006-01-02T15:04:05Z")) + return + case TextMarshaler: + // Special case. Use text marshaler if it's available for this value. + if s, err := v.MarshalText(); err != nil { + encPanic(err) + } else { + enc.writeQuoted(string(s)) + } + return + } + switch rv.Kind() { + case reflect.Bool: + enc.wf(strconv.FormatBool(rv.Bool())) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, + reflect.Int64: + enc.wf(strconv.FormatInt(rv.Int(), 10)) + case reflect.Uint, reflect.Uint8, reflect.Uint16, + reflect.Uint32, reflect.Uint64: + enc.wf(strconv.FormatUint(rv.Uint(), 10)) + case reflect.Float32: + enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 32))) + case reflect.Float64: + enc.wf(floatAddDecimal(strconv.FormatFloat(rv.Float(), 'f', -1, 64))) + case reflect.Array, reflect.Slice: + enc.eArrayOrSliceElement(rv) + case reflect.Interface: + enc.eElement(rv.Elem()) + case reflect.String: + enc.writeQuoted(rv.String()) + default: + panic(e("unexpected primitive type: %s", rv.Kind())) + } +} + +// By the TOML spec, all floats must have a decimal with at least one +// number on either side. +func floatAddDecimal(fstr string) string { + if !strings.Contains(fstr, ".") { + return fstr + ".0" + } + return fstr +} + +func (enc *Encoder) writeQuoted(s string) { + enc.wf("\"%s\"", quotedReplacer.Replace(s)) +} + +func (enc *Encoder) eArrayOrSliceElement(rv reflect.Value) { + length := rv.Len() + enc.wf("[") + for i := 0; i < length; i++ { + elem := rv.Index(i) + enc.eElement(elem) + if i != length-1 { + enc.wf(", ") + } + } + enc.wf("]") +} + +func (enc *Encoder) eArrayOfTables(key Key, rv reflect.Value) { + if len(key) == 0 { + encPanic(errNoKey) + } + for i := 0; i < rv.Len(); i++ { + trv := rv.Index(i) + if isNil(trv) { + continue + } + panicIfInvalidKey(key) + enc.newline() + enc.wf("%s[[%s]]", enc.indentStr(key), key.maybeQuotedAll()) + enc.newline() + enc.eMapOrStruct(key, trv) + } +} + +func (enc *Encoder) eTable(key Key, rv reflect.Value) { + panicIfInvalidKey(key) + if len(key) == 1 { + // Output an extra newline between top-level tables. + // (The newline isn't written if nothing else has been written though.) + enc.newline() + } + if len(key) > 0 { + enc.wf("%s[%s]", enc.indentStr(key), key.maybeQuotedAll()) + enc.newline() + } + enc.eMapOrStruct(key, rv) +} + +func (enc *Encoder) eMapOrStruct(key Key, rv reflect.Value) { + switch rv := eindirect(rv); rv.Kind() { + case reflect.Map: + enc.eMap(key, rv) + case reflect.Struct: + enc.eStruct(key, rv) + default: + panic("eTable: unhandled reflect.Value Kind: " + rv.Kind().String()) + } +} + +func (enc *Encoder) eMap(key Key, rv reflect.Value) { + rt := rv.Type() + if rt.Key().Kind() != reflect.String { + encPanic(errNonString) + } + + // Sort keys so that we have deterministic output. And write keys directly + // underneath this key first, before writing sub-structs or sub-maps. + var mapKeysDirect, mapKeysSub []string + for _, mapKey := range rv.MapKeys() { + k := mapKey.String() + if typeIsHash(tomlTypeOfGo(rv.MapIndex(mapKey))) { + mapKeysSub = append(mapKeysSub, k) + } else { + mapKeysDirect = append(mapKeysDirect, k) + } + } + + var writeMapKeys = func(mapKeys []string) { + sort.Strings(mapKeys) + for _, mapKey := range mapKeys { + mrv := rv.MapIndex(reflect.ValueOf(mapKey)) + if isNil(mrv) { + // Don't write anything for nil fields. + continue + } + enc.encode(key.add(mapKey), mrv) + } + } + writeMapKeys(mapKeysDirect) + writeMapKeys(mapKeysSub) +} + +func (enc *Encoder) eStruct(key Key, rv reflect.Value) { + // Write keys for fields directly under this key first, because if we write + // a field that creates a new table, then all keys under it will be in that + // table (not the one we're writing here). + rt := rv.Type() + var fieldsDirect, fieldsSub [][]int + var addFields func(rt reflect.Type, rv reflect.Value, start []int) + addFields = func(rt reflect.Type, rv reflect.Value, start []int) { + for i := 0; i < rt.NumField(); i++ { + f := rt.Field(i) + // skip unexported fields + if f.PkgPath != "" && !f.Anonymous { + continue + } + frv := rv.Field(i) + if f.Anonymous { + t := f.Type + switch t.Kind() { + case reflect.Struct: + // Treat anonymous struct fields with + // tag names as though they are not + // anonymous, like encoding/json does. + if getOptions(f.Tag).name == "" { + addFields(t, frv, f.Index) + continue + } + case reflect.Ptr: + if t.Elem().Kind() == reflect.Struct && + getOptions(f.Tag).name == "" { + if !frv.IsNil() { + addFields(t.Elem(), frv.Elem(), f.Index) + } + continue + } + // Fall through to the normal field encoding logic below + // for non-struct anonymous fields. + } + } + + if typeIsHash(tomlTypeOfGo(frv)) { + fieldsSub = append(fieldsSub, append(start, f.Index...)) + } else { + fieldsDirect = append(fieldsDirect, append(start, f.Index...)) + } + } + } + addFields(rt, rv, nil) + + var writeFields = func(fields [][]int) { + for _, fieldIndex := range fields { + sft := rt.FieldByIndex(fieldIndex) + sf := rv.FieldByIndex(fieldIndex) + if isNil(sf) { + // Don't write anything for nil fields. + continue + } + + opts := getOptions(sft.Tag) + if opts.skip { + continue + } + keyName := sft.Name + if opts.name != "" { + keyName = opts.name + } + if opts.omitempty && isEmpty(sf) { + continue + } + if opts.omitzero && isZero(sf) { + continue + } + + enc.encode(key.add(keyName), sf) + } + } + writeFields(fieldsDirect) + writeFields(fieldsSub) +} + +// tomlTypeName returns the TOML type name of the Go value's type. It is +// used to determine whether the types of array elements are mixed (which is +// forbidden). If the Go value is nil, then it is illegal for it to be an array +// element, and valueIsNil is returned as true. + +// Returns the TOML type of a Go value. The type may be `nil`, which means +// no concrete TOML type could be found. +func tomlTypeOfGo(rv reflect.Value) tomlType { + if isNil(rv) || !rv.IsValid() { + return nil + } + switch rv.Kind() { + case reflect.Bool: + return tomlBool + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, + reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, + reflect.Uint64: + return tomlInteger + case reflect.Float32, reflect.Float64: + return tomlFloat + case reflect.Array, reflect.Slice: + if typeEqual(tomlHash, tomlArrayType(rv)) { + return tomlArrayHash + } + return tomlArray + case reflect.Ptr, reflect.Interface: + return tomlTypeOfGo(rv.Elem()) + case reflect.String: + return tomlString + case reflect.Map: + return tomlHash + case reflect.Struct: + switch rv.Interface().(type) { + case time.Time: + return tomlDatetime + case TextMarshaler: + return tomlString + default: + return tomlHash + } + default: + panic("unexpected reflect.Kind: " + rv.Kind().String()) + } +} + +// tomlArrayType returns the element type of a TOML array. The type returned +// may be nil if it cannot be determined (e.g., a nil slice or a zero length +// slize). This function may also panic if it finds a type that cannot be +// expressed in TOML (such as nil elements, heterogeneous arrays or directly +// nested arrays of tables). +func tomlArrayType(rv reflect.Value) tomlType { + if isNil(rv) || !rv.IsValid() || rv.Len() == 0 { + return nil + } + firstType := tomlTypeOfGo(rv.Index(0)) + if firstType == nil { + encPanic(errArrayNilElement) + } + + rvlen := rv.Len() + for i := 1; i < rvlen; i++ { + elem := rv.Index(i) + switch elemType := tomlTypeOfGo(elem); { + case elemType == nil: + encPanic(errArrayNilElement) + case !typeEqual(firstType, elemType): + encPanic(errArrayMixedElementTypes) + } + } + // If we have a nested array, then we must make sure that the nested + // array contains ONLY primitives. + // This checks arbitrarily nested arrays. + if typeEqual(firstType, tomlArray) || typeEqual(firstType, tomlArrayHash) { + nest := tomlArrayType(eindirect(rv.Index(0))) + if typeEqual(nest, tomlHash) || typeEqual(nest, tomlArrayHash) { + encPanic(errArrayNoTable) + } + } + return firstType +} + +type tagOptions struct { + skip bool // "-" + name string + omitempty bool + omitzero bool +} + +func getOptions(tag reflect.StructTag) tagOptions { + t := tag.Get("toml") + if t == "-" { + return tagOptions{skip: true} + } + var opts tagOptions + parts := strings.Split(t, ",") + opts.name = parts[0] + for _, s := range parts[1:] { + switch s { + case "omitempty": + opts.omitempty = true + case "omitzero": + opts.omitzero = true + } + } + return opts +} + +func isZero(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return rv.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return rv.Uint() == 0 + case reflect.Float32, reflect.Float64: + return rv.Float() == 0.0 + } + return false +} + +func isEmpty(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Array, reflect.Slice, reflect.Map, reflect.String: + return rv.Len() == 0 + case reflect.Bool: + return !rv.Bool() + } + return false +} + +func (enc *Encoder) newline() { + if enc.hasWritten { + enc.wf("\n") + } +} + +func (enc *Encoder) keyEqElement(key Key, val reflect.Value) { + if len(key) == 0 { + encPanic(errNoKey) + } + panicIfInvalidKey(key) + enc.wf("%s%s = ", enc.indentStr(key), key.maybeQuoted(len(key)-1)) + enc.eElement(val) + enc.newline() +} + +func (enc *Encoder) wf(format string, v ...interface{}) { + if _, err := fmt.Fprintf(enc.w, format, v...); err != nil { + encPanic(err) + } + enc.hasWritten = true +} + +func (enc *Encoder) indentStr(key Key) string { + return strings.Repeat(enc.Indent, len(key)-1) +} + +func encPanic(err error) { + panic(tomlEncodeError{err}) +} + +func eindirect(v reflect.Value) reflect.Value { + switch v.Kind() { + case reflect.Ptr, reflect.Interface: + return eindirect(v.Elem()) + default: + return v + } +} + +func isNil(rv reflect.Value) bool { + switch rv.Kind() { + case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return rv.IsNil() + default: + return false + } +} + +func panicIfInvalidKey(key Key) { + for _, k := range key { + if len(k) == 0 { + encPanic(e("Key '%s' is not a valid table name. Key names "+ + "cannot be empty.", key.maybeQuotedAll())) + } + } +} + +func isValidKeyName(s string) bool { + return len(s) != 0 +} diff --git a/vendor/github.com/BurntSushi/toml/encoding_types.go b/vendor/github.com/BurntSushi/toml/encoding_types.go new file mode 100644 index 00000000000..d36e1dd6002 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/encoding_types.go @@ -0,0 +1,19 @@ +// +build go1.2 + +package toml + +// In order to support Go 1.1, we define our own TextMarshaler and +// TextUnmarshaler types. For Go 1.2+, we just alias them with the +// standard library interfaces. + +import ( + "encoding" +) + +// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here +// so that Go 1.1 can be supported. +type TextMarshaler encoding.TextMarshaler + +// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined +// here so that Go 1.1 can be supported. +type TextUnmarshaler encoding.TextUnmarshaler diff --git a/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go b/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go new file mode 100644 index 00000000000..e8d503d0469 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/encoding_types_1.1.go @@ -0,0 +1,18 @@ +// +build !go1.2 + +package toml + +// These interfaces were introduced in Go 1.2, so we add them manually when +// compiling for Go 1.1. + +// TextMarshaler is a synonym for encoding.TextMarshaler. It is defined here +// so that Go 1.1 can be supported. +type TextMarshaler interface { + MarshalText() (text []byte, err error) +} + +// TextUnmarshaler is a synonym for encoding.TextUnmarshaler. It is defined +// here so that Go 1.1 can be supported. +type TextUnmarshaler interface { + UnmarshalText(text []byte) error +} diff --git a/vendor/github.com/BurntSushi/toml/lex.go b/vendor/github.com/BurntSushi/toml/lex.go new file mode 100644 index 00000000000..e0a742a8870 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/lex.go @@ -0,0 +1,953 @@ +package toml + +import ( + "fmt" + "strings" + "unicode" + "unicode/utf8" +) + +type itemType int + +const ( + itemError itemType = iota + itemNIL // used in the parser to indicate no type + itemEOF + itemText + itemString + itemRawString + itemMultilineString + itemRawMultilineString + itemBool + itemInteger + itemFloat + itemDatetime + itemArray // the start of an array + itemArrayEnd + itemTableStart + itemTableEnd + itemArrayTableStart + itemArrayTableEnd + itemKeyStart + itemCommentStart + itemInlineTableStart + itemInlineTableEnd +) + +const ( + eof = 0 + comma = ',' + tableStart = '[' + tableEnd = ']' + arrayTableStart = '[' + arrayTableEnd = ']' + tableSep = '.' + keySep = '=' + arrayStart = '[' + arrayEnd = ']' + commentStart = '#' + stringStart = '"' + stringEnd = '"' + rawStringStart = '\'' + rawStringEnd = '\'' + inlineTableStart = '{' + inlineTableEnd = '}' +) + +type stateFn func(lx *lexer) stateFn + +type lexer struct { + input string + start int + pos int + line int + state stateFn + items chan item + + // Allow for backing up up to three runes. + // This is necessary because TOML contains 3-rune tokens (""" and '''). + prevWidths [3]int + nprev int // how many of prevWidths are in use + // If we emit an eof, we can still back up, but it is not OK to call + // next again. + atEOF bool + + // A stack of state functions used to maintain context. + // The idea is to reuse parts of the state machine in various places. + // For example, values can appear at the top level or within arbitrarily + // nested arrays. The last state on the stack is used after a value has + // been lexed. Similarly for comments. + stack []stateFn +} + +type item struct { + typ itemType + val string + line int +} + +func (lx *lexer) nextItem() item { + for { + select { + case item := <-lx.items: + return item + default: + lx.state = lx.state(lx) + } + } +} + +func lex(input string) *lexer { + lx := &lexer{ + input: input, + state: lexTop, + line: 1, + items: make(chan item, 10), + stack: make([]stateFn, 0, 10), + } + return lx +} + +func (lx *lexer) push(state stateFn) { + lx.stack = append(lx.stack, state) +} + +func (lx *lexer) pop() stateFn { + if len(lx.stack) == 0 { + return lx.errorf("BUG in lexer: no states to pop") + } + last := lx.stack[len(lx.stack)-1] + lx.stack = lx.stack[0 : len(lx.stack)-1] + return last +} + +func (lx *lexer) current() string { + return lx.input[lx.start:lx.pos] +} + +func (lx *lexer) emit(typ itemType) { + lx.items <- item{typ, lx.current(), lx.line} + lx.start = lx.pos +} + +func (lx *lexer) emitTrim(typ itemType) { + lx.items <- item{typ, strings.TrimSpace(lx.current()), lx.line} + lx.start = lx.pos +} + +func (lx *lexer) next() (r rune) { + if lx.atEOF { + panic("next called after EOF") + } + if lx.pos >= len(lx.input) { + lx.atEOF = true + return eof + } + + if lx.input[lx.pos] == '\n' { + lx.line++ + } + lx.prevWidths[2] = lx.prevWidths[1] + lx.prevWidths[1] = lx.prevWidths[0] + if lx.nprev < 3 { + lx.nprev++ + } + r, w := utf8.DecodeRuneInString(lx.input[lx.pos:]) + lx.prevWidths[0] = w + lx.pos += w + return r +} + +// ignore skips over the pending input before this point. +func (lx *lexer) ignore() { + lx.start = lx.pos +} + +// backup steps back one rune. Can be called only twice between calls to next. +func (lx *lexer) backup() { + if lx.atEOF { + lx.atEOF = false + return + } + if lx.nprev < 1 { + panic("backed up too far") + } + w := lx.prevWidths[0] + lx.prevWidths[0] = lx.prevWidths[1] + lx.prevWidths[1] = lx.prevWidths[2] + lx.nprev-- + lx.pos -= w + if lx.pos < len(lx.input) && lx.input[lx.pos] == '\n' { + lx.line-- + } +} + +// accept consumes the next rune if it's equal to `valid`. +func (lx *lexer) accept(valid rune) bool { + if lx.next() == valid { + return true + } + lx.backup() + return false +} + +// peek returns but does not consume the next rune in the input. +func (lx *lexer) peek() rune { + r := lx.next() + lx.backup() + return r +} + +// skip ignores all input that matches the given predicate. +func (lx *lexer) skip(pred func(rune) bool) { + for { + r := lx.next() + if pred(r) { + continue + } + lx.backup() + lx.ignore() + return + } +} + +// errorf stops all lexing by emitting an error and returning `nil`. +// Note that any value that is a character is escaped if it's a special +// character (newlines, tabs, etc.). +func (lx *lexer) errorf(format string, values ...interface{}) stateFn { + lx.items <- item{ + itemError, + fmt.Sprintf(format, values...), + lx.line, + } + return nil +} + +// lexTop consumes elements at the top level of TOML data. +func lexTop(lx *lexer) stateFn { + r := lx.next() + if isWhitespace(r) || isNL(r) { + return lexSkip(lx, lexTop) + } + switch r { + case commentStart: + lx.push(lexTop) + return lexCommentStart + case tableStart: + return lexTableStart + case eof: + if lx.pos > lx.start { + return lx.errorf("unexpected EOF") + } + lx.emit(itemEOF) + return nil + } + + // At this point, the only valid item can be a key, so we back up + // and let the key lexer do the rest. + lx.backup() + lx.push(lexTopEnd) + return lexKeyStart +} + +// lexTopEnd is entered whenever a top-level item has been consumed. (A value +// or a table.) It must see only whitespace, and will turn back to lexTop +// upon a newline. If it sees EOF, it will quit the lexer successfully. +func lexTopEnd(lx *lexer) stateFn { + r := lx.next() + switch { + case r == commentStart: + // a comment will read to a newline for us. + lx.push(lexTop) + return lexCommentStart + case isWhitespace(r): + return lexTopEnd + case isNL(r): + lx.ignore() + return lexTop + case r == eof: + lx.emit(itemEOF) + return nil + } + return lx.errorf("expected a top-level item to end with a newline, "+ + "comment, or EOF, but got %q instead", r) +} + +// lexTable lexes the beginning of a table. Namely, it makes sure that +// it starts with a character other than '.' and ']'. +// It assumes that '[' has already been consumed. +// It also handles the case that this is an item in an array of tables. +// e.g., '[[name]]'. +func lexTableStart(lx *lexer) stateFn { + if lx.peek() == arrayTableStart { + lx.next() + lx.emit(itemArrayTableStart) + lx.push(lexArrayTableEnd) + } else { + lx.emit(itemTableStart) + lx.push(lexTableEnd) + } + return lexTableNameStart +} + +func lexTableEnd(lx *lexer) stateFn { + lx.emit(itemTableEnd) + return lexTopEnd +} + +func lexArrayTableEnd(lx *lexer) stateFn { + if r := lx.next(); r != arrayTableEnd { + return lx.errorf("expected end of table array name delimiter %q, "+ + "but got %q instead", arrayTableEnd, r) + } + lx.emit(itemArrayTableEnd) + return lexTopEnd +} + +func lexTableNameStart(lx *lexer) stateFn { + lx.skip(isWhitespace) + switch r := lx.peek(); { + case r == tableEnd || r == eof: + return lx.errorf("unexpected end of table name " + + "(table names cannot be empty)") + case r == tableSep: + return lx.errorf("unexpected table separator " + + "(table names cannot be empty)") + case r == stringStart || r == rawStringStart: + lx.ignore() + lx.push(lexTableNameEnd) + return lexValue // reuse string lexing + default: + return lexBareTableName + } +} + +// lexBareTableName lexes the name of a table. It assumes that at least one +// valid character for the table has already been read. +func lexBareTableName(lx *lexer) stateFn { + r := lx.next() + if isBareKeyChar(r) { + return lexBareTableName + } + lx.backup() + lx.emit(itemText) + return lexTableNameEnd +} + +// lexTableNameEnd reads the end of a piece of a table name, optionally +// consuming whitespace. +func lexTableNameEnd(lx *lexer) stateFn { + lx.skip(isWhitespace) + switch r := lx.next(); { + case isWhitespace(r): + return lexTableNameEnd + case r == tableSep: + lx.ignore() + return lexTableNameStart + case r == tableEnd: + return lx.pop() + default: + return lx.errorf("expected '.' or ']' to end table name, "+ + "but got %q instead", r) + } +} + +// lexKeyStart consumes a key name up until the first non-whitespace character. +// lexKeyStart will ignore whitespace. +func lexKeyStart(lx *lexer) stateFn { + r := lx.peek() + switch { + case r == keySep: + return lx.errorf("unexpected key separator %q", keySep) + case isWhitespace(r) || isNL(r): + lx.next() + return lexSkip(lx, lexKeyStart) + case r == stringStart || r == rawStringStart: + lx.ignore() + lx.emit(itemKeyStart) + lx.push(lexKeyEnd) + return lexValue // reuse string lexing + default: + lx.ignore() + lx.emit(itemKeyStart) + return lexBareKey + } +} + +// lexBareKey consumes the text of a bare key. Assumes that the first character +// (which is not whitespace) has not yet been consumed. +func lexBareKey(lx *lexer) stateFn { + switch r := lx.next(); { + case isBareKeyChar(r): + return lexBareKey + case isWhitespace(r): + lx.backup() + lx.emit(itemText) + return lexKeyEnd + case r == keySep: + lx.backup() + lx.emit(itemText) + return lexKeyEnd + default: + return lx.errorf("bare keys cannot contain %q", r) + } +} + +// lexKeyEnd consumes the end of a key and trims whitespace (up to the key +// separator). +func lexKeyEnd(lx *lexer) stateFn { + switch r := lx.next(); { + case r == keySep: + return lexSkip(lx, lexValue) + case isWhitespace(r): + return lexSkip(lx, lexKeyEnd) + default: + return lx.errorf("expected key separator %q, but got %q instead", + keySep, r) + } +} + +// lexValue starts the consumption of a value anywhere a value is expected. +// lexValue will ignore whitespace. +// After a value is lexed, the last state on the next is popped and returned. +func lexValue(lx *lexer) stateFn { + // We allow whitespace to precede a value, but NOT newlines. + // In array syntax, the array states are responsible for ignoring newlines. + r := lx.next() + switch { + case isWhitespace(r): + return lexSkip(lx, lexValue) + case isDigit(r): + lx.backup() // avoid an extra state and use the same as above + return lexNumberOrDateStart + } + switch r { + case arrayStart: + lx.ignore() + lx.emit(itemArray) + return lexArrayValue + case inlineTableStart: + lx.ignore() + lx.emit(itemInlineTableStart) + return lexInlineTableValue + case stringStart: + if lx.accept(stringStart) { + if lx.accept(stringStart) { + lx.ignore() // Ignore """ + return lexMultilineString + } + lx.backup() + } + lx.ignore() // ignore the '"' + return lexString + case rawStringStart: + if lx.accept(rawStringStart) { + if lx.accept(rawStringStart) { + lx.ignore() // Ignore """ + return lexMultilineRawString + } + lx.backup() + } + lx.ignore() // ignore the "'" + return lexRawString + case '+', '-': + return lexNumberStart + case '.': // special error case, be kind to users + return lx.errorf("floats must start with a digit, not '.'") + } + if unicode.IsLetter(r) { + // Be permissive here; lexBool will give a nice error if the + // user wrote something like + // x = foo + // (i.e. not 'true' or 'false' but is something else word-like.) + lx.backup() + return lexBool + } + return lx.errorf("expected value but found %q instead", r) +} + +// lexArrayValue consumes one value in an array. It assumes that '[' or ',' +// have already been consumed. All whitespace and newlines are ignored. +func lexArrayValue(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r) || isNL(r): + return lexSkip(lx, lexArrayValue) + case r == commentStart: + lx.push(lexArrayValue) + return lexCommentStart + case r == comma: + return lx.errorf("unexpected comma") + case r == arrayEnd: + // NOTE(caleb): The spec isn't clear about whether you can have + // a trailing comma or not, so we'll allow it. + return lexArrayEnd + } + + lx.backup() + lx.push(lexArrayValueEnd) + return lexValue +} + +// lexArrayValueEnd consumes everything between the end of an array value and +// the next value (or the end of the array): it ignores whitespace and newlines +// and expects either a ',' or a ']'. +func lexArrayValueEnd(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r) || isNL(r): + return lexSkip(lx, lexArrayValueEnd) + case r == commentStart: + lx.push(lexArrayValueEnd) + return lexCommentStart + case r == comma: + lx.ignore() + return lexArrayValue // move on to the next value + case r == arrayEnd: + return lexArrayEnd + } + return lx.errorf( + "expected a comma or array terminator %q, but got %q instead", + arrayEnd, r, + ) +} + +// lexArrayEnd finishes the lexing of an array. +// It assumes that a ']' has just been consumed. +func lexArrayEnd(lx *lexer) stateFn { + lx.ignore() + lx.emit(itemArrayEnd) + return lx.pop() +} + +// lexInlineTableValue consumes one key/value pair in an inline table. +// It assumes that '{' or ',' have already been consumed. Whitespace is ignored. +func lexInlineTableValue(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r): + return lexSkip(lx, lexInlineTableValue) + case isNL(r): + return lx.errorf("newlines not allowed within inline tables") + case r == commentStart: + lx.push(lexInlineTableValue) + return lexCommentStart + case r == comma: + return lx.errorf("unexpected comma") + case r == inlineTableEnd: + return lexInlineTableEnd + } + lx.backup() + lx.push(lexInlineTableValueEnd) + return lexKeyStart +} + +// lexInlineTableValueEnd consumes everything between the end of an inline table +// key/value pair and the next pair (or the end of the table): +// it ignores whitespace and expects either a ',' or a '}'. +func lexInlineTableValueEnd(lx *lexer) stateFn { + r := lx.next() + switch { + case isWhitespace(r): + return lexSkip(lx, lexInlineTableValueEnd) + case isNL(r): + return lx.errorf("newlines not allowed within inline tables") + case r == commentStart: + lx.push(lexInlineTableValueEnd) + return lexCommentStart + case r == comma: + lx.ignore() + return lexInlineTableValue + case r == inlineTableEnd: + return lexInlineTableEnd + } + return lx.errorf("expected a comma or an inline table terminator %q, "+ + "but got %q instead", inlineTableEnd, r) +} + +// lexInlineTableEnd finishes the lexing of an inline table. +// It assumes that a '}' has just been consumed. +func lexInlineTableEnd(lx *lexer) stateFn { + lx.ignore() + lx.emit(itemInlineTableEnd) + return lx.pop() +} + +// lexString consumes the inner contents of a string. It assumes that the +// beginning '"' has already been consumed and ignored. +func lexString(lx *lexer) stateFn { + r := lx.next() + switch { + case r == eof: + return lx.errorf("unexpected EOF") + case isNL(r): + return lx.errorf("strings cannot contain newlines") + case r == '\\': + lx.push(lexString) + return lexStringEscape + case r == stringEnd: + lx.backup() + lx.emit(itemString) + lx.next() + lx.ignore() + return lx.pop() + } + return lexString +} + +// lexMultilineString consumes the inner contents of a string. It assumes that +// the beginning '"""' has already been consumed and ignored. +func lexMultilineString(lx *lexer) stateFn { + switch lx.next() { + case eof: + return lx.errorf("unexpected EOF") + case '\\': + return lexMultilineStringEscape + case stringEnd: + if lx.accept(stringEnd) { + if lx.accept(stringEnd) { + lx.backup() + lx.backup() + lx.backup() + lx.emit(itemMultilineString) + lx.next() + lx.next() + lx.next() + lx.ignore() + return lx.pop() + } + lx.backup() + } + } + return lexMultilineString +} + +// lexRawString consumes a raw string. Nothing can be escaped in such a string. +// It assumes that the beginning "'" has already been consumed and ignored. +func lexRawString(lx *lexer) stateFn { + r := lx.next() + switch { + case r == eof: + return lx.errorf("unexpected EOF") + case isNL(r): + return lx.errorf("strings cannot contain newlines") + case r == rawStringEnd: + lx.backup() + lx.emit(itemRawString) + lx.next() + lx.ignore() + return lx.pop() + } + return lexRawString +} + +// lexMultilineRawString consumes a raw string. Nothing can be escaped in such +// a string. It assumes that the beginning "'''" has already been consumed and +// ignored. +func lexMultilineRawString(lx *lexer) stateFn { + switch lx.next() { + case eof: + return lx.errorf("unexpected EOF") + case rawStringEnd: + if lx.accept(rawStringEnd) { + if lx.accept(rawStringEnd) { + lx.backup() + lx.backup() + lx.backup() + lx.emit(itemRawMultilineString) + lx.next() + lx.next() + lx.next() + lx.ignore() + return lx.pop() + } + lx.backup() + } + } + return lexMultilineRawString +} + +// lexMultilineStringEscape consumes an escaped character. It assumes that the +// preceding '\\' has already been consumed. +func lexMultilineStringEscape(lx *lexer) stateFn { + // Handle the special case first: + if isNL(lx.next()) { + return lexMultilineString + } + lx.backup() + lx.push(lexMultilineString) + return lexStringEscape(lx) +} + +func lexStringEscape(lx *lexer) stateFn { + r := lx.next() + switch r { + case 'b': + fallthrough + case 't': + fallthrough + case 'n': + fallthrough + case 'f': + fallthrough + case 'r': + fallthrough + case '"': + fallthrough + case '\\': + return lx.pop() + case 'u': + return lexShortUnicodeEscape + case 'U': + return lexLongUnicodeEscape + } + return lx.errorf("invalid escape character %q; only the following "+ + "escape characters are allowed: "+ + `\b, \t, \n, \f, \r, \", \\, \uXXXX, and \UXXXXXXXX`, r) +} + +func lexShortUnicodeEscape(lx *lexer) stateFn { + var r rune + for i := 0; i < 4; i++ { + r = lx.next() + if !isHexadecimal(r) { + return lx.errorf(`expected four hexadecimal digits after '\u', `+ + "but got %q instead", lx.current()) + } + } + return lx.pop() +} + +func lexLongUnicodeEscape(lx *lexer) stateFn { + var r rune + for i := 0; i < 8; i++ { + r = lx.next() + if !isHexadecimal(r) { + return lx.errorf(`expected eight hexadecimal digits after '\U', `+ + "but got %q instead", lx.current()) + } + } + return lx.pop() +} + +// lexNumberOrDateStart consumes either an integer, a float, or datetime. +func lexNumberOrDateStart(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexNumberOrDate + } + switch r { + case '_': + return lexNumber + case 'e', 'E': + return lexFloat + case '.': + return lx.errorf("floats must start with a digit, not '.'") + } + return lx.errorf("expected a digit but got %q", r) +} + +// lexNumberOrDate consumes either an integer, float or datetime. +func lexNumberOrDate(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexNumberOrDate + } + switch r { + case '-': + return lexDatetime + case '_': + return lexNumber + case '.', 'e', 'E': + return lexFloat + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexDatetime consumes a Datetime, to a first approximation. +// The parser validates that it matches one of the accepted formats. +func lexDatetime(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexDatetime + } + switch r { + case '-', 'T', ':', '.', 'Z', '+': + return lexDatetime + } + + lx.backup() + lx.emit(itemDatetime) + return lx.pop() +} + +// lexNumberStart consumes either an integer or a float. It assumes that a sign +// has already been read, but that *no* digits have been consumed. +// lexNumberStart will move to the appropriate integer or float states. +func lexNumberStart(lx *lexer) stateFn { + // We MUST see a digit. Even floats have to start with a digit. + r := lx.next() + if !isDigit(r) { + if r == '.' { + return lx.errorf("floats must start with a digit, not '.'") + } + return lx.errorf("expected a digit but got %q", r) + } + return lexNumber +} + +// lexNumber consumes an integer or a float after seeing the first digit. +func lexNumber(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexNumber + } + switch r { + case '_': + return lexNumber + case '.', 'e', 'E': + return lexFloat + } + + lx.backup() + lx.emit(itemInteger) + return lx.pop() +} + +// lexFloat consumes the elements of a float. It allows any sequence of +// float-like characters, so floats emitted by the lexer are only a first +// approximation and must be validated by the parser. +func lexFloat(lx *lexer) stateFn { + r := lx.next() + if isDigit(r) { + return lexFloat + } + switch r { + case '_', '.', '-', '+', 'e', 'E': + return lexFloat + } + + lx.backup() + lx.emit(itemFloat) + return lx.pop() +} + +// lexBool consumes a bool string: 'true' or 'false. +func lexBool(lx *lexer) stateFn { + var rs []rune + for { + r := lx.next() + if !unicode.IsLetter(r) { + lx.backup() + break + } + rs = append(rs, r) + } + s := string(rs) + switch s { + case "true", "false": + lx.emit(itemBool) + return lx.pop() + } + return lx.errorf("expected value but found %q instead", s) +} + +// lexCommentStart begins the lexing of a comment. It will emit +// itemCommentStart and consume no characters, passing control to lexComment. +func lexCommentStart(lx *lexer) stateFn { + lx.ignore() + lx.emit(itemCommentStart) + return lexComment +} + +// lexComment lexes an entire comment. It assumes that '#' has been consumed. +// It will consume *up to* the first newline character, and pass control +// back to the last state on the stack. +func lexComment(lx *lexer) stateFn { + r := lx.peek() + if isNL(r) || r == eof { + lx.emit(itemText) + return lx.pop() + } + lx.next() + return lexComment +} + +// lexSkip ignores all slurped input and moves on to the next state. +func lexSkip(lx *lexer, nextState stateFn) stateFn { + return func(lx *lexer) stateFn { + lx.ignore() + return nextState + } +} + +// isWhitespace returns true if `r` is a whitespace character according +// to the spec. +func isWhitespace(r rune) bool { + return r == '\t' || r == ' ' +} + +func isNL(r rune) bool { + return r == '\n' || r == '\r' +} + +func isDigit(r rune) bool { + return r >= '0' && r <= '9' +} + +func isHexadecimal(r rune) bool { + return (r >= '0' && r <= '9') || + (r >= 'a' && r <= 'f') || + (r >= 'A' && r <= 'F') +} + +func isBareKeyChar(r rune) bool { + return (r >= 'A' && r <= 'Z') || + (r >= 'a' && r <= 'z') || + (r >= '0' && r <= '9') || + r == '_' || + r == '-' +} + +func (itype itemType) String() string { + switch itype { + case itemError: + return "Error" + case itemNIL: + return "NIL" + case itemEOF: + return "EOF" + case itemText: + return "Text" + case itemString, itemRawString, itemMultilineString, itemRawMultilineString: + return "String" + case itemBool: + return "Bool" + case itemInteger: + return "Integer" + case itemFloat: + return "Float" + case itemDatetime: + return "DateTime" + case itemTableStart: + return "TableStart" + case itemTableEnd: + return "TableEnd" + case itemKeyStart: + return "KeyStart" + case itemArray: + return "Array" + case itemArrayEnd: + return "ArrayEnd" + case itemCommentStart: + return "CommentStart" + } + panic(fmt.Sprintf("BUG: Unknown type '%d'.", int(itype))) +} + +func (item item) String() string { + return fmt.Sprintf("(%s, %s)", item.typ.String(), item.val) +} diff --git a/vendor/github.com/BurntSushi/toml/parse.go b/vendor/github.com/BurntSushi/toml/parse.go new file mode 100644 index 00000000000..50869ef9266 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/parse.go @@ -0,0 +1,592 @@ +package toml + +import ( + "fmt" + "strconv" + "strings" + "time" + "unicode" + "unicode/utf8" +) + +type parser struct { + mapping map[string]interface{} + types map[string]tomlType + lx *lexer + + // A list of keys in the order that they appear in the TOML data. + ordered []Key + + // the full key for the current hash in scope + context Key + + // the base key name for everything except hashes + currentKey string + + // rough approximation of line number + approxLine int + + // A map of 'key.group.names' to whether they were created implicitly. + implicits map[string]bool +} + +type parseError string + +func (pe parseError) Error() string { + return string(pe) +} + +func parse(data string) (p *parser, err error) { + defer func() { + if r := recover(); r != nil { + var ok bool + if err, ok = r.(parseError); ok { + return + } + panic(r) + } + }() + + p = &parser{ + mapping: make(map[string]interface{}), + types: make(map[string]tomlType), + lx: lex(data), + ordered: make([]Key, 0), + implicits: make(map[string]bool), + } + for { + item := p.next() + if item.typ == itemEOF { + break + } + p.topLevel(item) + } + + return p, nil +} + +func (p *parser) panicf(format string, v ...interface{}) { + msg := fmt.Sprintf("Near line %d (last key parsed '%s'): %s", + p.approxLine, p.current(), fmt.Sprintf(format, v...)) + panic(parseError(msg)) +} + +func (p *parser) next() item { + it := p.lx.nextItem() + if it.typ == itemError { + p.panicf("%s", it.val) + } + return it +} + +func (p *parser) bug(format string, v ...interface{}) { + panic(fmt.Sprintf("BUG: "+format+"\n\n", v...)) +} + +func (p *parser) expect(typ itemType) item { + it := p.next() + p.assertEqual(typ, it.typ) + return it +} + +func (p *parser) assertEqual(expected, got itemType) { + if expected != got { + p.bug("Expected '%s' but got '%s'.", expected, got) + } +} + +func (p *parser) topLevel(item item) { + switch item.typ { + case itemCommentStart: + p.approxLine = item.line + p.expect(itemText) + case itemTableStart: + kg := p.next() + p.approxLine = kg.line + + var key Key + for ; kg.typ != itemTableEnd && kg.typ != itemEOF; kg = p.next() { + key = append(key, p.keyString(kg)) + } + p.assertEqual(itemTableEnd, kg.typ) + + p.establishContext(key, false) + p.setType("", tomlHash) + p.ordered = append(p.ordered, key) + case itemArrayTableStart: + kg := p.next() + p.approxLine = kg.line + + var key Key + for ; kg.typ != itemArrayTableEnd && kg.typ != itemEOF; kg = p.next() { + key = append(key, p.keyString(kg)) + } + p.assertEqual(itemArrayTableEnd, kg.typ) + + p.establishContext(key, true) + p.setType("", tomlArrayHash) + p.ordered = append(p.ordered, key) + case itemKeyStart: + kname := p.next() + p.approxLine = kname.line + p.currentKey = p.keyString(kname) + + val, typ := p.value(p.next()) + p.setValue(p.currentKey, val) + p.setType(p.currentKey, typ) + p.ordered = append(p.ordered, p.context.add(p.currentKey)) + p.currentKey = "" + default: + p.bug("Unexpected type at top level: %s", item.typ) + } +} + +// Gets a string for a key (or part of a key in a table name). +func (p *parser) keyString(it item) string { + switch it.typ { + case itemText: + return it.val + case itemString, itemMultilineString, + itemRawString, itemRawMultilineString: + s, _ := p.value(it) + return s.(string) + default: + p.bug("Unexpected key type: %s", it.typ) + panic("unreachable") + } +} + +// value translates an expected value from the lexer into a Go value wrapped +// as an empty interface. +func (p *parser) value(it item) (interface{}, tomlType) { + switch it.typ { + case itemString: + return p.replaceEscapes(it.val), p.typeOfPrimitive(it) + case itemMultilineString: + trimmed := stripFirstNewline(stripEscapedWhitespace(it.val)) + return p.replaceEscapes(trimmed), p.typeOfPrimitive(it) + case itemRawString: + return it.val, p.typeOfPrimitive(it) + case itemRawMultilineString: + return stripFirstNewline(it.val), p.typeOfPrimitive(it) + case itemBool: + switch it.val { + case "true": + return true, p.typeOfPrimitive(it) + case "false": + return false, p.typeOfPrimitive(it) + } + p.bug("Expected boolean value, but got '%s'.", it.val) + case itemInteger: + if !numUnderscoresOK(it.val) { + p.panicf("Invalid integer %q: underscores must be surrounded by digits", + it.val) + } + val := strings.Replace(it.val, "_", "", -1) + num, err := strconv.ParseInt(val, 10, 64) + if err != nil { + // Distinguish integer values. Normally, it'd be a bug if the lexer + // provides an invalid integer, but it's possible that the number is + // out of range of valid values (which the lexer cannot determine). + // So mark the former as a bug but the latter as a legitimate user + // error. + if e, ok := err.(*strconv.NumError); ok && + e.Err == strconv.ErrRange { + + p.panicf("Integer '%s' is out of the range of 64-bit "+ + "signed integers.", it.val) + } else { + p.bug("Expected integer value, but got '%s'.", it.val) + } + } + return num, p.typeOfPrimitive(it) + case itemFloat: + parts := strings.FieldsFunc(it.val, func(r rune) bool { + switch r { + case '.', 'e', 'E': + return true + } + return false + }) + for _, part := range parts { + if !numUnderscoresOK(part) { + p.panicf("Invalid float %q: underscores must be "+ + "surrounded by digits", it.val) + } + } + if !numPeriodsOK(it.val) { + // As a special case, numbers like '123.' or '1.e2', + // which are valid as far as Go/strconv are concerned, + // must be rejected because TOML says that a fractional + // part consists of '.' followed by 1+ digits. + p.panicf("Invalid float %q: '.' must be followed "+ + "by one or more digits", it.val) + } + val := strings.Replace(it.val, "_", "", -1) + num, err := strconv.ParseFloat(val, 64) + if err != nil { + if e, ok := err.(*strconv.NumError); ok && + e.Err == strconv.ErrRange { + + p.panicf("Float '%s' is out of the range of 64-bit "+ + "IEEE-754 floating-point numbers.", it.val) + } else { + p.panicf("Invalid float value: %q", it.val) + } + } + return num, p.typeOfPrimitive(it) + case itemDatetime: + var t time.Time + var ok bool + var err error + for _, format := range []string{ + "2006-01-02T15:04:05Z07:00", + "2006-01-02T15:04:05", + "2006-01-02", + } { + t, err = time.ParseInLocation(format, it.val, time.Local) + if err == nil { + ok = true + break + } + } + if !ok { + p.panicf("Invalid TOML Datetime: %q.", it.val) + } + return t, p.typeOfPrimitive(it) + case itemArray: + array := make([]interface{}, 0) + types := make([]tomlType, 0) + + for it = p.next(); it.typ != itemArrayEnd; it = p.next() { + if it.typ == itemCommentStart { + p.expect(itemText) + continue + } + + val, typ := p.value(it) + array = append(array, val) + types = append(types, typ) + } + return array, p.typeOfArray(types) + case itemInlineTableStart: + var ( + hash = make(map[string]interface{}) + outerContext = p.context + outerKey = p.currentKey + ) + + p.context = append(p.context, p.currentKey) + p.currentKey = "" + for it := p.next(); it.typ != itemInlineTableEnd; it = p.next() { + if it.typ != itemKeyStart { + p.bug("Expected key start but instead found %q, around line %d", + it.val, p.approxLine) + } + if it.typ == itemCommentStart { + p.expect(itemText) + continue + } + + // retrieve key + k := p.next() + p.approxLine = k.line + kname := p.keyString(k) + + // retrieve value + p.currentKey = kname + val, typ := p.value(p.next()) + // make sure we keep metadata up to date + p.setType(kname, typ) + p.ordered = append(p.ordered, p.context.add(p.currentKey)) + hash[kname] = val + } + p.context = outerContext + p.currentKey = outerKey + return hash, tomlHash + } + p.bug("Unexpected value type: %s", it.typ) + panic("unreachable") +} + +// numUnderscoresOK checks whether each underscore in s is surrounded by +// characters that are not underscores. +func numUnderscoresOK(s string) bool { + accept := false + for _, r := range s { + if r == '_' { + if !accept { + return false + } + accept = false + continue + } + accept = true + } + return accept +} + +// numPeriodsOK checks whether every period in s is followed by a digit. +func numPeriodsOK(s string) bool { + period := false + for _, r := range s { + if period && !isDigit(r) { + return false + } + period = r == '.' + } + return !period +} + +// establishContext sets the current context of the parser, +// where the context is either a hash or an array of hashes. Which one is +// set depends on the value of the `array` parameter. +// +// Establishing the context also makes sure that the key isn't a duplicate, and +// will create implicit hashes automatically. +func (p *parser) establishContext(key Key, array bool) { + var ok bool + + // Always start at the top level and drill down for our context. + hashContext := p.mapping + keyContext := make(Key, 0) + + // We only need implicit hashes for key[0:-1] + for _, k := range key[0 : len(key)-1] { + _, ok = hashContext[k] + keyContext = append(keyContext, k) + + // No key? Make an implicit hash and move on. + if !ok { + p.addImplicit(keyContext) + hashContext[k] = make(map[string]interface{}) + } + + // If the hash context is actually an array of tables, then set + // the hash context to the last element in that array. + // + // Otherwise, it better be a table, since this MUST be a key group (by + // virtue of it not being the last element in a key). + switch t := hashContext[k].(type) { + case []map[string]interface{}: + hashContext = t[len(t)-1] + case map[string]interface{}: + hashContext = t + default: + p.panicf("Key '%s' was already created as a hash.", keyContext) + } + } + + p.context = keyContext + if array { + // If this is the first element for this array, then allocate a new + // list of tables for it. + k := key[len(key)-1] + if _, ok := hashContext[k]; !ok { + hashContext[k] = make([]map[string]interface{}, 0, 5) + } + + // Add a new table. But make sure the key hasn't already been used + // for something else. + if hash, ok := hashContext[k].([]map[string]interface{}); ok { + hashContext[k] = append(hash, make(map[string]interface{})) + } else { + p.panicf("Key '%s' was already created and cannot be used as "+ + "an array.", keyContext) + } + } else { + p.setValue(key[len(key)-1], make(map[string]interface{})) + } + p.context = append(p.context, key[len(key)-1]) +} + +// setValue sets the given key to the given value in the current context. +// It will make sure that the key hasn't already been defined, account for +// implicit key groups. +func (p *parser) setValue(key string, value interface{}) { + var tmpHash interface{} + var ok bool + + hash := p.mapping + keyContext := make(Key, 0) + for _, k := range p.context { + keyContext = append(keyContext, k) + if tmpHash, ok = hash[k]; !ok { + p.bug("Context for key '%s' has not been established.", keyContext) + } + switch t := tmpHash.(type) { + case []map[string]interface{}: + // The context is a table of hashes. Pick the most recent table + // defined as the current hash. + hash = t[len(t)-1] + case map[string]interface{}: + hash = t + default: + p.bug("Expected hash to have type 'map[string]interface{}', but "+ + "it has '%T' instead.", tmpHash) + } + } + keyContext = append(keyContext, key) + + if _, ok := hash[key]; ok { + // Typically, if the given key has already been set, then we have + // to raise an error since duplicate keys are disallowed. However, + // it's possible that a key was previously defined implicitly. In this + // case, it is allowed to be redefined concretely. (See the + // `tests/valid/implicit-and-explicit-after.toml` test in `toml-test`.) + // + // But we have to make sure to stop marking it as an implicit. (So that + // another redefinition provokes an error.) + // + // Note that since it has already been defined (as a hash), we don't + // want to overwrite it. So our business is done. + if p.isImplicit(keyContext) { + p.removeImplicit(keyContext) + return + } + + // Otherwise, we have a concrete key trying to override a previous + // key, which is *always* wrong. + p.panicf("Key '%s' has already been defined.", keyContext) + } + hash[key] = value +} + +// setType sets the type of a particular value at a given key. +// It should be called immediately AFTER setValue. +// +// Note that if `key` is empty, then the type given will be applied to the +// current context (which is either a table or an array of tables). +func (p *parser) setType(key string, typ tomlType) { + keyContext := make(Key, 0, len(p.context)+1) + for _, k := range p.context { + keyContext = append(keyContext, k) + } + if len(key) > 0 { // allow type setting for hashes + keyContext = append(keyContext, key) + } + p.types[keyContext.String()] = typ +} + +// addImplicit sets the given Key as having been created implicitly. +func (p *parser) addImplicit(key Key) { + p.implicits[key.String()] = true +} + +// removeImplicit stops tagging the given key as having been implicitly +// created. +func (p *parser) removeImplicit(key Key) { + p.implicits[key.String()] = false +} + +// isImplicit returns true if the key group pointed to by the key was created +// implicitly. +func (p *parser) isImplicit(key Key) bool { + return p.implicits[key.String()] +} + +// current returns the full key name of the current context. +func (p *parser) current() string { + if len(p.currentKey) == 0 { + return p.context.String() + } + if len(p.context) == 0 { + return p.currentKey + } + return fmt.Sprintf("%s.%s", p.context, p.currentKey) +} + +func stripFirstNewline(s string) string { + if len(s) == 0 || s[0] != '\n' { + return s + } + return s[1:] +} + +func stripEscapedWhitespace(s string) string { + esc := strings.Split(s, "\\\n") + if len(esc) > 1 { + for i := 1; i < len(esc); i++ { + esc[i] = strings.TrimLeftFunc(esc[i], unicode.IsSpace) + } + } + return strings.Join(esc, "") +} + +func (p *parser) replaceEscapes(str string) string { + var replaced []rune + s := []byte(str) + r := 0 + for r < len(s) { + if s[r] != '\\' { + c, size := utf8.DecodeRune(s[r:]) + r += size + replaced = append(replaced, c) + continue + } + r += 1 + if r >= len(s) { + p.bug("Escape sequence at end of string.") + return "" + } + switch s[r] { + default: + p.bug("Expected valid escape code after \\, but got %q.", s[r]) + return "" + case 'b': + replaced = append(replaced, rune(0x0008)) + r += 1 + case 't': + replaced = append(replaced, rune(0x0009)) + r += 1 + case 'n': + replaced = append(replaced, rune(0x000A)) + r += 1 + case 'f': + replaced = append(replaced, rune(0x000C)) + r += 1 + case 'r': + replaced = append(replaced, rune(0x000D)) + r += 1 + case '"': + replaced = append(replaced, rune(0x0022)) + r += 1 + case '\\': + replaced = append(replaced, rune(0x005C)) + r += 1 + case 'u': + // At this point, we know we have a Unicode escape of the form + // `uXXXX` at [r, r+5). (Because the lexer guarantees this + // for us.) + escaped := p.asciiEscapeToUnicode(s[r+1 : r+5]) + replaced = append(replaced, escaped) + r += 5 + case 'U': + // At this point, we know we have a Unicode escape of the form + // `uXXXX` at [r, r+9). (Because the lexer guarantees this + // for us.) + escaped := p.asciiEscapeToUnicode(s[r+1 : r+9]) + replaced = append(replaced, escaped) + r += 9 + } + } + return string(replaced) +} + +func (p *parser) asciiEscapeToUnicode(bs []byte) rune { + s := string(bs) + hex, err := strconv.ParseUint(strings.ToLower(s), 16, 32) + if err != nil { + p.bug("Could not parse '%s' as a hexadecimal number, but the "+ + "lexer claims it's OK: %s", s, err) + } + if !utf8.ValidRune(rune(hex)) { + p.panicf("Escaped character '\\u%s' is not valid UTF-8.", s) + } + return rune(hex) +} + +func isStringType(ty itemType) bool { + return ty == itemString || ty == itemMultilineString || + ty == itemRawString || ty == itemRawMultilineString +} diff --git a/vendor/github.com/BurntSushi/toml/session.vim b/vendor/github.com/BurntSushi/toml/session.vim new file mode 100644 index 00000000000..562164be060 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/session.vim @@ -0,0 +1 @@ +au BufWritePost *.go silent!make tags > /dev/null 2>&1 diff --git a/vendor/github.com/BurntSushi/toml/type_check.go b/vendor/github.com/BurntSushi/toml/type_check.go new file mode 100644 index 00000000000..c73f8afc1a6 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/type_check.go @@ -0,0 +1,91 @@ +package toml + +// tomlType represents any Go type that corresponds to a TOML type. +// While the first draft of the TOML spec has a simplistic type system that +// probably doesn't need this level of sophistication, we seem to be militating +// toward adding real composite types. +type tomlType interface { + typeString() string +} + +// typeEqual accepts any two types and returns true if they are equal. +func typeEqual(t1, t2 tomlType) bool { + if t1 == nil || t2 == nil { + return false + } + return t1.typeString() == t2.typeString() +} + +func typeIsHash(t tomlType) bool { + return typeEqual(t, tomlHash) || typeEqual(t, tomlArrayHash) +} + +type tomlBaseType string + +func (btype tomlBaseType) typeString() string { + return string(btype) +} + +func (btype tomlBaseType) String() string { + return btype.typeString() +} + +var ( + tomlInteger tomlBaseType = "Integer" + tomlFloat tomlBaseType = "Float" + tomlDatetime tomlBaseType = "Datetime" + tomlString tomlBaseType = "String" + tomlBool tomlBaseType = "Bool" + tomlArray tomlBaseType = "Array" + tomlHash tomlBaseType = "Hash" + tomlArrayHash tomlBaseType = "ArrayHash" +) + +// typeOfPrimitive returns a tomlType of any primitive value in TOML. +// Primitive values are: Integer, Float, Datetime, String and Bool. +// +// Passing a lexer item other than the following will cause a BUG message +// to occur: itemString, itemBool, itemInteger, itemFloat, itemDatetime. +func (p *parser) typeOfPrimitive(lexItem item) tomlType { + switch lexItem.typ { + case itemInteger: + return tomlInteger + case itemFloat: + return tomlFloat + case itemDatetime: + return tomlDatetime + case itemString: + return tomlString + case itemMultilineString: + return tomlString + case itemRawString: + return tomlString + case itemRawMultilineString: + return tomlString + case itemBool: + return tomlBool + } + p.bug("Cannot infer primitive type of lex item '%s'.", lexItem) + panic("unreachable") +} + +// typeOfArray returns a tomlType for an array given a list of types of its +// values. +// +// In the current spec, if an array is homogeneous, then its type is always +// "Array". If the array is not homogeneous, an error is generated. +func (p *parser) typeOfArray(types []tomlType) tomlType { + // Empty arrays are cool. + if len(types) == 0 { + return tomlArray + } + + theType := types[0] + for _, t := range types[1:] { + if !typeEqual(theType, t) { + p.panicf("Array contains values of type '%s' and '%s', but "+ + "arrays must be homogeneous.", theType, t) + } + } + return tomlArray +} diff --git a/vendor/github.com/BurntSushi/toml/type_fields.go b/vendor/github.com/BurntSushi/toml/type_fields.go new file mode 100644 index 00000000000..608997c22f6 --- /dev/null +++ b/vendor/github.com/BurntSushi/toml/type_fields.go @@ -0,0 +1,242 @@ +package toml + +// Struct field handling is adapted from code in encoding/json: +// +// 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 Go distribution. + +import ( + "reflect" + "sort" + "sync" +) + +// A field represents a single field found in a struct. +type field struct { + name string // the name of the field (`toml` tag included) + tag bool // whether field has a `toml` tag + index []int // represents the depth of an anonymous field + typ reflect.Type // the type of the field +} + +// byName sorts field by name, breaking ties with depth, +// then breaking ties with "name came from toml tag", then +// breaking ties with index sequence. +type byName []field + +func (x byName) Len() int { return len(x) } + +func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byName) Less(i, j int) bool { + if x[i].name != x[j].name { + return x[i].name < x[j].name + } + if len(x[i].index) != len(x[j].index) { + return len(x[i].index) < len(x[j].index) + } + if x[i].tag != x[j].tag { + return x[i].tag + } + return byIndex(x).Less(i, j) +} + +// byIndex sorts field by index sequence. +type byIndex []field + +func (x byIndex) Len() int { return len(x) } + +func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } + +func (x byIndex) Less(i, j int) bool { + for k, xik := range x[i].index { + if k >= len(x[j].index) { + return false + } + if xik != x[j].index[k] { + return xik < x[j].index[k] + } + } + return len(x[i].index) < len(x[j].index) +} + +// typeFields returns a list of fields that TOML should recognize for the given +// type. The algorithm is breadth-first search over the set of structs to +// include - the top struct and then any reachable anonymous structs. +func typeFields(t reflect.Type) []field { + // Anonymous fields to explore at the current level and the next. + current := []field{} + next := []field{{typ: t}} + + // Count of queued names for current level and the next. + count := map[reflect.Type]int{} + nextCount := map[reflect.Type]int{} + + // Types already visited at an earlier level. + visited := map[reflect.Type]bool{} + + // Fields found. + var fields []field + + for len(next) > 0 { + current, next = next, current[:0] + count, nextCount = nextCount, map[reflect.Type]int{} + + for _, f := range current { + if visited[f.typ] { + continue + } + visited[f.typ] = true + + // Scan f.typ for fields to include. + for i := 0; i < f.typ.NumField(); i++ { + sf := f.typ.Field(i) + if sf.PkgPath != "" && !sf.Anonymous { // unexported + continue + } + opts := getOptions(sf.Tag) + if opts.skip { + continue + } + index := make([]int, len(f.index)+1) + copy(index, f.index) + index[len(f.index)] = i + + ft := sf.Type + if ft.Name() == "" && ft.Kind() == reflect.Ptr { + // Follow pointer. + ft = ft.Elem() + } + + // Record found field and index sequence. + if opts.name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { + tagged := opts.name != "" + name := opts.name + if name == "" { + name = sf.Name + } + fields = append(fields, field{name, tagged, index, ft}) + if count[f.typ] > 1 { + // If there were multiple instances, add a second, + // so that the annihilation code will see a duplicate. + // It only cares about the distinction between 1 or 2, + // so don't bother generating any more copies. + fields = append(fields, fields[len(fields)-1]) + } + continue + } + + // Record new anonymous struct to explore in next round. + nextCount[ft]++ + if nextCount[ft] == 1 { + f := field{name: ft.Name(), index: index, typ: ft} + next = append(next, f) + } + } + } + } + + sort.Sort(byName(fields)) + + // Delete all fields that are hidden by the Go rules for embedded fields, + // except that fields with TOML tags are promoted. + + // The fields are sorted in primary order of name, secondary order + // of field index length. Loop over names; for each name, delete + // hidden fields by choosing the one dominant field that survives. + out := fields[:0] + for advance, i := 0, 0; i < len(fields); i += advance { + // One iteration per name. + // Find the sequence of fields with the name of this first field. + fi := fields[i] + name := fi.name + for advance = 1; i+advance < len(fields); advance++ { + fj := fields[i+advance] + if fj.name != name { + break + } + } + if advance == 1 { // Only one field with this name + out = append(out, fi) + continue + } + dominant, ok := dominantField(fields[i : i+advance]) + if ok { + out = append(out, dominant) + } + } + + fields = out + sort.Sort(byIndex(fields)) + + return fields +} + +// dominantField looks through the fields, all of which are known to +// have the same name, to find the single field that dominates the +// others using Go's embedding rules, modified by the presence of +// TOML tags. If there are multiple top-level fields, the boolean +// will be false: This condition is an error in Go and we skip all +// the fields. +func dominantField(fields []field) (field, bool) { + // The fields are sorted in increasing index-length order. The winner + // must therefore be one with the shortest index length. Drop all + // longer entries, which is easy: just truncate the slice. + length := len(fields[0].index) + tagged := -1 // Index of first tagged field. + for i, f := range fields { + if len(f.index) > length { + fields = fields[:i] + break + } + if f.tag { + if tagged >= 0 { + // Multiple tagged fields at the same level: conflict. + // Return no field. + return field{}, false + } + tagged = i + } + } + if tagged >= 0 { + return fields[tagged], true + } + // All remaining fields have the same length. If there's more than one, + // we have a conflict (two fields named "X" at the same level) and we + // return no field. + if len(fields) > 1 { + return field{}, false + } + return fields[0], true +} + +var fieldCache struct { + sync.RWMutex + m map[reflect.Type][]field +} + +// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. +func cachedTypeFields(t reflect.Type) []field { + fieldCache.RLock() + f := fieldCache.m[t] + fieldCache.RUnlock() + if f != nil { + return f + } + + // Compute fields without lock. + // Might duplicate effort but won't hold other computations back. + f = typeFields(t) + if f == nil { + f = []field{} + } + + fieldCache.Lock() + if fieldCache.m == nil { + fieldCache.m = map[reflect.Type][]field{} + } + fieldCache.m[t] = f + fieldCache.Unlock() + return f +} diff --git a/vendor/github.com/Nvveen/Gotty/LICENSE b/vendor/github.com/Nvveen/Gotty/LICENSE deleted file mode 100644 index 0b71c97360e..00000000000 --- a/vendor/github.com/Nvveen/Gotty/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2012, Neal van Veen (nealvanveen@gmail.com) -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. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of the FreeBSD Project. diff --git a/vendor/github.com/Nvveen/Gotty/README b/vendor/github.com/Nvveen/Gotty/README deleted file mode 100644 index a6b0d9a8fe2..00000000000 --- a/vendor/github.com/Nvveen/Gotty/README +++ /dev/null @@ -1,5 +0,0 @@ -Gotty is a library written in Go that determines and reads termcap database -files to produce an interface for interacting with the capabilities of a -terminal. -See the godoc documentation or the source code for more information about -function usage. diff --git a/vendor/github.com/Nvveen/Gotty/TODO b/vendor/github.com/Nvveen/Gotty/TODO deleted file mode 100644 index 470460531ca..00000000000 --- a/vendor/github.com/Nvveen/Gotty/TODO +++ /dev/null @@ -1,3 +0,0 @@ -gotty.go:// TODO add more concurrency to name lookup, look for more opportunities. -all:// TODO add more documentation, with function usage in a doc.go file. -all:// TODO add more testing/benchmarking with go test. diff --git a/vendor/github.com/Nvveen/Gotty/attributes.go b/vendor/github.com/Nvveen/Gotty/attributes.go deleted file mode 100644 index a4c005fae58..00000000000 --- a/vendor/github.com/Nvveen/Gotty/attributes.go +++ /dev/null @@ -1,514 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package gotty - -// Boolean capabilities -var BoolAttr = [...]string{ - "auto_left_margin", "bw", - "auto_right_margin", "am", - "no_esc_ctlc", "xsb", - "ceol_standout_glitch", "xhp", - "eat_newline_glitch", "xenl", - "erase_overstrike", "eo", - "generic_type", "gn", - "hard_copy", "hc", - "has_meta_key", "km", - "has_status_line", "hs", - "insert_null_glitch", "in", - "memory_above", "da", - "memory_below", "db", - "move_insert_mode", "mir", - "move_standout_mode", "msgr", - "over_strike", "os", - "status_line_esc_ok", "eslok", - "dest_tabs_magic_smso", "xt", - "tilde_glitch", "hz", - "transparent_underline", "ul", - "xon_xoff", "nxon", - "needs_xon_xoff", "nxon", - "prtr_silent", "mc5i", - "hard_cursor", "chts", - "non_rev_rmcup", "nrrmc", - "no_pad_char", "npc", - "non_dest_scroll_region", "ndscr", - "can_change", "ccc", - "back_color_erase", "bce", - "hue_lightness_saturation", "hls", - "col_addr_glitch", "xhpa", - "cr_cancels_micro_mode", "crxm", - "has_print_wheel", "daisy", - "row_addr_glitch", "xvpa", - "semi_auto_right_margin", "sam", - "cpi_changes_res", "cpix", - "lpi_changes_res", "lpix", - "backspaces_with_bs", "", - "crt_no_scrolling", "", - "no_correctly_working_cr", "", - "gnu_has_meta_key", "", - "linefeed_is_newline", "", - "has_hardware_tabs", "", - "return_does_clr_eol", "", -} - -// Numerical capabilities -var NumAttr = [...]string{ - "columns", "cols", - "init_tabs", "it", - "lines", "lines", - "lines_of_memory", "lm", - "magic_cookie_glitch", "xmc", - "padding_baud_rate", "pb", - "virtual_terminal", "vt", - "width_status_line", "wsl", - "num_labels", "nlab", - "label_height", "lh", - "label_width", "lw", - "max_attributes", "ma", - "maximum_windows", "wnum", - "max_colors", "colors", - "max_pairs", "pairs", - "no_color_video", "ncv", - "buffer_capacity", "bufsz", - "dot_vert_spacing", "spinv", - "dot_horz_spacing", "spinh", - "max_micro_address", "maddr", - "max_micro_jump", "mjump", - "micro_col_size", "mcs", - "micro_line_size", "mls", - "number_of_pins", "npins", - "output_res_char", "orc", - "output_res_line", "orl", - "output_res_horz_inch", "orhi", - "output_res_vert_inch", "orvi", - "print_rate", "cps", - "wide_char_size", "widcs", - "buttons", "btns", - "bit_image_entwining", "bitwin", - "bit_image_type", "bitype", - "magic_cookie_glitch_ul", "", - "carriage_return_delay", "", - "new_line_delay", "", - "backspace_delay", "", - "horizontal_tab_delay", "", - "number_of_function_keys", "", -} - -// String capabilities -var StrAttr = [...]string{ - "back_tab", "cbt", - "bell", "bel", - "carriage_return", "cr", - "change_scroll_region", "csr", - "clear_all_tabs", "tbc", - "clear_screen", "clear", - "clr_eol", "el", - "clr_eos", "ed", - "column_address", "hpa", - "command_character", "cmdch", - "cursor_address", "cup", - "cursor_down", "cud1", - "cursor_home", "home", - "cursor_invisible", "civis", - "cursor_left", "cub1", - "cursor_mem_address", "mrcup", - "cursor_normal", "cnorm", - "cursor_right", "cuf1", - "cursor_to_ll", "ll", - "cursor_up", "cuu1", - "cursor_visible", "cvvis", - "delete_character", "dch1", - "delete_line", "dl1", - "dis_status_line", "dsl", - "down_half_line", "hd", - "enter_alt_charset_mode", "smacs", - "enter_blink_mode", "blink", - "enter_bold_mode", "bold", - "enter_ca_mode", "smcup", - "enter_delete_mode", "smdc", - "enter_dim_mode", "dim", - "enter_insert_mode", "smir", - "enter_secure_mode", "invis", - "enter_protected_mode", "prot", - "enter_reverse_mode", "rev", - "enter_standout_mode", "smso", - "enter_underline_mode", "smul", - "erase_chars", "ech", - "exit_alt_charset_mode", "rmacs", - "exit_attribute_mode", "sgr0", - "exit_ca_mode", "rmcup", - "exit_delete_mode", "rmdc", - "exit_insert_mode", "rmir", - "exit_standout_mode", "rmso", - "exit_underline_mode", "rmul", - "flash_screen", "flash", - "form_feed", "ff", - "from_status_line", "fsl", - "init_1string", "is1", - "init_2string", "is2", - "init_3string", "is3", - "init_file", "if", - "insert_character", "ich1", - "insert_line", "il1", - "insert_padding", "ip", - "key_backspace", "kbs", - "key_catab", "ktbc", - "key_clear", "kclr", - "key_ctab", "kctab", - "key_dc", "kdch1", - "key_dl", "kdl1", - "key_down", "kcud1", - "key_eic", "krmir", - "key_eol", "kel", - "key_eos", "ked", - "key_f0", "kf0", - "key_f1", "kf1", - "key_f10", "kf10", - "key_f2", "kf2", - "key_f3", "kf3", - "key_f4", "kf4", - "key_f5", "kf5", - "key_f6", "kf6", - "key_f7", "kf7", - "key_f8", "kf8", - "key_f9", "kf9", - "key_home", "khome", - "key_ic", "kich1", - "key_il", "kil1", - "key_left", "kcub1", - "key_ll", "kll", - "key_npage", "knp", - "key_ppage", "kpp", - "key_right", "kcuf1", - "key_sf", "kind", - "key_sr", "kri", - "key_stab", "khts", - "key_up", "kcuu1", - "keypad_local", "rmkx", - "keypad_xmit", "smkx", - "lab_f0", "lf0", - "lab_f1", "lf1", - "lab_f10", "lf10", - "lab_f2", "lf2", - "lab_f3", "lf3", - "lab_f4", "lf4", - "lab_f5", "lf5", - "lab_f6", "lf6", - "lab_f7", "lf7", - "lab_f8", "lf8", - "lab_f9", "lf9", - "meta_off", "rmm", - "meta_on", "smm", - "newline", "_glitch", - "pad_char", "npc", - "parm_dch", "dch", - "parm_delete_line", "dl", - "parm_down_cursor", "cud", - "parm_ich", "ich", - "parm_index", "indn", - "parm_insert_line", "il", - "parm_left_cursor", "cub", - "parm_right_cursor", "cuf", - "parm_rindex", "rin", - "parm_up_cursor", "cuu", - "pkey_key", "pfkey", - "pkey_local", "pfloc", - "pkey_xmit", "pfx", - "print_screen", "mc0", - "prtr_off", "mc4", - "prtr_on", "mc5", - "repeat_char", "rep", - "reset_1string", "rs1", - "reset_2string", "rs2", - "reset_3string", "rs3", - "reset_file", "rf", - "restore_cursor", "rc", - "row_address", "mvpa", - "save_cursor", "row_address", - "scroll_forward", "ind", - "scroll_reverse", "ri", - "set_attributes", "sgr", - "set_tab", "hts", - "set_window", "wind", - "tab", "s_magic_smso", - "to_status_line", "tsl", - "underline_char", "uc", - "up_half_line", "hu", - "init_prog", "iprog", - "key_a1", "ka1", - "key_a3", "ka3", - "key_b2", "kb2", - "key_c1", "kc1", - "key_c3", "kc3", - "prtr_non", "mc5p", - "char_padding", "rmp", - "acs_chars", "acsc", - "plab_norm", "pln", - "key_btab", "kcbt", - "enter_xon_mode", "smxon", - "exit_xon_mode", "rmxon", - "enter_am_mode", "smam", - "exit_am_mode", "rmam", - "xon_character", "xonc", - "xoff_character", "xoffc", - "ena_acs", "enacs", - "label_on", "smln", - "label_off", "rmln", - "key_beg", "kbeg", - "key_cancel", "kcan", - "key_close", "kclo", - "key_command", "kcmd", - "key_copy", "kcpy", - "key_create", "kcrt", - "key_end", "kend", - "key_enter", "kent", - "key_exit", "kext", - "key_find", "kfnd", - "key_help", "khlp", - "key_mark", "kmrk", - "key_message", "kmsg", - "key_move", "kmov", - "key_next", "knxt", - "key_open", "kopn", - "key_options", "kopt", - "key_previous", "kprv", - "key_print", "kprt", - "key_redo", "krdo", - "key_reference", "kref", - "key_refresh", "krfr", - "key_replace", "krpl", - "key_restart", "krst", - "key_resume", "kres", - "key_save", "ksav", - "key_suspend", "kspd", - "key_undo", "kund", - "key_sbeg", "kBEG", - "key_scancel", "kCAN", - "key_scommand", "kCMD", - "key_scopy", "kCPY", - "key_screate", "kCRT", - "key_sdc", "kDC", - "key_sdl", "kDL", - "key_select", "kslt", - "key_send", "kEND", - "key_seol", "kEOL", - "key_sexit", "kEXT", - "key_sfind", "kFND", - "key_shelp", "kHLP", - "key_shome", "kHOM", - "key_sic", "kIC", - "key_sleft", "kLFT", - "key_smessage", "kMSG", - "key_smove", "kMOV", - "key_snext", "kNXT", - "key_soptions", "kOPT", - "key_sprevious", "kPRV", - "key_sprint", "kPRT", - "key_sredo", "kRDO", - "key_sreplace", "kRPL", - "key_sright", "kRIT", - "key_srsume", "kRES", - "key_ssave", "kSAV", - "key_ssuspend", "kSPD", - "key_sundo", "kUND", - "req_for_input", "rfi", - "key_f11", "kf11", - "key_f12", "kf12", - "key_f13", "kf13", - "key_f14", "kf14", - "key_f15", "kf15", - "key_f16", "kf16", - "key_f17", "kf17", - "key_f18", "kf18", - "key_f19", "kf19", - "key_f20", "kf20", - "key_f21", "kf21", - "key_f22", "kf22", - "key_f23", "kf23", - "key_f24", "kf24", - "key_f25", "kf25", - "key_f26", "kf26", - "key_f27", "kf27", - "key_f28", "kf28", - "key_f29", "kf29", - "key_f30", "kf30", - "key_f31", "kf31", - "key_f32", "kf32", - "key_f33", "kf33", - "key_f34", "kf34", - "key_f35", "kf35", - "key_f36", "kf36", - "key_f37", "kf37", - "key_f38", "kf38", - "key_f39", "kf39", - "key_f40", "kf40", - "key_f41", "kf41", - "key_f42", "kf42", - "key_f43", "kf43", - "key_f44", "kf44", - "key_f45", "kf45", - "key_f46", "kf46", - "key_f47", "kf47", - "key_f48", "kf48", - "key_f49", "kf49", - "key_f50", "kf50", - "key_f51", "kf51", - "key_f52", "kf52", - "key_f53", "kf53", - "key_f54", "kf54", - "key_f55", "kf55", - "key_f56", "kf56", - "key_f57", "kf57", - "key_f58", "kf58", - "key_f59", "kf59", - "key_f60", "kf60", - "key_f61", "kf61", - "key_f62", "kf62", - "key_f63", "kf63", - "clr_bol", "el1", - "clear_margins", "mgc", - "set_left_margin", "smgl", - "set_right_margin", "smgr", - "label_format", "fln", - "set_clock", "sclk", - "display_clock", "dclk", - "remove_clock", "rmclk", - "create_window", "cwin", - "goto_window", "wingo", - "hangup", "hup", - "dial_phone", "dial", - "quick_dial", "qdial", - "tone", "tone", - "pulse", "pulse", - "flash_hook", "hook", - "fixed_pause", "pause", - "wait_tone", "wait", - "user0", "u0", - "user1", "u1", - "user2", "u2", - "user3", "u3", - "user4", "u4", - "user5", "u5", - "user6", "u6", - "user7", "u7", - "user8", "u8", - "user9", "u9", - "orig_pair", "op", - "orig_colors", "oc", - "initialize_color", "initc", - "initialize_pair", "initp", - "set_color_pair", "scp", - "set_foreground", "setf", - "set_background", "setb", - "change_char_pitch", "cpi", - "change_line_pitch", "lpi", - "change_res_horz", "chr", - "change_res_vert", "cvr", - "define_char", "defc", - "enter_doublewide_mode", "swidm", - "enter_draft_quality", "sdrfq", - "enter_italics_mode", "sitm", - "enter_leftward_mode", "slm", - "enter_micro_mode", "smicm", - "enter_near_letter_quality", "snlq", - "enter_normal_quality", "snrmq", - "enter_shadow_mode", "sshm", - "enter_subscript_mode", "ssubm", - "enter_superscript_mode", "ssupm", - "enter_upward_mode", "sum", - "exit_doublewide_mode", "rwidm", - "exit_italics_mode", "ritm", - "exit_leftward_mode", "rlm", - "exit_micro_mode", "rmicm", - "exit_shadow_mode", "rshm", - "exit_subscript_mode", "rsubm", - "exit_superscript_mode", "rsupm", - "exit_upward_mode", "rum", - "micro_column_address", "mhpa", - "micro_down", "mcud1", - "micro_left", "mcub1", - "micro_right", "mcuf1", - "micro_row_address", "mvpa", - "micro_up", "mcuu1", - "order_of_pins", "porder", - "parm_down_micro", "mcud", - "parm_left_micro", "mcub", - "parm_right_micro", "mcuf", - "parm_up_micro", "mcuu", - "select_char_set", "scs", - "set_bottom_margin", "smgb", - "set_bottom_margin_parm", "smgbp", - "set_left_margin_parm", "smglp", - "set_right_margin_parm", "smgrp", - "set_top_margin", "smgt", - "set_top_margin_parm", "smgtp", - "start_bit_image", "sbim", - "start_char_set_def", "scsd", - "stop_bit_image", "rbim", - "stop_char_set_def", "rcsd", - "subscript_characters", "subcs", - "superscript_characters", "supcs", - "these_cause_cr", "docr", - "zero_motion", "zerom", - "char_set_names", "csnm", - "key_mouse", "kmous", - "mouse_info", "minfo", - "req_mouse_pos", "reqmp", - "get_mouse", "getm", - "set_a_foreground", "setaf", - "set_a_background", "setab", - "pkey_plab", "pfxl", - "device_type", "devt", - "code_set_init", "csin", - "set0_des_seq", "s0ds", - "set1_des_seq", "s1ds", - "set2_des_seq", "s2ds", - "set3_des_seq", "s3ds", - "set_lr_margin", "smglr", - "set_tb_margin", "smgtb", - "bit_image_repeat", "birep", - "bit_image_newline", "binel", - "bit_image_carriage_return", "bicr", - "color_names", "colornm", - "define_bit_image_region", "defbi", - "end_bit_image_region", "endbi", - "set_color_band", "setcolor", - "set_page_length", "slines", - "display_pc_char", "dispc", - "enter_pc_charset_mode", "smpch", - "exit_pc_charset_mode", "rmpch", - "enter_scancode_mode", "smsc", - "exit_scancode_mode", "rmsc", - "pc_term_options", "pctrm", - "scancode_escape", "scesc", - "alt_scancode_esc", "scesa", - "enter_horizontal_hl_mode", "ehhlm", - "enter_left_hl_mode", "elhlm", - "enter_low_hl_mode", "elohlm", - "enter_right_hl_mode", "erhlm", - "enter_top_hl_mode", "ethlm", - "enter_vertical_hl_mode", "evhlm", - "set_a_attributes", "sgr1", - "set_pglen_inch", "slength", - "termcap_init2", "", - "termcap_reset", "", - "linefeed_if_not_lf", "", - "backspace_if_not_bs", "", - "other_non_function_keys", "", - "arrow_key_map", "", - "acs_ulcorner", "", - "acs_llcorner", "", - "acs_urcorner", "", - "acs_lrcorner", "", - "acs_ltee", "", - "acs_rtee", "", - "acs_btee", "", - "acs_ttee", "", - "acs_hline", "", - "acs_vline", "", - "acs_plus", "", - "memory_lock", "", - "memory_unlock", "", - "box_chars_1", "", -} diff --git a/vendor/github.com/Nvveen/Gotty/gotty.go b/vendor/github.com/Nvveen/Gotty/gotty.go deleted file mode 100644 index 093cbf37e1b..00000000000 --- a/vendor/github.com/Nvveen/Gotty/gotty.go +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Gotty is a Go-package for reading and parsing the terminfo database -package gotty - -// TODO add more concurrency to name lookup, look for more opportunities. - -import ( - "encoding/binary" - "errors" - "fmt" - "os" - "reflect" - "strings" - "sync" -) - -// Open a terminfo file by the name given and construct a TermInfo object. -// If something went wrong reading the terminfo database file, an error is -// returned. -func OpenTermInfo(termName string) (*TermInfo, error) { - var term *TermInfo - var err error - // Find the environment variables - termloc := os.Getenv("TERMINFO") - if len(termloc) == 0 { - // Search like ncurses - locations := []string{os.Getenv("HOME") + "/.terminfo/", "/etc/terminfo/", - "/lib/terminfo/", "/usr/share/terminfo/"} - var path string - for _, str := range locations { - // Construct path - path = str + string(termName[0]) + "/" + termName - // Check if path can be opened - file, _ := os.Open(path) - if file != nil { - // Path can open, fall out and use current path - file.Close() - break - } - } - if len(path) > 0 { - term, err = readTermInfo(path) - } else { - err = errors.New(fmt.Sprintf("No terminfo file(-location) found")) - } - } - return term, err -} - -// Open a terminfo file from the environment variable containing the current -// terminal name and construct a TermInfo object. If something went wrong -// reading the terminfo database file, an error is returned. -func OpenTermInfoEnv() (*TermInfo, error) { - termenv := os.Getenv("TERM") - return OpenTermInfo(termenv) -} - -// Return an attribute by the name attr provided. If none can be found, -// an error is returned. -func (term *TermInfo) GetAttribute(attr string) (stacker, error) { - // Channel to store the main value in. - var value stacker - // Add a blocking WaitGroup - var block sync.WaitGroup - // Keep track of variable being written. - written := false - // Function to put into goroutine. - f := func(ats interface{}) { - var ok bool - var v stacker - // Switch on type of map to use and assign value to it. - switch reflect.TypeOf(ats).Elem().Kind() { - case reflect.Bool: - v, ok = ats.(map[string]bool)[attr] - case reflect.Int16: - v, ok = ats.(map[string]int16)[attr] - case reflect.String: - v, ok = ats.(map[string]string)[attr] - } - // If ok, a value is found, so we can write. - if ok { - value = v - written = true - } - // Goroutine is done - block.Done() - } - block.Add(3) - // Go for all 3 attribute lists. - go f(term.boolAttributes) - go f(term.numAttributes) - go f(term.strAttributes) - // Wait until every goroutine is done. - block.Wait() - // If a value has been written, return it. - if written { - return value, nil - } - // Otherwise, error. - return nil, fmt.Errorf("Erorr finding attribute") -} - -// Return an attribute by the name attr provided. If none can be found, -// an error is returned. A name is first converted to its termcap value. -func (term *TermInfo) GetAttributeName(name string) (stacker, error) { - tc := GetTermcapName(name) - return term.GetAttribute(tc) -} - -// A utility function that finds and returns the termcap equivalent of a -// variable name. -func GetTermcapName(name string) string { - // Termcap name - var tc string - // Blocking group - var wait sync.WaitGroup - // Function to put into a goroutine - f := func(attrs []string) { - // Find the string corresponding to the name - for i, s := range attrs { - if s == name { - tc = attrs[i+1] - } - } - // Goroutine is finished - wait.Done() - } - wait.Add(3) - // Go for all 3 attribute lists - go f(BoolAttr[:]) - go f(NumAttr[:]) - go f(StrAttr[:]) - // Wait until every goroutine is done - wait.Wait() - // Return the termcap name - return tc -} - -// This function takes a path to a terminfo file and reads it in binary -// form to construct the actual TermInfo file. -func readTermInfo(path string) (*TermInfo, error) { - // Open the terminfo file - file, err := os.Open(path) - defer file.Close() - if err != nil { - return nil, err - } - - // magic, nameSize, boolSize, nrSNum, nrOffsetsStr, strSize - // Header is composed of the magic 0432 octal number, size of the name - // section, size of the boolean section, the amount of number values, - // the number of offsets of strings, and the size of the string section. - var header [6]int16 - // Byte array is used to read in byte values - var byteArray []byte - // Short array is used to read in short values - var shArray []int16 - // TermInfo object to store values - var term TermInfo - - // Read in the header - err = binary.Read(file, binary.LittleEndian, &header) - if err != nil { - return nil, err - } - // If magic number isn't there or isn't correct, we have the wrong filetype - if header[0] != 0432 { - return nil, errors.New(fmt.Sprintf("Wrong filetype")) - } - - // Read in the names - byteArray = make([]byte, header[1]) - err = binary.Read(file, binary.LittleEndian, &byteArray) - if err != nil { - return nil, err - } - term.Names = strings.Split(string(byteArray), "|") - - // Read in the booleans - byteArray = make([]byte, header[2]) - err = binary.Read(file, binary.LittleEndian, &byteArray) - if err != nil { - return nil, err - } - term.boolAttributes = make(map[string]bool) - for i, b := range byteArray { - if b == 1 { - term.boolAttributes[BoolAttr[i*2+1]] = true - } - } - // If the number of bytes read is not even, a byte for alignment is added - if len(byteArray)%2 != 0 { - err = binary.Read(file, binary.LittleEndian, make([]byte, 1)) - if err != nil { - return nil, err - } - } - - // Read in shorts - shArray = make([]int16, header[3]) - err = binary.Read(file, binary.LittleEndian, &shArray) - if err != nil { - return nil, err - } - term.numAttributes = make(map[string]int16) - for i, n := range shArray { - if n != 0377 && n > -1 { - term.numAttributes[NumAttr[i*2+1]] = n - } - } - - // Read the offsets into the short array - shArray = make([]int16, header[4]) - err = binary.Read(file, binary.LittleEndian, &shArray) - if err != nil { - return nil, err - } - // Read the actual strings in the byte array - byteArray = make([]byte, header[5]) - err = binary.Read(file, binary.LittleEndian, &byteArray) - if err != nil { - return nil, err - } - term.strAttributes = make(map[string]string) - // We get an offset, and then iterate until the string is null-terminated - for i, offset := range shArray { - if offset > -1 { - r := offset - for ; byteArray[r] != 0; r++ { - } - term.strAttributes[StrAttr[i*2+1]] = string(byteArray[offset:r]) - } - } - return &term, nil -} diff --git a/vendor/github.com/Nvveen/Gotty/parser.go b/vendor/github.com/Nvveen/Gotty/parser.go deleted file mode 100644 index a9d5d23c542..00000000000 --- a/vendor/github.com/Nvveen/Gotty/parser.go +++ /dev/null @@ -1,362 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package gotty - -import ( - "bytes" - "errors" - "fmt" - "regexp" - "strconv" - "strings" -) - -var exp = [...]string{ - "%%", - "%c", - "%s", - "%p(\\d)", - "%P([A-z])", - "%g([A-z])", - "%'(.)'", - "%{([0-9]+)}", - "%l", - "%\\+|%-|%\\*|%/|%m", - "%&|%\\||%\\^", - "%=|%>|%<", - "%A|%O", - "%!|%~", - "%i", - "%(:[\\ #\\-\\+]{0,4})?(\\d+\\.\\d+|\\d+)?[doxXs]", - "%\\?(.*?);", -} - -var regex *regexp.Regexp -var staticVar map[byte]stacker - -// Parses the attribute that is received with name attr and parameters params. -func (term *TermInfo) Parse(attr string, params ...interface{}) (string, error) { - // Get the attribute name first. - iface, err := term.GetAttribute(attr) - str, ok := iface.(string) - if err != nil { - return "", err - } - if !ok { - return str, errors.New("Only string capabilities can be parsed.") - } - // Construct the hidden parser struct so we can use a recursive stack based - // parser. - ps := &parser{} - // Dynamic variables only exist in this context. - ps.dynamicVar = make(map[byte]stacker, 26) - ps.parameters = make([]stacker, len(params)) - // Convert the parameters to insert them into the parser struct. - for i, x := range params { - ps.parameters[i] = x - } - // Recursively walk and return. - result, err := ps.walk(str) - return result, err -} - -// Parses the attribute that is received with name attr and parameters params. -// Only works on full name of a capability that is given, which it uses to -// search for the termcap name. -func (term *TermInfo) ParseName(attr string, params ...interface{}) (string, error) { - tc := GetTermcapName(attr) - return term.Parse(tc, params) -} - -// Identify each token in a stack based manner and do the actual parsing. -func (ps *parser) walk(attr string) (string, error) { - // We use a buffer to get the modified string. - var buf bytes.Buffer - // Next, find and identify all tokens by their indices and strings. - tokens := regex.FindAllStringSubmatch(attr, -1) - if len(tokens) == 0 { - return attr, nil - } - indices := regex.FindAllStringIndex(attr, -1) - q := 0 // q counts the matches of one token - // Iterate through the string per character. - for i := 0; i < len(attr); i++ { - // If the current position is an identified token, execute the following - // steps. - if q < len(indices) && i >= indices[q][0] && i < indices[q][1] { - // Switch on token. - switch { - case tokens[q][0][:2] == "%%": - // Literal percentage character. - buf.WriteByte('%') - case tokens[q][0][:2] == "%c": - // Pop a character. - c, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - buf.WriteByte(c.(byte)) - case tokens[q][0][:2] == "%s": - // Pop a string. - str, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - if _, ok := str.(string); !ok { - return buf.String(), errors.New("Stack head is not a string") - } - buf.WriteString(str.(string)) - case tokens[q][0][:2] == "%p": - // Push a parameter on the stack. - index, err := strconv.ParseInt(tokens[q][1], 10, 8) - index-- - if err != nil { - return buf.String(), err - } - if int(index) >= len(ps.parameters) { - return buf.String(), errors.New("Parameters index out of bound") - } - ps.st.push(ps.parameters[index]) - case tokens[q][0][:2] == "%P": - // Pop a variable from the stack as a dynamic or static variable. - val, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - index := tokens[q][2] - if len(index) > 1 { - errorStr := fmt.Sprintf("%s is not a valid dynamic variables index", - index) - return buf.String(), errors.New(errorStr) - } - // Specify either dynamic or static. - if index[0] >= 'a' && index[0] <= 'z' { - ps.dynamicVar[index[0]] = val - } else if index[0] >= 'A' && index[0] <= 'Z' { - staticVar[index[0]] = val - } - case tokens[q][0][:2] == "%g": - // Push a variable from the stack as a dynamic or static variable. - index := tokens[q][3] - if len(index) > 1 { - errorStr := fmt.Sprintf("%s is not a valid static variables index", - index) - return buf.String(), errors.New(errorStr) - } - var val stacker - if index[0] >= 'a' && index[0] <= 'z' { - val = ps.dynamicVar[index[0]] - } else if index[0] >= 'A' && index[0] <= 'Z' { - val = staticVar[index[0]] - } - ps.st.push(val) - case tokens[q][0][:2] == "%'": - // Push a character constant. - con := tokens[q][4] - if len(con) > 1 { - errorStr := fmt.Sprintf("%s is not a valid character constant", con) - return buf.String(), errors.New(errorStr) - } - ps.st.push(con[0]) - case tokens[q][0][:2] == "%{": - // Push an integer constant. - con, err := strconv.ParseInt(tokens[q][5], 10, 32) - if err != nil { - return buf.String(), err - } - ps.st.push(con) - case tokens[q][0][:2] == "%l": - // Push the length of the string that is popped from the stack. - popStr, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - if _, ok := popStr.(string); !ok { - errStr := fmt.Sprintf("Stack head is not a string") - return buf.String(), errors.New(errStr) - } - ps.st.push(len(popStr.(string))) - case tokens[q][0][:2] == "%?": - // If-then-else construct. First, the whole string is identified and - // then inside this substring, we can specify which parts to switch on. - ifReg, _ := regexp.Compile("%\\?(.*)%t(.*)%e(.*);|%\\?(.*)%t(.*);") - ifTokens := ifReg.FindStringSubmatch(tokens[q][0]) - var ( - ifStr string - err error - ) - // Parse the if-part to determine if-else. - if len(ifTokens[1]) > 0 { - ifStr, err = ps.walk(ifTokens[1]) - } else { // else - ifStr, err = ps.walk(ifTokens[4]) - } - // Return any errors - if err != nil { - return buf.String(), err - } else if len(ifStr) > 0 { - // Self-defined limitation, not sure if this is correct, but didn't - // seem like it. - return buf.String(), errors.New("If-clause cannot print statements") - } - var thenStr string - // Pop the first value that is set by parsing the if-clause. - choose, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - // Switch to if or else. - if choose.(int) == 0 && len(ifTokens[1]) > 0 { - thenStr, err = ps.walk(ifTokens[3]) - } else if choose.(int) != 0 { - if len(ifTokens[1]) > 0 { - thenStr, err = ps.walk(ifTokens[2]) - } else { - thenStr, err = ps.walk(ifTokens[5]) - } - } - if err != nil { - return buf.String(), err - } - buf.WriteString(thenStr) - case tokens[q][0][len(tokens[q][0])-1] == 'd': // Fallthrough for printing - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 'o': // digits. - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 'x': - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 'X': - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 's': - token := tokens[q][0] - // Remove the : that comes before a flag. - if token[1] == ':' { - token = token[:1] + token[2:] - } - digit, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - // The rest is determined like the normal formatted prints. - digitStr := fmt.Sprintf(token, digit.(int)) - buf.WriteString(digitStr) - case tokens[q][0][:2] == "%i": - // Increment the parameters by one. - if len(ps.parameters) < 2 { - return buf.String(), errors.New("Not enough parameters to increment.") - } - val1, val2 := ps.parameters[0].(int), ps.parameters[1].(int) - val1++ - val2++ - ps.parameters[0], ps.parameters[1] = val1, val2 - default: - // The rest of the tokens is a special case, where two values are - // popped and then operated on by the token that comes after them. - op1, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - op2, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - var result stacker - switch tokens[q][0][:2] { - case "%+": - // Addition - result = op2.(int) + op1.(int) - case "%-": - // Subtraction - result = op2.(int) - op1.(int) - case "%*": - // Multiplication - result = op2.(int) * op1.(int) - case "%/": - // Division - result = op2.(int) / op1.(int) - case "%m": - // Modulo - result = op2.(int) % op1.(int) - case "%&": - // Bitwise AND - result = op2.(int) & op1.(int) - case "%|": - // Bitwise OR - result = op2.(int) | op1.(int) - case "%^": - // Bitwise XOR - result = op2.(int) ^ op1.(int) - case "%=": - // Equals - result = op2 == op1 - case "%>": - // Greater-than - result = op2.(int) > op1.(int) - case "%<": - // Lesser-than - result = op2.(int) < op1.(int) - case "%A": - // Logical AND - result = op2.(bool) && op1.(bool) - case "%O": - // Logical OR - result = op2.(bool) || op1.(bool) - case "%!": - // Logical complement - result = !op1.(bool) - case "%~": - // Bitwise complement - result = ^(op1.(int)) - } - ps.st.push(result) - } - - i = indices[q][1] - 1 - q++ - } else { - // We are not "inside" a token, so just skip until the end or the next - // token, and add all characters to the buffer. - j := i - if q != len(indices) { - for !(j >= indices[q][0] && j < indices[q][1]) { - j++ - } - } else { - j = len(attr) - } - buf.WriteString(string(attr[i:j])) - i = j - } - } - // Return the buffer as a string. - return buf.String(), nil -} - -// Push a stacker-value onto the stack. -func (st *stack) push(s stacker) { - *st = append(*st, s) -} - -// Pop a stacker-value from the stack. -func (st *stack) pop() (stacker, error) { - if len(*st) == 0 { - return nil, errors.New("Stack is empty.") - } - newStack := make(stack, len(*st)-1) - val := (*st)[len(*st)-1] - copy(newStack, (*st)[:len(*st)-1]) - *st = newStack - return val, nil -} - -// Initialize regexes and the static vars (that don't get changed between -// calls. -func init() { - // Initialize the main regex. - expStr := strings.Join(exp[:], "|") - regex, _ = regexp.Compile(expStr) - // Initialize the static variables. - staticVar = make(map[byte]stacker, 26) -} diff --git a/vendor/github.com/Nvveen/Gotty/types.go b/vendor/github.com/Nvveen/Gotty/types.go deleted file mode 100644 index 9bcc65e9b88..00000000000 --- a/vendor/github.com/Nvveen/Gotty/types.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package gotty - -type TermInfo struct { - boolAttributes map[string]bool - numAttributes map[string]int16 - strAttributes map[string]string - // The various names of the TermInfo file. - Names []string -} - -type stacker interface { -} -type stack []stacker - -type parser struct { - st stack - parameters []stacker - dynamicVar map[byte]stacker -} diff --git a/vendor/github.com/containerd/continuity/LICENSE b/vendor/github.com/containerd/containerd/LICENSE similarity index 100% rename from vendor/github.com/containerd/continuity/LICENSE rename to vendor/github.com/containerd/containerd/LICENSE diff --git a/vendor/github.com/containerd/containerd/NOTICE b/vendor/github.com/containerd/containerd/NOTICE new file mode 100644 index 00000000000..8915f02773f --- /dev/null +++ b/vendor/github.com/containerd/containerd/NOTICE @@ -0,0 +1,16 @@ +Docker +Copyright 2012-2015 Docker, Inc. + +This product includes software developed at Docker, Inc. (https://www.docker.com). + +The following is courtesy of our legal counsel: + + +Use and transfer of Docker may be subject to certain restrictions by the +United States and other governments. +It is your responsibility to ensure that your use and/or transfer does not +violate applicable laws. + +For more information, please see https://www.bis.doc.gov + +See also https://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/containerd/containerd/errdefs/errors.go b/vendor/github.com/containerd/containerd/errdefs/errors.go new file mode 100644 index 00000000000..b5200afc0ee --- /dev/null +++ b/vendor/github.com/containerd/containerd/errdefs/errors.go @@ -0,0 +1,93 @@ +/* + Copyright The containerd 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 errdefs defines the common errors used throughout containerd +// packages. +// +// Use with errors.Wrap and error.Wrapf to add context to an error. +// +// To detect an error class, use the IsXXX functions to tell whether an error +// is of a certain type. +// +// The functions ToGRPC and FromGRPC can be used to map server-side and +// client-side errors to the correct types. +package errdefs + +import ( + "context" + + "github.com/pkg/errors" +) + +// Definitions of common error types used throughout containerd. All containerd +// errors returned by most packages will map into one of these errors classes. +// Packages should return errors of these types when they want to instruct a +// client to take a particular action. +// +// For the most part, we just try to provide local grpc errors. Most conditions +// map very well to those defined by grpc. +var ( + ErrUnknown = errors.New("unknown") // used internally to represent a missed mapping. + ErrInvalidArgument = errors.New("invalid argument") + ErrNotFound = errors.New("not found") + ErrAlreadyExists = errors.New("already exists") + ErrFailedPrecondition = errors.New("failed precondition") + ErrUnavailable = errors.New("unavailable") + ErrNotImplemented = errors.New("not implemented") // represents not supported and unimplemented +) + +// IsInvalidArgument returns true if the error is due to an invalid argument +func IsInvalidArgument(err error) bool { + return errors.Cause(err) == ErrInvalidArgument +} + +// IsNotFound returns true if the error is due to a missing object +func IsNotFound(err error) bool { + return errors.Cause(err) == ErrNotFound +} + +// IsAlreadyExists returns true if the error is due to an already existing +// metadata item +func IsAlreadyExists(err error) bool { + return errors.Cause(err) == ErrAlreadyExists +} + +// IsFailedPrecondition returns true if an operation could not proceed to the +// lack of a particular condition +func IsFailedPrecondition(err error) bool { + return errors.Cause(err) == ErrFailedPrecondition +} + +// IsUnavailable returns true if the error is due to a resource being unavailable +func IsUnavailable(err error) bool { + return errors.Cause(err) == ErrUnavailable +} + +// IsNotImplemented returns true if the error is due to not being implemented +func IsNotImplemented(err error) bool { + return errors.Cause(err) == ErrNotImplemented +} + +// IsCanceled returns true if the error is due to `context.Canceled`. +func IsCanceled(err error) bool { + return errors.Cause(err) == context.Canceled +} + +// IsDeadlineExceeded returns true if the error is due to +// `context.DeadlineExceeded`. +func IsDeadlineExceeded(err error) bool { + return errors.Cause(err) == context.DeadlineExceeded +} diff --git a/vendor/github.com/containerd/containerd/errdefs/grpc.go b/vendor/github.com/containerd/containerd/errdefs/grpc.go new file mode 100644 index 00000000000..209f63bd0fc --- /dev/null +++ b/vendor/github.com/containerd/containerd/errdefs/grpc.go @@ -0,0 +1,147 @@ +/* + Copyright The containerd 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 errdefs + +import ( + "context" + "strings" + + "github.com/pkg/errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// ToGRPC will attempt to map the backend containerd error into a grpc error, +// using the original error message as a description. +// +// Further information may be extracted from certain errors depending on their +// type. +// +// If the error is unmapped, the original error will be returned to be handled +// by the regular grpc error handling stack. +func ToGRPC(err error) error { + if err == nil { + return nil + } + + if isGRPCError(err) { + // error has already been mapped to grpc + return err + } + + switch { + case IsInvalidArgument(err): + return status.Errorf(codes.InvalidArgument, err.Error()) + case IsNotFound(err): + return status.Errorf(codes.NotFound, err.Error()) + case IsAlreadyExists(err): + return status.Errorf(codes.AlreadyExists, err.Error()) + case IsFailedPrecondition(err): + return status.Errorf(codes.FailedPrecondition, err.Error()) + case IsUnavailable(err): + return status.Errorf(codes.Unavailable, err.Error()) + case IsNotImplemented(err): + return status.Errorf(codes.Unimplemented, err.Error()) + case IsCanceled(err): + return status.Errorf(codes.Canceled, err.Error()) + case IsDeadlineExceeded(err): + return status.Errorf(codes.DeadlineExceeded, err.Error()) + } + + return err +} + +// ToGRPCf maps the error to grpc error codes, assembling the formatting string +// and combining it with the target error string. +// +// This is equivalent to errors.ToGRPC(errors.Wrapf(err, format, args...)) +func ToGRPCf(err error, format string, args ...interface{}) error { + return ToGRPC(errors.Wrapf(err, format, args...)) +} + +// FromGRPC returns the underlying error from a grpc service based on the grpc error code +func FromGRPC(err error) error { + if err == nil { + return nil + } + + var cls error // divide these into error classes, becomes the cause + + switch code(err) { + case codes.InvalidArgument: + cls = ErrInvalidArgument + case codes.AlreadyExists: + cls = ErrAlreadyExists + case codes.NotFound: + cls = ErrNotFound + case codes.Unavailable: + cls = ErrUnavailable + case codes.FailedPrecondition: + cls = ErrFailedPrecondition + case codes.Unimplemented: + cls = ErrNotImplemented + case codes.Canceled: + cls = context.Canceled + case codes.DeadlineExceeded: + cls = context.DeadlineExceeded + default: + cls = ErrUnknown + } + + msg := rebaseMessage(cls, err) + if msg != "" { + err = errors.Wrap(cls, msg) + } else { + err = errors.WithStack(cls) + } + + return err +} + +// rebaseMessage removes the repeats for an error at the end of an error +// string. This will happen when taking an error over grpc then remapping it. +// +// Effectively, we just remove the string of cls from the end of err if it +// appears there. +func rebaseMessage(cls error, err error) string { + desc := errDesc(err) + clss := cls.Error() + if desc == clss { + return "" + } + + return strings.TrimSuffix(desc, ": "+clss) +} + +func isGRPCError(err error) bool { + _, ok := status.FromError(err) + return ok +} + +func code(err error) codes.Code { + if s, ok := status.FromError(err); ok { + return s.Code() + } + return codes.Unknown +} + +func errDesc(err error) string { + if s, ok := status.FromError(err); ok { + return s.Message() + } + return err.Error() +} diff --git a/vendor/github.com/containerd/continuity/AUTHORS b/vendor/github.com/containerd/continuity/AUTHORS deleted file mode 100644 index 4043394cc50..00000000000 --- a/vendor/github.com/containerd/continuity/AUTHORS +++ /dev/null @@ -1,16 +0,0 @@ -Aaron Lehmann -Akash Gupta -Akihiro Suda -Andrew Pennebaker -Brandon Philips -Christopher Jones -Daniel, Dao Quang Minh -Derek McGowan -Edward Pilatowicz -Ian Campbell -Justin Cormack -Justin Cummins -Phil Estes -Stephen J Day -Tobias Klauser -Tonis Tiigi diff --git a/vendor/github.com/containerd/continuity/pathdriver/path_driver.go b/vendor/github.com/containerd/continuity/pathdriver/path_driver.go deleted file mode 100644 index b0d5a6b5670..00000000000 --- a/vendor/github.com/containerd/continuity/pathdriver/path_driver.go +++ /dev/null @@ -1,101 +0,0 @@ -/* - Copyright The containerd 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 pathdriver - -import ( - "path/filepath" -) - -// PathDriver provides all of the path manipulation functions in a common -// interface. The context should call these and never use the `filepath` -// package or any other package to manipulate paths. -type PathDriver interface { - Join(paths ...string) string - IsAbs(path string) bool - Rel(base, target string) (string, error) - Base(path string) string - Dir(path string) string - Clean(path string) string - Split(path string) (dir, file string) - Separator() byte - Abs(path string) (string, error) - Walk(string, filepath.WalkFunc) error - FromSlash(path string) string - ToSlash(path string) string - Match(pattern, name string) (matched bool, err error) -} - -// pathDriver is a simple default implementation calls the filepath package. -type pathDriver struct{} - -// LocalPathDriver is the exported pathDriver struct for convenience. -var LocalPathDriver PathDriver = &pathDriver{} - -func (*pathDriver) Join(paths ...string) string { - return filepath.Join(paths...) -} - -func (*pathDriver) IsAbs(path string) bool { - return filepath.IsAbs(path) -} - -func (*pathDriver) Rel(base, target string) (string, error) { - return filepath.Rel(base, target) -} - -func (*pathDriver) Base(path string) string { - return filepath.Base(path) -} - -func (*pathDriver) Dir(path string) string { - return filepath.Dir(path) -} - -func (*pathDriver) Clean(path string) string { - return filepath.Clean(path) -} - -func (*pathDriver) Split(path string) (dir, file string) { - return filepath.Split(path) -} - -func (*pathDriver) Separator() byte { - return filepath.Separator -} - -func (*pathDriver) Abs(path string) (string, error) { - return filepath.Abs(path) -} - -// Note that filepath.Walk calls os.Stat, so if the context wants to -// to call Driver.Stat() for Walk, they need to create a new struct that -// overrides this method. -func (*pathDriver) Walk(root string, walkFn filepath.WalkFunc) error { - return filepath.Walk(root, walkFn) -} - -func (*pathDriver) FromSlash(path string) string { - return filepath.FromSlash(path) -} - -func (*pathDriver) ToSlash(path string) string { - return filepath.ToSlash(path) -} - -func (*pathDriver) Match(pattern, name string) (bool, error) { - return filepath.Match(pattern, name) -} diff --git a/vendor/github.com/docker/cli/cli/config/config.go b/vendor/github.com/docker/cli/cli/config/config.go index 09810782c36..c860cf7125f 100644 --- a/vendor/github.com/docker/cli/cli/config/config.go +++ b/vendor/github.com/docker/cli/cli/config/config.go @@ -10,6 +10,7 @@ import ( "github.com/docker/cli/cli/config/configfile" "github.com/docker/cli/cli/config/credentials" "github.com/docker/cli/cli/config/types" + "github.com/docker/docker/pkg/homedir" "github.com/pkg/errors" ) @@ -27,10 +28,7 @@ var ( func init() { if configDir == "" { - homedir, err := os.UserHomeDir() - if err == nil { - configDir = filepath.Join(homedir, configFileDir) - } + configDir = filepath.Join(homedir.Get(), configFileDir) } } diff --git a/vendor/github.com/docker/cli/cli/config/configfile/file.go b/vendor/github.com/docker/cli/cli/config/configfile/file.go index 67ae655b0b8..388a5d54d69 100644 --- a/vendor/github.com/docker/cli/cli/config/configfile/file.go +++ b/vendor/github.com/docker/cli/cli/config/configfile/file.go @@ -123,9 +123,11 @@ func (configFile *ConfigFile) LoadFromReader(configData io.Reader) error { } var err error for addr, ac := range configFile.AuthConfigs { - ac.Username, ac.Password, err = decodeAuth(ac.Auth) - if err != nil { - return err + if ac.Auth != "" { + ac.Username, ac.Password, err = decodeAuth(ac.Auth) + if err != nil { + return err + } } ac.Auth = "" ac.ServerAddress = addr diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS index 46102d7402c..d5b6cbbead4 100644 --- a/vendor/github.com/docker/docker/AUTHORS +++ b/vendor/github.com/docker/docker/AUTHORS @@ -4,6 +4,7 @@ Aanand Prasad Aaron Davidson Aaron Feng +Aaron Hnatiw Aaron Huslage Aaron L. Xu Aaron Lehmann @@ -44,7 +45,7 @@ Ajey Charantimath ajneu Akash Gupta Akihiro Matsushima -Akihiro Suda +Akihiro Suda Akim Demaille Akira Koyasu Akshay Karle @@ -81,6 +82,7 @@ Alexandre Garnier Alexandre González Alexandre Jomin Alexandru Sfirlogea +Alexei Margasov Alexey Guskov Alexey Kotlyarov Alexey Shamrin @@ -118,6 +120,7 @@ Andreas Köhler Andreas Savvides Andreas Tiefenthaler Andrei Gherzan +Andrei Vagin Andrew C. Bodine Andrew Clay Shafer Andrew Duckworth @@ -137,6 +140,7 @@ Andrew Po Andrew Weiss Andrew Williams Andrews Medina +Andrey Kolomentsev Andrey Petrov Andrey Stolbovsky André Martins @@ -151,6 +155,7 @@ Andy Wilson Anes Hasicic Anil Belur Anil Madhavapeddy +Ankit Jain Ankush Agarwal Anonmily Anran Qiao @@ -182,6 +187,7 @@ Asad Saeeduddin Asbjørn Enge averagehuman Avi Das +Avi Kivity Avi Miller Avi Vaid ayoshitake @@ -195,23 +201,27 @@ bdevloed Ben Bonnefoy Ben Firshman Ben Golub +Ben Gould Ben Hall Ben Sargent Ben Severson Ben Toews Ben Wiklund Benjamin Atkin +Benjamin Baker Benjamin Boudreau Benjamin Yolken Benoit Chesneau Bernerd Schaefer Bernhard M. Wiedemann Bert Goethals +Bevisy Zhang Bharath Thiruveedula Bhiraj Butala Bhumika Bayani Bilal Amarni Bill Wang +Bily Zhang Bin Liu Bingshen Wang Blake Geno @@ -246,6 +256,7 @@ Brian Torres-Gil Brian Trump Brice Jaglin Briehan Lombaard +Brielle Broder Bruno Bigras Bruno Binet Bruno Gazzera @@ -300,6 +311,7 @@ Chen Min Chen Mingjie Chen Qiu Cheng-mean Liu +Chengfei Shang Chengguang Xu chenyuzhu Chetan Birajdar @@ -325,9 +337,11 @@ Chris Swan Chris Telfer Chris Wahl Chris Weyl +Chris White Christian Berendt Christian Brauner Christian Böhme +Christian Muehlhaeuser Christian Persson Christian Rotzoll Christian Simon @@ -350,6 +364,7 @@ Cody Roseborough Coenraad Loubser Colin Dunklau Colin Hebert +Colin Panisset Colin Rice Colin Walters Collin Guarino @@ -385,6 +400,7 @@ Dan Levy Dan McPherson Dan Stine Dan Williams +Dani Hodovic Dani Louca Daniel Antlinger Daniel Dao @@ -438,12 +454,14 @@ David Mackey David Mat David Mcanulty David McKay +David P Hilton David Pelaez David R. Jenni David Röthlisberger David Sheets David Sissitka David Trott +David Wang <00107082@163.com> David Williamson David Xia David Young @@ -451,8 +469,10 @@ Davide Ceretti Dawn Chen dbdd dcylabs +Debayan De Deborah Gertrude Digges deed02392 +Deep Debroy Deng Guangxing Deni Bertovic Denis Defreyne @@ -477,6 +497,7 @@ Dieter Reuter Dillon Dixon Dima Stopel Dimitri John Ledkov +Dimitris Mandalidis Dimitris Rozakis Dimitry Andric Dinesh Subhraveti @@ -490,6 +511,7 @@ Dmitri Shuralyov Dmitry Demeshchuk Dmitry Gusev Dmitry Kononenko +Dmitry Sharshakov Dmitry Shyshkin Dmitry Smirnov Dmitry V. Krivenok @@ -503,6 +525,7 @@ Don Kjer Don Spaulding Donald Huang Dong Chen +Donghwa Kim Donovan Jones Doron Podoleanu Doug Davis @@ -579,7 +602,9 @@ Ewa Czechowska Eystein Måløy Stenberg ezbercih Ezra Silvera +Fabian Kramm Fabian Lauer +Fabian Raetz Fabiano Rosas Fabio Falci Fabio Kung @@ -591,6 +616,7 @@ Faiz Khan falmp Fangming Fang Fangyuan Gao <21551127@zju.edu.cn> +fanjiyun Fareed Dudhia Fathi Boudra Federico Gimenez @@ -621,6 +647,7 @@ Florin Patan fonglh Foysal Iqbal Francesc Campoy +Francesco Mari Francis Chuang Francisco Carriedo Francisco Souza @@ -634,6 +661,7 @@ Frederik Loeffert Frederik Nordahl Jul Sabroe Freek Kalter Frieder Bluemle +Fu JinLin Félix Baylac-Jacqué Félix Cantournet Gabe Rosenhouse @@ -653,6 +681,7 @@ Gaël PORTAY Genki Takiuchi GennadySpb Geoffrey Bachelet +Geon Kim George Kontridze George MacRorie George Xie @@ -665,6 +694,7 @@ Ghislain Bourgeois Giampaolo Mancini Gianluca Borello Gildas Cuisinier +Giovan Isa Musthofa gissehel Giuseppe Mazzotta Gleb Fotengauer-Malinovskiy @@ -676,6 +706,7 @@ Gopikannan Venugopalsamy Gosuke Miyashita Gou Rao Govinda Fichtner +Grant Millar Grant Reaber Graydon Hoare Greg Fausak @@ -694,7 +725,9 @@ Guruprasad Gustav Sinder gwx296173 Günter Zöchbauer +haikuoliu Hakan Özler +Hamish Hutchings Hans Kristian Flaatten Hans Rødtang Hao Shu Wei @@ -702,6 +735,7 @@ Hao Zhang <21521210@zju.edu.cn> Harald Albers Harley Laue Harold Cooper +Harrison Turton Harry Zhang Harshal Patil Harshal Patil @@ -713,6 +747,7 @@ Hector Castro Helen Xie Henning Sprang Hiroshi Hatake +Hiroyuki Sasagawa Hobofan Hollie Teal Hong Xu @@ -735,6 +770,7 @@ Ian Bishop Ian Bull Ian Calvert Ian Campbell +Ian Chen Ian Lee Ian Main Ian Philpot @@ -752,9 +788,11 @@ Ilya Khlopotov imre Fitos inglesp Ingo Gottwald +Innovimax Isaac Dupree Isabel Jimenez Isao Jonas +Iskander Sharipov Ivan Babrou Ivan Fraixedes Ivan Grcic @@ -785,6 +823,7 @@ James Mills James Nesbitt James Nugent James Turnbull +James Watkins-Harvey Jamie Hannaford Jamshid Afshar Jan Keromnes @@ -817,6 +856,7 @@ jaxgeller Jay Jay Jay Kamat +Jean Rouge Jean-Baptiste Barth Jean-Baptiste Dalido Jean-Christophe Berthon @@ -847,11 +887,13 @@ Jeroen Franse Jeroen Jacobs Jesse Dearing Jesse Dubay -Jessica Frazelle +Jessica Frazelle Jezeniel Zapanta Jhon Honce Ji.Zhilong +Jian Liao Jian Zhang +Jiang Jinyang Jie Luo Jihyun Hwang Jilles Oldenbeuving @@ -862,14 +904,14 @@ Jim Perrin Jimmy Cuadra Jimmy Puckett Jimmy Song -jimmyxian Jinsoo Park +Jintao Zhang +Jiri Appl Jiri Popelka Jiuyue Ma Jiří Župka -jjy -jmzwcn Joao Fernandes +Joao Trindade Joe Beda Joe Doliner Joe Ferguson @@ -908,6 +950,7 @@ Jon Johnson Jon Surrell Jon Wedaman Jonas Pfenniger +Jonathan A. Schweder Jonathan A. Sternberg Jonathan Boulle Jonathan Camp @@ -928,7 +971,7 @@ Jordan Jennings Jordan Sissel Jorge Marin Jorit Kleine-Möllhoff -Jose Diaz-Gonzalez +Jose Diaz-Gonzalez Joseph Anthony Pasquale Holsten Joseph Hager Joseph Kern @@ -982,7 +1025,8 @@ kargakis Karl Grzeszczak Karol Duleba Karthik Karanth -Karthik Nayak +Karthik Nayak +Kasper Fabæch Brandt Kate Heddleston Katie McLaughlin Kato Kazuyoshi @@ -990,6 +1034,7 @@ Katrina Owen Kawsar Saiyeed Kay Yan kayrus +Kazuhiro Sera Ke Li Ke Xu Kei Ohmura @@ -998,6 +1043,7 @@ Keli Hu Ken Cochrane Ken Herner Ken ICHIKAWA +Ken Reese Kenfe-Mickaël Laventure Kenjiro Nakayama Kent Johnson @@ -1035,11 +1081,13 @@ Krasimir Georgiev Kris-Mikael Krister Kristian Haugene Kristina Zabunova -krrg +Krystian Wojcicki Kun Zhang Kunal Kushwaha +Kunal Tyagi Kyle Conroy Kyle Linden +Kyle Wuolle kyu Lachlan Coote Lai Jiangshan @@ -1060,6 +1108,7 @@ Leandro Siqueira Lee Chao <932819864@qq.com> Lee, Meng-Han leeplay +Lei Gong Lei Jitang Len Weincier Lennie @@ -1076,6 +1125,8 @@ Liana Lo Liang Mingqiang Liang-Chi Hsieh Liao Qingwei +Lifubang +Lihua Tang Lily Guo limsy Lin Lu @@ -1094,7 +1145,8 @@ Lloyd Dewolf Lokesh Mandvekar longliqiang88 <394564827@qq.com> Lorenz Leutgeb -Lorenzo Fontana +Lorenzo Fontana +Lotus Fenn Louis Opter Luca Favatella Luca Marturana @@ -1103,6 +1155,7 @@ Luca-Bogdan Grigorescu Lucas Chan Lucas Chi Lucas Molas +Lucas Silvestre Luciano Mores Luis Martínez de Bartolomé Izquierdo Luiz Svoboda @@ -1151,6 +1204,7 @@ Marius Gundersen Marius Sturm Marius Voila Mark Allen +Mark Jeromin Mark McGranaghan Mark McKinstry Mark Milstein @@ -1167,6 +1221,7 @@ Martijn van Oosterhout Martin Honermeyer Martin Kelly Martin Mosegaard Amdisen +Martin Muzatko Martin Redmond Mary Anthony Masahito Zembutsu @@ -1200,6 +1255,7 @@ Matthias Klumpp Matthias Kühnle Matthias Rampke Matthieu Hauglustaine +Mattias Jernberg Mauricio Garavaglia mauriyouth Max Shytikov @@ -1208,6 +1264,8 @@ Maxim Ivanov Maxim Kulkin Maxim Treskin Maxime Petazzoni +Maximiliano Maccanti +Maxwell Meaglith Ma meejah Megan Kostick @@ -1248,8 +1306,9 @@ Michal Wieczorek Michaël Pailloncy Michał Czeraszkiewicz Michał Gryko -Michiel@unhosted -Mickaël FORTUNATO +Michiel de Jong +Mickaël Fortunato +Mickaël Remars Miguel Angel Fernández Miguel Morales Mihai Borobocea @@ -1280,6 +1339,7 @@ Mitch Capper Mizuki Urushida mlarcher Mohammad Banikazemi +Mohammad Nasirifar Mohammed Aaqib Ansari Mohit Soni Moorthy RS @@ -1304,6 +1364,7 @@ Nan Monnand Deng Naoki Orii Natalie Parker Natanael Copa +Natasha Jarus Nate Brennand Nate Eagleson Nate Jones @@ -1337,6 +1398,7 @@ Nicolas Dudebout Nicolas Goy Nicolas Kaiser Nicolas Sterchele +Nicolas V Castet Nicolás Hock Isaza Nigel Poulton Nik Nyby @@ -1352,6 +1414,7 @@ Noah Treuhaft NobodyOnSE noducks Nolan Darilek +Noriki Nakamura nponeccop Nuutti Kotivuori nzwsch @@ -1363,8 +1426,11 @@ Ohad Schneider ohmystack Ole Reifschneider Oliver Neal +Oliver Reason Olivier Gambier Olle Jonsson +Olli Janatuinen +Omri Shiv Oriol Francès Oskar Niburski Otto Kekäläinen @@ -1420,6 +1486,7 @@ Peter Edge Peter Ericson Peter Esbensen Peter Jaffe +Peter Kang Peter Malmgren Peter Salvatore Peter Volpe @@ -1452,6 +1519,7 @@ Prasanna Gautam Pratik Karki Prayag Verma Priya Wadhwa +Projjol Banerji Przemek Hejman Pure White pysqz @@ -1462,6 +1530,7 @@ Quentin Brossard Quentin Perez Quentin Tayssier r0n22 +Radostin Stoyanov Rafal Jeczalik Rafe Colton Raghavendra K T @@ -1475,6 +1544,7 @@ Ralph Bean Ramkumar Ramachandra Ramon Brooker Ramon van Alteren +RaviTeja Pothana Ray Tsang ReadmeCritic Recursive Madman @@ -1524,6 +1594,7 @@ Roel Van Nyen Roger Peppe Rohit Jnagal Rohit Kadam +Rohit Kapur Rojin George Roland Huß Roland Kammerer @@ -1533,6 +1604,9 @@ Roman Dudin Roman Strashkin Ron Smits Ron Williams +Rong Gao +Rong Zhang +Rongxiang Song root root root @@ -1544,8 +1618,10 @@ Rovanion Luckey Royce Remer Rozhnov Alexandr Rudolph Gottesheim +Rui Cao Rui Lopes Runshen Zhu +Russ Magee Ryan Abrams Ryan Anderson Ryan Aslett @@ -1564,6 +1640,7 @@ Ryan Wallner Ryan Zhang ryancooper7 RyanDeng +Ryo Nakao Rémy Greinhofer s. rannou s00318865 @@ -1572,6 +1649,7 @@ Sachin Joshi Sagar Hani Sainath Grandhi Sakeven Jiang +Salahuddin Khan Sally O'Malley Sam Abed Sam Alba @@ -1593,6 +1671,7 @@ Santhosh Manohar sapphiredev Sargun Dhillon Sascha Andres +Sascha Grunert Satnam Singh Satoshi Amemiya Satoshi Tagomori @@ -1619,7 +1698,9 @@ Serge Hallyn Sergey Alekseev Sergey Evstifeev Sergii Kabashniuk +Sergio Lopez Serhat Gülçiçek +SeungUkLee Sevki Hasirci Shane Canon Shane da Silva @@ -1647,6 +1728,7 @@ Sidhartha Mani sidharthamani Silas Sewell Silvan Jegen +Simão Reis Simei He Simon Eskildsen Simon Ferquel @@ -1673,7 +1755,7 @@ Stefan Berger Stefan J. Wernli Stefan Praszalowicz Stefan S. -Stefan Scherer +Stefan Scherer Stefan Staudenmeyer Stefan Weil Stephan Spindler @@ -1714,10 +1796,11 @@ tang0th Tangi Colin Tatsuki Sugiura Tatsushi Inagaki +Taylan Isikdemir Taylor Jones -tbonza Ted M. Young Tehmasp Chaudhri +Tejaswini Duggaraju Tejesh Mehta terryding77 <550147740@qq.com> tgic @@ -1811,6 +1894,7 @@ Tristan Carel Troy Denton Tycho Andersen Tyler Brock +Tyler Brown Tzu-Jung Lee uhayate Ulysse Carion @@ -1871,6 +1955,7 @@ Wassim Dhif Wayne Chang Wayne Song Weerasak Chongnguluam +Wei Fu Wei Wu Wei-Ting Kuo weipeng @@ -1900,17 +1985,24 @@ WiseTrem Wolfgang Powisch Wonjun Kim xamyzhao +Xian Chaobo Xianglin Gao Xianlu Bird +Xiao YongBiao XiaoBing Jiang +Xiaodong Zhang +Xiaoxi He Xiaoxu Chen Xiaoyu Zhang +xichengliudui <1693291525@qq.com> xiekeyang +Ximo Guanter Gonzálbez Xinbo Weng Xinzi Zhou Xiuming Chen Xuecong Liao xuzhaokui +Yadnyawalkya Tale Yahya YAMADA Tsuyoshi Yamasaki Masahide @@ -1930,6 +2022,7 @@ Yihang Ho Ying Li Yohei Ueda Yong Tang +Yongxin Li Yongzhi Pan Yosef Fertel You-Sheng Yang (楊有勝) @@ -1940,9 +2033,12 @@ Yu Peng Yu-Ju Hong Yuan Sun Yuanhong Peng +Yue Zhang Yuhao Fang +Yuichiro Kaneko Yunxiang Huang Yurii Rashkovskii +Yusuf Tarık Günaydın Yves Junqueira Zac Dover Zach Borboa @@ -1959,8 +2055,10 @@ ZhangHang zhangxianwei Zhenan Ye <21551168@zju.edu.cn> zhenghenghuo +Zhenhai Gao Zhenkun Bi Zhou Hao +Zhoulin Xie Zhu Guihua Zhu Kunjia Zhuoyun Wei diff --git a/vendor/github.com/docker/docker/LICENSE b/vendor/github.com/docker/docker/LICENSE index 9c8e20ab85c..6d8d58fb676 100644 --- a/vendor/github.com/docker/docker/LICENSE +++ b/vendor/github.com/docker/docker/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2013-2017 Docker, Inc. + Copyright 2013-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker/NOTICE b/vendor/github.com/docker/docker/NOTICE index 0c74e15b057..58b19b6d15b 100644 --- a/vendor/github.com/docker/docker/NOTICE +++ b/vendor/github.com/docker/docker/NOTICE @@ -3,7 +3,7 @@ Copyright 2012-2017 Docker, Inc. This product includes software developed at Docker, Inc. (https://www.docker.com). -This product contains software (https://github.com/kr/pty) developed +This product contains software (https://github.com/creack/pty) developed by Keith Rarick, licensed under the MIT License. The following is courtesy of our legal counsel: diff --git a/vendor/github.com/docker/docker/api/common.go b/vendor/github.com/docker/docker/api/common.go index 255a81aedd6..1565e2af647 100644 --- a/vendor/github.com/docker/docker/api/common.go +++ b/vendor/github.com/docker/docker/api/common.go @@ -3,7 +3,7 @@ package api // import "github.com/docker/docker/api" // Common constants for daemon and client. const ( // DefaultVersion of Current REST API - DefaultVersion = "1.38" + DefaultVersion = "1.41" // NoBaseImageSpecifier is the symbol used by the FROM // command to specify that no base image is to be used. diff --git a/vendor/github.com/docker/docker/api/swagger.yaml b/vendor/github.com/docker/docker/api/swagger.yaml index af3bd6d4847..cc2451f033a 100644 --- a/vendor/github.com/docker/docker/api/swagger.yaml +++ b/vendor/github.com/docker/docker/api/swagger.yaml @@ -19,10 +19,10 @@ produces: consumes: - "application/json" - "text/plain" -basePath: "/v1.38" +basePath: "/v1.41" info: title: "Docker Engine API" - version: "1.38" + version: "1.41" x-logo: url: "https://docs.docker.com/images/logo-docker-main.png" description: | @@ -49,8 +49,8 @@ info: the URL is not supported by the daemon, a HTTP `400 Bad Request` error message is returned. - If you omit the version-prefix, the current version of the API (v1.38) is used. - For example, calling `/info` is the same as calling `/v1.38/info`. Using the + If you omit the version-prefix, the current version of the API (v1.41) is used. + For example, calling `/info` is the same as calling `/v1.41/info`. Using the API without a version-prefix is deprecated and will be removed in a future release. Engine releases in the near future should support this version of the API, @@ -210,6 +210,43 @@ definitions: PathInContainer: "/dev/deviceName" CgroupPermissions: "mrw" + DeviceRequest: + type: "object" + description: "A request for devices to be sent to device drivers" + properties: + Driver: + type: "string" + example: "nvidia" + Count: + type: "integer" + example: -1 + DeviceIDs: + type: "array" + items: + type: "string" + example: + - "0" + - "1" + - "GPU-fef8089b-4820-abfc-e83e-94318197576e" + Capabilities: + description: | + A list of capabilities; an OR list of AND lists of capabilities. + type: "array" + items: + type: "array" + items: + type: "string" + example: + # gpu AND nvidia AND compute + - ["gpu", "nvidia", "compute"] + Options: + description: | + Driver-specific options, specified as a key/value pairs. These options + are passed directly to the driver. + type: "object" + additionalProperties: + type: "string" + ThrottleDevice: type: "object" properties: @@ -238,11 +275,13 @@ definitions: - `bind` Mounts a file or directory from the host into the container. Must exist prior to creating the container. - `volume` Creates a volume with the given name and options (or uses a pre-existing volume with the same name and options). These are **not** removed when the container is removed. - `tmpfs` Create a tmpfs with the given options. The mount source cannot be specified for tmpfs. + - `npipe` Mounts a named pipe from the host into the container. Must exist prior to creating the container. type: "string" enum: - "bind" - "volume" - "tmpfs" + - "npipe" ReadOnly: description: "Whether the mount should be read-only." type: "boolean" @@ -263,6 +302,10 @@ definitions: - "rshared" - "slave" - "rslave" + NonRecursive: + description: "Disable recursive bind mount." + type: "boolean" + default: false VolumeOptions: description: "Optional configuration for the `volume` type." type: "object" @@ -415,14 +458,20 @@ definitions: items: type: "string" example: "c 13:* rwm" - DiskQuota: - description: "Disk limit (in bytes)." - type: "integer" - format: "int64" + DeviceRequests: + description: "a list of requests for devices to be sent to device drivers" + type: "array" + items: + $ref: "#/definitions/DeviceRequest" KernelMemory: description: "Kernel memory limit in bytes." type: "integer" format: "int64" + example: 209715200 + KernelMemoryTCP: + description: "Hard limit for kernel TCP buffer memory (in bytes)." + type: "integer" + format: "int64" MemoryReservation: description: "Memory soft limit in bytes." type: "integer" @@ -449,9 +498,11 @@ definitions: type: "boolean" x-nullable: true PidsLimit: - description: "Tune a container's pids limit. Set -1 for unlimited." + description: | + Tune a container's PIDs limit. Set `0` or `-1` for unlimited, or `null` to not change. type: "integer" format: "int64" + x-nullable: true Ulimits: description: | A list of resource limits to set in the container. For example: `{"Name": "nofile", "Soft": 1024, "Hard": 2048}`" @@ -634,16 +685,37 @@ definitions: $ref: "#/definitions/Mount" # Applicable to UNIX platforms + Capabilities: + type: "array" + description: | + A list of kernel capabilities to be available for container (this overrides the default set). + + Conflicts with options 'CapAdd' and 'CapDrop'" + items: + type: "string" CapAdd: type: "array" - description: "A list of kernel capabilities to add to the container." + description: "A list of kernel capabilities to add to the container. Conflicts with option 'Capabilities'" items: type: "string" CapDrop: type: "array" - description: "A list of kernel capabilities to drop from the container." + description: "A list of kernel capabilities to drop from the container. Conflicts with option 'Capabilities'" items: type: "string" + CgroupnsMode: + type: "string" + enum: + - "private" + - "host" + description: | + cgroup namespace mode for the container. Possible values are: + + - `"private"`: the container runs in its own private cgroup namespace + - `"host"`: use the host system's cgroup namespace + + If not specified, the daemon default is used, which can either be `"private"` + or `"host"`, depending on daemon version, kernel support and configuration. Dns: type: "array" description: "A list of DNS servers for the container to use." @@ -772,6 +844,16 @@ definitions: - "default" - "process" - "hyperv" + MaskedPaths: + type: "array" + description: "The list of paths to be masked inside the container (this overrides the default set of paths)" + items: + type: "string" + ReadonlyPaths: + type: "array" + description: "The list of paths to be set as read-only inside the container (this overrides the default set of paths)" + items: + type: "string" ContainerConfig: description: "Configuration for a container that is portable between hosts" @@ -1072,6 +1154,7 @@ definitions: type: "object" additionalProperties: type: "array" + x-nullable: true items: $ref: "#/definitions/PortBinding" example: @@ -1096,7 +1179,6 @@ definitions: PortBinding represents a binding between a host IP address and a host port. type: "object" - x-nullable: true properties: HostIp: description: "Host IP address that the container's port is mapped to." @@ -1463,11 +1545,9 @@ definitions: type: "string" Options: description: "Driver-specific options, specified as a map." - type: "array" - items: - type: "object" - additionalProperties: - type: "string" + type: "object" + additionalProperties: + type: "string" NetworkContainer: type: "object" @@ -1503,6 +1583,31 @@ definitions: aux: $ref: "#/definitions/ImageID" + BuildCache: + type: "object" + properties: + ID: + type: "string" + Parent: + type: "string" + Type: + type: "string" + Description: + type: "string" + InUse: + type: "boolean" + Shared: + type: "boolean" + Size: + type: "integer" + CreatedAt: + type: "integer" + LastUsedAt: + type: "integer" + x-nullable: true + UsageCount: + type: "integer" + ImageID: type: "object" description: "Image ID or Digest" @@ -2424,6 +2529,31 @@ definitions: description: "Whether there is currently a root CA rotation in progress for the swarm" type: "boolean" example: false + DataPathPort: + description: | + DataPathPort specifies the data path port number for data traffic. + Acceptable port range is 1024 to 49151. + If no port is set or is set to 0, the default port (4789) is used. + type: "integer" + format: "uint32" + default: 4789 + example: 4789 + DefaultAddrPool: + description: | + Default Address Pool specifies default subnet pools for global scope networks. + type: "array" + items: + type: "string" + format: "CIDR" + example: ["10.10.0.0/16", "20.20.0.0/16"] + SubnetSize: + description: | + SubnetSize specifies the subnet size of the networks created from the default subnet pool + type: "integer" + format: "uint32" + maximum: 29 + default: 24 + example: 24 JoinTokens: description: | @@ -2546,8 +2676,20 @@ definitions: type: "object" description: "CredentialSpec for managed service account (Windows only)" properties: + Config: + type: "string" + example: "0bt9dmxjvjiqermk6xrop3ekq" + description: | + Load credential spec from a Swarm Config with the given ID. + The specified config must also be present in the Configs field with the Runtime property set. + +


+ + + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and `CredentialSpec.Config` are mutually exclusive. File: type: "string" + example: "spec.json" description: | Load credential spec from this file. The file is read by the daemon, and must be present in the `CredentialSpecs` subdirectory in the docker data directory, which defaults to @@ -2557,7 +2699,7 @@ definitions:


- > **Note**: `CredentialSpec.File` and `CredentialSpec.Registry` are mutually exclusive. + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and `CredentialSpec.Config` are mutually exclusive. Registry: type: "string" description: | @@ -2569,7 +2711,7 @@ definitions:


- > **Note**: `CredentialSpec.File` and `CredentialSpec.Registry` are mutually exclusive. + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and `CredentialSpec.Config` are mutually exclusive. SELinuxContext: type: "object" description: "SELinux labels of the container" @@ -2680,7 +2822,12 @@ definitions: type: "object" properties: File: - description: "File represents a specific target that is backed by a file." + description: | + File represents a specific target that is backed by a file. + +


+ + > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive type: "object" properties: Name: @@ -2696,6 +2843,14 @@ definitions: description: "Mode represents the FileMode of the file." type: "integer" format: "uint32" + Runtime: + description: | + Runtime represents a target that is not mounted into the container but is used by the task + +


+ + > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive + type: "object" ConfigID: description: "ConfigID represents the ID of the specific config that we're referencing." type: "string" @@ -2711,6 +2866,34 @@ definitions: - "default" - "process" - "hyperv" + Init: + description: "Run an init inside the container that forwards signals and reaps processes. This field is omitted if empty, and the default (as configured on the daemon) is used." + type: "boolean" + x-nullable: true + Sysctls: + description: | + Set kernel namedspaced parameters (sysctls) in the container. + The Sysctls option on services accepts the same sysctls as the + are supported on containers. Note that while the same sysctls are + supported, no guarantees or checks are made about their + suitability for a clustered environment, and it's up to the user + to determine whether a given sysctl will work properly in a + Service. + type: "object" + additionalProperties: + type: "string" + # This option is not used by Windows containers + Capabilities: + type: "array" + description: | + A list of kernel capabilities to be available for container (this overrides the default set). + items: + type: "string" + example: + - "CAP_NET_RAW" + - "CAP_SYS_ADMIN" + - "CAP_SYS_CHROOT" + - "CAP_SYSLOG" NetworkAttachmentSpec: description: | Read-only spec type for non-swarm containers attached to swarm overlay @@ -2791,6 +2974,11 @@ definitions: SpreadDescriptor: "node.labels.datacenter" - Spread: SpreadDescriptor: "node.labels.rack" + MaxReplicas: + description: "Maximum number of replicas for per node (default value is 0, which is unlimited)" + type: "integer" + format: "int64" + default: 0 Platforms: description: | Platforms stores all the platforms that the service's image can @@ -3099,7 +3287,7 @@ definitions:


- - "ingress" makes the target port accessible on on every node, + - "ingress" makes the target port accessible on every node, regardless of whether there is a task for the service running on that node or not. - "host" bypasses the routing mesh and publish the port directly on @@ -3117,8 +3305,8 @@ definitions: type: "object" properties: Mode: - description: "The mode of resolution to use for internal load balancing - between tasks." + description: | + The mode of resolution to use for internal load balancing between tasks. type: "string" enum: - "vip" @@ -3591,6 +3779,10 @@ definitions: See [cpuset(7)](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt) type: "boolean" example: true + PidsLimit: + description: "Indicates if the host kernel has PID limit support enabled." + type: "boolean" + example: true OomKillDisable: description: "Indicates if OOM killer disable is supported on the host." type: "boolean" @@ -3638,7 +3830,7 @@ definitions: description: | The driver to use for managing cgroups. type: "string" - enum: ["cgroupfs", "systemd"] + enum: ["cgroupfs", "systemd", "none"] default: "cgroupfs" example: "cgroupfs" NEventsListener: @@ -3660,6 +3852,17 @@ definitions: or "Windows Server 2016 Datacenter" type: "string" example: "Alpine Linux v3.5" + OSVersion: + description: | + Version of the host's operating system + +


+ + > **Note**: The information returned in this field, including its + > very existence, and the formatting of values, should not be considered + > stable, and may change without notice. + type: "string" + example: "16.04" OSType: description: | Generic type of the operating system of the host, as returned by the @@ -3708,18 +3911,22 @@ definitions: description: | HTTP-proxy configured for the daemon. This value is obtained from the [`HTTP_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable. + Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL + are masked in the API response. Containers do not automatically inherit this configuration. type: "string" - example: "http://user:pass@proxy.corp.example.com:8080" + example: "http://xxxxx:xxxxx@proxy.corp.example.com:8080" HttpsProxy: description: | HTTPS-proxy configured for the daemon. This value is obtained from the [`HTTPS_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable. + Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL + are masked in the API response. Containers do not automatically inherit this configuration. type: "string" - example: "https://user:pass@proxy.corp.example.com:4443" + example: "https://xxxxx:xxxxx@proxy.corp.example.com:4443" NoProxy: description: | Comma-separated list of domain extensions for which no proxy should be @@ -3809,10 +4016,10 @@ definitions: $ref: "#/definitions/Runtime" default: runc: - path: "docker-runc" + path: "runc" example: runc: - path: "docker-runc" + path: "runc" runc-master: path: "/go/bin/runc" custom: @@ -3869,7 +4076,7 @@ definitions: SecurityOptions: description: | List of security features that are enabled on the daemon, such as - apparmor, seccomp, SELinux, and user-namespaces (userns). + apparmor, seccomp, SELinux, user-namespaces (userns), and rootless. Additional configuration options for each security feature may be present, and are included as a comma-separated list of key/value @@ -3882,6 +4089,28 @@ definitions: - "name=seccomp,profile=default" - "name=selinux" - "name=userns" + - "name=rootless" + ProductLicense: + description: | + Reports a summary of the product license on the daemon. + + If a commercial license has been applied to the daemon, information + such as number of nodes, and expiration are included. + type: "string" + example: "Community Engine" + Warnings: + description: | + List of warnings / informational messages about missing features, or + issues related to the daemon configuration. + + These messages can be printed by the client as information to the user. + type: "array" + items: + type: "string" + example: + - "WARNING: No memory limit support" + - "WARNING: bridge-nf-call-iptables is disabled" + - "WARNING: bridge-nf-call-ip6tables is disabled" # PluginsInfo is a temp struct holding Plugins name @@ -4415,9 +4644,9 @@ paths: parameters: - name: "name" in: "query" - description: "Assign the specified name to the container. Must match `/?[a-zA-Z0-9_-]+`." + description: "Assign the specified name to the container. Must match `/?[a-zA-Z0-9][a-zA-Z0-9_.-]+`." type: "string" - pattern: "/?[a-zA-Z0-9_-]+" + pattern: "^/?[a-zA-Z0-9][a-zA-Z0-9_.-]+$" - name: "body" in: "body" description: "Container to create" @@ -4502,7 +4731,7 @@ paths: OomKillDisable: false OomScoreAdj: 500 PidMode: "" - PidsLimit: -1 + PidsLimit: 0 PortBindings: 22/tcp: - HostPort: "11022" @@ -4644,7 +4873,7 @@ paths: Note that a running container can be _paused_. The `Running` and `Paused` booleans are not mutually exclusive: - When pausing a container (on Linux), the cgroups freezer is used to suspend + When pausing a container (on Linux), the freezer cgroup is used to suspend all processes in the container. Freezing the process requires the process to be running. As a result, paused containers are both `Running` _and_ `Paused`. @@ -4981,15 +5210,15 @@ paths: Note: This endpoint works only for containers with the `json-file` or `journald` logging driver. operationId: "ContainerLogs" responses: - 101: - description: "logs returned as a stream" - schema: - type: "string" - format: "binary" 200: - description: "logs returned as a string in response body" + description: | + logs returned as a stream in response body. + For the stream format, [see the documentation for the attach endpoint](#operation/ContainerAttach). + Note that unlike the attach endpoint, the logs endpoint does not upgrade the connection and does not + set Content-Type. schema: type: "string" + format: "binary" 404: description: "no such container" schema: @@ -5009,10 +5238,7 @@ paths: type: "string" - name: "follow" in: "query" - description: | - Return the logs as a stream. - - This will return a `101` HTTP response with a `Connection: upgrade` header, then hijack the HTTP connection to send raw output. For more information about hijacking and the stream format, [see the documentation for the attach endpoint](#operation/ContainerAttach). + description: "Keep connection after returning logs." type: "boolean" default: false - name: "stdout" @@ -5273,7 +5499,7 @@ paths: /containers/{id}/resize: post: summary: "Resize a container TTY" - description: "Resize the TTY for a container. You must restart the container for the resize to take effect." + description: "Resize the TTY for a container." operationId: "ContainerResize" consumes: - "application/octet-stream" @@ -5317,8 +5543,6 @@ paths: description: "no error" 304: description: "container already started" - schema: - $ref: "#/definitions/ErrorResponse" 404: description: "no such container" schema: @@ -5350,8 +5574,6 @@ paths: description: "no error" 304: description: "container already stopped" - schema: - $ref: "#/definitions/ErrorResponse" 404: description: "no such container" schema: @@ -5542,9 +5764,9 @@ paths: post: summary: "Pause a container" description: | - Use the cgroups freezer to suspend all processes in a container. + Use the freezer cgroup to suspend all processes in a container. - Traditionally, when suspending a process the `SIGSTOP` signal is used, which is observable by the process being suspended. With the cgroups freezer the process is unaware, and unable to capture, that it is being suspended, and subsequently resumed. + Traditionally, when suspending a process the `SIGSTOP` signal is used, which is observable by the process being suspended. With the freezer cgroup the process is unaware, and unable to capture, that it is being suspended, and subsequently resumed. operationId: "ContainerPause" responses: 204: @@ -5908,7 +6130,7 @@ paths: headers: X-Docker-Container-Path-Stat: type: "string" - description: "TODO" + description: "A base64 - encoded JSON object with some filesystem header information about the path" 400: description: "Bad parameter" schema: @@ -6027,12 +6249,17 @@ paths: in: "query" description: "If “1”, “true”, or “True” then it will be an error if unpacking the given content would cause an existing directory to be replaced with a non-directory and vice versa." type: "string" + - name: "copyUIDGID" + in: "query" + description: "If “1”, “true”, then it will copy UID/GID maps to the dest file or dir" + type: "string" - name: "inputStream" in: "body" required: true description: "The input stream must be a tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz." schema: type: "string" + format: "binary" tags: ["Container"] /containers/prune: post: @@ -6262,10 +6489,11 @@ paths: type: "string" - name: "networkmode" in: "query" - description: "Sets the networking mode for the run commands during - build. Supported standard values are: `bridge`, `host`, `none`, and - `container:`. Any other value is taken as a custom network's - name to which this container should connect to." + description: | + Sets the networking mode for the run commands during build. Supported + standard values are: `bridge`, `host`, `none`, and `container:`. + Any other value is taken as a custom network's name or ID to which this + container should connect to. type: "string" - name: "Content-type" in: "header" @@ -6305,6 +6533,11 @@ paths: description: "Target build stage" type: "string" default: "" + - name: "outputs" + in: "query" + description: "BuildKit output configuration" + type: "string" + default: "" responses: 200: description: "no error" @@ -6323,6 +6556,29 @@ paths: produces: - "application/json" operationId: "BuildPrune" + parameters: + - name: "keep-storage" + in: "query" + description: "Amount of disk space in bytes to keep for cache" + type: "integer" + format: "int64" + - name: "all" + in: "query" + type: "boolean" + description: "Remove all types of build cache" + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to process on the list of build cache objects. Available filters: + - `until=`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h') + - `id=` + - `parent=` + - `type=` + - `description=` + - `inuse` + - `shared` + - `private` responses: 200: description: "No error" @@ -6330,6 +6586,11 @@ paths: type: "object" title: "BuildPruneResponse" properties: + CachesDeleted: + type: "array" + items: + description: "ID of build cache object" + type: "string" SpaceReclaimed: description: "Disk space reclaimed in bytes" type: "integer" @@ -6958,9 +7219,57 @@ paths: API-Version: type: "string" description: "Max API Version the server supports" + BuildKit-Version: + type: "string" + description: "Default version of docker image builder" Docker-Experimental: type: "boolean" description: "If the server is running with experimental mode enabled" + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + headers: + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + tags: ["System"] + head: + summary: "Ping" + description: "This is a dummy endpoint you can use to test if the server is accessible." + operationId: "SystemPingHead" + produces: ["text/plain"] + responses: + 200: + description: "no error" + schema: + type: "string" + example: "(empty)" + headers: + API-Version: + type: "string" + description: "Max API Version the server supports" + BuildKit-Version: + type: "string" + description: "Default version of docker image builder" + Docker-Experimental: + type: "boolean" + description: "If the server is running with experimental mode enabled" + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" 500: description: "server error" schema: @@ -7161,6 +7470,10 @@ paths: type: "array" items: $ref: "#/definitions/Volume" + BuildCache: + type: "array" + items: + $ref: "#/definitions/BuildCache" example: LayersSize: 1092588 Images: @@ -7575,6 +7888,7 @@ paths: schema: type: "object" title: "VolumeListResponse" + description: "Volume list response" required: [Volumes, Warnings] properties: Volumes: @@ -7651,6 +7965,8 @@ paths: description: "Volume configuration" schema: type: "object" + description: "Volume configuration" + title: "VolumeConfig" properties: Name: description: "The new volume's name. If not specified, Docker generates a name." @@ -7851,6 +8167,10 @@ paths: description: | JSON encoded value of the filters (a `map[string][]string`) to process on the networks list. Available filters: + - `dangling=` When set to `true` (or `1`), returns all + networks that are not in use by a container. When set to `false` + (or `0`), only networks that are in use by one or more + containers are returned. - `driver=` Matches a network's driver. - `id=` Matches all or part of a network ID. - `label=` or `label==` of a network label. @@ -8568,6 +8888,7 @@ paths: - `label=` - `membership=`(`accepted`|`pending`)` - `name=` + - `node.label=` - `role=`(`manager`|`worker`)` type: "string" tags: ["Node"] @@ -8740,14 +9061,36 @@ paths: nodes in order to reach the containers running on this node. Using this parameter it is possible to separate the container data traffic from the management traffic of the cluster. type: "string" + DataPathPort: + description: | + DataPathPort specifies the data path port number for data traffic. + Acceptable port range is 1024 to 49151. + if no port is set or is set to 0, default port 4789 will be used. + type: "integer" + format: "uint32" + DefaultAddrPool: + description: | + Default Address Pool specifies default subnet pools for global scope networks. + type: "array" + items: + type: "string" + example: ["10.10.0.0/16", "20.20.0.0/16"] ForceNewCluster: description: "Force creation of a new swarm." type: "boolean" + SubnetSize: + description: | + SubnetSize specifies the subnet size of the networks created from the default subnet pool + type: "integer" + format: "uint32" Spec: $ref: "#/definitions/SwarmSpec" example: ListenAddr: "0.0.0.0:2377" AdvertiseAddr: "192.168.1.1:2377" + DataPathPort: 4789 + DefaultAddrPool: ["10.10.0.0/8", "20.20.0.0/8"] + SubnetSize: 24 ForceNewCluster: false Spec: Orchestration: {} @@ -8802,7 +9145,9 @@ paths: type: "string" RemoteAddrs: description: "Addresses of manager nodes already participating in the swarm." - type: "string" + type: "array" + items: + type: "string" JoinToken: description: "Secret token for joining this swarm." type: "string" @@ -9229,22 +9574,27 @@ paths: - name: "version" in: "query" - description: "The version number of the service object being updated. This is required to avoid conflicting writes." + description: "The version number of the service object being updated. + This is required to avoid conflicting writes. + This version number should be the value as currently set on the service *before* the update. + You can find the current version by calling `GET /services/{id}`" required: true type: "integer" - name: "registryAuthFrom" in: "query" + description: | + If the `X-Registry-Auth` header is not specified, this parameter + indicates where to find registry authorization credentials. type: "string" - description: "If the X-Registry-Auth header is not specified, this - parameter indicates where to find registry authorization credentials. The - valid values are `spec` and `previous-spec`." + enum: ["spec", "previous-spec"] default: "spec" - name: "rollback" in: "query" + description: | + Set to this parameter to `previous` to cause a server-side rollback + to the previous service spec. The supplied spec will be ignored in + this case. type: "string" - description: "Set to this parameter to `previous` to cause a - server-side rollback to the previous service spec. The supplied spec will be - ignored in this case." - name: "X-Registry-Auth" in: "header" description: "A base64-encoded auth configuration for pulling from private registries. [See the authentication section for details.](#section/Authentication)" @@ -9255,23 +9605,16 @@ paths: get: summary: "Get service logs" description: | - Get `stdout` and `stderr` logs from a service. + Get `stdout` and `stderr` logs from a service. See also [`/containers/{id}/logs`](#operation/ContainerLogs). - **Note**: This endpoint works only for services with the `json-file` or `journald` logging drivers. + **Note**: This endpoint works only for services with the `local`, `json-file` or `journald` logging drivers. operationId: "ServiceLogs" - produces: - - "application/vnd.docker.raw-stream" - - "application/json" responses: - 101: - description: "logs returned as a stream" - schema: - type: "string" - format: "binary" 200: - description: "logs returned as a string in response body" + description: "logs returned as a stream in response body" schema: type: "string" + format: "binary" 404: description: "no such service" schema: @@ -9300,10 +9643,7 @@ paths: default: false - name: "follow" in: "query" - description: | - Return the logs as a stream. - - This will return a `101` HTTP response with a `Connection: upgrade` header, then hijack the HTTP connection to send raw output. For more information about hijacking and the stream format, [see the documentation for the attach endpoint](#operation/ContainerAttach). + description: "Keep connection after returning logs." type: "boolean" default: false - name: "stdout" @@ -9512,23 +9852,16 @@ paths: get: summary: "Get task logs" description: | - Get `stdout` and `stderr` logs from a task. + Get `stdout` and `stderr` logs from a task. See also [`/containers/{id}/logs`](#operation/ContainerLogs). - **Note**: This endpoint works only for services with the `json-file` or `journald` logging drivers. + **Note**: This endpoint works only for services with the `local`, `json-file` or `journald` logging drivers. operationId: "TaskLogs" - produces: - - "application/vnd.docker.raw-stream" - - "application/json" responses: - 101: - description: "logs returned as a stream" - schema: - type: "string" - format: "binary" 200: - description: "logs returned as a string in response body" + description: "logs returned as a stream in response body" schema: type: "string" + format: "binary" 404: description: "no such task" schema: @@ -9557,10 +9890,7 @@ paths: default: false - name: "follow" in: "query" - description: | - Return the logs as a stream. - - This will return a `101` HTTP response with a `Connection: upgrade` header, then hijack the HTTP connection to send raw output. For more information about hijacking and the stream format, [see the documentation for the attach endpoint](#operation/ContainerAttach). + description: "Keep connection after returning logs." type: "boolean" default: false - name: "stdout" @@ -9588,6 +9918,7 @@ paths: description: "Only return this number of log lines from the end of the logs. Specify as an integer or `all` to output all log lines." type: "string" default: "all" + tags: ["Task"] /secrets: get: summary: "List secrets" diff --git a/vendor/github.com/docker/docker/api/types/client.go b/vendor/github.com/docker/docker/api/types/client.go index 3d2e057c9aa..4b9f50282b1 100644 --- a/vendor/github.com/docker/docker/api/types/client.go +++ b/vendor/github.com/docker/docker/api/types/client.go @@ -7,7 +7,7 @@ import ( "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" - "github.com/docker/go-units" + units "github.com/docker/go-units" ) // CheckpointCreateOptions holds parameters to create a checkpoint from a container @@ -181,8 +181,33 @@ type ImageBuildOptions struct { Target string SessionID string Platform string + // Version specifies the version of the unerlying builder to use + Version BuilderVersion + // BuildID is an optional identifier that can be passed together with the + // build request. The same identifier can be used to gracefully cancel the + // build with the cancel request. + BuildID string + // Outputs defines configurations for exporting build results. Only supported + // in BuildKit mode + Outputs []ImageBuildOutput } +// ImageBuildOutput defines configuration for exporting a build result +type ImageBuildOutput struct { + Type string + Attrs map[string]string +} + +// BuilderVersion sets the version of underlying builder to use +type BuilderVersion string + +const ( + // BuilderV1 is the first generation builder in docker daemon + BuilderV1 BuilderVersion = "1" + // BuilderBuildKit is builder based on moby/buildkit project + BuilderBuildKit = "2" +) + // ImageBuildResponse holds information // returned by a server after building // an image. diff --git a/vendor/github.com/docker/docker/api/types/configs.go b/vendor/github.com/docker/docker/api/types/configs.go index f6537a27f21..178e911a7af 100644 --- a/vendor/github.com/docker/docker/api/types/configs.go +++ b/vendor/github.com/docker/docker/api/types/configs.go @@ -55,3 +55,10 @@ type PluginEnableConfig struct { type PluginDisableConfig struct { ForceDisable bool } + +// NetworkListConfig stores the options available for listing networks +type NetworkListConfig struct { + // TODO(@cpuguy83): naming is hard, this is pulled from what was being used in the router before moving here + Detailed bool + Verbose bool +} diff --git a/vendor/github.com/docker/docker/api/types/container/config.go b/vendor/github.com/docker/docker/api/types/container/config.go index 89ad08c2346..f767195b94b 100644 --- a/vendor/github.com/docker/docker/api/types/container/config.go +++ b/vendor/github.com/docker/docker/api/types/container/config.go @@ -54,7 +54,7 @@ type Config struct { Env []string // List of environment variable to set in the container Cmd strslice.StrSlice // Command to run when starting the container Healthcheck *HealthConfig `json:",omitempty"` // Healthcheck describes how to check the container is healthy - ArgsEscaped bool `json:",omitempty"` // True if command is already escaped (Windows specific) + ArgsEscaped bool `json:",omitempty"` // True if command is already escaped (meaning treat as a command line) (Windows specific). Image string // Name of the image as it was passed by the operator (e.g. could be symbolic) Volumes map[string]struct{} // List of volumes (mounts) used for the container WorkingDir string // Current directory (PWD) in the command will be launched diff --git a/vendor/github.com/docker/docker/api/types/container/container_changes.go b/vendor/github.com/docker/docker/api/types/container/container_changes.go index c909d6ca3e9..222d141007e 100644 --- a/vendor/github.com/docker/docker/api/types/container/container_changes.go +++ b/vendor/github.com/docker/docker/api/types/container/container_changes.go @@ -1,4 +1,4 @@ -package container +package container // import "github.com/docker/docker/api/types/container" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE diff --git a/vendor/github.com/docker/docker/api/types/container/container_create.go b/vendor/github.com/docker/docker/api/types/container/container_create.go index 49efa0f2c09..1ec9c3728ba 100644 --- a/vendor/github.com/docker/docker/api/types/container/container_create.go +++ b/vendor/github.com/docker/docker/api/types/container/container_create.go @@ -1,4 +1,4 @@ -package container +package container // import "github.com/docker/docker/api/types/container" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE diff --git a/vendor/github.com/docker/docker/api/types/container/container_top.go b/vendor/github.com/docker/docker/api/types/container/container_top.go index ba41edcf3f8..f8a606687cb 100644 --- a/vendor/github.com/docker/docker/api/types/container/container_top.go +++ b/vendor/github.com/docker/docker/api/types/container/container_top.go @@ -1,4 +1,4 @@ -package container +package container // import "github.com/docker/docker/api/types/container" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE diff --git a/vendor/github.com/docker/docker/api/types/container/container_update.go b/vendor/github.com/docker/docker/api/types/container/container_update.go index 7630ae54cd6..33addedf779 100644 --- a/vendor/github.com/docker/docker/api/types/container/container_update.go +++ b/vendor/github.com/docker/docker/api/types/container/container_update.go @@ -1,4 +1,4 @@ -package container +package container // import "github.com/docker/docker/api/types/container" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE diff --git a/vendor/github.com/docker/docker/api/types/container/container_wait.go b/vendor/github.com/docker/docker/api/types/container/container_wait.go index 9e3910a6b42..94b6a20e159 100644 --- a/vendor/github.com/docker/docker/api/types/container/container_wait.go +++ b/vendor/github.com/docker/docker/api/types/container/container_wait.go @@ -1,4 +1,4 @@ -package container +package container // import "github.com/docker/docker/api/types/container" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE diff --git a/vendor/github.com/docker/docker/api/types/container/host_config.go b/vendor/github.com/docker/docker/api/types/container/host_config.go index 02271ecd985..209f33eb917 100644 --- a/vendor/github.com/docker/docker/api/types/container/host_config.go +++ b/vendor/github.com/docker/docker/api/types/container/host_config.go @@ -7,9 +7,32 @@ import ( "github.com/docker/docker/api/types/mount" "github.com/docker/docker/api/types/strslice" "github.com/docker/go-connections/nat" - "github.com/docker/go-units" + units "github.com/docker/go-units" ) +// CgroupnsMode represents the cgroup namespace mode of the container +type CgroupnsMode string + +// IsPrivate indicates whether the container uses its own private cgroup namespace +func (c CgroupnsMode) IsPrivate() bool { + return c == "private" +} + +// IsHost indicates whether the container shares the host's cgroup namespace +func (c CgroupnsMode) IsHost() bool { + return c == "host" +} + +// IsEmpty indicates whether the container cgroup namespace mode is unset +func (c CgroupnsMode) IsEmpty() bool { + return c == "" +} + +// Valid indicates whether the cgroup namespace mode is valid +func (c CgroupnsMode) Valid() bool { + return c.IsEmpty() || c.IsPrivate() || c.IsHost() +} + // Isolation represents the isolation technology of a container. The supported // values are platform specific type Isolation string @@ -244,6 +267,16 @@ func (n PidMode) Container() string { return "" } +// DeviceRequest represents a request for devices from a device driver. +// Used by GPU device drivers. +type DeviceRequest struct { + Driver string // Name of device driver + Count int // Number of devices to request (-1 = All) + DeviceIDs []string // List of device IDs as recognizable by the device driver + Capabilities [][]string // An OR list of AND lists of device capabilities (e.g. "gpu") + Options map[string]string // Options to pass onto the device driver +} + // DeviceMapping represents the device mapping between the host and the container. type DeviceMapping struct { PathOnHost string @@ -327,13 +360,14 @@ type Resources struct { CpusetMems string // CpusetMems 0-2, 0,1 Devices []DeviceMapping // List of devices to map inside the container DeviceCgroupRules []string // List of rule to be added to the device cgroup - DiskQuota int64 // Disk limit (in bytes) + DeviceRequests []DeviceRequest // List of device requests for device drivers KernelMemory int64 // Kernel memory limit (in bytes) + KernelMemoryTCP int64 // Hard limit for kernel TCP buffer memory (in bytes) MemoryReservation int64 // Memory soft limit (in bytes) MemorySwap int64 // Total memory usage (memory + swap); set `-1` to enable unlimited swap MemorySwappiness *int64 // Tuning container memory swappiness behaviour OomKillDisable *bool // Whether to disable OOM Killer or not - PidsLimit int64 // Setting pids limit for a container + PidsLimit *int64 // Setting PIDs limit for a container; Set `0` or `-1` for unlimited, or `null` to not change. Ulimits []*units.Ulimit // List of ulimits to be set in the container // Applicable to Windows @@ -369,6 +403,8 @@ type HostConfig struct { // Applicable to UNIX platforms CapAdd strslice.StrSlice // List of kernel capabilities to add to the container CapDrop strslice.StrSlice // List of kernel capabilities to remove from the container + Capabilities []string `json:"Capabilities"` // List of kernel capabilities to be available for container (this overrides the default set) + CgroupnsMode CgroupnsMode // Cgroup namespace mode to use for the container DNS []string `json:"Dns"` // List of DNS server to lookup DNSOptions []string `json:"DnsOptions"` // List of DNSOption to look for DNSSearch []string `json:"DnsSearch"` // List of DNSSearch to look for @@ -401,6 +437,12 @@ type HostConfig struct { // Mounts specs used by the container Mounts []mount.Mount `json:",omitempty"` + // MaskedPaths is the list of paths to be masked inside the container (this overrides the default set of paths) + MaskedPaths []string + + // ReadonlyPaths is the list of paths to be set as read-only inside the container (this overrides the default set of paths) + ReadonlyPaths []string + // Run a custom init inside the container, if null, use the daemon's configured settings Init *bool `json:",omitempty"` } diff --git a/vendor/github.com/docker/docker/api/types/error_response_ext.go b/vendor/github.com/docker/docker/api/types/error_response_ext.go new file mode 100644 index 00000000000..f84f034cd54 --- /dev/null +++ b/vendor/github.com/docker/docker/api/types/error_response_ext.go @@ -0,0 +1,6 @@ +package types + +// Error returns the error message +func (e ErrorResponse) Error() string { + return e.Message +} diff --git a/vendor/github.com/docker/docker/api/types/filters/parse.go b/vendor/github.com/docker/docker/api/types/filters/parse.go index a41e3d8d96a..2e24e769c10 100644 --- a/vendor/github.com/docker/docker/api/types/filters/parse.go +++ b/vendor/github.com/docker/docker/api/types/filters/parse.go @@ -5,7 +5,6 @@ package filters // import "github.com/docker/docker/api/types/filters" import ( "encoding/json" - "errors" "regexp" "strings" @@ -37,41 +36,6 @@ func NewArgs(initialArgs ...KeyValuePair) Args { return args } -// ParseFlag parses a key=value string and adds it to an Args. -// -// Deprecated: Use Args.Add() -func ParseFlag(arg string, prev Args) (Args, error) { - filters := prev - if len(arg) == 0 { - return filters, nil - } - - if !strings.Contains(arg, "=") { - return filters, ErrBadFormat - } - - f := strings.SplitN(arg, "=", 2) - - name := strings.ToLower(strings.TrimSpace(f[0])) - value := strings.TrimSpace(f[1]) - - filters.Add(name, value) - - return filters, nil -} - -// ErrBadFormat is an error returned when a filter is not in the form key=value -// -// Deprecated: this error will be removed in a future version -var ErrBadFormat = errors.New("bad format of filter (expected name=value)") - -// ToParam encodes the Args as args JSON encoded string -// -// Deprecated: use ToJSON -func ToParam(a Args) (string, error) { - return ToJSON(a) -} - // MarshalJSON returns a JSON byte representation of the Args func (args Args) MarshalJSON() ([]byte, error) { if len(args.fields) == 0 { @@ -93,7 +57,7 @@ func ToJSON(a Args) (string, error) { // then the encoded format will use an older legacy format where the values are a // list of strings, instead of a set. // -// Deprecated: Use ToJSON +// Deprecated: do not use in any new code; use ToJSON instead func ToParamWithVersion(version string, a Args) (string, error) { if a.Len() == 0 { return "", nil @@ -107,13 +71,6 @@ func ToParamWithVersion(version string, a Args) (string, error) { return ToJSON(a) } -// FromParam decodes a JSON encoded string into Args -// -// Deprecated: use FromJSON -func FromParam(p string) (Args, error) { - return FromJSON(p) -} - // FromJSON decodes a JSON encoded string into Args func FromJSON(p string) (Args, error) { args := NewArgs() @@ -275,14 +232,6 @@ func (args Args) FuzzyMatch(key, source string) bool { return false } -// Include returns true if the key exists in the mapping -// -// Deprecated: use Contains -func (args Args) Include(field string) bool { - _, ok := args.fields[field] - return ok -} - // Contains returns true if the key exists in the mapping func (args Args) Contains(field string) bool { _, ok := args.fields[field] @@ -323,6 +272,22 @@ func (args Args) WalkValues(field string, op func(value string) error) error { return nil } +// Clone returns a copy of args. +func (args Args) Clone() (newArgs Args) { + newArgs.fields = make(map[string]map[string]bool, len(args.fields)) + for k, m := range args.fields { + var mm map[string]bool + if m != nil { + mm = make(map[string]bool, len(m)) + for kk, v := range m { + mm[kk] = v + } + } + newArgs.fields[k] = mm + } + return newArgs +} + func deprecatedArgs(d map[string][]string) map[string]map[string]bool { m := map[string]map[string]bool{} for k, v := range d { diff --git a/vendor/github.com/docker/docker/api/types/image/image_history.go b/vendor/github.com/docker/docker/api/types/image/image_history.go index d6b354bcdf3..b5a7a0c4901 100644 --- a/vendor/github.com/docker/docker/api/types/image/image_history.go +++ b/vendor/github.com/docker/docker/api/types/image/image_history.go @@ -1,4 +1,4 @@ -package image +package image // import "github.com/docker/docker/api/types/image" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE diff --git a/vendor/github.com/docker/docker/api/types/mount/mount.go b/vendor/github.com/docker/docker/api/types/mount/mount.go index 3fef974df88..ab4446b38f6 100644 --- a/vendor/github.com/docker/docker/api/types/mount/mount.go +++ b/vendor/github.com/docker/docker/api/types/mount/mount.go @@ -79,7 +79,8 @@ const ( // BindOptions defines options specific to mounts of type "bind". type BindOptions struct { - Propagation Propagation `json:",omitempty"` + Propagation Propagation `json:",omitempty"` + NonRecursive bool `json:",omitempty"` } // VolumeOptions represents the options for a mount of type volume. diff --git a/vendor/github.com/docker/docker/api/types/network/network.go b/vendor/github.com/docker/docker/api/types/network/network.go index 761d0b34f2f..71e97338fdc 100644 --- a/vendor/github.com/docker/docker/api/types/network/network.go +++ b/vendor/github.com/docker/docker/api/types/network/network.go @@ -1,4 +1,8 @@ package network // import "github.com/docker/docker/api/types/network" +import ( + "github.com/docker/docker/api/types/filters" + "github.com/docker/docker/errdefs" +) // Address represents an IP address type Address struct { @@ -106,3 +110,18 @@ type NetworkingConfig struct { type ConfigReference struct { Network string } + +var acceptedFilters = map[string]bool{ + "dangling": true, + "driver": true, + "id": true, + "label": true, + "name": true, + "scope": true, + "type": true, +} + +// ValidateFilters validates the list of filter args with the available filters. +func ValidateFilters(filter filters.Args) error { + return errdefs.InvalidParameter(filter.Validate(acceptedFilters)) +} diff --git a/vendor/github.com/docker/docker/api/types/registry/registry.go b/vendor/github.com/docker/docker/api/types/registry/registry.go index 8789ad3b321..53e47084c8d 100644 --- a/vendor/github.com/docker/docker/api/types/registry/registry.go +++ b/vendor/github.com/docker/docker/api/types/registry/registry.go @@ -4,7 +4,7 @@ import ( "encoding/json" "net" - "github.com/opencontainers/image-spec/specs-go/v1" + v1 "github.com/opencontainers/image-spec/specs-go/v1" ) // ServiceConfig stores daemon registry services configuration. diff --git a/vendor/github.com/docker/docker/api/types/seccomp.go b/vendor/github.com/docker/docker/api/types/seccomp.go index 67a41e1a89e..2259c6be1e6 100644 --- a/vendor/github.com/docker/docker/api/types/seccomp.go +++ b/vendor/github.com/docker/docker/api/types/seccomp.go @@ -77,8 +77,9 @@ type Arg struct { // Filter is used to conditionally apply Seccomp rules type Filter struct { - Caps []string `json:"caps,omitempty"` - Arches []string `json:"arches,omitempty"` + Caps []string `json:"caps,omitempty"` + Arches []string `json:"arches,omitempty"` + MinKernel string `json:"minKernel,omitempty"` } // Syscall is used to match a group of syscalls in Seccomp diff --git a/vendor/github.com/docker/docker/api/types/stats.go b/vendor/github.com/docker/docker/api/types/stats.go index 60175c06136..20daebed14b 100644 --- a/vendor/github.com/docker/docker/api/types/stats.go +++ b/vendor/github.com/docker/docker/api/types/stats.go @@ -120,7 +120,7 @@ type NetworkStats struct { RxBytes uint64 `json:"rx_bytes"` // Packets received. Windows and Linux. RxPackets uint64 `json:"rx_packets"` - // Received errors. Not used on Windows. Note that we dont `omitempty` this + // Received errors. Not used on Windows. Note that we don't `omitempty` this // field as it is expected in the >=v1.21 API stats structure. RxErrors uint64 `json:"rx_errors"` // Incoming packets dropped. Windows and Linux. @@ -129,7 +129,7 @@ type NetworkStats struct { TxBytes uint64 `json:"tx_bytes"` // Packets sent. Windows and Linux. TxPackets uint64 `json:"tx_packets"` - // Sent errors. Not used on Windows. Note that we dont `omitempty` this + // Sent errors. Not used on Windows. Note that we don't `omitempty` this // field as it is expected in the >=v1.21 API stats structure. TxErrors uint64 `json:"tx_errors"` // Outgoing packets dropped. Windows and Linux. diff --git a/vendor/github.com/docker/docker/api/types/swarm/config.go b/vendor/github.com/docker/docker/api/types/swarm/config.go index a1555cf43ee..16202ccce61 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/config.go +++ b/vendor/github.com/docker/docker/api/types/swarm/config.go @@ -27,9 +27,14 @@ type ConfigReferenceFileTarget struct { Mode os.FileMode } +// ConfigReferenceRuntimeTarget is a target for a config specifying that it +// isn't mounted into the container but instead has some other purpose. +type ConfigReferenceRuntimeTarget struct{} + // ConfigReference is a reference to a config in swarm type ConfigReference struct { - File *ConfigReferenceFileTarget + File *ConfigReferenceFileTarget `json:",omitempty"` + Runtime *ConfigReferenceRuntimeTarget `json:",omitempty"` ConfigID string ConfigName string } diff --git a/vendor/github.com/docker/docker/api/types/swarm/container.go b/vendor/github.com/docker/docker/api/types/swarm/container.go index 0041653c9d1..5bbedfcf682 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/container.go +++ b/vendor/github.com/docker/docker/api/types/swarm/container.go @@ -33,6 +33,7 @@ type SELinuxContext struct { // CredentialSpec for managed service account (Windows only) type CredentialSpec struct { + Config string File string Registry string } @@ -55,6 +56,7 @@ type ContainerSpec struct { User string `json:",omitempty"` Groups []string `json:",omitempty"` Privileges *Privileges `json:",omitempty"` + Init *bool `json:",omitempty"` StopSignal string `json:",omitempty"` TTY bool `json:",omitempty"` OpenStdin bool `json:",omitempty"` @@ -65,9 +67,11 @@ type ContainerSpec struct { // The format of extra hosts on swarmkit is specified in: // http://man7.org/linux/man-pages/man5/hosts.5.html // IP_address canonical_hostname [aliases...] - Hosts []string `json:",omitempty"` - DNSConfig *DNSConfig `json:",omitempty"` - Secrets []*SecretReference `json:",omitempty"` - Configs []*ConfigReference `json:",omitempty"` - Isolation container.Isolation `json:",omitempty"` + Hosts []string `json:",omitempty"` + DNSConfig *DNSConfig `json:",omitempty"` + Secrets []*SecretReference `json:",omitempty"` + Configs []*ConfigReference `json:",omitempty"` + Isolation container.Isolation `json:",omitempty"` + Sysctls map[string]string `json:",omitempty"` + Capabilities []string `json:",omitempty"` } diff --git a/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.pb.go b/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.pb.go index 1fdc9b04361..e45045866a6 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.pb.go +++ b/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.pb.go @@ -1,6 +1,5 @@ -// Code generated by protoc-gen-gogo. +// Code generated by protoc-gen-gogo. DO NOT EDIT. // source: plugin.proto -// DO NOT EDIT! /* Package runtime is a generated protocol buffer package. @@ -38,6 +37,7 @@ type PluginSpec struct { Remote string `protobuf:"bytes,2,opt,name=remote,proto3" json:"remote,omitempty"` Privileges []*PluginPrivilege `protobuf:"bytes,3,rep,name=privileges" json:"privileges,omitempty"` Disabled bool `protobuf:"varint,4,opt,name=disabled,proto3" json:"disabled,omitempty"` + Env []string `protobuf:"bytes,5,rep,name=env" json:"env,omitempty"` } func (m *PluginSpec) Reset() { *m = PluginSpec{} } @@ -73,6 +73,13 @@ func (m *PluginSpec) GetDisabled() bool { return false } +func (m *PluginSpec) GetEnv() []string { + if m != nil { + return m.Env + } + return nil +} + // PluginPrivilege describes a permission the user has to accept // upon installing a plugin. type PluginPrivilege struct { @@ -160,6 +167,21 @@ func (m *PluginSpec) MarshalTo(dAtA []byte) (int, error) { } i++ } + if len(m.Env) > 0 { + for _, s := range m.Env { + dAtA[i] = 0x2a + i++ + l = len(s) + for l >= 1<<7 { + dAtA[i] = uint8(uint64(l)&0x7f | 0x80) + l >>= 7 + i++ + } + dAtA[i] = uint8(l) + i++ + i += copy(dAtA[i:], s) + } + } return i, nil } @@ -208,24 +230,6 @@ func (m *PluginPrivilege) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func encodeFixed64Plugin(dAtA []byte, offset int, v uint64) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - dAtA[offset+4] = uint8(v >> 32) - dAtA[offset+5] = uint8(v >> 40) - dAtA[offset+6] = uint8(v >> 48) - dAtA[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Plugin(dAtA []byte, offset int, v uint32) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - return offset + 4 -} func encodeVarintPlugin(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -255,6 +259,12 @@ func (m *PluginSpec) Size() (n int) { if m.Disabled { n += 2 } + if len(m.Env) > 0 { + for _, s := range m.Env { + l = len(s) + n += 1 + l + sovPlugin(uint64(l)) + } + } return n } @@ -429,6 +439,35 @@ func (m *PluginSpec) Unmarshal(dAtA []byte) error { } } m.Disabled = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Env", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPlugin + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPlugin + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Env = append(m.Env, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipPlugin(dAtA[iNdEx:]) @@ -695,18 +734,21 @@ var ( func init() { proto.RegisterFile("plugin.proto", fileDescriptorPlugin) } var fileDescriptorPlugin = []byte{ - // 196 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0xc8, 0x29, 0x4d, - 0xcf, 0xcc, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x57, 0x6a, 0x63, 0xe4, 0xe2, 0x0a, 0x00, 0x0b, - 0x04, 0x17, 0xa4, 0x26, 0x0b, 0x09, 0x71, 0xb1, 0xe4, 0x25, 0xe6, 0xa6, 0x4a, 0x30, 0x2a, 0x30, - 0x6a, 0x70, 0x06, 0x81, 0xd9, 0x42, 0x62, 0x5c, 0x6c, 0x45, 0xa9, 0xb9, 0xf9, 0x25, 0xa9, 0x12, - 0x4c, 0x60, 0x51, 0x28, 0x4f, 0xc8, 0x80, 0x8b, 0xab, 0xa0, 0x28, 0xb3, 0x2c, 0x33, 0x27, 0x35, - 0x3d, 0xb5, 0x58, 0x82, 0x59, 0x81, 0x59, 0x83, 0xdb, 0x48, 0x40, 0x0f, 0x62, 0x58, 0x00, 0x4c, - 0x22, 0x08, 0x49, 0x8d, 0x90, 0x14, 0x17, 0x47, 0x4a, 0x66, 0x71, 0x62, 0x52, 0x4e, 0x6a, 0x8a, - 0x04, 0x8b, 0x02, 0xa3, 0x06, 0x47, 0x10, 0x9c, 0xaf, 0x14, 0xcb, 0xc5, 0x8f, 0xa6, 0x15, 0xab, - 0x63, 0x14, 0xb8, 0xb8, 0x53, 0x52, 0x8b, 0x93, 0x8b, 0x32, 0x0b, 0x4a, 0x32, 0xf3, 0xf3, 0xa0, - 0x2e, 0x42, 0x16, 0x12, 0x12, 0xe1, 0x62, 0x2d, 0x4b, 0xcc, 0x29, 0x4d, 0x05, 0xbb, 0x88, 0x33, - 0x08, 0xc2, 0x71, 0xe2, 0x39, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, - 0x18, 0x93, 0xd8, 0xc0, 0x9e, 0x37, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x84, 0xad, 0x79, - 0x0c, 0x01, 0x00, 0x00, + // 256 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x4d, 0x4b, 0xc3, 0x30, + 0x18, 0xc7, 0x89, 0xdd, 0xc6, 0xfa, 0x4c, 0x70, 0x04, 0x91, 0xe2, 0xa1, 0x94, 0x9d, 0x7a, 0x6a, + 0x45, 0x2f, 0x82, 0x37, 0x0f, 0x9e, 0x47, 0xbc, 0x09, 0x1e, 0xd2, 0xf6, 0xa1, 0x06, 0x9b, 0x17, + 0x92, 0xb4, 0xe2, 0x37, 0xf1, 0x23, 0x79, 0xf4, 0x23, 0x48, 0x3f, 0x89, 0x98, 0x75, 0x32, 0x64, + 0xa7, 0xff, 0x4b, 0xc2, 0x9f, 0x1f, 0x0f, 0x9c, 0x9a, 0xae, 0x6f, 0x85, 0x2a, 0x8c, 0xd5, 0x5e, + 0x6f, 0x3e, 0x08, 0xc0, 0x36, 0x14, 0x8f, 0x06, 0x6b, 0x4a, 0x61, 0xa6, 0xb8, 0xc4, 0x84, 0x64, + 0x24, 0x8f, 0x59, 0xf0, 0xf4, 0x02, 0x16, 0x16, 0xa5, 0xf6, 0x98, 0x9c, 0x84, 0x76, 0x4a, 0xf4, + 0x0a, 0xc0, 0x58, 0x31, 0x88, 0x0e, 0x5b, 0x74, 0x49, 0x94, 0x45, 0xf9, 0xea, 0x7a, 0x5d, 0xec, + 0xc6, 0xb6, 0xfb, 0x07, 0x76, 0xf0, 0x87, 0x5e, 0xc2, 0xb2, 0x11, 0x8e, 0x57, 0x1d, 0x36, 0xc9, + 0x2c, 0x23, 0xf9, 0x92, 0xfd, 0x65, 0xba, 0x86, 0x08, 0xd5, 0x90, 0xcc, 0xb3, 0x28, 0x8f, 0xd9, + 0xaf, 0xdd, 0x3c, 0xc3, 0xd9, 0xbf, 0xb1, 0xa3, 0x78, 0x19, 0xac, 0x1a, 0x74, 0xb5, 0x15, 0xc6, + 0x0b, 0xad, 0x26, 0xc6, 0xc3, 0x8a, 0x9e, 0xc3, 0x7c, 0xe0, 0x5d, 0x8f, 0x81, 0x31, 0x66, 0xbb, + 0x70, 0xff, 0xf0, 0x39, 0xa6, 0xe4, 0x6b, 0x4c, 0xc9, 0xf7, 0x98, 0x92, 0xa7, 0xdb, 0x56, 0xf8, + 0x97, 0xbe, 0x2a, 0x6a, 0x2d, 0xcb, 0x46, 0xd7, 0xaf, 0x68, 0xf7, 0xc2, 0x8d, 0x28, 0xfd, 0xbb, + 0x41, 0x57, 0xba, 0x37, 0x6e, 0x65, 0x69, 0x7b, 0xe5, 0x85, 0xc4, 0xbb, 0x49, 0xab, 0x45, 0x38, + 0xe4, 0xcd, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x99, 0xa8, 0xd9, 0x9b, 0x58, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.proto b/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.proto index 6d63b7783fd..9ef169046b4 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.proto +++ b/vendor/github.com/docker/docker/api/types/swarm/runtime/plugin.proto @@ -9,6 +9,7 @@ message PluginSpec { string remote = 2; repeated PluginPrivilege privileges = 3; bool disabled = 4; + repeated string env = 5; } // PluginPrivilege describes a permission the user has to accept diff --git a/vendor/github.com/docker/docker/api/types/swarm/swarm.go b/vendor/github.com/docker/docker/api/types/swarm/swarm.go index 1b111d725b8..b25f9996462 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/swarm.go +++ b/vendor/github.com/docker/docker/api/types/swarm/swarm.go @@ -1,6 +1,8 @@ package swarm // import "github.com/docker/docker/api/types/swarm" -import "time" +import ( + "time" +) // ClusterInfo represents info about the cluster for outputting in "info" // it contains the same information as "Swarm", but without the JoinTokens @@ -10,6 +12,9 @@ type ClusterInfo struct { Spec Spec TLSInfo TLSInfo RootRotationInProgress bool + DefaultAddrPool []string + SubnetSize uint32 + DataPathPort uint32 } // Swarm represents a swarm. @@ -149,10 +154,13 @@ type InitRequest struct { ListenAddr string AdvertiseAddr string DataPathAddr string + DataPathPort uint32 ForceNewCluster bool Spec Spec AutoLockManagers bool Availability NodeAvailability + DefaultAddrPool []string + SubnetSize uint32 } // JoinRequest is the request used to join a swarm. @@ -201,6 +209,8 @@ type Info struct { Managers int `json:",omitempty"` Cluster *ClusterInfo `json:",omitempty"` + + Warnings []string `json:",omitempty"` } // Peer represents a peer. diff --git a/vendor/github.com/docker/docker/api/types/swarm/task.go b/vendor/github.com/docker/docker/api/types/swarm/task.go index b35605d12fd..d5a57df5db5 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/task.go +++ b/vendor/github.com/docker/docker/api/types/swarm/task.go @@ -127,6 +127,7 @@ type ResourceRequirements struct { type Placement struct { Constraints []string `json:",omitempty"` Preferences []PlacementPreference `json:",omitempty"` + MaxReplicas uint64 `json:",omitempty"` // Platforms stores all the platforms that the image can run on. // This field is used in the platform filter for scheduling. If empty, diff --git a/vendor/github.com/docker/docker/api/types/types.go b/vendor/github.com/docker/docker/api/types/types.go index 729f4eb6c49..b13d9c4c7df 100644 --- a/vendor/github.com/docker/docker/api/types/types.go +++ b/vendor/github.com/docker/docker/api/types/types.go @@ -102,9 +102,10 @@ type ContainerStats struct { // Ping contains response of Engine API: // GET "/_ping" type Ping struct { - APIVersion string - OSType string - Experimental bool + APIVersion string + OSType string + Experimental bool + BuilderVersion BuilderVersion } // ComponentVersion describes the version information for a specific component. @@ -157,10 +158,12 @@ type Info struct { MemoryLimit bool SwapLimit bool KernelMemory bool + KernelMemoryTCP bool CPUCfsPeriod bool `json:"CpuCfsPeriod"` CPUCfsQuota bool `json:"CpuCfsQuota"` CPUShares bool CPUSet bool + PidsLimit bool IPv4Forwarding bool BridgeNfIptables bool BridgeNfIP6tables bool `json:"BridgeNfIp6tables"` @@ -174,6 +177,7 @@ type Info struct { NEventsListener int KernelVersion string OperatingSystem string + OSVersion string OSType string Architecture string IndexServerAddress string @@ -204,6 +208,8 @@ type Info struct { RuncCommit Commit InitCommit Commit SecurityOptions []string + ProductLicense string `json:",omitempty"` + Warnings []string } // KeyValue holds a key/value pair @@ -512,7 +518,8 @@ type DiskUsage struct { Images []*ImageSummary Containers []*Container Volumes []*Volume - BuilderSize int64 + BuildCache []*BuildCache + BuilderSize int64 // deprecated } // ContainersPruneReport contains the response for Engine API: @@ -539,6 +546,7 @@ type ImagesPruneReport struct { // BuildCachePruneReport contains the response for Engine API: // POST "/build/prune" type BuildCachePruneReport struct { + CachesDeleted []string SpaceReclaimed uint64 } @@ -585,3 +593,24 @@ type PushResult struct { type BuildResult struct { ID string } + +// BuildCache contains information about a build cache record +type BuildCache struct { + ID string + Parent string + Type string + Description string + InUse bool + Shared bool + Size int64 + CreatedAt time.Time + LastUsedAt *time.Time + UsageCount int +} + +// BuildCachePruneOptions hold parameters to prune the build cache +type BuildCachePruneOptions struct { + All bool + KeepStorage int64 + Filters filters.Args +} diff --git a/vendor/github.com/docker/docker/api/types/volume/volume_create.go b/vendor/github.com/docker/docker/api/types/volume/volume_create.go index 539e9b97d90..0c3772d3adf 100644 --- a/vendor/github.com/docker/docker/api/types/volume/volume_create.go +++ b/vendor/github.com/docker/docker/api/types/volume/volume_create.go @@ -1,4 +1,4 @@ -package volume +package volume // import "github.com/docker/docker/api/types/volume" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE @@ -7,7 +7,7 @@ package volume // See hack/generate-swagger-api.sh // ---------------------------------------------------------------------------- -// VolumeCreateBody +// VolumeCreateBody Volume configuration // swagger:model VolumeCreateBody type VolumeCreateBody struct { diff --git a/vendor/github.com/docker/docker/api/types/volume/volume_list.go b/vendor/github.com/docker/docker/api/types/volume/volume_list.go index 1bb279dbb3f..45c3c1c9aec 100644 --- a/vendor/github.com/docker/docker/api/types/volume/volume_list.go +++ b/vendor/github.com/docker/docker/api/types/volume/volume_list.go @@ -1,4 +1,4 @@ -package volume +package volume // import "github.com/docker/docker/api/types/volume" // ---------------------------------------------------------------------------- // DO NOT EDIT THIS FILE @@ -9,7 +9,7 @@ package volume import "github.com/docker/docker/api/types" -// VolumeListOKBody +// VolumeListOKBody Volume list response // swagger:model VolumeListOKBody type VolumeListOKBody struct { diff --git a/vendor/github.com/docker/docker/client/README.md b/vendor/github.com/docker/docker/client/README.md index 059dfb3ce7b..992f18117df 100644 --- a/vendor/github.com/docker/docker/client/README.md +++ b/vendor/github.com/docker/docker/client/README.md @@ -16,7 +16,7 @@ import ( ) func main() { - cli, err := client.NewEnvClient() + cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { panic(err) } diff --git a/vendor/github.com/docker/docker/client/build_cancel.go b/vendor/github.com/docker/docker/client/build_cancel.go new file mode 100644 index 00000000000..3aae43e3d17 --- /dev/null +++ b/vendor/github.com/docker/docker/client/build_cancel.go @@ -0,0 +1,16 @@ +package client // import "github.com/docker/docker/client" + +import ( + "context" + "net/url" +) + +// BuildCancel requests the daemon to cancel ongoing build request +func (cli *Client) BuildCancel(ctx context.Context, id string) error { + query := url.Values{} + query.Set("id", id) + + serverResp, err := cli.post(ctx, "/build/cancel", query, nil, nil) + ensureReaderClosed(serverResp) + return err +} diff --git a/vendor/github.com/docker/docker/client/build_prune.go b/vendor/github.com/docker/docker/client/build_prune.go index c4772a04e7c..397d67cdcf1 100644 --- a/vendor/github.com/docker/docker/client/build_prune.go +++ b/vendor/github.com/docker/docker/client/build_prune.go @@ -4,24 +4,39 @@ import ( "context" "encoding/json" "fmt" + "net/url" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/filters" + "github.com/pkg/errors" ) // BuildCachePrune requests the daemon to delete unused cache data -func (cli *Client) BuildCachePrune(ctx context.Context) (*types.BuildCachePruneReport, error) { +func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) { if err := cli.NewVersionError("1.31", "build prune"); err != nil { return nil, err } report := types.BuildCachePruneReport{} - serverResp, err := cli.post(ctx, "/build/prune", nil, nil, nil) + query := url.Values{} + if opts.All { + query.Set("all", "1") + } + query.Set("keep-storage", fmt.Sprintf("%d", opts.KeepStorage)) + filters, err := filters.ToJSON(opts.Filters) if err != nil { - return nil, err + return nil, errors.Wrap(err, "prune could not marshal filters option") } + query.Set("filters", filters) + + serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil) defer ensureReaderClosed(serverResp) + if err != nil { + return nil, err + } + if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { return nil, fmt.Errorf("Error retrieving disk usage: %v", err) } diff --git a/vendor/github.com/docker/docker/client/checkpoint_list.go b/vendor/github.com/docker/docker/client/checkpoint_list.go index 2b73fb553f2..66d46dd161b 100644 --- a/vendor/github.com/docker/docker/client/checkpoint_list.go +++ b/vendor/github.com/docker/docker/client/checkpoint_list.go @@ -18,11 +18,11 @@ func (cli *Client) CheckpointList(ctx context.Context, container string, options } resp, err := cli.get(ctx, "/containers/"+container+"/checkpoints", query, nil) + defer ensureReaderClosed(resp) if err != nil { return checkpoints, wrapResponseError(err, resp, "container", container) } err = json.NewDecoder(resp.body).Decode(&checkpoints) - ensureReaderClosed(resp) return checkpoints, err } diff --git a/vendor/github.com/docker/docker/client/client.go b/vendor/github.com/docker/docker/client/client.go index b874b3b522b..0649a69cc78 100644 --- a/vendor/github.com/docker/docker/client/client.go +++ b/vendor/github.com/docker/docker/client/client.go @@ -23,7 +23,7 @@ For example, to list running containers (the equivalent of "docker ps"): ) func main() { - cli, err := client.NewEnvClient() + cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { panic(err) } @@ -47,16 +47,13 @@ import ( "net" "net/http" "net/url" - "os" "path" - "path/filepath" "strings" "github.com/docker/docker/api" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/versions" "github.com/docker/go-connections/sockets" - "github.com/docker/go-connections/tlsconfig" "github.com/pkg/errors" ) @@ -84,13 +81,22 @@ type Client struct { customHTTPHeaders map[string]string // manualOverride is set to true when the version was set by users. manualOverride bool + + // negotiateVersion indicates if the client should automatically negotiate + // the API version to use when making requests. API version negotiation is + // performed on the first request, after which negotiated is set to "true" + // so that subsequent requests do not re-negotiate. + negotiateVersion bool + + // negotiated indicates that API version negotiation took place + negotiated bool } // CheckRedirect specifies the policy for dealing with redirect responses: // If the request is non-GET return `ErrRedirect`. Otherwise use the last response. // // Go 1.8 changes behavior for HTTP redirects (specifically 301, 307, and 308) in the client . -// The Docker client (and by extension docker API client) can be made to to send a request +// The Docker client (and by extension docker API client) can be made to send a request // like POST /containers//start where what would normally be in the name section of the URL is empty. // This triggers an HTTP 301 from the daemon. // In go 1.8 this 301 will be converted to a GET request, and ends up getting a 404 from the daemon. @@ -103,130 +109,6 @@ func CheckRedirect(req *http.Request, via []*http.Request) error { return ErrRedirect } -// NewEnvClient initializes a new API client based on environment variables. -// See FromEnv for a list of support environment variables. -// -// Deprecated: use NewClientWithOpts(FromEnv) -func NewEnvClient() (*Client, error) { - return NewClientWithOpts(FromEnv) -} - -// FromEnv configures the client with values from environment variables. -// -// Supported environment variables: -// DOCKER_HOST to set the url to the docker server. -// DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. -// DOCKER_CERT_PATH to load the TLS certificates from. -// DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default. -func FromEnv(c *Client) error { - if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { - options := tlsconfig.Options{ - CAFile: filepath.Join(dockerCertPath, "ca.pem"), - CertFile: filepath.Join(dockerCertPath, "cert.pem"), - KeyFile: filepath.Join(dockerCertPath, "key.pem"), - InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", - } - tlsc, err := tlsconfig.Client(options) - if err != nil { - return err - } - - c.client = &http.Client{ - Transport: &http.Transport{TLSClientConfig: tlsc}, - CheckRedirect: CheckRedirect, - } - } - - if host := os.Getenv("DOCKER_HOST"); host != "" { - if err := WithHost(host)(c); err != nil { - return err - } - } - - if version := os.Getenv("DOCKER_API_VERSION"); version != "" { - c.version = version - c.manualOverride = true - } - return nil -} - -// WithTLSClientConfig applies a tls config to the client transport. -func WithTLSClientConfig(cacertPath, certPath, keyPath string) func(*Client) error { - return func(c *Client) error { - opts := tlsconfig.Options{ - CAFile: cacertPath, - CertFile: certPath, - KeyFile: keyPath, - ExclusiveRootPools: true, - } - config, err := tlsconfig.Client(opts) - if err != nil { - return errors.Wrap(err, "failed to create tls config") - } - if transport, ok := c.client.Transport.(*http.Transport); ok { - transport.TLSClientConfig = config - return nil - } - return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport) - } -} - -// WithDialer applies the dialer.DialContext to the client transport. This can be -// used to set the Timeout and KeepAlive settings of the client. -func WithDialer(dialer *net.Dialer) func(*Client) error { - return func(c *Client) error { - if transport, ok := c.client.Transport.(*http.Transport); ok { - transport.DialContext = dialer.DialContext - return nil - } - return errors.Errorf("cannot apply dialer to transport: %T", c.client.Transport) - } -} - -// WithVersion overrides the client version with the specified one -func WithVersion(version string) func(*Client) error { - return func(c *Client) error { - c.version = version - return nil - } -} - -// WithHost overrides the client host with the specified one. -func WithHost(host string) func(*Client) error { - return func(c *Client) error { - hostURL, err := ParseHostURL(host) - if err != nil { - return err - } - c.host = host - c.proto = hostURL.Scheme - c.addr = hostURL.Host - c.basePath = hostURL.Path - if transport, ok := c.client.Transport.(*http.Transport); ok { - return sockets.ConfigureTransport(transport, c.proto, c.addr) - } - return errors.Errorf("cannot apply host to transport: %T", c.client.Transport) - } -} - -// WithHTTPClient overrides the client http client with the specified one -func WithHTTPClient(client *http.Client) func(*Client) error { - return func(c *Client) error { - if client != nil { - c.client = client - } - return nil - } -} - -// WithHTTPHeaders overrides the client default http headers -func WithHTTPHeaders(headers map[string]string) func(*Client) error { - return func(c *Client) error { - c.customHTTPHeaders = headers - return nil - } -} - // NewClientWithOpts initializes a new API client with default values. It takes functors // to modify values when creating it, like `NewClientWithOpts(WithVersion(…))` // It also initializes the custom http headers to add to each request. @@ -234,7 +116,7 @@ func WithHTTPHeaders(headers map[string]string) func(*Client) error { // It won't send any version information if the version number is empty. It is // highly recommended that you set a version or your client may break if the // server is upgraded. -func NewClientWithOpts(ops ...func(*Client) error) (*Client, error) { +func NewClientWithOpts(ops ...Opt) (*Client, error) { client, err := defaultHTTPClient(DefaultDockerHost) if err != nil { return nil, err @@ -242,7 +124,6 @@ func NewClientWithOpts(ops ...func(*Client) error) (*Client, error) { c := &Client{ host: DefaultDockerHost, version: api.DefaultVersion, - scheme: "http", client: client, proto: defaultProto, addr: defaultAddr, @@ -257,14 +138,18 @@ func NewClientWithOpts(ops ...func(*Client) error) (*Client, error) { if _, ok := c.client.Transport.(http.RoundTripper); !ok { return nil, fmt.Errorf("unable to verify TLS configuration, invalid transport %v", c.client.Transport) } - tlsConfig := resolveTLSConfig(c.client.Transport) - if tlsConfig != nil { - // TODO(stevvooe): This isn't really the right way to write clients in Go. - // `NewClient` should probably only take an `*http.Client` and work from there. - // Unfortunately, the model of having a host-ish/url-thingy as the connection - // string has us confusing protocol and transport layers. We continue doing - // this to avoid breaking existing clients but this should be addressed. - c.scheme = "https" + if c.scheme == "" { + c.scheme = "http" + + tlsConfig := resolveTLSConfig(c.client.Transport) + if tlsConfig != nil { + // TODO(stevvooe): This isn't really the right way to write clients in Go. + // `NewClient` should probably only take an `*http.Client` and work from there. + // Unfortunately, the model of having a host-ish/url-thingy as the connection + // string has us confusing protocol and transport layers. We continue doing + // this to avoid breaking existing clients but this should be addressed. + c.scheme = "https" + } } return c, nil @@ -283,18 +168,6 @@ func defaultHTTPClient(host string) (*http.Client, error) { }, nil } -// NewClient initializes a new API client for the given host and API version. -// It uses the given http client as transport. -// It also initializes the custom http headers to add to each request. -// -// It won't send any version information if the version number is empty. It is -// highly recommended that you set a version or your client may break if the -// server is upgraded. -// Deprecated: use NewClientWithOpts -func NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error) { - return NewClientWithOpts(WithHost(host), WithVersion(version), WithHTTPClient(client), WithHTTPHeaders(httpHeaders)) -} - // Close the transport used by the client func (cli *Client) Close() error { if t, ok := cli.client.Transport.(*http.Transport); ok { @@ -305,8 +178,11 @@ func (cli *Client) Close() error { // getAPIPath returns the versioned request path to call the api. // It appends the query parameters to the path if they are not empty. -func (cli *Client) getAPIPath(p string, query url.Values) string { +func (cli *Client) getAPIPath(ctx context.Context, p string, query url.Values) string { var apiPath string + if cli.negotiateVersion && !cli.negotiated { + cli.NegotiateAPIVersion(ctx) + } if cli.version != "" { v := strings.TrimPrefix(cli.version, "v") apiPath = path.Join(cli.basePath, "/v"+v, p) @@ -322,19 +198,31 @@ func (cli *Client) ClientVersion() string { } // NegotiateAPIVersion queries the API and updates the version to match the -// API version. Any errors are silently ignored. +// API version. Any errors are silently ignored. If a manual override is in place, +// either through the `DOCKER_API_VERSION` environment variable, or if the client +// was initialized with a fixed version (`opts.WithVersion(xx)`), no negotiation +// will be performed. func (cli *Client) NegotiateAPIVersion(ctx context.Context) { - ping, _ := cli.Ping(ctx) - cli.NegotiateAPIVersionPing(ping) + if !cli.manualOverride { + ping, _ := cli.Ping(ctx) + cli.negotiateAPIVersionPing(ping) + } } // NegotiateAPIVersionPing updates the client version to match the Ping.APIVersion -// if the ping version is less than the default version. +// if the ping version is less than the default version. If a manual override is +// in place, either through the `DOCKER_API_VERSION` environment variable, or if +// the client was initialized with a fixed version (`opts.WithVersion(xx)`), no +// negotiation is performed. func (cli *Client) NegotiateAPIVersionPing(p types.Ping) { - if cli.manualOverride { - return + if !cli.manualOverride { + cli.negotiateAPIVersionPing(p) } +} +// negotiateAPIVersionPing queries the API and updates the version to match the +// API version. Any errors are silently ignored. +func (cli *Client) negotiateAPIVersionPing(p types.Ping) { // try the latest version before versioning headers existed if p.APIVersion == "" { p.APIVersion = "1.24" @@ -349,6 +237,12 @@ func (cli *Client) NegotiateAPIVersionPing(p types.Ping) { if versions.LessThan(p.APIVersion, cli.version) { cli.version = p.APIVersion } + + // Store the results, so that automatic API version negotiation (if enabled) + // won't be performed on the next request. + if cli.negotiateVersion { + cli.negotiated = true + } } // DaemonHost returns the host address used by the client @@ -358,7 +252,8 @@ func (cli *Client) DaemonHost() string { // HTTPClient returns a copy of the HTTP client bound to the server func (cli *Client) HTTPClient() *http.Client { - return &*cli.client + c := *cli.client + return &c } // ParseHostURL parses a url string, validates the string is a host url, and @@ -400,3 +295,16 @@ func (cli *Client) CustomHTTPHeaders() map[string]string { func (cli *Client) SetCustomHTTPHeaders(headers map[string]string) { cli.customHTTPHeaders = headers } + +// Dialer returns a dialer for a raw stream connection, with HTTP/1.1 header, that can be used for proxying the daemon connection. +// Used by `docker dial-stdio` (docker/cli#889). +func (cli *Client) Dialer() func(context.Context) (net.Conn, error) { + return func(ctx context.Context) (net.Conn, error) { + if transport, ok := cli.client.Transport.(*http.Transport); ok { + if transport.DialContext != nil && transport.TLSClientConfig == nil { + return transport.DialContext(ctx, cli.proto, cli.addr) + } + } + return fallbackDial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) + } +} diff --git a/vendor/github.com/docker/docker/client/client_deprecated.go b/vendor/github.com/docker/docker/client/client_deprecated.go new file mode 100644 index 00000000000..54cdfc29a84 --- /dev/null +++ b/vendor/github.com/docker/docker/client/client_deprecated.go @@ -0,0 +1,23 @@ +package client + +import "net/http" + +// NewClient initializes a new API client for the given host and API version. +// It uses the given http client as transport. +// It also initializes the custom http headers to add to each request. +// +// It won't send any version information if the version number is empty. It is +// highly recommended that you set a version or your client may break if the +// server is upgraded. +// Deprecated: use NewClientWithOpts +func NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error) { + return NewClientWithOpts(WithHost(host), WithVersion(version), WithHTTPClient(client), WithHTTPHeaders(httpHeaders)) +} + +// NewEnvClient initializes a new API client based on environment variables. +// See FromEnv for a list of support environment variables. +// +// Deprecated: use NewClientWithOpts(FromEnv) +func NewEnvClient() (*Client, error) { + return NewClientWithOpts(FromEnv) +} diff --git a/vendor/github.com/docker/docker/client/config_create.go b/vendor/github.com/docker/docker/client/config_create.go index c8b802ad356..ee7d411df06 100644 --- a/vendor/github.com/docker/docker/client/config_create.go +++ b/vendor/github.com/docker/docker/client/config_create.go @@ -15,11 +15,11 @@ func (cli *Client) ConfigCreate(ctx context.Context, config swarm.ConfigSpec) (t return response, err } resp, err := cli.post(ctx, "/configs/create", nil, config, nil) + defer ensureReaderClosed(resp) if err != nil { return response, err } err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/config_inspect.go b/vendor/github.com/docker/docker/client/config_inspect.go index 4ac566ad89f..7d0ce3e11c0 100644 --- a/vendor/github.com/docker/docker/client/config_inspect.go +++ b/vendor/github.com/docker/docker/client/config_inspect.go @@ -18,10 +18,10 @@ func (cli *Client) ConfigInspectWithRaw(ctx context.Context, id string) (swarm.C return swarm.Config{}, nil, err } resp, err := cli.get(ctx, "/configs/"+id, nil, nil) + defer ensureReaderClosed(resp) if err != nil { return swarm.Config{}, nil, wrapResponseError(err, resp, "config", id) } - defer ensureReaderClosed(resp) body, err := ioutil.ReadAll(resp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/config_list.go b/vendor/github.com/docker/docker/client/config_list.go index 2b9d54606bf..565acc6e273 100644 --- a/vendor/github.com/docker/docker/client/config_list.go +++ b/vendor/github.com/docker/docker/client/config_list.go @@ -27,12 +27,12 @@ func (cli *Client) ConfigList(ctx context.Context, options types.ConfigListOptio } resp, err := cli.get(ctx, "/configs", query, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, err } var configs []swarm.Config err = json.NewDecoder(resp.body).Decode(&configs) - ensureReaderClosed(resp) return configs, err } diff --git a/vendor/github.com/docker/docker/client/config_remove.go b/vendor/github.com/docker/docker/client/config_remove.go index a96871e98b7..a708fcaecfd 100644 --- a/vendor/github.com/docker/docker/client/config_remove.go +++ b/vendor/github.com/docker/docker/client/config_remove.go @@ -8,6 +8,6 @@ func (cli *Client) ConfigRemove(ctx context.Context, id string) error { return err } resp, err := cli.delete(ctx, "/configs/"+id, nil, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "config", id) } diff --git a/vendor/github.com/docker/docker/client/container_commit.go b/vendor/github.com/docker/docker/client/container_commit.go index 377a2ea681c..2966e88c8ec 100644 --- a/vendor/github.com/docker/docker/client/container_commit.go +++ b/vendor/github.com/docker/docker/client/container_commit.go @@ -45,11 +45,11 @@ func (cli *Client) ContainerCommit(ctx context.Context, container string, option var response types.IDResponse resp, err := cli.post(ctx, "/commit", query, options.Config, nil) + defer ensureReaderClosed(resp) if err != nil { return response, err } err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/container_copy.go b/vendor/github.com/docker/docker/client/container_copy.go index d706260cee0..bb278bf7f32 100644 --- a/vendor/github.com/docker/docker/client/container_copy.go +++ b/vendor/github.com/docker/docker/client/container_copy.go @@ -21,10 +21,10 @@ func (cli *Client) ContainerStatPath(ctx context.Context, containerID, path stri urlStr := "/containers/" + containerID + "/archive" response, err := cli.head(ctx, urlStr, query, nil) + defer ensureReaderClosed(response) if err != nil { return types.ContainerPathStat{}, wrapResponseError(err, response, "container:path", containerID+":"+path) } - defer ensureReaderClosed(response) return getContainerPathStatFromHeader(response.header) } @@ -45,11 +45,12 @@ func (cli *Client) CopyToContainer(ctx context.Context, containerID, dstPath str apiPath := "/containers/" + containerID + "/archive" response, err := cli.putRaw(ctx, apiPath, query, content, nil) + defer ensureReaderClosed(response) if err != nil { return wrapResponseError(err, response, "container:path", containerID+":"+dstPath) } - defer ensureReaderClosed(response) + // TODO this code converts non-error status-codes (e.g., "204 No Content") into an error; verify if this is the desired behavior if response.statusCode != http.StatusOK { return fmt.Errorf("unexpected status code from daemon: %d", response.statusCode) } @@ -69,6 +70,7 @@ func (cli *Client) CopyFromContainer(ctx context.Context, containerID, srcPath s return nil, types.ContainerPathStat{}, wrapResponseError(err, response, "container:path", containerID+":"+srcPath) } + // TODO this code converts non-error status-codes (e.g., "204 No Content") into an error; verify if this is the desired behavior if response.statusCode != http.StatusOK { return nil, types.ContainerPathStat{}, fmt.Errorf("unexpected status code from daemon: %d", response.statusCode) } diff --git a/vendor/github.com/docker/docker/client/container_create.go b/vendor/github.com/docker/docker/client/container_create.go index d269a61894a..5b795e0c17c 100644 --- a/vendor/github.com/docker/docker/client/container_create.go +++ b/vendor/github.com/docker/docker/client/container_create.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "net/url" - "strings" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/network" @@ -43,14 +42,11 @@ func (cli *Client) ContainerCreate(ctx context.Context, config *container.Config } serverResp, err := cli.post(ctx, "/containers/create", query, body, nil) + defer ensureReaderClosed(serverResp) if err != nil { - if serverResp.statusCode == 404 && strings.Contains(err.Error(), "No such image") { - return response, objectNotFoundError{object: "image", id: config.Image} - } return response, err } err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) return response, err } diff --git a/vendor/github.com/docker/docker/client/container_diff.go b/vendor/github.com/docker/docker/client/container_diff.go index 3b7c90c96c9..29dac8491df 100644 --- a/vendor/github.com/docker/docker/client/container_diff.go +++ b/vendor/github.com/docker/docker/client/container_diff.go @@ -13,11 +13,11 @@ func (cli *Client) ContainerDiff(ctx context.Context, containerID string) ([]con var changes []container.ContainerChangeResponseItem serverResp, err := cli.get(ctx, "/containers/"+containerID+"/changes", url.Values{}, nil) + defer ensureReaderClosed(serverResp) if err != nil { return changes, err } err = json.NewDecoder(serverResp.body).Decode(&changes) - ensureReaderClosed(serverResp) return changes, err } diff --git a/vendor/github.com/docker/docker/client/container_exec.go b/vendor/github.com/docker/docker/client/container_exec.go index 535536b1e0f..e3ee755b71d 100644 --- a/vendor/github.com/docker/docker/client/container_exec.go +++ b/vendor/github.com/docker/docker/client/container_exec.go @@ -16,11 +16,11 @@ func (cli *Client) ContainerExecCreate(ctx context.Context, container string, co } resp, err := cli.post(ctx, "/containers/"+container+"/exec", nil, config, nil) + defer ensureReaderClosed(resp) if err != nil { return response, err } err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/container_inspect.go b/vendor/github.com/docker/docker/client/container_inspect.go index f453064cf8f..c496bcffea5 100644 --- a/vendor/github.com/docker/docker/client/container_inspect.go +++ b/vendor/github.com/docker/docker/client/container_inspect.go @@ -16,13 +16,13 @@ func (cli *Client) ContainerInspect(ctx context.Context, containerID string) (ty return types.ContainerJSON{}, objectNotFoundError{object: "container", id: containerID} } serverResp, err := cli.get(ctx, "/containers/"+containerID+"/json", nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return types.ContainerJSON{}, wrapResponseError(err, serverResp, "container", containerID) } var response types.ContainerJSON err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) return response, err } @@ -36,10 +36,10 @@ func (cli *Client) ContainerInspectWithRaw(ctx context.Context, containerID stri query.Set("size", "1") } serverResp, err := cli.get(ctx, "/containers/"+containerID+"/json", query, nil) + defer ensureReaderClosed(serverResp) if err != nil { return types.ContainerJSON{}, nil, wrapResponseError(err, serverResp, "container", containerID) } - defer ensureReaderClosed(serverResp) body, err := ioutil.ReadAll(serverResp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/container_list.go b/vendor/github.com/docker/docker/client/container_list.go index 9c218e2218a..c099d80e2a2 100644 --- a/vendor/github.com/docker/docker/client/container_list.go +++ b/vendor/github.com/docker/docker/client/container_list.go @@ -35,6 +35,7 @@ func (cli *Client) ContainerList(ctx context.Context, options types.ContainerLis } if options.Filters.Len() > 0 { + //lint:ignore SA1019 for old code filterJSON, err := filters.ToParamWithVersion(cli.version, options.Filters) if err != nil { @@ -45,12 +46,12 @@ func (cli *Client) ContainerList(ctx context.Context, options types.ContainerLis } resp, err := cli.get(ctx, "/containers/json", query, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, err } var containers []types.Container err = json.NewDecoder(resp.body).Decode(&containers) - ensureReaderClosed(resp) return containers, err } diff --git a/vendor/github.com/docker/docker/client/container_prune.go b/vendor/github.com/docker/docker/client/container_prune.go index 14f88d93bac..04383deaaff 100644 --- a/vendor/github.com/docker/docker/client/container_prune.go +++ b/vendor/github.com/docker/docker/client/container_prune.go @@ -23,10 +23,10 @@ func (cli *Client) ContainersPrune(ctx context.Context, pruneFilters filters.Arg } serverResp, err := cli.post(ctx, "/containers/prune", query, nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return report, err } - defer ensureReaderClosed(serverResp) if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { return report, fmt.Errorf("Error retrieving disk usage: %v", err) diff --git a/vendor/github.com/docker/docker/client/container_remove.go b/vendor/github.com/docker/docker/client/container_remove.go index ab4cfc16f87..df81461b889 100644 --- a/vendor/github.com/docker/docker/client/container_remove.go +++ b/vendor/github.com/docker/docker/client/container_remove.go @@ -22,6 +22,6 @@ func (cli *Client) ContainerRemove(ctx context.Context, containerID string, opti } resp, err := cli.delete(ctx, "/containers/"+containerID, query, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "container", containerID) } diff --git a/vendor/github.com/docker/docker/client/container_top.go b/vendor/github.com/docker/docker/client/container_top.go index 9c9fce7a040..a5b78999bf0 100644 --- a/vendor/github.com/docker/docker/client/container_top.go +++ b/vendor/github.com/docker/docker/client/container_top.go @@ -18,11 +18,11 @@ func (cli *Client) ContainerTop(ctx context.Context, containerID string, argumen } resp, err := cli.get(ctx, "/containers/"+containerID+"/top", query, nil) + defer ensureReaderClosed(resp) if err != nil { return response, err } err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/container_update.go b/vendor/github.com/docker/docker/client/container_update.go index 14e7f23dfb8..6917cf9fb36 100644 --- a/vendor/github.com/docker/docker/client/container_update.go +++ b/vendor/github.com/docker/docker/client/container_update.go @@ -11,12 +11,11 @@ import ( func (cli *Client) ContainerUpdate(ctx context.Context, containerID string, updateConfig container.UpdateConfig) (container.ContainerUpdateOKBody, error) { var response container.ContainerUpdateOKBody serverResp, err := cli.post(ctx, "/containers/"+containerID+"/update", nil, updateConfig, nil) + defer ensureReaderClosed(serverResp) if err != nil { return response, err } err = json.NewDecoder(serverResp.body).Decode(&response) - - ensureReaderClosed(serverResp) return response, err } diff --git a/vendor/github.com/docker/docker/client/disk_usage.go b/vendor/github.com/docker/docker/client/disk_usage.go index 8eb30eb5de2..354cd36939a 100644 --- a/vendor/github.com/docker/docker/client/disk_usage.go +++ b/vendor/github.com/docker/docker/client/disk_usage.go @@ -13,10 +13,10 @@ func (cli *Client) DiskUsage(ctx context.Context) (types.DiskUsage, error) { var du types.DiskUsage serverResp, err := cli.get(ctx, "/system/df", nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return du, err } - defer ensureReaderClosed(serverResp) if err := json.NewDecoder(serverResp.body).Decode(&du); err != nil { return du, fmt.Errorf("Error retrieving disk usage: %v", err) diff --git a/vendor/github.com/docker/docker/client/distribution_inspect.go b/vendor/github.com/docker/docker/client/distribution_inspect.go index 7245bbeeda4..f4e3794cb4c 100644 --- a/vendor/github.com/docker/docker/client/distribution_inspect.go +++ b/vendor/github.com/docker/docker/client/distribution_inspect.go @@ -28,11 +28,11 @@ func (cli *Client) DistributionInspect(ctx context.Context, image, encodedRegist } resp, err := cli.get(ctx, "/distribution/"+image+"/json", url.Values{}, headers) + defer ensureReaderClosed(resp) if err != nil { return distributionInspect, err } err = json.NewDecoder(resp.body).Decode(&distributionInspect) - ensureReaderClosed(resp) return distributionInspect, err } diff --git a/vendor/github.com/docker/docker/client/errors.go b/vendor/github.com/docker/docker/client/errors.go index 0461af329d5..001c1028814 100644 --- a/vendor/github.com/docker/docker/client/errors.go +++ b/vendor/github.com/docker/docker/client/errors.go @@ -5,6 +5,7 @@ import ( "net/http" "github.com/docker/docker/api/types/versions" + "github.com/docker/docker/errdefs" "github.com/pkg/errors" ) @@ -32,16 +33,19 @@ func ErrorConnectionFailed(host string) error { return errConnectionFailed{host: host} } +// Deprecated: use the errdefs.NotFound() interface instead. Kept for backward compatibility type notFound interface { error - NotFound() bool // Is the error a NotFound error + NotFound() bool } // IsErrNotFound returns true if the error is a NotFound error, which is returned // by the API when some object is not found. func IsErrNotFound(err error) bool { - te, ok := err.(notFound) - return ok && te.NotFound() + if _, ok := err.(notFound); ok { + return ok + } + return errdefs.IsNotFound(err) } type objectNotFoundError struct { @@ -49,9 +53,7 @@ type objectNotFoundError struct { id string } -func (e objectNotFoundError) NotFound() bool { - return true -} +func (e objectNotFoundError) NotFound() {} func (e objectNotFoundError) Error() string { return fmt.Sprintf("Error: No such %s: %s", e.object, e.id) @@ -64,7 +66,7 @@ func wrapResponseError(err error, resp serverResponse, object, id string) error case resp.statusCode == http.StatusNotFound: return objectNotFoundError{object: object, id: id} case resp.statusCode == http.StatusNotImplemented: - return notImplementedError{message: err.Error()} + return errdefs.NotImplemented(err) default: return err } @@ -83,8 +85,10 @@ func (u unauthorizedError) Error() string { // IsErrUnauthorized returns true if the error is caused // when a remote registry authentication fails func IsErrUnauthorized(err error) bool { - _, ok := err.(unauthorizedError) - return ok + if _, ok := err.(unauthorizedError); ok { + return ok + } + return errdefs.IsUnauthorized(err) } type pluginPermissionDenied struct { @@ -118,8 +122,10 @@ func (e notImplementedError) NotImplemented() bool { // This is returned by the API when a requested feature has not been // implemented. func IsErrNotImplemented(err error) bool { - te, ok := err.(notImplementedError) - return ok && te.NotImplemented() + if _, ok := err.(notImplementedError); ok { + return ok + } + return errdefs.IsNotImplemented(err) } // NewVersionError returns an error if the APIVersion required diff --git a/vendor/github.com/docker/docker/client/events.go b/vendor/github.com/docker/docker/client/events.go index 6e56538955e..f347cadf145 100644 --- a/vendor/github.com/docker/docker/client/events.go +++ b/vendor/github.com/docker/docker/client/events.go @@ -90,6 +90,7 @@ func buildEventsQueryParams(cliVersion string, options types.EventsOptions) (url } if options.Filters.Len() > 0 { + //lint:ignore SA1019 for old code filterJSON, err := filters.ToParamWithVersion(cliVersion, options.Filters) if err != nil { return nil, err diff --git a/vendor/github.com/docker/docker/client/hijack.go b/vendor/github.com/docker/docker/client/hijack.go index 2b14831fd22..e77084af64d 100644 --- a/vendor/github.com/docker/docker/client/hijack.go +++ b/vendor/github.com/docker/docker/client/hijack.go @@ -9,7 +9,6 @@ import ( "net/http" "net/http/httputil" "net/url" - "strings" "time" "github.com/docker/docker/api/types" @@ -17,21 +16,6 @@ import ( "github.com/pkg/errors" ) -// tlsClientCon holds tls information and a dialed connection. -type tlsClientCon struct { - *tls.Conn - rawConn net.Conn -} - -func (c *tlsClientCon) CloseWrite() error { - // Go standard tls.Conn doesn't provide the CloseWrite() method so we do it - // on its underlying connection. - if conn, ok := c.rawConn.(types.CloseWriter); ok { - return conn.CloseWrite() - } - return nil -} - // postHijacked sends a POST request and hijacks the connection. func (cli *Client) postHijacked(ctx context.Context, path string, query url.Values, body interface{}, headers map[string][]string) (types.HijackedResponse, error) { bodyEncoded, err := encodeData(body) @@ -39,14 +23,14 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu return types.HijackedResponse{}, err } - apiPath := cli.getAPIPath(path, query) + apiPath := cli.getAPIPath(ctx, path, query) req, err := http.NewRequest("POST", apiPath, bodyEncoded) if err != nil { return types.HijackedResponse{}, err } req = cli.addHeaders(req, headers) - conn, err := cli.setupHijackConn(req, "tcp") + conn, err := cli.setupHijackConn(ctx, req, "tcp") if err != nil { return types.HijackedResponse{}, err } @@ -54,96 +38,22 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu return types.HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn)}, err } -func tlsDial(network, addr string, config *tls.Config) (net.Conn, error) { - return tlsDialWithDialer(new(net.Dialer), network, addr, config) -} - -// We need to copy Go's implementation of tls.Dial (pkg/cryptor/tls/tls.go) in -// order to return our custom tlsClientCon struct which holds both the tls.Conn -// object _and_ its underlying raw connection. The rationale for this is that -// we need to be able to close the write end of the connection when attaching, -// which tls.Conn does not provide. -func tlsDialWithDialer(dialer *net.Dialer, network, addr string, config *tls.Config) (net.Conn, error) { - // We want the Timeout and Deadline values from dialer to cover the - // whole process: TCP connection and TLS handshake. This means that we - // also need to start our own timers now. - timeout := dialer.Timeout - - if !dialer.Deadline.IsZero() { - deadlineTimeout := time.Until(dialer.Deadline) - if timeout == 0 || deadlineTimeout < timeout { - timeout = deadlineTimeout - } - } - - var errChannel chan error - - if timeout != 0 { - errChannel = make(chan error, 2) - time.AfterFunc(timeout, func() { - errChannel <- errors.New("") - }) - } - - proxyDialer, err := sockets.DialerFromEnvironment(dialer) - if err != nil { - return nil, err - } - - rawConn, err := proxyDialer.Dial(network, addr) - if err != nil { - return nil, err - } - // When we set up a TCP connection for hijack, there could be long periods - // of inactivity (a long running command with no output) that in certain - // network setups may cause ECONNTIMEOUT, leaving the client in an unknown - // state. Setting TCP KeepAlive on the socket connection will prohibit - // ECONNTIMEOUT unless the socket connection truly is broken - if tcpConn, ok := rawConn.(*net.TCPConn); ok { - tcpConn.SetKeepAlive(true) - tcpConn.SetKeepAlivePeriod(30 * time.Second) - } - - colonPos := strings.LastIndex(addr, ":") - if colonPos == -1 { - colonPos = len(addr) - } - hostname := addr[:colonPos] - - // If no ServerName is set, infer the ServerName - // from the hostname we're connecting to. - if config.ServerName == "" { - // Make a copy to avoid polluting argument or default. - config = tlsConfigClone(config) - config.ServerName = hostname - } - - conn := tls.Client(rawConn, config) - - if timeout == 0 { - err = conn.Handshake() - } else { - go func() { - errChannel <- conn.Handshake() - }() - - err = <-errChannel - } - +// DialHijack returns a hijacked connection with negotiated protocol proto. +func (cli *Client) DialHijack(ctx context.Context, url, proto string, meta map[string][]string) (net.Conn, error) { + req, err := http.NewRequest("POST", url, nil) if err != nil { - rawConn.Close() return nil, err } + req = cli.addHeaders(req, meta) - // This is Docker difference with standard's crypto/tls package: returned a - // wrapper which holds both the TLS and raw connections. - return &tlsClientCon{conn, rawConn}, nil + return cli.setupHijackConn(ctx, req, proto) } -func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { +// fallbackDial is used when WithDialer() was not called. +// See cli.Dialer(). +func fallbackDial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { if tlsConfig != nil && proto != "unix" && proto != "npipe" { - // Notice this isn't Go standard's tls.Dial function - return tlsDial(proto, addr, tlsConfig) + return tls.Dial(proto, addr, tlsConfig) } if proto == "npipe" { return sockets.DialPipe(addr, 32*time.Second) @@ -151,12 +61,13 @@ func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { return net.Dial(proto, addr) } -func (cli *Client) setupHijackConn(req *http.Request, proto string) (net.Conn, error) { +func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto string) (net.Conn, error) { req.Host = cli.addr req.Header.Set("Connection", "Upgrade") req.Header.Set("Upgrade", proto) - conn, err := dial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) + dialer := cli.Dialer() + conn, err := dialer(ctx) if err != nil { return nil, errors.Wrap(err, "cannot connect to the Docker daemon. Is 'docker daemon' running on this host?") } @@ -176,6 +87,8 @@ func (cli *Client) setupHijackConn(req *http.Request, proto string) (net.Conn, e // Server hijacks the connection, error 'connection closed' expected resp, err := clientconn.Do(req) + + //lint:ignore SA1019 for connecting to old (pre go1.8) daemons if err != httputil.ErrPersistEOF { if err != nil { return nil, err diff --git a/vendor/github.com/docker/docker/client/image_build.go b/vendor/github.com/docker/docker/client/image_build.go index 6721460316a..8fcf995036f 100644 --- a/vendor/github.com/docker/docker/client/image_build.go +++ b/vendor/github.com/docker/docker/client/image_build.go @@ -30,12 +30,6 @@ func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, optio } headers.Add("X-Registry-Config", base64.URLEncoding.EncodeToString(buf)) - if options.Platform != "" { - if err := cli.NewVersionError("1.32", "platform"); err != nil { - return types.ImageBuildResponse{}, err - } - query.Set("platform", options.Platform) - } headers.Set("Content-Type", "application/x-tar") serverResp, err := cli.postRaw(ctx, "/build", query, buildContext, headers) @@ -131,7 +125,22 @@ func (cli *Client) imageBuildOptionsToQuery(options types.ImageBuildOptions) (ur query.Set("session", options.SessionID) } if options.Platform != "" { + if err := cli.NewVersionError("1.32", "platform"); err != nil { + return query, err + } query.Set("platform", strings.ToLower(options.Platform)) } + if options.BuildID != "" { + query.Set("buildid", options.BuildID) + } + query.Set("version", string(options.Version)) + + if options.Outputs != nil { + outputsJSON, err := json.Marshal(options.Outputs) + if err != nil { + return query, err + } + query.Set("outputs", string(outputsJSON)) + } return query, nil } diff --git a/vendor/github.com/docker/docker/client/image_history.go b/vendor/github.com/docker/docker/client/image_history.go index 0151b9517f2..b5bea10d8f6 100644 --- a/vendor/github.com/docker/docker/client/image_history.go +++ b/vendor/github.com/docker/docker/client/image_history.go @@ -12,11 +12,11 @@ import ( func (cli *Client) ImageHistory(ctx context.Context, imageID string) ([]image.HistoryResponseItem, error) { var history []image.HistoryResponseItem serverResp, err := cli.get(ctx, "/images/"+imageID+"/history", url.Values{}, nil) + defer ensureReaderClosed(serverResp) if err != nil { return history, err } err = json.NewDecoder(serverResp.body).Decode(&history) - ensureReaderClosed(serverResp) return history, err } diff --git a/vendor/github.com/docker/docker/client/image_inspect.go b/vendor/github.com/docker/docker/client/image_inspect.go index 2f8f6d2f141..1eb8dce0259 100644 --- a/vendor/github.com/docker/docker/client/image_inspect.go +++ b/vendor/github.com/docker/docker/client/image_inspect.go @@ -15,10 +15,10 @@ func (cli *Client) ImageInspectWithRaw(ctx context.Context, imageID string) (typ return types.ImageInspect{}, nil, objectNotFoundError{object: "image", id: imageID} } serverResp, err := cli.get(ctx, "/images/"+imageID+"/json", nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return types.ImageInspect{}, nil, wrapResponseError(err, serverResp, "image", imageID) } - defer ensureReaderClosed(serverResp) body, err := ioutil.ReadAll(serverResp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/image_list.go b/vendor/github.com/docker/docker/client/image_list.go index 32fae27b375..a5bc4b095f7 100644 --- a/vendor/github.com/docker/docker/client/image_list.go +++ b/vendor/github.com/docker/docker/client/image_list.go @@ -24,6 +24,7 @@ func (cli *Client) ImageList(ctx context.Context, options types.ImageListOptions } } if optionFilters.Len() > 0 { + //lint:ignore SA1019 for old code filterJSON, err := filters.ToParamWithVersion(cli.version, optionFilters) if err != nil { return images, err @@ -35,11 +36,11 @@ func (cli *Client) ImageList(ctx context.Context, options types.ImageListOptions } serverResp, err := cli.get(ctx, "/images/json", query, nil) + defer ensureReaderClosed(serverResp) if err != nil { return images, err } err = json.NewDecoder(serverResp.body).Decode(&images) - ensureReaderClosed(serverResp) return images, err } diff --git a/vendor/github.com/docker/docker/client/image_prune.go b/vendor/github.com/docker/docker/client/image_prune.go index 78ee3f6c496..56af6d7f98f 100644 --- a/vendor/github.com/docker/docker/client/image_prune.go +++ b/vendor/github.com/docker/docker/client/image_prune.go @@ -23,10 +23,10 @@ func (cli *Client) ImagesPrune(ctx context.Context, pruneFilters filters.Args) ( } serverResp, err := cli.post(ctx, "/images/prune", query, nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return report, err } - defer ensureReaderClosed(serverResp) if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { return report, fmt.Errorf("Error retrieving disk usage: %v", err) diff --git a/vendor/github.com/docker/docker/client/image_pull.go b/vendor/github.com/docker/docker/client/image_pull.go index d97aacf8c52..a23975591be 100644 --- a/vendor/github.com/docker/docker/client/image_pull.go +++ b/vendor/github.com/docker/docker/client/image_pull.go @@ -3,12 +3,12 @@ package client // import "github.com/docker/docker/client" import ( "context" "io" - "net/http" "net/url" "strings" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" ) // ImagePull requests the docker host to pull an image from a remote registry. @@ -35,7 +35,7 @@ func (cli *Client) ImagePull(ctx context.Context, refStr string, options types.I } resp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { return nil, privilegeErr diff --git a/vendor/github.com/docker/docker/client/image_push.go b/vendor/github.com/docker/docker/client/image_push.go index a15871c2b44..49d412ee375 100644 --- a/vendor/github.com/docker/docker/client/image_push.go +++ b/vendor/github.com/docker/docker/client/image_push.go @@ -4,11 +4,11 @@ import ( "context" "errors" "io" - "net/http" "net/url" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" ) // ImagePush requests the docker host to push an image to a remote registry. @@ -36,7 +36,7 @@ func (cli *Client) ImagePush(ctx context.Context, image string, options types.Im query.Set("tag", tag) resp, err := cli.tryImagePush(ctx, name, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { return nil, privilegeErr diff --git a/vendor/github.com/docker/docker/client/image_remove.go b/vendor/github.com/docker/docker/client/image_remove.go index 45d6e6f0dba..84a41af0f2c 100644 --- a/vendor/github.com/docker/docker/client/image_remove.go +++ b/vendor/github.com/docker/docker/client/image_remove.go @@ -21,11 +21,11 @@ func (cli *Client) ImageRemove(ctx context.Context, imageID string, options type var dels []types.ImageDeleteResponseItem resp, err := cli.delete(ctx, "/images/"+imageID, query, nil) + defer ensureReaderClosed(resp) if err != nil { return dels, wrapResponseError(err, resp, "image", imageID) } err = json.NewDecoder(resp.body).Decode(&dels) - ensureReaderClosed(resp) return dels, err } diff --git a/vendor/github.com/docker/docker/client/image_search.go b/vendor/github.com/docker/docker/client/image_search.go index 176de3c5824..82955a74775 100644 --- a/vendor/github.com/docker/docker/client/image_search.go +++ b/vendor/github.com/docker/docker/client/image_search.go @@ -4,12 +4,12 @@ import ( "context" "encoding/json" "fmt" - "net/http" "net/url" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/registry" + "github.com/docker/docker/errdefs" ) // ImageSearch makes the docker host to search by a term in a remote registry. @@ -29,7 +29,8 @@ func (cli *Client) ImageSearch(ctx context.Context, term string, options types.I } resp, err := cli.tryImageSearch(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + defer ensureReaderClosed(resp) + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { return results, privilegeErr @@ -41,7 +42,6 @@ func (cli *Client) ImageSearch(ctx context.Context, term string, options types.I } err = json.NewDecoder(resp.body).Decode(&results) - ensureReaderClosed(resp) return results, err } diff --git a/vendor/github.com/docker/docker/client/info.go b/vendor/github.com/docker/docker/client/info.go index 121f256ab1c..c856704e23f 100644 --- a/vendor/github.com/docker/docker/client/info.go +++ b/vendor/github.com/docker/docker/client/info.go @@ -13,10 +13,10 @@ import ( func (cli *Client) Info(ctx context.Context) (types.Info, error) { var info types.Info serverResp, err := cli.get(ctx, "/info", url.Values{}, nil) + defer ensureReaderClosed(serverResp) if err != nil { return info, err } - defer ensureReaderClosed(serverResp) if err := json.NewDecoder(serverResp.body).Decode(&info); err != nil { return info, fmt.Errorf("Error reading remote info: %v", err) diff --git a/vendor/github.com/docker/docker/client/interface.go b/vendor/github.com/docker/docker/client/interface.go index 0487a0b9f35..cde64be4b56 100644 --- a/vendor/github.com/docker/docker/client/interface.go +++ b/vendor/github.com/docker/docker/client/interface.go @@ -38,7 +38,8 @@ type CommonAPIClient interface { ServerVersion(ctx context.Context) (types.Version, error) NegotiateAPIVersion(ctx context.Context) NegotiateAPIVersionPing(types.Ping) - DialSession(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) + DialHijack(ctx context.Context, url, proto string, meta map[string][]string) (net.Conn, error) + Dialer() func(context.Context) (net.Conn, error) Close() error } @@ -85,7 +86,8 @@ type DistributionAPIClient interface { // ImageAPIClient defines API client methods for the images type ImageAPIClient interface { ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error) - BuildCachePrune(ctx context.Context) (*types.BuildCachePruneReport, error) + BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) + BuildCancel(ctx context.Context, id string) error ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) ImageHistory(ctx context.Context, image string) ([]image.HistoryResponseItem, error) ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error) diff --git a/vendor/github.com/docker/docker/client/login.go b/vendor/github.com/docker/docker/client/login.go index 7d661819004..f0585206382 100644 --- a/vendor/github.com/docker/docker/client/login.go +++ b/vendor/github.com/docker/docker/client/login.go @@ -3,7 +3,6 @@ package client // import "github.com/docker/docker/client" import ( "context" "encoding/json" - "net/http" "net/url" "github.com/docker/docker/api/types" @@ -14,16 +13,13 @@ import ( // It returns unauthorizedError when the authentication fails. func (cli *Client) RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error) { resp, err := cli.post(ctx, "/auth", url.Values{}, auth, nil) + defer ensureReaderClosed(resp) - if resp.statusCode == http.StatusUnauthorized { - return registry.AuthenticateOKBody{}, unauthorizedError{err} - } if err != nil { return registry.AuthenticateOKBody{}, err } var response registry.AuthenticateOKBody err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/network_create.go b/vendor/github.com/docker/docker/client/network_create.go index 41da2ac6109..278d9383a86 100644 --- a/vendor/github.com/docker/docker/client/network_create.go +++ b/vendor/github.com/docker/docker/client/network_create.go @@ -15,11 +15,11 @@ func (cli *Client) NetworkCreate(ctx context.Context, name string, options types } var response types.NetworkCreateResponse serverResp, err := cli.post(ctx, "/networks/create", nil, networkCreateRequest, nil) + defer ensureReaderClosed(serverResp) if err != nil { return response, err } - json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) + err = json.NewDecoder(serverResp.body).Decode(&response) return response, err } diff --git a/vendor/github.com/docker/docker/client/network_inspect.go b/vendor/github.com/docker/docker/client/network_inspect.go index 025f6d8757d..89a05b3021a 100644 --- a/vendor/github.com/docker/docker/client/network_inspect.go +++ b/vendor/github.com/docker/docker/client/network_inspect.go @@ -34,10 +34,10 @@ func (cli *Client) NetworkInspectWithRaw(ctx context.Context, networkID string, query.Set("scope", options.Scope) } resp, err = cli.get(ctx, "/networks/"+networkID, query, nil) + defer ensureReaderClosed(resp) if err != nil { return networkResource, nil, wrapResponseError(err, resp, "network", networkID) } - defer ensureReaderClosed(resp) body, err := ioutil.ReadAll(resp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/network_list.go b/vendor/github.com/docker/docker/client/network_list.go index f16b2f56240..8ca7eb6128e 100644 --- a/vendor/github.com/docker/docker/client/network_list.go +++ b/vendor/github.com/docker/docker/client/network_list.go @@ -13,6 +13,7 @@ import ( func (cli *Client) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) { query := url.Values{} if options.Filters.Len() > 0 { + //lint:ignore SA1019 for old code filterJSON, err := filters.ToParamWithVersion(cli.version, options.Filters) if err != nil { return nil, err @@ -22,10 +23,10 @@ func (cli *Client) NetworkList(ctx context.Context, options types.NetworkListOpt } var networkResources []types.NetworkResource resp, err := cli.get(ctx, "/networks", query, nil) + defer ensureReaderClosed(resp) if err != nil { return networkResources, err } err = json.NewDecoder(resp.body).Decode(&networkResources) - ensureReaderClosed(resp) return networkResources, err } diff --git a/vendor/github.com/docker/docker/client/network_prune.go b/vendor/github.com/docker/docker/client/network_prune.go index 6418b8b6070..cebb1882192 100644 --- a/vendor/github.com/docker/docker/client/network_prune.go +++ b/vendor/github.com/docker/docker/client/network_prune.go @@ -23,10 +23,10 @@ func (cli *Client) NetworksPrune(ctx context.Context, pruneFilters filters.Args) } serverResp, err := cli.post(ctx, "/networks/prune", query, nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return report, err } - defer ensureReaderClosed(serverResp) if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { return report, fmt.Errorf("Error retrieving network prune report: %v", err) diff --git a/vendor/github.com/docker/docker/client/network_remove.go b/vendor/github.com/docker/docker/client/network_remove.go index 12741437be3..e71b16d8692 100644 --- a/vendor/github.com/docker/docker/client/network_remove.go +++ b/vendor/github.com/docker/docker/client/network_remove.go @@ -5,6 +5,6 @@ import "context" // NetworkRemove removes an existent network from the docker host. func (cli *Client) NetworkRemove(ctx context.Context, networkID string) error { resp, err := cli.delete(ctx, "/networks/"+networkID, nil, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "network", networkID) } diff --git a/vendor/github.com/docker/docker/client/node_inspect.go b/vendor/github.com/docker/docker/client/node_inspect.go index 593b2e9f0b3..d296c9fdde3 100644 --- a/vendor/github.com/docker/docker/client/node_inspect.go +++ b/vendor/github.com/docker/docker/client/node_inspect.go @@ -15,10 +15,10 @@ func (cli *Client) NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm return swarm.Node{}, nil, objectNotFoundError{object: "node", id: nodeID} } serverResp, err := cli.get(ctx, "/nodes/"+nodeID, nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return swarm.Node{}, nil, wrapResponseError(err, serverResp, "node", nodeID) } - defer ensureReaderClosed(serverResp) body, err := ioutil.ReadAll(serverResp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/node_list.go b/vendor/github.com/docker/docker/client/node_list.go index 9883f6fc52d..c212906bc71 100644 --- a/vendor/github.com/docker/docker/client/node_list.go +++ b/vendor/github.com/docker/docker/client/node_list.go @@ -25,12 +25,12 @@ func (cli *Client) NodeList(ctx context.Context, options types.NodeListOptions) } resp, err := cli.get(ctx, "/nodes", query, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, err } var nodes []swarm.Node err = json.NewDecoder(resp.body).Decode(&nodes) - ensureReaderClosed(resp) return nodes, err } diff --git a/vendor/github.com/docker/docker/client/node_remove.go b/vendor/github.com/docker/docker/client/node_remove.go index e7a75057155..03ab8780974 100644 --- a/vendor/github.com/docker/docker/client/node_remove.go +++ b/vendor/github.com/docker/docker/client/node_remove.go @@ -15,6 +15,6 @@ func (cli *Client) NodeRemove(ctx context.Context, nodeID string, options types. } resp, err := cli.delete(ctx, "/nodes/"+nodeID, query, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "node", nodeID) } diff --git a/vendor/github.com/docker/docker/client/options.go b/vendor/github.com/docker/docker/client/options.go new file mode 100644 index 00000000000..6f77f0955f6 --- /dev/null +++ b/vendor/github.com/docker/docker/client/options.go @@ -0,0 +1,172 @@ +package client + +import ( + "context" + "net" + "net/http" + "os" + "path/filepath" + "time" + + "github.com/docker/go-connections/sockets" + "github.com/docker/go-connections/tlsconfig" + "github.com/pkg/errors" +) + +// Opt is a configuration option to initialize a client +type Opt func(*Client) error + +// FromEnv configures the client with values from environment variables. +// +// Supported environment variables: +// DOCKER_HOST to set the url to the docker server. +// DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. +// DOCKER_CERT_PATH to load the TLS certificates from. +// DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default. +func FromEnv(c *Client) error { + if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { + options := tlsconfig.Options{ + CAFile: filepath.Join(dockerCertPath, "ca.pem"), + CertFile: filepath.Join(dockerCertPath, "cert.pem"), + KeyFile: filepath.Join(dockerCertPath, "key.pem"), + InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", + } + tlsc, err := tlsconfig.Client(options) + if err != nil { + return err + } + + c.client = &http.Client{ + Transport: &http.Transport{TLSClientConfig: tlsc}, + CheckRedirect: CheckRedirect, + } + } + + if host := os.Getenv("DOCKER_HOST"); host != "" { + if err := WithHost(host)(c); err != nil { + return err + } + } + + if version := os.Getenv("DOCKER_API_VERSION"); version != "" { + if err := WithVersion(version)(c); err != nil { + return err + } + } + return nil +} + +// WithDialer applies the dialer.DialContext to the client transport. This can be +// used to set the Timeout and KeepAlive settings of the client. +// Deprecated: use WithDialContext +func WithDialer(dialer *net.Dialer) Opt { + return WithDialContext(dialer.DialContext) +} + +// WithDialContext applies the dialer to the client transport. This can be +// used to set the Timeout and KeepAlive settings of the client. +func WithDialContext(dialContext func(ctx context.Context, network, addr string) (net.Conn, error)) Opt { + return func(c *Client) error { + if transport, ok := c.client.Transport.(*http.Transport); ok { + transport.DialContext = dialContext + return nil + } + return errors.Errorf("cannot apply dialer to transport: %T", c.client.Transport) + } +} + +// WithHost overrides the client host with the specified one. +func WithHost(host string) Opt { + return func(c *Client) error { + hostURL, err := ParseHostURL(host) + if err != nil { + return err + } + c.host = host + c.proto = hostURL.Scheme + c.addr = hostURL.Host + c.basePath = hostURL.Path + if transport, ok := c.client.Transport.(*http.Transport); ok { + return sockets.ConfigureTransport(transport, c.proto, c.addr) + } + return errors.Errorf("cannot apply host to transport: %T", c.client.Transport) + } +} + +// WithHTTPClient overrides the client http client with the specified one +func WithHTTPClient(client *http.Client) Opt { + return func(c *Client) error { + if client != nil { + c.client = client + } + return nil + } +} + +// WithTimeout configures the time limit for requests made by the HTTP client +func WithTimeout(timeout time.Duration) Opt { + return func(c *Client) error { + c.client.Timeout = timeout + return nil + } +} + +// WithHTTPHeaders overrides the client default http headers +func WithHTTPHeaders(headers map[string]string) Opt { + return func(c *Client) error { + c.customHTTPHeaders = headers + return nil + } +} + +// WithScheme overrides the client scheme with the specified one +func WithScheme(scheme string) Opt { + return func(c *Client) error { + c.scheme = scheme + return nil + } +} + +// WithTLSClientConfig applies a tls config to the client transport. +func WithTLSClientConfig(cacertPath, certPath, keyPath string) Opt { + return func(c *Client) error { + opts := tlsconfig.Options{ + CAFile: cacertPath, + CertFile: certPath, + KeyFile: keyPath, + ExclusiveRootPools: true, + } + config, err := tlsconfig.Client(opts) + if err != nil { + return errors.Wrap(err, "failed to create tls config") + } + if transport, ok := c.client.Transport.(*http.Transport); ok { + transport.TLSClientConfig = config + return nil + } + return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport) + } +} + +// WithVersion overrides the client version with the specified one. If an empty +// version is specified, the value will be ignored to allow version negotiation. +func WithVersion(version string) Opt { + return func(c *Client) error { + if version != "" { + c.version = version + c.manualOverride = true + } + return nil + } +} + +// WithAPIVersionNegotiation enables automatic API version negotiation for the client. +// With this option enabled, the client automatically negotiates the API version +// to use when making requests. API version negotiation is performed on the first +// request; subsequent requests will not re-negotiate. +func WithAPIVersionNegotiation() Opt { + return func(c *Client) error { + c.negotiateVersion = true + return nil + } +} diff --git a/vendor/github.com/docker/docker/client/ping.go b/vendor/github.com/docker/docker/client/ping.go index 85d38adb51d..90f39ec14f9 100644 --- a/vendor/github.com/docker/docker/client/ping.go +++ b/vendor/github.com/docker/docker/client/ping.go @@ -2,31 +2,65 @@ package client // import "github.com/docker/docker/client" import ( "context" + "net/http" "path" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" ) -// Ping pings the server and returns the value of the "Docker-Experimental", "OS-Type" & "API-Version" headers +// Ping pings the server and returns the value of the "Docker-Experimental", +// "Builder-Version", "OS-Type" & "API-Version" headers. It attempts to use +// a HEAD request on the endpoint, but falls back to GET if HEAD is not supported +// by the daemon. func (cli *Client) Ping(ctx context.Context) (types.Ping, error) { var ping types.Ping - req, err := cli.buildRequest("GET", path.Join(cli.basePath, "/_ping"), nil, nil) + + // Using cli.buildRequest() + cli.doRequest() instead of cli.sendRequest() + // because ping requests are used during API version negotiation, so we want + // to hit the non-versioned /_ping endpoint, not /v1.xx/_ping + req, err := cli.buildRequest("HEAD", path.Join(cli.basePath, "/_ping"), nil, nil) if err != nil { return ping, err } serverResp, err := cli.doRequest(ctx, req) + if err == nil { + defer ensureReaderClosed(serverResp) + switch serverResp.statusCode { + case http.StatusOK, http.StatusInternalServerError: + // Server handled the request, so parse the response + return parsePingResponse(cli, serverResp) + } + } else if IsErrConnectionFailed(err) { + return ping, err + } + + req, err = cli.buildRequest("GET", path.Join(cli.basePath, "/_ping"), nil, nil) if err != nil { return ping, err } + serverResp, err = cli.doRequest(ctx, req) defer ensureReaderClosed(serverResp) + if err != nil { + return ping, err + } + return parsePingResponse(cli, serverResp) +} - if serverResp.header != nil { - ping.APIVersion = serverResp.header.Get("API-Version") - - if serverResp.header.Get("Docker-Experimental") == "true" { - ping.Experimental = true - } - ping.OSType = serverResp.header.Get("OSType") +func parsePingResponse(cli *Client, resp serverResponse) (types.Ping, error) { + var ping types.Ping + if resp.header == nil { + err := cli.checkResponseErr(resp) + return ping, errdefs.FromStatusCode(err, resp.statusCode) + } + ping.APIVersion = resp.header.Get("API-Version") + ping.OSType = resp.header.Get("OSType") + if resp.header.Get("Docker-Experimental") == "true" { + ping.Experimental = true + } + if bv := resp.header.Get("Builder-Version"); bv != "" { + ping.BuilderVersion = types.BuilderVersion(bv) } - return ping, cli.checkResponseErr(serverResp) + err := cli.checkResponseErr(resp) + return ping, errdefs.FromStatusCode(err, resp.statusCode) } diff --git a/vendor/github.com/docker/docker/client/plugin_create.go b/vendor/github.com/docker/docker/client/plugin_create.go index 4591db50fda..b95dbaf6863 100644 --- a/vendor/github.com/docker/docker/client/plugin_create.go +++ b/vendor/github.com/docker/docker/client/plugin_create.go @@ -18,9 +18,6 @@ func (cli *Client) PluginCreate(ctx context.Context, createContext io.Reader, cr query.Set("name", createOptions.RepoName) resp, err := cli.postRaw(ctx, "/plugins/create", query, createContext, headers) - if err != nil { - return err - } ensureReaderClosed(resp) return err } diff --git a/vendor/github.com/docker/docker/client/plugin_inspect.go b/vendor/github.com/docker/docker/client/plugin_inspect.go index 0ab7beaee8f..81b89732b03 100644 --- a/vendor/github.com/docker/docker/client/plugin_inspect.go +++ b/vendor/github.com/docker/docker/client/plugin_inspect.go @@ -15,11 +15,11 @@ func (cli *Client) PluginInspectWithRaw(ctx context.Context, name string) (*type return nil, nil, objectNotFoundError{object: "plugin", id: name} } resp, err := cli.get(ctx, "/plugins/"+name+"/json", nil, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, nil, wrapResponseError(err, resp, "plugin", name) } - defer ensureReaderClosed(resp) body, err := ioutil.ReadAll(resp.body) if err != nil { return nil, nil, err diff --git a/vendor/github.com/docker/docker/client/plugin_install.go b/vendor/github.com/docker/docker/client/plugin_install.go index 13baa40a9b0..012afe61cac 100644 --- a/vendor/github.com/docker/docker/client/plugin_install.go +++ b/vendor/github.com/docker/docker/client/plugin_install.go @@ -4,11 +4,11 @@ import ( "context" "encoding/json" "io" - "net/http" "net/url" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" "github.com/pkg/errors" ) @@ -78,7 +78,7 @@ func (cli *Client) tryPluginPull(ctx context.Context, query url.Values, privileg func (cli *Client) checkPluginPermissions(ctx context.Context, query url.Values, options types.PluginInstallOptions) (types.PluginPrivileges, error) { resp, err := cli.tryPluginPrivileges(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { // todo: do inspect before to check existing name before checking privileges newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { diff --git a/vendor/github.com/docker/docker/client/plugin_list.go b/vendor/github.com/docker/docker/client/plugin_list.go index ade1051a970..a51c930e6d5 100644 --- a/vendor/github.com/docker/docker/client/plugin_list.go +++ b/vendor/github.com/docker/docker/client/plugin_list.go @@ -15,6 +15,7 @@ func (cli *Client) PluginList(ctx context.Context, filter filters.Args) (types.P query := url.Values{} if filter.Len() > 0 { + //lint:ignore SA1019 for old code filterJSON, err := filters.ToParamWithVersion(cli.version, filter) if err != nil { return plugins, err @@ -22,11 +23,11 @@ func (cli *Client) PluginList(ctx context.Context, filter filters.Args) (types.P query.Set("filters", filterJSON) } resp, err := cli.get(ctx, "/plugins", query, nil) + defer ensureReaderClosed(resp) if err != nil { return plugins, wrapResponseError(err, resp, "plugin", "") } err = json.NewDecoder(resp.body).Decode(&plugins) - ensureReaderClosed(resp) return plugins, err } diff --git a/vendor/github.com/docker/docker/client/plugin_remove.go b/vendor/github.com/docker/docker/client/plugin_remove.go index 8563bab0dbc..51ca1040d6d 100644 --- a/vendor/github.com/docker/docker/client/plugin_remove.go +++ b/vendor/github.com/docker/docker/client/plugin_remove.go @@ -15,6 +15,6 @@ func (cli *Client) PluginRemove(ctx context.Context, name string, options types. } resp, err := cli.delete(ctx, "/plugins/"+name, query, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "plugin", name) } diff --git a/vendor/github.com/docker/docker/client/request.go b/vendor/github.com/docker/docker/client/request.go index a19d62aa52c..144c4163695 100644 --- a/vendor/github.com/docker/docker/client/request.go +++ b/vendor/github.com/docker/docker/client/request.go @@ -15,8 +15,8 @@ import ( "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/versions" + "github.com/docker/docker/errdefs" "github.com/pkg/errors" - "golang.org/x/net/context/ctxhttp" ) // serverResponse is a wrapper for http API responses. @@ -50,15 +50,6 @@ func (cli *Client) postRaw(ctx context.Context, path string, query url.Values, b return cli.sendRequest(ctx, "POST", path, query, body, headers) } -// put sends an http request to the docker API using the method PUT. -func (cli *Client) put(ctx context.Context, path string, query url.Values, obj interface{}, headers map[string][]string) (serverResponse, error) { - body, headers, err := encodeBody(obj, headers) - if err != nil { - return serverResponse{}, err - } - return cli.sendRequest(ctx, "PUT", path, query, body, headers) -} - // putRaw sends an http request to the docker API using the method PUT. func (cli *Client) putRaw(ctx context.Context, path string, query url.Values, body io.Reader, headers map[string][]string) (serverResponse, error) { return cli.sendRequest(ctx, "PUT", path, query, body, headers) @@ -115,28 +106,30 @@ func (cli *Client) buildRequest(method, path string, body io.Reader, headers hea } func (cli *Client) sendRequest(ctx context.Context, method, path string, query url.Values, body io.Reader, headers headers) (serverResponse, error) { - req, err := cli.buildRequest(method, cli.getAPIPath(path, query), body, headers) + req, err := cli.buildRequest(method, cli.getAPIPath(ctx, path, query), body, headers) if err != nil { return serverResponse{}, err } resp, err := cli.doRequest(ctx, req) if err != nil { - return resp, err + return resp, errdefs.FromStatusCode(err, resp.statusCode) } - return resp, cli.checkResponseErr(resp) + err = cli.checkResponseErr(resp) + return resp, errdefs.FromStatusCode(err, resp.statusCode) } func (cli *Client) doRequest(ctx context.Context, req *http.Request) (serverResponse, error) { serverResp := serverResponse{statusCode: -1, reqURL: req.URL} - resp, err := ctxhttp.Do(ctx, cli.client, req) + req = req.WithContext(ctx) + resp, err := cli.client.Do(req) if err != nil { if cli.scheme != "https" && strings.Contains(err.Error(), "malformed HTTP response") { return serverResp, fmt.Errorf("%v.\n* Are you trying to connect to a TLS-enabled daemon without TLS?", err) } if cli.scheme == "https" && strings.Contains(err.Error(), "bad certificate") { - return serverResp, fmt.Errorf("The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings: %v", err) + return serverResp, errors.Wrap(err, "The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings") } // Don't decorate context sentinel errors; users may be comparing to @@ -176,7 +169,13 @@ func (cli *Client) doRequest(ctx context.Context, req *http.Request) (serverResp // this is localised - for example in French the error would be // `open //./pipe/docker_engine: Le fichier spécifié est introuvable.` if strings.Contains(err.Error(), `open //./pipe/docker_engine`) { - err = errors.New(err.Error() + " In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.") + // Checks if client is running with elevated privileges + if f, elevatedErr := os.Open("\\\\.\\PHYSICALDRIVE0"); elevatedErr == nil { + err = errors.Wrap(err, "In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.") + } else { + f.Close() + err = errors.Wrap(err, "This error may indicate that the docker daemon is not running.") + } } return serverResp, errors.Wrap(err, "error during connect") @@ -195,9 +194,21 @@ func (cli *Client) checkResponseErr(serverResp serverResponse) error { return nil } - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return err + var body []byte + var err error + if serverResp.body != nil { + bodyMax := 1 * 1024 * 1024 // 1 MiB + bodyR := &io.LimitedReader{ + R: serverResp.body, + N: int64(bodyMax), + } + body, err = ioutil.ReadAll(bodyR) + if err != nil { + return err + } + if bodyR.N == 0 { + return fmt.Errorf("request returned %s with a message (> %d bytes) for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), bodyMax, serverResp.reqURL) + } } if len(body) == 0 { return fmt.Errorf("request returned %s for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), serverResp.reqURL) @@ -212,14 +223,14 @@ func (cli *Client) checkResponseErr(serverResp serverResponse) error { if (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) && ct == "application/json" { var errorResponse types.ErrorResponse if err := json.Unmarshal(body, &errorResponse); err != nil { - return fmt.Errorf("Error reading JSON: %v", err) + return errors.Wrap(err, "Error reading JSON") } - errorMessage = errorResponse.Message + errorMessage = strings.TrimSpace(errorResponse.Message) } else { - errorMessage = string(body) + errorMessage = strings.TrimSpace(string(body)) } - return fmt.Errorf("Error response from daemon: %s", strings.TrimSpace(errorMessage)) + return errors.Wrap(errors.New(errorMessage), "Error response from daemon") } func (cli *Client) addHeaders(req *http.Request, headers headers) *http.Request { diff --git a/vendor/github.com/docker/docker/client/secret_create.go b/vendor/github.com/docker/docker/client/secret_create.go index 09fae82f2a1..fd5b914136c 100644 --- a/vendor/github.com/docker/docker/client/secret_create.go +++ b/vendor/github.com/docker/docker/client/secret_create.go @@ -15,11 +15,11 @@ func (cli *Client) SecretCreate(ctx context.Context, secret swarm.SecretSpec) (t return response, err } resp, err := cli.post(ctx, "/secrets/create", nil, secret, nil) + defer ensureReaderClosed(resp) if err != nil { return response, err } err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/secret_inspect.go b/vendor/github.com/docker/docker/client/secret_inspect.go index e8322f45891..d093916c9a4 100644 --- a/vendor/github.com/docker/docker/client/secret_inspect.go +++ b/vendor/github.com/docker/docker/client/secret_inspect.go @@ -18,10 +18,10 @@ func (cli *Client) SecretInspectWithRaw(ctx context.Context, id string) (swarm.S return swarm.Secret{}, nil, objectNotFoundError{object: "secret", id: id} } resp, err := cli.get(ctx, "/secrets/"+id, nil, nil) + defer ensureReaderClosed(resp) if err != nil { return swarm.Secret{}, nil, wrapResponseError(err, resp, "secret", id) } - defer ensureReaderClosed(resp) body, err := ioutil.ReadAll(resp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/secret_list.go b/vendor/github.com/docker/docker/client/secret_list.go index f6bf7ba470d..a0289c9f440 100644 --- a/vendor/github.com/docker/docker/client/secret_list.go +++ b/vendor/github.com/docker/docker/client/secret_list.go @@ -27,12 +27,12 @@ func (cli *Client) SecretList(ctx context.Context, options types.SecretListOptio } resp, err := cli.get(ctx, "/secrets", query, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, err } var secrets []swarm.Secret err = json.NewDecoder(resp.body).Decode(&secrets) - ensureReaderClosed(resp) return secrets, err } diff --git a/vendor/github.com/docker/docker/client/secret_remove.go b/vendor/github.com/docker/docker/client/secret_remove.go index e9d52182932..c16f5558041 100644 --- a/vendor/github.com/docker/docker/client/secret_remove.go +++ b/vendor/github.com/docker/docker/client/secret_remove.go @@ -8,6 +8,6 @@ func (cli *Client) SecretRemove(ctx context.Context, id string) error { return err } resp, err := cli.delete(ctx, "/secrets/"+id, nil, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "secret", id) } diff --git a/vendor/github.com/docker/docker/client/service_create.go b/vendor/github.com/docker/docker/client/service_create.go index 8fadda4a906..56bfe55b710 100644 --- a/vendor/github.com/docker/docker/client/service_create.go +++ b/vendor/github.com/docker/docker/client/service_create.go @@ -9,7 +9,7 @@ import ( "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/swarm" - "github.com/opencontainers/go-digest" + digest "github.com/opencontainers/go-digest" "github.com/pkg/errors" ) @@ -72,6 +72,7 @@ func (cli *Client) ServiceCreate(ctx context.Context, service swarm.ServiceSpec, var response types.ServiceCreateResponse resp, err := cli.post(ctx, "/services/create", nil, service, headers) + defer ensureReaderClosed(resp) if err != nil { return response, err } @@ -82,7 +83,6 @@ func (cli *Client) ServiceCreate(ctx context.Context, service swarm.ServiceSpec, response.Warnings = append(response.Warnings, digestWarning(service.TaskTemplate.ContainerSpec.Image)) } - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/service_inspect.go b/vendor/github.com/docker/docker/client/service_inspect.go index de6aa22de76..2801483b80f 100644 --- a/vendor/github.com/docker/docker/client/service_inspect.go +++ b/vendor/github.com/docker/docker/client/service_inspect.go @@ -20,10 +20,10 @@ func (cli *Client) ServiceInspectWithRaw(ctx context.Context, serviceID string, query := url.Values{} query.Set("insertDefaults", fmt.Sprintf("%v", opts.InsertDefaults)) serverResp, err := cli.get(ctx, "/services/"+serviceID, query, nil) + defer ensureReaderClosed(serverResp) if err != nil { return swarm.Service{}, nil, wrapResponseError(err, serverResp, "service", serviceID) } - defer ensureReaderClosed(serverResp) body, err := ioutil.ReadAll(serverResp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/service_list.go b/vendor/github.com/docker/docker/client/service_list.go index 7d53e2b9b9e..64d35e71598 100644 --- a/vendor/github.com/docker/docker/client/service_list.go +++ b/vendor/github.com/docker/docker/client/service_list.go @@ -24,12 +24,12 @@ func (cli *Client) ServiceList(ctx context.Context, options types.ServiceListOpt } resp, err := cli.get(ctx, "/services", query, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, err } var services []swarm.Service err = json.NewDecoder(resp.body).Decode(&services) - ensureReaderClosed(resp) return services, err } diff --git a/vendor/github.com/docker/docker/client/service_remove.go b/vendor/github.com/docker/docker/client/service_remove.go index fe3421bec82..953a2adf5ae 100644 --- a/vendor/github.com/docker/docker/client/service_remove.go +++ b/vendor/github.com/docker/docker/client/service_remove.go @@ -5,6 +5,6 @@ import "context" // ServiceRemove kills and removes a service. func (cli *Client) ServiceRemove(ctx context.Context, serviceID string) error { resp, err := cli.delete(ctx, "/services/"+serviceID, nil, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "service", serviceID) } diff --git a/vendor/github.com/docker/docker/client/service_update.go b/vendor/github.com/docker/docker/client/service_update.go index 5a7a61b01ff..cd0f59e2133 100644 --- a/vendor/github.com/docker/docker/client/service_update.go +++ b/vendor/github.com/docker/docker/client/service_update.go @@ -10,7 +10,9 @@ import ( "github.com/docker/docker/api/types/swarm" ) -// ServiceUpdate updates a Service. +// ServiceUpdate updates a Service. The version number is required to avoid conflicting writes. +// It should be the value as set *before* the update. You can find this value in the Meta field +// of swarm.Service, which can be found using ServiceInspectWithRaw. func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) { var ( query = url.Values{} @@ -77,6 +79,7 @@ func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version var response types.ServiceUpdateResponse resp, err := cli.post(ctx, "/services/"+serviceID+"/update", query, service, headers) + defer ensureReaderClosed(resp) if err != nil { return response, err } @@ -87,6 +90,5 @@ func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version response.Warnings = append(response.Warnings, digestWarning(service.TaskTemplate.ContainerSpec.Image)) } - ensureReaderClosed(resp) return response, err } diff --git a/vendor/github.com/docker/docker/client/session.go b/vendor/github.com/docker/docker/client/session.go deleted file mode 100644 index c247123b456..00000000000 --- a/vendor/github.com/docker/docker/client/session.go +++ /dev/null @@ -1,18 +0,0 @@ -package client // import "github.com/docker/docker/client" - -import ( - "context" - "net" - "net/http" -) - -// DialSession returns a connection that can be used communication with daemon -func (cli *Client) DialSession(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) { - req, err := http.NewRequest("POST", "/session", nil) - if err != nil { - return nil, err - } - req = cli.addHeaders(req, meta) - - return cli.setupHijackConn(req, proto) -} diff --git a/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go b/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go index 0c50c01a8c0..19f59dd582a 100644 --- a/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go +++ b/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go @@ -10,12 +10,12 @@ import ( // SwarmGetUnlockKey retrieves the swarm's unlock key. func (cli *Client) SwarmGetUnlockKey(ctx context.Context) (types.SwarmUnlockKeyResponse, error) { serverResp, err := cli.get(ctx, "/swarm/unlockkey", nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return types.SwarmUnlockKeyResponse{}, err } var response types.SwarmUnlockKeyResponse err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) return response, err } diff --git a/vendor/github.com/docker/docker/client/swarm_init.go b/vendor/github.com/docker/docker/client/swarm_init.go index 742ca0f0416..da3c1637ef0 100644 --- a/vendor/github.com/docker/docker/client/swarm_init.go +++ b/vendor/github.com/docker/docker/client/swarm_init.go @@ -10,12 +10,12 @@ import ( // SwarmInit initializes the swarm. func (cli *Client) SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error) { serverResp, err := cli.post(ctx, "/swarm/init", nil, req, nil) + defer ensureReaderClosed(serverResp) if err != nil { return "", err } var response string err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) return response, err } diff --git a/vendor/github.com/docker/docker/client/swarm_inspect.go b/vendor/github.com/docker/docker/client/swarm_inspect.go index cfaabb25b1e..b52b67a8849 100644 --- a/vendor/github.com/docker/docker/client/swarm_inspect.go +++ b/vendor/github.com/docker/docker/client/swarm_inspect.go @@ -10,12 +10,12 @@ import ( // SwarmInspect inspects the swarm. func (cli *Client) SwarmInspect(ctx context.Context) (swarm.Swarm, error) { serverResp, err := cli.get(ctx, "/swarm", nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return swarm.Swarm{}, err } var response swarm.Swarm err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) return response, err } diff --git a/vendor/github.com/docker/docker/client/task_inspect.go b/vendor/github.com/docker/docker/client/task_inspect.go index e1c0a736da5..44d40ba5ae8 100644 --- a/vendor/github.com/docker/docker/client/task_inspect.go +++ b/vendor/github.com/docker/docker/client/task_inspect.go @@ -15,10 +15,10 @@ func (cli *Client) TaskInspectWithRaw(ctx context.Context, taskID string) (swarm return swarm.Task{}, nil, objectNotFoundError{object: "task", id: taskID} } serverResp, err := cli.get(ctx, "/tasks/"+taskID, nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return swarm.Task{}, nil, wrapResponseError(err, serverResp, "task", taskID) } - defer ensureReaderClosed(serverResp) body, err := ioutil.ReadAll(serverResp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/task_list.go b/vendor/github.com/docker/docker/client/task_list.go index 42d20c1b8d1..4869b44493b 100644 --- a/vendor/github.com/docker/docker/client/task_list.go +++ b/vendor/github.com/docker/docker/client/task_list.go @@ -24,12 +24,12 @@ func (cli *Client) TaskList(ctx context.Context, options types.TaskListOptions) } resp, err := cli.get(ctx, "/tasks", query, nil) + defer ensureReaderClosed(resp) if err != nil { return nil, err } var tasks []swarm.Task err = json.NewDecoder(resp.body).Decode(&tasks) - ensureReaderClosed(resp) return tasks, err } diff --git a/vendor/github.com/docker/docker/client/tlsconfig_clone.go b/vendor/github.com/docker/docker/client/tlsconfig_clone.go deleted file mode 100644 index 88200e92c3d..00000000000 --- a/vendor/github.com/docker/docker/client/tlsconfig_clone.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build go1.8 - -package client // import "github.com/docker/docker/client" - -import "crypto/tls" - -// tlsConfigClone returns a clone of tls.Config. This function is provided for -// compatibility for go1.7 that doesn't include this method in stdlib. -func tlsConfigClone(c *tls.Config) *tls.Config { - return c.Clone() -} diff --git a/vendor/github.com/docker/docker/client/tlsconfig_clone_go17.go b/vendor/github.com/docker/docker/client/tlsconfig_clone_go17.go deleted file mode 100644 index e298542367e..00000000000 --- a/vendor/github.com/docker/docker/client/tlsconfig_clone_go17.go +++ /dev/null @@ -1,33 +0,0 @@ -// +build go1.7,!go1.8 - -package client // import "github.com/docker/docker/client" - -import "crypto/tls" - -// tlsConfigClone returns a clone of tls.Config. This function is provided for -// compatibility for go1.7 that doesn't include this method in stdlib. -func tlsConfigClone(c *tls.Config) *tls.Config { - return &tls.Config{ - Rand: c.Rand, - Time: c.Time, - Certificates: c.Certificates, - NameToCertificate: c.NameToCertificate, - GetCertificate: c.GetCertificate, - RootCAs: c.RootCAs, - NextProtos: c.NextProtos, - ServerName: c.ServerName, - ClientAuth: c.ClientAuth, - ClientCAs: c.ClientCAs, - InsecureSkipVerify: c.InsecureSkipVerify, - CipherSuites: c.CipherSuites, - PreferServerCipherSuites: c.PreferServerCipherSuites, - SessionTicketsDisabled: c.SessionTicketsDisabled, - SessionTicketKey: c.SessionTicketKey, - ClientSessionCache: c.ClientSessionCache, - MinVersion: c.MinVersion, - MaxVersion: c.MaxVersion, - CurvePreferences: c.CurvePreferences, - DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled, - Renegotiation: c.Renegotiation, - } -} diff --git a/vendor/github.com/docker/docker/client/version.go b/vendor/github.com/docker/docker/client/version.go index 1989f6d6d2b..8f17ff4e87a 100644 --- a/vendor/github.com/docker/docker/client/version.go +++ b/vendor/github.com/docker/docker/client/version.go @@ -10,12 +10,12 @@ import ( // ServerVersion returns information of the docker client and server host. func (cli *Client) ServerVersion(ctx context.Context) (types.Version, error) { resp, err := cli.get(ctx, "/version", nil, nil) + defer ensureReaderClosed(resp) if err != nil { return types.Version{}, err } var server types.Version err = json.NewDecoder(resp.body).Decode(&server) - ensureReaderClosed(resp) return server, err } diff --git a/vendor/github.com/docker/docker/client/volume_create.go b/vendor/github.com/docker/docker/client/volume_create.go index f1f6fcdc4a2..92761b3c639 100644 --- a/vendor/github.com/docker/docker/client/volume_create.go +++ b/vendor/github.com/docker/docker/client/volume_create.go @@ -12,10 +12,10 @@ import ( func (cli *Client) VolumeCreate(ctx context.Context, options volumetypes.VolumeCreateBody) (types.Volume, error) { var volume types.Volume resp, err := cli.post(ctx, "/volumes/create", nil, options, nil) + defer ensureReaderClosed(resp) if err != nil { return volume, err } err = json.NewDecoder(resp.body).Decode(&volume) - ensureReaderClosed(resp) return volume, err } diff --git a/vendor/github.com/docker/docker/client/volume_inspect.go b/vendor/github.com/docker/docker/client/volume_inspect.go index f840682d2ec..e20b2c67c7a 100644 --- a/vendor/github.com/docker/docker/client/volume_inspect.go +++ b/vendor/github.com/docker/docker/client/volume_inspect.go @@ -23,10 +23,10 @@ func (cli *Client) VolumeInspectWithRaw(ctx context.Context, volumeID string) (t var volume types.Volume resp, err := cli.get(ctx, "/volumes/"+volumeID, nil, nil) + defer ensureReaderClosed(resp) if err != nil { return volume, nil, wrapResponseError(err, resp, "volume", volumeID) } - defer ensureReaderClosed(resp) body, err := ioutil.ReadAll(resp.body) if err != nil { diff --git a/vendor/github.com/docker/docker/client/volume_list.go b/vendor/github.com/docker/docker/client/volume_list.go index 284554d67c0..d68fc2b9860 100644 --- a/vendor/github.com/docker/docker/client/volume_list.go +++ b/vendor/github.com/docker/docker/client/volume_list.go @@ -15,6 +15,7 @@ func (cli *Client) VolumeList(ctx context.Context, filter filters.Args) (volumet query := url.Values{} if filter.Len() > 0 { + //lint:ignore SA1019 for old code filterJSON, err := filters.ToParamWithVersion(cli.version, filter) if err != nil { return volumes, err @@ -22,11 +23,11 @@ func (cli *Client) VolumeList(ctx context.Context, filter filters.Args) (volumet query.Set("filters", filterJSON) } resp, err := cli.get(ctx, "/volumes", query, nil) + defer ensureReaderClosed(resp) if err != nil { return volumes, err } err = json.NewDecoder(resp.body).Decode(&volumes) - ensureReaderClosed(resp) return volumes, err } diff --git a/vendor/github.com/docker/docker/client/volume_prune.go b/vendor/github.com/docker/docker/client/volume_prune.go index 70041efed8b..6e324708f2b 100644 --- a/vendor/github.com/docker/docker/client/volume_prune.go +++ b/vendor/github.com/docker/docker/client/volume_prune.go @@ -23,10 +23,10 @@ func (cli *Client) VolumesPrune(ctx context.Context, pruneFilters filters.Args) } serverResp, err := cli.post(ctx, "/volumes/prune", query, nil, nil) + defer ensureReaderClosed(serverResp) if err != nil { return report, err } - defer ensureReaderClosed(serverResp) if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { return report, fmt.Errorf("Error retrieving volume prune report: %v", err) diff --git a/vendor/github.com/docker/docker/client/volume_remove.go b/vendor/github.com/docker/docker/client/volume_remove.go index fc5a71d3349..79decdafab8 100644 --- a/vendor/github.com/docker/docker/client/volume_remove.go +++ b/vendor/github.com/docker/docker/client/volume_remove.go @@ -16,6 +16,6 @@ func (cli *Client) VolumeRemove(ctx context.Context, volumeID string, force bool } } resp, err := cli.delete(ctx, "/volumes/"+volumeID, query, nil) - ensureReaderClosed(resp) + defer ensureReaderClosed(resp) return wrapResponseError(err, resp, "volume", volumeID) } diff --git a/vendor/github.com/docker/docker/errdefs/defs.go b/vendor/github.com/docker/docker/errdefs/defs.go index e6a2275b2d7..61e7456b4eb 100644 --- a/vendor/github.com/docker/docker/errdefs/defs.go +++ b/vendor/github.com/docker/docker/errdefs/defs.go @@ -43,11 +43,6 @@ type ErrNotModified interface { NotModified() } -// ErrAlreadyExists is a special case of ErrConflict which signals that the desired object already exists -type ErrAlreadyExists interface { - AlreadyExists() -} - // ErrNotImplemented signals that the requested action/feature is not implemented on the system as configured. type ErrNotImplemented interface { NotImplemented() diff --git a/vendor/github.com/docker/docker/errdefs/helpers.go b/vendor/github.com/docker/docker/errdefs/helpers.go index 6169c2bc62a..c9916e01354 100644 --- a/vendor/github.com/docker/docker/errdefs/helpers.go +++ b/vendor/github.com/docker/docker/errdefs/helpers.go @@ -12,8 +12,8 @@ func (e errNotFound) Cause() error { // NotFound is a helper to create an error of the class with the same name from any error type func NotFound(err error) error { - if err == nil { - return nil + if err == nil || IsNotFound(err) { + return err } return errNotFound{err} } @@ -28,8 +28,8 @@ func (e errInvalidParameter) Cause() error { // InvalidParameter is a helper to create an error of the class with the same name from any error type func InvalidParameter(err error) error { - if err == nil { - return nil + if err == nil || IsInvalidParameter(err) { + return err } return errInvalidParameter{err} } @@ -44,8 +44,8 @@ func (e errConflict) Cause() error { // Conflict is a helper to create an error of the class with the same name from any error type func Conflict(err error) error { - if err == nil { - return nil + if err == nil || IsConflict(err) { + return err } return errConflict{err} } @@ -60,8 +60,8 @@ func (e errUnauthorized) Cause() error { // Unauthorized is a helper to create an error of the class with the same name from any error type func Unauthorized(err error) error { - if err == nil { - return nil + if err == nil || IsUnauthorized(err) { + return err } return errUnauthorized{err} } @@ -76,6 +76,9 @@ func (e errUnavailable) Cause() error { // Unavailable is a helper to create an error of the class with the same name from any error type func Unavailable(err error) error { + if err == nil || IsUnavailable(err) { + return err + } return errUnavailable{err} } @@ -89,8 +92,8 @@ func (e errForbidden) Cause() error { // Forbidden is a helper to create an error of the class with the same name from any error type func Forbidden(err error) error { - if err == nil { - return nil + if err == nil || IsForbidden(err) { + return err } return errForbidden{err} } @@ -105,8 +108,8 @@ func (e errSystem) Cause() error { // System is a helper to create an error of the class with the same name from any error type func System(err error) error { - if err == nil { - return nil + if err == nil || IsSystem(err) { + return err } return errSystem{err} } @@ -121,28 +124,12 @@ func (e errNotModified) Cause() error { // NotModified is a helper to create an error of the class with the same name from any error type func NotModified(err error) error { - if err == nil { - return nil + if err == nil || IsNotModified(err) { + return err } return errNotModified{err} } -type errAlreadyExists struct{ error } - -func (errAlreadyExists) AlreadyExists() {} - -func (e errAlreadyExists) Cause() error { - return e.error -} - -// AlreadyExists is a helper to create an error of the class with the same name from any error type -func AlreadyExists(err error) error { - if err == nil { - return nil - } - return errAlreadyExists{err} -} - type errNotImplemented struct{ error } func (errNotImplemented) NotImplemented() {} @@ -153,8 +140,8 @@ func (e errNotImplemented) Cause() error { // NotImplemented is a helper to create an error of the class with the same name from any error type func NotImplemented(err error) error { - if err == nil { - return nil + if err == nil || IsNotImplemented(err) { + return err } return errNotImplemented{err} } @@ -169,8 +156,8 @@ func (e errUnknown) Cause() error { // Unknown is a helper to create an error of the class with the same name from any error type func Unknown(err error) error { - if err == nil { - return nil + if err == nil || IsUnknown(err) { + return err } return errUnknown{err} } @@ -185,8 +172,8 @@ func (e errCancelled) Cause() error { // Cancelled is a helper to create an error of the class with the same name from any error type func Cancelled(err error) error { - if err == nil { - return nil + if err == nil || IsCancelled(err) { + return err } return errCancelled{err} } @@ -201,8 +188,8 @@ func (e errDeadline) Cause() error { // Deadline is a helper to create an error of the class with the same name from any error type func Deadline(err error) error { - if err == nil { - return nil + if err == nil || IsDeadline(err) { + return err } return errDeadline{err} } @@ -217,8 +204,8 @@ func (e errDataLoss) Cause() error { // DataLoss is a helper to create an error of the class with the same name from any error type func DataLoss(err error) error { - if err == nil { - return nil + if err == nil || IsDataLoss(err) { + return err } return errDataLoss{err} } diff --git a/vendor/github.com/docker/docker/errdefs/http_helpers.go b/vendor/github.com/docker/docker/errdefs/http_helpers.go new file mode 100644 index 00000000000..07552f1cc1d --- /dev/null +++ b/vendor/github.com/docker/docker/errdefs/http_helpers.go @@ -0,0 +1,191 @@ +package errdefs // import "github.com/docker/docker/errdefs" + +import ( + "fmt" + "net/http" + + containerderrors "github.com/containerd/containerd/errdefs" + "github.com/docker/distribution/registry/api/errcode" + "github.com/sirupsen/logrus" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// GetHTTPErrorStatusCode retrieves status code from error message. +func GetHTTPErrorStatusCode(err error) int { + if err == nil { + logrus.WithFields(logrus.Fields{"error": err}).Error("unexpected HTTP error handling") + return http.StatusInternalServerError + } + + var statusCode int + + // Stop right there + // Are you sure you should be adding a new error class here? Do one of the existing ones work? + + // Note that the below functions are already checking the error causal chain for matches. + switch { + case IsNotFound(err): + statusCode = http.StatusNotFound + case IsInvalidParameter(err): + statusCode = http.StatusBadRequest + case IsConflict(err): + statusCode = http.StatusConflict + case IsUnauthorized(err): + statusCode = http.StatusUnauthorized + case IsUnavailable(err): + statusCode = http.StatusServiceUnavailable + case IsForbidden(err): + statusCode = http.StatusForbidden + case IsNotModified(err): + statusCode = http.StatusNotModified + case IsNotImplemented(err): + statusCode = http.StatusNotImplemented + case IsSystem(err) || IsUnknown(err) || IsDataLoss(err) || IsDeadline(err) || IsCancelled(err): + statusCode = http.StatusInternalServerError + default: + statusCode = statusCodeFromGRPCError(err) + if statusCode != http.StatusInternalServerError { + return statusCode + } + statusCode = statusCodeFromContainerdError(err) + if statusCode != http.StatusInternalServerError { + return statusCode + } + statusCode = statusCodeFromDistributionError(err) + if statusCode != http.StatusInternalServerError { + return statusCode + } + if e, ok := err.(causer); ok { + return GetHTTPErrorStatusCode(e.Cause()) + } + + logrus.WithFields(logrus.Fields{ + "module": "api", + "error_type": fmt.Sprintf("%T", err), + }).Debugf("FIXME: Got an API for which error does not match any expected type!!!: %+v", err) + } + + if statusCode == 0 { + statusCode = http.StatusInternalServerError + } + + return statusCode +} + +// FromStatusCode creates an errdef error, based on the provided HTTP status-code +func FromStatusCode(err error, statusCode int) error { + if err == nil { + return err + } + switch statusCode { + case http.StatusNotFound: + err = NotFound(err) + case http.StatusBadRequest: + err = InvalidParameter(err) + case http.StatusConflict: + err = Conflict(err) + case http.StatusUnauthorized: + err = Unauthorized(err) + case http.StatusServiceUnavailable: + err = Unavailable(err) + case http.StatusForbidden: + err = Forbidden(err) + case http.StatusNotModified: + err = NotModified(err) + case http.StatusNotImplemented: + err = NotImplemented(err) + case http.StatusInternalServerError: + if !IsSystem(err) && !IsUnknown(err) && !IsDataLoss(err) && !IsDeadline(err) && !IsCancelled(err) { + err = System(err) + } + default: + logrus.WithFields(logrus.Fields{ + "module": "api", + "status_code": fmt.Sprintf("%d", statusCode), + }).Debugf("FIXME: Got an status-code for which error does not match any expected type!!!: %d", statusCode) + + switch { + case statusCode >= 200 && statusCode < 400: + // it's a client error + case statusCode >= 400 && statusCode < 500: + err = InvalidParameter(err) + case statusCode >= 500 && statusCode < 600: + err = System(err) + default: + err = Unknown(err) + } + } + return err +} + +// statusCodeFromGRPCError returns status code according to gRPC error +func statusCodeFromGRPCError(err error) int { + switch status.Code(err) { + case codes.InvalidArgument: // code 3 + return http.StatusBadRequest + case codes.NotFound: // code 5 + return http.StatusNotFound + case codes.AlreadyExists: // code 6 + return http.StatusConflict + case codes.PermissionDenied: // code 7 + return http.StatusForbidden + case codes.FailedPrecondition: // code 9 + return http.StatusBadRequest + case codes.Unauthenticated: // code 16 + return http.StatusUnauthorized + case codes.OutOfRange: // code 11 + return http.StatusBadRequest + case codes.Unimplemented: // code 12 + return http.StatusNotImplemented + case codes.Unavailable: // code 14 + return http.StatusServiceUnavailable + default: + // codes.Canceled(1) + // codes.Unknown(2) + // codes.DeadlineExceeded(4) + // codes.ResourceExhausted(8) + // codes.Aborted(10) + // codes.Internal(13) + // codes.DataLoss(15) + return http.StatusInternalServerError + } +} + +// statusCodeFromDistributionError returns status code according to registry errcode +// code is loosely based on errcode.ServeJSON() in docker/distribution +func statusCodeFromDistributionError(err error) int { + switch errs := err.(type) { + case errcode.Errors: + if len(errs) < 1 { + return http.StatusInternalServerError + } + if _, ok := errs[0].(errcode.ErrorCoder); ok { + return statusCodeFromDistributionError(errs[0]) + } + case errcode.ErrorCoder: + return errs.ErrorCode().Descriptor().HTTPStatusCode + } + return http.StatusInternalServerError +} + +// statusCodeFromContainerdError returns status code for containerd errors when +// consumed directly (not through gRPC) +func statusCodeFromContainerdError(err error) int { + switch { + case containerderrors.IsInvalidArgument(err): + return http.StatusBadRequest + case containerderrors.IsNotFound(err): + return http.StatusNotFound + case containerderrors.IsAlreadyExists(err): + return http.StatusConflict + case containerderrors.IsFailedPrecondition(err): + return http.StatusPreconditionFailed + case containerderrors.IsUnavailable(err): + return http.StatusServiceUnavailable + case containerderrors.IsNotImplemented(err): + return http.StatusNotImplemented + default: + return http.StatusInternalServerError + } +} diff --git a/vendor/github.com/docker/docker/errdefs/is.go b/vendor/github.com/docker/docker/errdefs/is.go index e0513331bbd..3abf07d0c35 100644 --- a/vendor/github.com/docker/docker/errdefs/is.go +++ b/vendor/github.com/docker/docker/errdefs/is.go @@ -15,7 +15,6 @@ func getImplementer(err error) error { ErrForbidden, ErrSystem, ErrNotModified, - ErrAlreadyExists, ErrNotImplemented, ErrCancelled, ErrDeadline, @@ -77,12 +76,6 @@ func IsNotModified(err error) bool { return ok } -// IsAlreadyExists returns if the passed in error is a AlreadyExists error -func IsAlreadyExists(err error) bool { - _, ok := getImplementer(err).(ErrAlreadyExists) - return ok -} - // IsNotImplemented returns if the passed in error is an ErrNotImplemented func IsNotImplemented(err error) bool { _, ok := getImplementer(err).(ErrNotImplemented) diff --git a/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go b/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go index 28cad499aa5..34f1c726fb5 100644 --- a/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go +++ b/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go @@ -106,7 +106,7 @@ func (pm *PatternMatcher) Patterns() []*Pattern { return pm.patterns } -// Pattern defines a single regexp used used to filter file paths. +// Pattern defines a single regexp used to filter file paths. type Pattern struct { cleanedPattern string dirs []string diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go index ee15ed52b16..5e6310fdcd6 100644 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go @@ -1,21 +1,93 @@ package homedir // import "github.com/docker/docker/pkg/homedir" import ( + "errors" "os" - - "github.com/docker/docker/pkg/idtools" + "path/filepath" + "strings" ) -// GetStatic returns the home directory for the current user without calling -// os/user.Current(). This is useful for static-linked binary on glibc-based -// system, because a call to os/user.Current() in a static binary leads to -// segfault due to a glibc issue that won't be fixed in a short term. -// (#29344, golang/go#13470, https://sourceware.org/bugzilla/show_bug.cgi?id=19341) -func GetStatic() (string, error) { - uid := os.Getuid() - usr, err := idtools.LookupUID(uid) +// GetRuntimeDir returns XDG_RUNTIME_DIR. +// XDG_RUNTIME_DIR is typically configured via pam_systemd. +// GetRuntimeDir returns non-nil error if XDG_RUNTIME_DIR is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func GetRuntimeDir() (string, error) { + if xdgRuntimeDir := os.Getenv("XDG_RUNTIME_DIR"); xdgRuntimeDir != "" { + return xdgRuntimeDir, nil + } + return "", errors.New("could not get XDG_RUNTIME_DIR") +} + +// StickRuntimeDirContents sets the sticky bit on files that are under +// XDG_RUNTIME_DIR, so that the files won't be periodically removed by the system. +// +// StickyRuntimeDir returns slice of sticked files. +// StickyRuntimeDir returns nil error if XDG_RUNTIME_DIR is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func StickRuntimeDirContents(files []string) ([]string, error) { + runtimeDir, err := GetRuntimeDir() + if err != nil { + // ignore error if runtimeDir is empty + return nil, nil + } + runtimeDir, err = filepath.Abs(runtimeDir) if err != nil { - return "", err + return nil, err + } + var sticked []string + for _, f := range files { + f, err = filepath.Abs(f) + if err != nil { + return sticked, err + } + if strings.HasPrefix(f, runtimeDir+"/") { + if err = stick(f); err != nil { + return sticked, err + } + sticked = append(sticked, f) + } + } + return sticked, nil +} + +func stick(f string) error { + st, err := os.Stat(f) + if err != nil { + return err + } + m := st.Mode() + m |= os.ModeSticky + return os.Chmod(f, m) +} + +// GetDataHome returns XDG_DATA_HOME. +// GetDataHome returns $HOME/.local/share and nil error if XDG_DATA_HOME is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func GetDataHome() (string, error) { + if xdgDataHome := os.Getenv("XDG_DATA_HOME"); xdgDataHome != "" { + return xdgDataHome, nil + } + home := os.Getenv("HOME") + if home == "" { + return "", errors.New("could not get either XDG_DATA_HOME or HOME") + } + return filepath.Join(home, ".local", "share"), nil +} + +// GetConfigHome returns XDG_CONFIG_HOME. +// GetConfigHome returns $HOME/.config and nil error if XDG_CONFIG_HOME is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func GetConfigHome() (string, error) { + if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" { + return xdgConfigHome, nil + } + home := os.Getenv("HOME") + if home == "" { + return "", errors.New("could not get either XDG_CONFIG_HOME or HOME") } - return usr.Home, nil + return filepath.Join(home, ".config"), nil } diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go index 75ada2fe546..67ab9e9b31e 100644 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go @@ -6,8 +6,22 @@ import ( "errors" ) -// GetStatic is not needed for non-linux systems. -// (Precisely, it is needed only for glibc-based linux systems.) -func GetStatic() (string, error) { - return "", errors.New("homedir.GetStatic() is not supported on this system") +// GetRuntimeDir is unsupported on non-linux system. +func GetRuntimeDir() (string, error) { + return "", errors.New("homedir.GetRuntimeDir() is not supported on this system") +} + +// StickRuntimeDirContents is unsupported on non-linux system. +func StickRuntimeDirContents(files []string) ([]string, error) { + return nil, errors.New("homedir.StickRuntimeDirContents() is not supported on this system") +} + +// GetDataHome is unsupported on non-linux system. +func GetDataHome() (string, error) { + return "", errors.New("homedir.GetDataHome() is not supported on this system") +} + +// GetConfigHome is unsupported on non-linux system. +func GetConfigHome() (string, error) { + return "", errors.New("homedir.GetConfigHome() is not supported on this system") } diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go index d85e1244884..284e8be7ca8 100644 --- a/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go @@ -4,8 +4,7 @@ package homedir // import "github.com/docker/docker/pkg/homedir" import ( "os" - - "github.com/opencontainers/runc/libcontainer/user" + "os/user" ) // Key returns the env var name for the user's home dir based on @@ -17,11 +16,13 @@ func Key() string { // Get returns the home directory of the current user with the help of // environment variables depending on the target operating system. // Returned path should be used with "path/filepath" to form new paths. +// If compiling statically, ensure the osusergo build tag is used. +// If needing to do nss lookups, do not compile statically. func Get() string { home := os.Getenv(Key()) if home == "" { - if u, err := user.CurrentUser(); err == nil { - return u.Home + if u, err := user.Current(); err == nil { + return u.HomeDir } } return home diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools.go b/vendor/github.com/docker/docker/pkg/idtools/idtools.go deleted file mode 100644 index d1f173a311c..00000000000 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools.go +++ /dev/null @@ -1,266 +0,0 @@ -package idtools // import "github.com/docker/docker/pkg/idtools" - -import ( - "bufio" - "fmt" - "os" - "sort" - "strconv" - "strings" -) - -// IDMap contains a single entry for user namespace range remapping. An array -// of IDMap entries represents the structure that will be provided to the Linux -// kernel for creating a user namespace. -type IDMap struct { - ContainerID int `json:"container_id"` - HostID int `json:"host_id"` - Size int `json:"size"` -} - -type subIDRange struct { - Start int - Length int -} - -type ranges []subIDRange - -func (e ranges) Len() int { return len(e) } -func (e ranges) Swap(i, j int) { e[i], e[j] = e[j], e[i] } -func (e ranges) Less(i, j int) bool { return e[i].Start < e[j].Start } - -const ( - subuidFileName = "/etc/subuid" - subgidFileName = "/etc/subgid" -) - -// MkdirAllAndChown creates a directory (include any along the path) and then modifies -// ownership to the requested uid/gid. If the directory already exists, this -// function will still change ownership to the requested uid/gid pair. -func MkdirAllAndChown(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, true, true) -} - -// MkdirAndChown creates a directory and then modifies ownership to the requested uid/gid. -// If the directory already exists, this function still changes ownership. -// Note that unlike os.Mkdir(), this function does not return IsExist error -// in case path already exists. -func MkdirAndChown(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, false, true) -} - -// MkdirAllAndChownNew creates a directory (include any along the path) and then modifies -// ownership ONLY of newly created directories to the requested uid/gid. If the -// directories along the path exist, no change of ownership will be performed -func MkdirAllAndChownNew(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, true, false) -} - -// GetRootUIDGID retrieves the remapped root uid/gid pair from the set of maps. -// If the maps are empty, then the root uid/gid will default to "real" 0/0 -func GetRootUIDGID(uidMap, gidMap []IDMap) (int, int, error) { - uid, err := toHost(0, uidMap) - if err != nil { - return -1, -1, err - } - gid, err := toHost(0, gidMap) - if err != nil { - return -1, -1, err - } - return uid, gid, nil -} - -// toContainer takes an id mapping, and uses it to translate a -// host ID to the remapped ID. If no map is provided, then the translation -// assumes a 1-to-1 mapping and returns the passed in id -func toContainer(hostID int, idMap []IDMap) (int, error) { - if idMap == nil { - return hostID, nil - } - for _, m := range idMap { - if (hostID >= m.HostID) && (hostID <= (m.HostID + m.Size - 1)) { - contID := m.ContainerID + (hostID - m.HostID) - return contID, nil - } - } - return -1, fmt.Errorf("Host ID %d cannot be mapped to a container ID", hostID) -} - -// toHost takes an id mapping and a remapped ID, and translates the -// ID to the mapped host ID. If no map is provided, then the translation -// assumes a 1-to-1 mapping and returns the passed in id # -func toHost(contID int, idMap []IDMap) (int, error) { - if idMap == nil { - return contID, nil - } - for _, m := range idMap { - if (contID >= m.ContainerID) && (contID <= (m.ContainerID + m.Size - 1)) { - hostID := m.HostID + (contID - m.ContainerID) - return hostID, nil - } - } - return -1, fmt.Errorf("Container ID %d cannot be mapped to a host ID", contID) -} - -// IDPair is a UID and GID pair -type IDPair struct { - UID int - GID int -} - -// IDMappings contains a mappings of UIDs and GIDs -type IDMappings struct { - uids []IDMap - gids []IDMap -} - -// NewIDMappings takes a requested user and group name and -// using the data from /etc/sub{uid,gid} ranges, creates the -// proper uid and gid remapping ranges for that user/group pair -func NewIDMappings(username, groupname string) (*IDMappings, error) { - subuidRanges, err := parseSubuid(username) - if err != nil { - return nil, err - } - subgidRanges, err := parseSubgid(groupname) - if err != nil { - return nil, err - } - if len(subuidRanges) == 0 { - return nil, fmt.Errorf("No subuid ranges found for user %q", username) - } - if len(subgidRanges) == 0 { - return nil, fmt.Errorf("No subgid ranges found for group %q", groupname) - } - - return &IDMappings{ - uids: createIDMap(subuidRanges), - gids: createIDMap(subgidRanges), - }, nil -} - -// NewIDMappingsFromMaps creates a new mapping from two slices -// Deprecated: this is a temporary shim while transitioning to IDMapping -func NewIDMappingsFromMaps(uids []IDMap, gids []IDMap) *IDMappings { - return &IDMappings{uids: uids, gids: gids} -} - -// RootPair returns a uid and gid pair for the root user. The error is ignored -// because a root user always exists, and the defaults are correct when the uid -// and gid maps are empty. -func (i *IDMappings) RootPair() IDPair { - uid, gid, _ := GetRootUIDGID(i.uids, i.gids) - return IDPair{UID: uid, GID: gid} -} - -// ToHost returns the host UID and GID for the container uid, gid. -// Remapping is only performed if the ids aren't already the remapped root ids -func (i *IDMappings) ToHost(pair IDPair) (IDPair, error) { - var err error - target := i.RootPair() - - if pair.UID != target.UID { - target.UID, err = toHost(pair.UID, i.uids) - if err != nil { - return target, err - } - } - - if pair.GID != target.GID { - target.GID, err = toHost(pair.GID, i.gids) - } - return target, err -} - -// ToContainer returns the container UID and GID for the host uid and gid -func (i *IDMappings) ToContainer(pair IDPair) (int, int, error) { - uid, err := toContainer(pair.UID, i.uids) - if err != nil { - return -1, -1, err - } - gid, err := toContainer(pair.GID, i.gids) - return uid, gid, err -} - -// Empty returns true if there are no id mappings -func (i *IDMappings) Empty() bool { - return len(i.uids) == 0 && len(i.gids) == 0 -} - -// UIDs return the UID mapping -// TODO: remove this once everything has been refactored to use pairs -func (i *IDMappings) UIDs() []IDMap { - return i.uids -} - -// GIDs return the UID mapping -// TODO: remove this once everything has been refactored to use pairs -func (i *IDMappings) GIDs() []IDMap { - return i.gids -} - -func createIDMap(subidRanges ranges) []IDMap { - idMap := []IDMap{} - - // sort the ranges by lowest ID first - sort.Sort(subidRanges) - containerID := 0 - for _, idrange := range subidRanges { - idMap = append(idMap, IDMap{ - ContainerID: containerID, - HostID: idrange.Start, - Size: idrange.Length, - }) - containerID = containerID + idrange.Length - } - return idMap -} - -func parseSubuid(username string) (ranges, error) { - return parseSubidFile(subuidFileName, username) -} - -func parseSubgid(username string) (ranges, error) { - return parseSubidFile(subgidFileName, username) -} - -// parseSubidFile will read the appropriate file (/etc/subuid or /etc/subgid) -// and return all found ranges for a specified username. If the special value -// "ALL" is supplied for username, then all ranges in the file will be returned -func parseSubidFile(path, username string) (ranges, error) { - var rangeList ranges - - subidFile, err := os.Open(path) - if err != nil { - return rangeList, err - } - defer subidFile.Close() - - s := bufio.NewScanner(subidFile) - for s.Scan() { - if err := s.Err(); err != nil { - return rangeList, err - } - - text := strings.TrimSpace(s.Text()) - if text == "" || strings.HasPrefix(text, "#") { - continue - } - parts := strings.Split(text, ":") - if len(parts) != 3 { - return rangeList, fmt.Errorf("Cannot parse subuid/gid information: Format not correct for %s file", path) - } - if parts[0] == username || username == "ALL" { - startid, err := strconv.Atoi(parts[1]) - if err != nil { - return rangeList, fmt.Errorf("String to int conversion failed during subuid/gid parsing of %s: %v", path, err) - } - length, err := strconv.Atoi(parts[2]) - if err != nil { - return rangeList, fmt.Errorf("String to int conversion failed during subuid/gid parsing of %s: %v", path, err) - } - rangeList = append(rangeList, subIDRange{startid, length}) - } - } - return rangeList, nil -} diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go b/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go deleted file mode 100644 index 1d87ea3bcb4..00000000000 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go +++ /dev/null @@ -1,230 +0,0 @@ -// +build !windows - -package idtools // import "github.com/docker/docker/pkg/idtools" - -import ( - "bytes" - "fmt" - "io" - "os" - "path/filepath" - "strings" - "sync" - "syscall" - - "github.com/docker/docker/pkg/system" - "github.com/opencontainers/runc/libcontainer/user" -) - -var ( - entOnce sync.Once - getentCmd string -) - -func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error { - // make an array containing the original path asked for, plus (for mkAll == true) - // all path components leading up to the complete path that don't exist before we MkdirAll - // so that we can chown all of them properly at the end. If chownExisting is false, we won't - // chown the full directory path if it exists - var paths []string - - stat, err := system.Stat(path) - if err == nil { - if !stat.IsDir() { - return &os.PathError{Op: "mkdir", Path: path, Err: syscall.ENOTDIR} - } - if !chownExisting { - return nil - } - - // short-circuit--we were called with an existing directory and chown was requested - return lazyChown(path, ownerUID, ownerGID, stat) - } - - if os.IsNotExist(err) { - paths = []string{path} - } - - if mkAll { - // walk back to "/" looking for directories which do not exist - // and add them to the paths array for chown after creation - dirPath := path - for { - dirPath = filepath.Dir(dirPath) - if dirPath == "/" { - break - } - if _, err := os.Stat(dirPath); err != nil && os.IsNotExist(err) { - paths = append(paths, dirPath) - } - } - if err := system.MkdirAll(path, mode, ""); err != nil { - return err - } - } else { - if err := os.Mkdir(path, mode); err != nil && !os.IsExist(err) { - return err - } - } - // even if it existed, we will chown the requested path + any subpaths that - // didn't exist when we called MkdirAll - for _, pathComponent := range paths { - if err := lazyChown(pathComponent, ownerUID, ownerGID, nil); err != nil { - return err - } - } - return nil -} - -// CanAccess takes a valid (existing) directory and a uid, gid pair and determines -// if that uid, gid pair has access (execute bit) to the directory -func CanAccess(path string, pair IDPair) bool { - statInfo, err := system.Stat(path) - if err != nil { - return false - } - fileMode := os.FileMode(statInfo.Mode()) - permBits := fileMode.Perm() - return accessible(statInfo.UID() == uint32(pair.UID), - statInfo.GID() == uint32(pair.GID), permBits) -} - -func accessible(isOwner, isGroup bool, perms os.FileMode) bool { - if isOwner && (perms&0100 == 0100) { - return true - } - if isGroup && (perms&0010 == 0010) { - return true - } - if perms&0001 == 0001 { - return true - } - return false -} - -// LookupUser uses traditional local system files lookup (from libcontainer/user) on a username, -// followed by a call to `getent` for supporting host configured non-files passwd and group dbs -func LookupUser(username string) (user.User, error) { - // first try a local system files lookup using existing capabilities - usr, err := user.LookupUser(username) - if err == nil { - return usr, nil - } - // local files lookup failed; attempt to call `getent` to query configured passwd dbs - usr, err = getentUser(fmt.Sprintf("%s %s", "passwd", username)) - if err != nil { - return user.User{}, err - } - return usr, nil -} - -// LookupUID uses traditional local system files lookup (from libcontainer/user) on a uid, -// followed by a call to `getent` for supporting host configured non-files passwd and group dbs -func LookupUID(uid int) (user.User, error) { - // first try a local system files lookup using existing capabilities - usr, err := user.LookupUid(uid) - if err == nil { - return usr, nil - } - // local files lookup failed; attempt to call `getent` to query configured passwd dbs - return getentUser(fmt.Sprintf("%s %d", "passwd", uid)) -} - -func getentUser(args string) (user.User, error) { - reader, err := callGetent(args) - if err != nil { - return user.User{}, err - } - users, err := user.ParsePasswd(reader) - if err != nil { - return user.User{}, err - } - if len(users) == 0 { - return user.User{}, fmt.Errorf("getent failed to find passwd entry for %q", strings.Split(args, " ")[1]) - } - return users[0], nil -} - -// LookupGroup uses traditional local system files lookup (from libcontainer/user) on a group name, -// followed by a call to `getent` for supporting host configured non-files passwd and group dbs -func LookupGroup(groupname string) (user.Group, error) { - // first try a local system files lookup using existing capabilities - group, err := user.LookupGroup(groupname) - if err == nil { - return group, nil - } - // local files lookup failed; attempt to call `getent` to query configured group dbs - return getentGroup(fmt.Sprintf("%s %s", "group", groupname)) -} - -// LookupGID uses traditional local system files lookup (from libcontainer/user) on a group ID, -// followed by a call to `getent` for supporting host configured non-files passwd and group dbs -func LookupGID(gid int) (user.Group, error) { - // first try a local system files lookup using existing capabilities - group, err := user.LookupGid(gid) - if err == nil { - return group, nil - } - // local files lookup failed; attempt to call `getent` to query configured group dbs - return getentGroup(fmt.Sprintf("%s %d", "group", gid)) -} - -func getentGroup(args string) (user.Group, error) { - reader, err := callGetent(args) - if err != nil { - return user.Group{}, err - } - groups, err := user.ParseGroup(reader) - if err != nil { - return user.Group{}, err - } - if len(groups) == 0 { - return user.Group{}, fmt.Errorf("getent failed to find groups entry for %q", strings.Split(args, " ")[1]) - } - return groups[0], nil -} - -func callGetent(args string) (io.Reader, error) { - entOnce.Do(func() { getentCmd, _ = resolveBinary("getent") }) - // if no `getent` command on host, can't do anything else - if getentCmd == "" { - return nil, fmt.Errorf("") - } - out, err := execCmd(getentCmd, args) - if err != nil { - exitCode, errC := system.GetExitCode(err) - if errC != nil { - return nil, err - } - switch exitCode { - case 1: - return nil, fmt.Errorf("getent reported invalid parameters/database unknown") - case 2: - terms := strings.Split(args, " ") - return nil, fmt.Errorf("getent unable to find entry %q in %s database", terms[1], terms[0]) - case 3: - return nil, fmt.Errorf("getent database doesn't support enumeration") - default: - return nil, err - } - - } - return bytes.NewReader(out), nil -} - -// lazyChown performs a chown only if the uid/gid don't match what's requested -// Normally a Chown is a no-op if uid/gid match, but in some cases this can still cause an error, e.g. if the -// dir is on an NFS share, so don't call chown unless we absolutely must. -func lazyChown(p string, uid, gid int, stat *system.StatT) error { - if stat == nil { - var err error - stat, err = system.Stat(p) - if err != nil { - return err - } - } - if stat.UID() == uint32(uid) && stat.GID() == uint32(gid) { - return nil - } - return os.Chown(p, uid, gid) -} diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go b/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go deleted file mode 100644 index d72cc28929c..00000000000 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go +++ /dev/null @@ -1,23 +0,0 @@ -package idtools // import "github.com/docker/docker/pkg/idtools" - -import ( - "os" - - "github.com/docker/docker/pkg/system" -) - -// Platforms such as Windows do not support the UID/GID concept. So make this -// just a wrapper around system.MkdirAll. -func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error { - if err := system.MkdirAll(path, mode, ""); err != nil { - return err - } - return nil -} - -// CanAccess takes a valid (existing) directory and a uid, gid pair and determines -// if that uid, gid pair has access (execute bit) to the directory -// Windows does not require/support this function, so always return true -func CanAccess(path string, pair IDPair) bool { - return true -} diff --git a/vendor/github.com/docker/docker/pkg/idtools/usergroupadd_linux.go b/vendor/github.com/docker/docker/pkg/idtools/usergroupadd_linux.go deleted file mode 100644 index 6272c5a4047..00000000000 --- a/vendor/github.com/docker/docker/pkg/idtools/usergroupadd_linux.go +++ /dev/null @@ -1,164 +0,0 @@ -package idtools // import "github.com/docker/docker/pkg/idtools" - -import ( - "fmt" - "regexp" - "sort" - "strconv" - "strings" - "sync" -) - -// add a user and/or group to Linux /etc/passwd, /etc/group using standard -// Linux distribution commands: -// adduser --system --shell /bin/false --disabled-login --disabled-password --no-create-home --group -// useradd -r -s /bin/false - -var ( - once sync.Once - userCommand string - - cmdTemplates = map[string]string{ - "adduser": "--system --shell /bin/false --no-create-home --disabled-login --disabled-password --group %s", - "useradd": "-r -s /bin/false %s", - "usermod": "-%s %d-%d %s", - } - - idOutRegexp = regexp.MustCompile(`uid=([0-9]+).*gid=([0-9]+)`) - // default length for a UID/GID subordinate range - defaultRangeLen = 65536 - defaultRangeStart = 100000 - userMod = "usermod" -) - -// AddNamespaceRangesUser takes a username and uses the standard system -// utility to create a system user/group pair used to hold the -// /etc/sub{uid,gid} ranges which will be used for user namespace -// mapping ranges in containers. -func AddNamespaceRangesUser(name string) (int, int, error) { - if err := addUser(name); err != nil { - return -1, -1, fmt.Errorf("Error adding user %q: %v", name, err) - } - - // Query the system for the created uid and gid pair - out, err := execCmd("id", name) - if err != nil { - return -1, -1, fmt.Errorf("Error trying to find uid/gid for new user %q: %v", name, err) - } - matches := idOutRegexp.FindStringSubmatch(strings.TrimSpace(string(out))) - if len(matches) != 3 { - return -1, -1, fmt.Errorf("Can't find uid, gid from `id` output: %q", string(out)) - } - uid, err := strconv.Atoi(matches[1]) - if err != nil { - return -1, -1, fmt.Errorf("Can't convert found uid (%s) to int: %v", matches[1], err) - } - gid, err := strconv.Atoi(matches[2]) - if err != nil { - return -1, -1, fmt.Errorf("Can't convert found gid (%s) to int: %v", matches[2], err) - } - - // Now we need to create the subuid/subgid ranges for our new user/group (system users - // do not get auto-created ranges in subuid/subgid) - - if err := createSubordinateRanges(name); err != nil { - return -1, -1, fmt.Errorf("Couldn't create subordinate ID ranges: %v", err) - } - return uid, gid, nil -} - -func addUser(userName string) error { - once.Do(func() { - // set up which commands are used for adding users/groups dependent on distro - if _, err := resolveBinary("adduser"); err == nil { - userCommand = "adduser" - } else if _, err := resolveBinary("useradd"); err == nil { - userCommand = "useradd" - } - }) - if userCommand == "" { - return fmt.Errorf("Cannot add user; no useradd/adduser binary found") - } - args := fmt.Sprintf(cmdTemplates[userCommand], userName) - out, err := execCmd(userCommand, args) - if err != nil { - return fmt.Errorf("Failed to add user with error: %v; output: %q", err, string(out)) - } - return nil -} - -func createSubordinateRanges(name string) error { - - // first, we should verify that ranges weren't automatically created - // by the distro tooling - ranges, err := parseSubuid(name) - if err != nil { - return fmt.Errorf("Error while looking for subuid ranges for user %q: %v", name, err) - } - if len(ranges) == 0 { - // no UID ranges; let's create one - startID, err := findNextUIDRange() - if err != nil { - return fmt.Errorf("Can't find available subuid range: %v", err) - } - out, err := execCmd(userMod, fmt.Sprintf(cmdTemplates[userMod], "v", startID, startID+defaultRangeLen-1, name)) - if err != nil { - return fmt.Errorf("Unable to add subuid range to user: %q; output: %s, err: %v", name, out, err) - } - } - - ranges, err = parseSubgid(name) - if err != nil { - return fmt.Errorf("Error while looking for subgid ranges for user %q: %v", name, err) - } - if len(ranges) == 0 { - // no GID ranges; let's create one - startID, err := findNextGIDRange() - if err != nil { - return fmt.Errorf("Can't find available subgid range: %v", err) - } - out, err := execCmd(userMod, fmt.Sprintf(cmdTemplates[userMod], "w", startID, startID+defaultRangeLen-1, name)) - if err != nil { - return fmt.Errorf("Unable to add subgid range to user: %q; output: %s, err: %v", name, out, err) - } - } - return nil -} - -func findNextUIDRange() (int, error) { - ranges, err := parseSubuid("ALL") - if err != nil { - return -1, fmt.Errorf("Couldn't parse all ranges in /etc/subuid file: %v", err) - } - sort.Sort(ranges) - return findNextRangeStart(ranges) -} - -func findNextGIDRange() (int, error) { - ranges, err := parseSubgid("ALL") - if err != nil { - return -1, fmt.Errorf("Couldn't parse all ranges in /etc/subgid file: %v", err) - } - sort.Sort(ranges) - return findNextRangeStart(ranges) -} - -func findNextRangeStart(rangeList ranges) (int, error) { - startID := defaultRangeStart - for _, arange := range rangeList { - if wouldOverlap(arange, startID) { - startID = arange.Start + arange.Length - } - } - return startID, nil -} - -func wouldOverlap(arange subIDRange, ID int) bool { - low := ID - high := ID + defaultRangeLen - if (low >= arange.Start && low <= arange.Start+arange.Length) || - (high <= arange.Start+arange.Length && high >= arange.Start) { - return true - } - return false -} diff --git a/vendor/github.com/docker/docker/pkg/idtools/usergroupadd_unsupported.go b/vendor/github.com/docker/docker/pkg/idtools/usergroupadd_unsupported.go deleted file mode 100644 index e7c4d63118c..00000000000 --- a/vendor/github.com/docker/docker/pkg/idtools/usergroupadd_unsupported.go +++ /dev/null @@ -1,12 +0,0 @@ -// +build !linux - -package idtools // import "github.com/docker/docker/pkg/idtools" - -import "fmt" - -// AddNamespaceRangesUser takes a name and finds an unused uid, gid pair -// and calls the appropriate helper function to add the group and then -// the user to the group in /etc/group and /etc/passwd respectively. -func AddNamespaceRangesUser(name string) (int, int, error) { - return -1, -1, fmt.Errorf("No support for adding users or groups on this OS") -} diff --git a/vendor/github.com/docker/docker/pkg/idtools/utils_unix.go b/vendor/github.com/docker/docker/pkg/idtools/utils_unix.go deleted file mode 100644 index 903ac4501b4..00000000000 --- a/vendor/github.com/docker/docker/pkg/idtools/utils_unix.go +++ /dev/null @@ -1,32 +0,0 @@ -// +build !windows - -package idtools // import "github.com/docker/docker/pkg/idtools" - -import ( - "fmt" - "os/exec" - "path/filepath" - "strings" -) - -func resolveBinary(binname string) (string, error) { - binaryPath, err := exec.LookPath(binname) - if err != nil { - return "", err - } - resolvedPath, err := filepath.EvalSymlinks(binaryPath) - if err != nil { - return "", err - } - //only return no error if the final resolved binary basename - //matches what was searched for - if filepath.Base(resolvedPath) == binname { - return resolvedPath, nil - } - return "", fmt.Errorf("Binary %q does not resolve to a binary of that name in $PATH (%q)", binname, resolvedPath) -} - -func execCmd(cmd, args string) ([]byte, error) { - execCmd := exec.Command(cmd, strings.Split(args, " ")...) - return execCmd.CombinedOutput() -} diff --git a/vendor/github.com/docker/docker/pkg/ioutils/bytespipe.go b/vendor/github.com/docker/docker/pkg/ioutils/bytespipe.go index d4bbf3c9dca..87514b643d7 100644 --- a/vendor/github.com/docker/docker/pkg/ioutils/bytespipe.go +++ b/vendor/github.com/docker/docker/pkg/ioutils/bytespipe.go @@ -128,8 +128,9 @@ func (bp *BytesPipe) Read(p []byte) (n int, err error) { bp.mu.Lock() if bp.bufLen == 0 { if bp.closeErr != nil { + err := bp.closeErr bp.mu.Unlock() - return 0, bp.closeErr + return 0, err } bp.wait.Wait() if bp.bufLen == 0 && bp.closeErr != nil { diff --git a/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go b/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go index dd95f367041..6d66408984f 100644 --- a/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go +++ b/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go @@ -4,13 +4,12 @@ import ( "encoding/json" "fmt" "io" - "os" "strings" "time" - "github.com/Nvveen/Gotty" "github.com/docker/docker/pkg/term" - "github.com/docker/go-units" + units "github.com/docker/go-units" + "github.com/morikuni/aec" ) // RFC3339NanoFixed is time.RFC3339Nano with nanoseconds padded using zeros to @@ -151,60 +150,23 @@ type JSONMessage struct { Aux *json.RawMessage `json:"aux,omitempty"` } -/* Satisfied by gotty.TermInfo as well as noTermInfo from below */ -type termInfo interface { - Parse(attr string, params ...interface{}) (string, error) +func clearLine(out io.Writer) { + eraseMode := aec.EraseModes.All + cl := aec.EraseLine(eraseMode) + fmt.Fprint(out, cl) } -type noTermInfo struct{} // canary used when no terminfo. - -func (ti *noTermInfo) Parse(attr string, params ...interface{}) (string, error) { - return "", fmt.Errorf("noTermInfo") -} - -func clearLine(out io.Writer, ti termInfo) { - // el2 (clear whole line) is not exposed by terminfo. - - // First clear line from beginning to cursor - if attr, err := ti.Parse("el1"); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[1K") - } - // Then clear line from cursor to end - if attr, err := ti.Parse("el"); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[K") - } -} - -func cursorUp(out io.Writer, ti termInfo, l int) { - if l == 0 { // Should never be the case, but be tolerant - return - } - if attr, err := ti.Parse("cuu", l); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[%dA", l) - } +func cursorUp(out io.Writer, l uint) { + fmt.Fprint(out, aec.Up(l)) } -func cursorDown(out io.Writer, ti termInfo, l int) { - if l == 0 { // Should never be the case, but be tolerant - return - } - if attr, err := ti.Parse("cud", l); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[%dB", l) - } +func cursorDown(out io.Writer, l uint) { + fmt.Fprint(out, aec.Down(l)) } -// Display displays the JSONMessage to `out`. `termInfo` is non-nil if `out` -// is a terminal. If this is the case, it will erase the entire current line -// when displaying the progressbar. -func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { +// Display displays the JSONMessage to `out`. If `isTerminal` is true, it will erase the +// entire current line when displaying the progressbar. +func (jm *JSONMessage) Display(out io.Writer, isTerminal bool) error { if jm.Error != nil { if jm.Error.Code == 401 { return fmt.Errorf("authentication is required") @@ -212,8 +174,8 @@ func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { return jm.Error } var endl string - if termInfo != nil && jm.Stream == "" && jm.Progress != nil { - clearLine(out, termInfo) + if isTerminal && jm.Stream == "" && jm.Progress != nil { + clearLine(out) endl = "\r" fmt.Fprintf(out, endl) } else if jm.Progress != nil && jm.Progress.String() != "" { //disable progressbar in non-terminal @@ -230,7 +192,7 @@ func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { if jm.From != "" { fmt.Fprintf(out, "(from %s) ", jm.From) } - if jm.Progress != nil && termInfo != nil { + if jm.Progress != nil && isTerminal { fmt.Fprintf(out, "%s %s%s", jm.Status, jm.Progress.String(), endl) } else if jm.ProgressMessage != "" { //deprecated fmt.Fprintf(out, "%s %s%s", jm.Status, jm.ProgressMessage, endl) @@ -248,25 +210,11 @@ func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, isTerminal bool, auxCallback func(JSONMessage)) error { var ( dec = json.NewDecoder(in) - ids = make(map[string]int) + ids = make(map[string]uint) ) - var termInfo termInfo - - if isTerminal { - term := os.Getenv("TERM") - if term == "" { - term = "vt102" - } - - var err error - if termInfo, err = gotty.OpenTermInfo(term); err != nil { - termInfo = &noTermInfo{} - } - } - for { - diff := 0 + var diff uint var jm JSONMessage if err := dec.Decode(&jm); err != nil { if err == io.EOF { @@ -294,15 +242,15 @@ func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, // when we output something that's not // accounted for in the map, such as a line // with no ID. - line = len(ids) + line = uint(len(ids)) ids[jm.ID] = line - if termInfo != nil { + if isTerminal { fmt.Fprintf(out, "\n") } } - diff = len(ids) - line - if termInfo != nil { - cursorUp(out, termInfo, diff) + diff = uint(len(ids)) - line + if isTerminal { + cursorUp(out, diff) } } else { // When outputting something that isn't progress @@ -310,11 +258,11 @@ func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, // don't want progress entries from some previous // operation to be updated (for example, pull -a // with multiple tags). - ids = make(map[string]int) + ids = make(map[string]uint) } - err := jm.Display(out, termInfo) - if jm.ID != "" && termInfo != nil { - cursorDown(out, termInfo, diff) + err := jm.Display(out, isTerminal) + if jm.ID != "" && isTerminal { + cursorDown(out, diff) } if err != nil { return err diff --git a/vendor/github.com/docker/docker/pkg/mount/flags.go b/vendor/github.com/docker/docker/pkg/mount/flags.go deleted file mode 100644 index 272363b6854..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/flags.go +++ /dev/null @@ -1,149 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -import ( - "fmt" - "strings" -) - -var flags = map[string]struct { - clear bool - flag int -}{ - "defaults": {false, 0}, - "ro": {false, RDONLY}, - "rw": {true, RDONLY}, - "suid": {true, NOSUID}, - "nosuid": {false, NOSUID}, - "dev": {true, NODEV}, - "nodev": {false, NODEV}, - "exec": {true, NOEXEC}, - "noexec": {false, NOEXEC}, - "sync": {false, SYNCHRONOUS}, - "async": {true, SYNCHRONOUS}, - "dirsync": {false, DIRSYNC}, - "remount": {false, REMOUNT}, - "mand": {false, MANDLOCK}, - "nomand": {true, MANDLOCK}, - "atime": {true, NOATIME}, - "noatime": {false, NOATIME}, - "diratime": {true, NODIRATIME}, - "nodiratime": {false, NODIRATIME}, - "bind": {false, BIND}, - "rbind": {false, RBIND}, - "unbindable": {false, UNBINDABLE}, - "runbindable": {false, RUNBINDABLE}, - "private": {false, PRIVATE}, - "rprivate": {false, RPRIVATE}, - "shared": {false, SHARED}, - "rshared": {false, RSHARED}, - "slave": {false, SLAVE}, - "rslave": {false, RSLAVE}, - "relatime": {false, RELATIME}, - "norelatime": {true, RELATIME}, - "strictatime": {false, STRICTATIME}, - "nostrictatime": {true, STRICTATIME}, -} - -var validFlags = map[string]bool{ - "": true, - "size": true, - "mode": true, - "uid": true, - "gid": true, - "nr_inodes": true, - "nr_blocks": true, - "mpol": true, -} - -var propagationFlags = map[string]bool{ - "bind": true, - "rbind": true, - "unbindable": true, - "runbindable": true, - "private": true, - "rprivate": true, - "shared": true, - "rshared": true, - "slave": true, - "rslave": true, -} - -// MergeTmpfsOptions merge mount options to make sure there is no duplicate. -func MergeTmpfsOptions(options []string) ([]string, error) { - // We use collisions maps to remove duplicates. - // For flag, the key is the flag value (the key for propagation flag is -1) - // For data=value, the key is the data - flagCollisions := map[int]bool{} - dataCollisions := map[string]bool{} - - var newOptions []string - // We process in reverse order - for i := len(options) - 1; i >= 0; i-- { - option := options[i] - if option == "defaults" { - continue - } - if f, ok := flags[option]; ok && f.flag != 0 { - // There is only one propagation mode - key := f.flag - if propagationFlags[option] { - key = -1 - } - // Check to see if there is collision for flag - if !flagCollisions[key] { - // We prepend the option and add to collision map - newOptions = append([]string{option}, newOptions...) - flagCollisions[key] = true - } - continue - } - opt := strings.SplitN(option, "=", 2) - if len(opt) != 2 || !validFlags[opt[0]] { - return nil, fmt.Errorf("Invalid tmpfs option %q", opt) - } - if !dataCollisions[opt[0]] { - // We prepend the option and add to collision map - newOptions = append([]string{option}, newOptions...) - dataCollisions[opt[0]] = true - } - } - - return newOptions, nil -} - -// Parse fstab type mount options into mount() flags -// and device specific data -func parseOptions(options string) (int, string) { - var ( - flag int - data []string - ) - - for _, o := range strings.Split(options, ",") { - // If the option does not exist in the flags table or the flag - // is not supported on the platform, - // then it is a data value for a specific fs type - if f, exists := flags[o]; exists && f.flag != 0 { - if f.clear { - flag &= ^f.flag - } else { - flag |= f.flag - } - } else { - data = append(data, o) - } - } - return flag, strings.Join(data, ",") -} - -// ParseTmpfsOptions parse fstab type mount options into flags and data -func ParseTmpfsOptions(options string) (int, string, error) { - flags, data := parseOptions(options) - for _, o := range strings.Split(data, ",") { - opt := strings.SplitN(o, "=", 2) - if !validFlags[opt[0]] { - return 0, "", fmt.Errorf("Invalid tmpfs option %q", opt) - } - } - return flags, data, nil -} diff --git a/vendor/github.com/docker/docker/pkg/mount/flags_freebsd.go b/vendor/github.com/docker/docker/pkg/mount/flags_freebsd.go deleted file mode 100644 index ef35ef90591..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/flags_freebsd.go +++ /dev/null @@ -1,49 +0,0 @@ -// +build freebsd,cgo - -package mount // import "github.com/docker/docker/pkg/mount" - -/* -#include -*/ -import "C" - -const ( - // RDONLY will mount the filesystem as read-only. - RDONLY = C.MNT_RDONLY - - // NOSUID will not allow set-user-identifier or set-group-identifier bits to - // take effect. - NOSUID = C.MNT_NOSUID - - // NOEXEC will not allow execution of any binaries on the mounted file system. - NOEXEC = C.MNT_NOEXEC - - // SYNCHRONOUS will allow any I/O to the file system to be done synchronously. - SYNCHRONOUS = C.MNT_SYNCHRONOUS - - // NOATIME will not update the file access time when reading from a file. - NOATIME = C.MNT_NOATIME -) - -// These flags are unsupported. -const ( - BIND = 0 - DIRSYNC = 0 - MANDLOCK = 0 - NODEV = 0 - NODIRATIME = 0 - UNBINDABLE = 0 - RUNBINDABLE = 0 - PRIVATE = 0 - RPRIVATE = 0 - SHARED = 0 - RSHARED = 0 - SLAVE = 0 - RSLAVE = 0 - RBIND = 0 - RELATIVE = 0 - RELATIME = 0 - REMOUNT = 0 - STRICTATIME = 0 - mntDetach = 0 -) diff --git a/vendor/github.com/docker/docker/pkg/mount/flags_linux.go b/vendor/github.com/docker/docker/pkg/mount/flags_linux.go deleted file mode 100644 index a1b199a31ac..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/flags_linux.go +++ /dev/null @@ -1,87 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -import ( - "golang.org/x/sys/unix" -) - -const ( - // RDONLY will mount the file system read-only. - RDONLY = unix.MS_RDONLY - - // NOSUID will not allow set-user-identifier or set-group-identifier bits to - // take effect. - NOSUID = unix.MS_NOSUID - - // NODEV will not interpret character or block special devices on the file - // system. - NODEV = unix.MS_NODEV - - // NOEXEC will not allow execution of any binaries on the mounted file system. - NOEXEC = unix.MS_NOEXEC - - // SYNCHRONOUS will allow I/O to the file system to be done synchronously. - SYNCHRONOUS = unix.MS_SYNCHRONOUS - - // DIRSYNC will force all directory updates within the file system to be done - // synchronously. This affects the following system calls: create, link, - // unlink, symlink, mkdir, rmdir, mknod and rename. - DIRSYNC = unix.MS_DIRSYNC - - // REMOUNT will attempt to remount an already-mounted file system. This is - // commonly used to change the mount flags for a file system, especially to - // make a readonly file system writeable. It does not change device or mount - // point. - REMOUNT = unix.MS_REMOUNT - - // MANDLOCK will force mandatory locks on a filesystem. - MANDLOCK = unix.MS_MANDLOCK - - // NOATIME will not update the file access time when reading from a file. - NOATIME = unix.MS_NOATIME - - // NODIRATIME will not update the directory access time. - NODIRATIME = unix.MS_NODIRATIME - - // BIND remounts a subtree somewhere else. - BIND = unix.MS_BIND - - // RBIND remounts a subtree and all possible submounts somewhere else. - RBIND = unix.MS_BIND | unix.MS_REC - - // UNBINDABLE creates a mount which cannot be cloned through a bind operation. - UNBINDABLE = unix.MS_UNBINDABLE - - // RUNBINDABLE marks the entire mount tree as UNBINDABLE. - RUNBINDABLE = unix.MS_UNBINDABLE | unix.MS_REC - - // PRIVATE creates a mount which carries no propagation abilities. - PRIVATE = unix.MS_PRIVATE - - // RPRIVATE marks the entire mount tree as PRIVATE. - RPRIVATE = unix.MS_PRIVATE | unix.MS_REC - - // SLAVE creates a mount which receives propagation from its master, but not - // vice versa. - SLAVE = unix.MS_SLAVE - - // RSLAVE marks the entire mount tree as SLAVE. - RSLAVE = unix.MS_SLAVE | unix.MS_REC - - // SHARED creates a mount which provides the ability to create mirrors of - // that mount such that mounts and unmounts within any of the mirrors - // propagate to the other mirrors. - SHARED = unix.MS_SHARED - - // RSHARED marks the entire mount tree as SHARED. - RSHARED = unix.MS_SHARED | unix.MS_REC - - // RELATIME updates inode access times relative to modify or change time. - RELATIME = unix.MS_RELATIME - - // STRICTATIME allows to explicitly request full atime updates. This makes - // it possible for the kernel to default to relatime or noatime but still - // allow userspace to override it. - STRICTATIME = unix.MS_STRICTATIME - - mntDetach = unix.MNT_DETACH -) diff --git a/vendor/github.com/docker/docker/pkg/mount/flags_unsupported.go b/vendor/github.com/docker/docker/pkg/mount/flags_unsupported.go deleted file mode 100644 index cc6c4759083..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/flags_unsupported.go +++ /dev/null @@ -1,31 +0,0 @@ -// +build !linux,!freebsd freebsd,!cgo - -package mount // import "github.com/docker/docker/pkg/mount" - -// These flags are unsupported. -const ( - BIND = 0 - DIRSYNC = 0 - MANDLOCK = 0 - NOATIME = 0 - NODEV = 0 - NODIRATIME = 0 - NOEXEC = 0 - NOSUID = 0 - UNBINDABLE = 0 - RUNBINDABLE = 0 - PRIVATE = 0 - RPRIVATE = 0 - SHARED = 0 - RSHARED = 0 - SLAVE = 0 - RSLAVE = 0 - RBIND = 0 - RELATIME = 0 - RELATIVE = 0 - REMOUNT = 0 - STRICTATIME = 0 - SYNCHRONOUS = 0 - RDONLY = 0 - mntDetach = 0 -) diff --git a/vendor/github.com/docker/docker/pkg/mount/mount.go b/vendor/github.com/docker/docker/pkg/mount/mount.go deleted file mode 100644 index 874aff6545c..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mount.go +++ /dev/null @@ -1,141 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -import ( - "sort" - "strings" - "syscall" - - "github.com/sirupsen/logrus" -) - -// FilterFunc is a type defining a callback function -// to filter out unwanted entries. It takes a pointer -// to an Info struct (not fully populated, currently -// only Mountpoint is filled in), and returns two booleans: -// - skip: true if the entry should be skipped -// - stop: true if parsing should be stopped after the entry -type FilterFunc func(*Info) (skip, stop bool) - -// PrefixFilter discards all entries whose mount points -// do not start with a prefix specified -func PrefixFilter(prefix string) FilterFunc { - return func(m *Info) (bool, bool) { - skip := !strings.HasPrefix(m.Mountpoint, prefix) - return skip, false - } -} - -// SingleEntryFilter looks for a specific entry -func SingleEntryFilter(mp string) FilterFunc { - return func(m *Info) (bool, bool) { - if m.Mountpoint == mp { - return false, true // don't skip, stop now - } - return true, false // skip, keep going - } -} - -// ParentsFilter returns all entries whose mount points -// can be parents of a path specified, discarding others. -// For example, given `/var/lib/docker/something`, entries -// like `/var/lib/docker`, `/var` and `/` are returned. -func ParentsFilter(path string) FilterFunc { - return func(m *Info) (bool, bool) { - skip := !strings.HasPrefix(path, m.Mountpoint) - return skip, false - } -} - -// GetMounts retrieves a list of mounts for the current running process, -// with an optional filter applied (use nil for no filter). -func GetMounts(f FilterFunc) ([]*Info, error) { - return parseMountTable(f) -} - -// Mounted determines if a specified mountpoint has been mounted. -// On Linux it looks at /proc/self/mountinfo. -func Mounted(mountpoint string) (bool, error) { - entries, err := GetMounts(SingleEntryFilter(mountpoint)) - if err != nil { - return false, err - } - - return len(entries) > 0, nil -} - -// Mount will mount filesystem according to the specified configuration, on the -// condition that the target path is *not* already mounted. Options must be -// specified like the mount or fstab unix commands: "opt1=val1,opt2=val2". See -// flags.go for supported option flags. -func Mount(device, target, mType, options string) error { - flag, _ := parseOptions(options) - if flag&REMOUNT != REMOUNT { - if mounted, err := Mounted(target); err != nil || mounted { - return err - } - } - return ForceMount(device, target, mType, options) -} - -// ForceMount will mount a filesystem according to the specified configuration, -// *regardless* if the target path is not already mounted. Options must be -// specified like the mount or fstab unix commands: "opt1=val1,opt2=val2". See -// flags.go for supported option flags. -func ForceMount(device, target, mType, options string) error { - flag, data := parseOptions(options) - return mount(device, target, mType, uintptr(flag), data) -} - -// Unmount lazily unmounts a filesystem on supported platforms, otherwise -// does a normal unmount. -func Unmount(target string) error { - err := unmount(target, mntDetach) - if err == syscall.EINVAL { - // ignore "not mounted" error - err = nil - } - return err -} - -// RecursiveUnmount unmounts the target and all mounts underneath, starting with -// the deepsest mount first. -func RecursiveUnmount(target string) error { - mounts, err := parseMountTable(PrefixFilter(target)) - if err != nil { - return err - } - - // Make the deepest mount be first - sort.Slice(mounts, func(i, j int) bool { - return len(mounts[i].Mountpoint) > len(mounts[j].Mountpoint) - }) - - for i, m := range mounts { - logrus.Debugf("Trying to unmount %s", m.Mountpoint) - err = unmount(m.Mountpoint, mntDetach) - if err != nil { - // If the error is EINVAL either this whole package is wrong (invalid flags passed to unmount(2)) or this is - // not a mountpoint (which is ok in this case). - // Meanwhile calling `Mounted()` is very expensive. - // - // We've purposefully used `syscall.EINVAL` here instead of `unix.EINVAL` to avoid platform branching - // Since `EINVAL` is defined for both Windows and Linux in the `syscall` package (and other platforms), - // this is nicer than defining a custom value that we can refer to in each platform file. - if err == syscall.EINVAL { - continue - } - if i == len(mounts)-1 { - if mounted, e := Mounted(m.Mountpoint); e != nil || mounted { - return err - } - continue - } - // This is some submount, we can ignore this error for now, the final unmount will fail if this is a real problem - logrus.WithError(err).Warnf("Failed to unmount submount %s", m.Mountpoint) - continue - } - - logrus.Debugf("Unmounted %s", m.Mountpoint) - } - return nil -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go b/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go deleted file mode 100644 index b6ab83a2307..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go +++ /dev/null @@ -1,60 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -/* -#include -#include -#include -#include -#include -#include -*/ -import "C" - -import ( - "fmt" - "strings" - "unsafe" - - "golang.org/x/sys/unix" -) - -func allocateIOVecs(options []string) []C.struct_iovec { - out := make([]C.struct_iovec, len(options)) - for i, option := range options { - out[i].iov_base = unsafe.Pointer(C.CString(option)) - out[i].iov_len = C.size_t(len(option) + 1) - } - return out -} - -func mount(device, target, mType string, flag uintptr, data string) error { - isNullFS := false - - xs := strings.Split(data, ",") - for _, x := range xs { - if x == "bind" { - isNullFS = true - } - } - - options := []string{"fspath", target} - if isNullFS { - options = append(options, "fstype", "nullfs", "target", device) - } else { - options = append(options, "fstype", mType, "from", device) - } - rawOptions := allocateIOVecs(options) - for _, rawOption := range rawOptions { - defer C.free(rawOption.iov_base) - } - - if errno := C.nmount(&rawOptions[0], C.uint(len(options)), C.int(flag)); errno != 0 { - reason := C.GoString(C.strerror(*C.__error())) - return fmt.Errorf("Failed to call nmount: %s", reason) - } - return nil -} - -func unmount(target string, flag int) error { - return unix.Unmount(target, flag) -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go b/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go deleted file mode 100644 index 631daf10a5a..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go +++ /dev/null @@ -1,57 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -import ( - "golang.org/x/sys/unix" -) - -const ( - // ptypes is the set propagation types. - ptypes = unix.MS_SHARED | unix.MS_PRIVATE | unix.MS_SLAVE | unix.MS_UNBINDABLE - - // pflags is the full set valid flags for a change propagation call. - pflags = ptypes | unix.MS_REC | unix.MS_SILENT - - // broflags is the combination of bind and read only - broflags = unix.MS_BIND | unix.MS_RDONLY -) - -// isremount returns true if either device name or flags identify a remount request, false otherwise. -func isremount(device string, flags uintptr) bool { - switch { - // We treat device "" and "none" as a remount request to provide compatibility with - // requests that don't explicitly set MS_REMOUNT such as those manipulating bind mounts. - case flags&unix.MS_REMOUNT != 0, device == "", device == "none": - return true - default: - return false - } -} - -func mount(device, target, mType string, flags uintptr, data string) error { - oflags := flags &^ ptypes - if !isremount(device, flags) || data != "" { - // Initial call applying all non-propagation flags for mount - // or remount with changed data - if err := unix.Mount(device, target, mType, oflags, data); err != nil { - return err - } - } - - if flags&ptypes != 0 { - // Change the propagation type. - if err := unix.Mount("", target, "", flags&pflags, ""); err != nil { - return err - } - } - - if oflags&broflags == broflags { - // Remount the bind to apply read only. - return unix.Mount("", target, "", oflags|unix.MS_REMOUNT, "") - } - - return nil -} - -func unmount(target string, flag int) error { - return unix.Unmount(target, flag) -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go b/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go deleted file mode 100644 index 1428dffa529..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !linux,!freebsd freebsd,!cgo - -package mount // import "github.com/docker/docker/pkg/mount" - -func mount(device, target, mType string, flag uintptr, data string) error { - panic("Not implemented") -} - -func unmount(target string, flag int) error { - panic("Not implemented") -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mountinfo.go b/vendor/github.com/docker/docker/pkg/mount/mountinfo.go deleted file mode 100644 index ecd03fc0221..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mountinfo.go +++ /dev/null @@ -1,40 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -// Info reveals information about a particular mounted filesystem. This -// struct is populated from the content in the /proc//mountinfo file. -type Info struct { - // ID is a unique identifier of the mount (may be reused after umount). - ID int - - // Parent indicates the ID of the mount parent (or of self for the top of the - // mount tree). - Parent int - - // Major indicates one half of the device ID which identifies the device class. - Major int - - // Minor indicates one half of the device ID which identifies a specific - // instance of device. - Minor int - - // Root of the mount within the filesystem. - Root string - - // Mountpoint indicates the mount point relative to the process's root. - Mountpoint string - - // Opts represents mount-specific options. - Opts string - - // Optional represents optional fields. - Optional string - - // Fstype indicates the type of filesystem, such as EXT3. - Fstype string - - // Source indicates filesystem specific information or "none". - Source string - - // VfsOpts represents per super block options. - VfsOpts string -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mountinfo_freebsd.go b/vendor/github.com/docker/docker/pkg/mount/mountinfo_freebsd.go deleted file mode 100644 index 36c89dc1a24..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mountinfo_freebsd.go +++ /dev/null @@ -1,55 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -/* -#include -#include -#include -*/ -import "C" - -import ( - "fmt" - "reflect" - "unsafe" -) - -// Parse /proc/self/mountinfo because comparing Dev and ino does not work from -// bind mounts. -func parseMountTable(filter FilterFunc) ([]*Info, error) { - var rawEntries *C.struct_statfs - - count := int(C.getmntinfo(&rawEntries, C.MNT_WAIT)) - if count == 0 { - return nil, fmt.Errorf("Failed to call getmntinfo") - } - - var entries []C.struct_statfs - header := (*reflect.SliceHeader)(unsafe.Pointer(&entries)) - header.Cap = count - header.Len = count - header.Data = uintptr(unsafe.Pointer(rawEntries)) - - var out []*Info - for _, entry := range entries { - var mountinfo Info - var skip, stop bool - mountinfo.Mountpoint = C.GoString(&entry.f_mntonname[0]) - - if filter != nil { - // filter out entries we're not interested in - skip, stop = filter(p) - if skip { - continue - } - } - - mountinfo.Source = C.GoString(&entry.f_mntfromname[0]) - mountinfo.Fstype = C.GoString(&entry.f_fstypename[0]) - - out = append(out, &mountinfo) - if stop { - break - } - } - return out, nil -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mountinfo_linux.go b/vendor/github.com/docker/docker/pkg/mount/mountinfo_linux.go deleted file mode 100644 index c1dba01fc31..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mountinfo_linux.go +++ /dev/null @@ -1,132 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -import ( - "bufio" - "fmt" - "io" - "os" - "strconv" - "strings" -) - -func parseInfoFile(r io.Reader, filter FilterFunc) ([]*Info, error) { - s := bufio.NewScanner(r) - out := []*Info{} - for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - /* - 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue - (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11) - - (1) mount ID: unique identifier of the mount (may be reused after umount) - (2) parent ID: ID of parent (or of self for the top of the mount tree) - (3) major:minor: value of st_dev for files on filesystem - (4) root: root of the mount within the filesystem - (5) mount point: mount point relative to the process's root - (6) mount options: per mount options - (7) optional fields: zero or more fields of the form "tag[:value]" - (8) separator: marks the end of the optional fields - (9) filesystem type: name of filesystem of the form "type[.subtype]" - (10) mount source: filesystem specific information or "none" - (11) super options: per super block options - */ - - text := s.Text() - fields := strings.Split(text, " ") - numFields := len(fields) - if numFields < 10 { - // should be at least 10 fields - return nil, fmt.Errorf("Parsing '%s' failed: not enough fields (%d)", text, numFields) - } - - p := &Info{} - // ignore any numbers parsing errors, as there should not be any - p.ID, _ = strconv.Atoi(fields[0]) - p.Parent, _ = strconv.Atoi(fields[1]) - mm := strings.Split(fields[2], ":") - if len(mm) != 2 { - return nil, fmt.Errorf("Parsing '%s' failed: unexpected minor:major pair %s", text, mm) - } - p.Major, _ = strconv.Atoi(mm[0]) - p.Minor, _ = strconv.Atoi(mm[1]) - - p.Root = fields[3] - p.Mountpoint = fields[4] - p.Opts = fields[5] - - var skip, stop bool - if filter != nil { - // filter out entries we're not interested in - skip, stop = filter(p) - if skip { - continue - } - } - - // one or more optional fields, when a separator (-) - i := 6 - for ; i < numFields && fields[i] != "-"; i++ { - switch i { - case 6: - p.Optional = fields[6] - default: - /* NOTE there might be more optional fields before the such as - fields[7]...fields[N] (where N < sepIndex), although - as of Linux kernel 4.15 the only known ones are - mount propagation flags in fields[6]. The correct - behavior is to ignore any unknown optional fields. - */ - break - } - } - if i == numFields { - return nil, fmt.Errorf("Parsing '%s' failed: missing separator ('-')", text) - } - - // There should be 3 fields after the separator... - if i+4 > numFields { - return nil, fmt.Errorf("Parsing '%s' failed: not enough fields after a separator", text) - } - // ... but in Linux <= 3.9 mounting a cifs with spaces in a share name - // (like "//serv/My Documents") _may_ end up having a space in the last field - // of mountinfo (like "unc=//serv/My Documents"). Since kernel 3.10-rc1, cifs - // option unc= is ignored, so a space should not appear. In here we ignore - // those "extra" fields caused by extra spaces. - p.Fstype = fields[i+1] - p.Source = fields[i+2] - p.VfsOpts = fields[i+3] - - out = append(out, p) - if stop { - break - } - } - return out, nil -} - -// Parse /proc/self/mountinfo because comparing Dev and ino does not work from -// bind mounts -func parseMountTable(filter FilterFunc) ([]*Info, error) { - f, err := os.Open("/proc/self/mountinfo") - if err != nil { - return nil, err - } - defer f.Close() - - return parseInfoFile(f, filter) -} - -// PidMountInfo collects the mounts for a specific process ID. If the process -// ID is unknown, it is better to use `GetMounts` which will inspect -// "/proc/self/mountinfo" instead. -func PidMountInfo(pid int) ([]*Info, error) { - f, err := os.Open(fmt.Sprintf("/proc/%d/mountinfo", pid)) - if err != nil { - return nil, err - } - defer f.Close() - - return parseInfoFile(f, nil) -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mountinfo_unsupported.go b/vendor/github.com/docker/docker/pkg/mount/mountinfo_unsupported.go deleted file mode 100644 index fd16d3ed698..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mountinfo_unsupported.go +++ /dev/null @@ -1,12 +0,0 @@ -// +build !windows,!linux,!freebsd freebsd,!cgo - -package mount // import "github.com/docker/docker/pkg/mount" - -import ( - "fmt" - "runtime" -) - -func parseMountTable(f FilterFunc) ([]*Info, error) { - return nil, fmt.Errorf("mount.parseMountTable is not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mountinfo_windows.go b/vendor/github.com/docker/docker/pkg/mount/mountinfo_windows.go deleted file mode 100644 index 27e0f6976ec..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/mountinfo_windows.go +++ /dev/null @@ -1,6 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -func parseMountTable(f FilterFunc) ([]*Info, error) { - // Do NOT return an error! - return nil, nil -} diff --git a/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go b/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go deleted file mode 100644 index 538f6637a04..00000000000 --- a/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go +++ /dev/null @@ -1,67 +0,0 @@ -package mount // import "github.com/docker/docker/pkg/mount" - -// MakeShared ensures a mounted filesystem has the SHARED mount option enabled. -// See the supported options in flags.go for further reference. -func MakeShared(mountPoint string) error { - return ensureMountedAs(mountPoint, "shared") -} - -// MakeRShared ensures a mounted filesystem has the RSHARED mount option enabled. -// See the supported options in flags.go for further reference. -func MakeRShared(mountPoint string) error { - return ensureMountedAs(mountPoint, "rshared") -} - -// MakePrivate ensures a mounted filesystem has the PRIVATE mount option enabled. -// See the supported options in flags.go for further reference. -func MakePrivate(mountPoint string) error { - return ensureMountedAs(mountPoint, "private") -} - -// MakeRPrivate ensures a mounted filesystem has the RPRIVATE mount option -// enabled. See the supported options in flags.go for further reference. -func MakeRPrivate(mountPoint string) error { - return ensureMountedAs(mountPoint, "rprivate") -} - -// MakeSlave ensures a mounted filesystem has the SLAVE mount option enabled. -// See the supported options in flags.go for further reference. -func MakeSlave(mountPoint string) error { - return ensureMountedAs(mountPoint, "slave") -} - -// MakeRSlave ensures a mounted filesystem has the RSLAVE mount option enabled. -// See the supported options in flags.go for further reference. -func MakeRSlave(mountPoint string) error { - return ensureMountedAs(mountPoint, "rslave") -} - -// MakeUnbindable ensures a mounted filesystem has the UNBINDABLE mount option -// enabled. See the supported options in flags.go for further reference. -func MakeUnbindable(mountPoint string) error { - return ensureMountedAs(mountPoint, "unbindable") -} - -// MakeRUnbindable ensures a mounted filesystem has the RUNBINDABLE mount -// option enabled. See the supported options in flags.go for further reference. -func MakeRUnbindable(mountPoint string) error { - return ensureMountedAs(mountPoint, "runbindable") -} - -func ensureMountedAs(mountPoint, options string) error { - mounted, err := Mounted(mountPoint) - if err != nil { - return err - } - - if !mounted { - if err := Mount(mountPoint, mountPoint, "none", "bind,rw"); err != nil { - return err - } - } - if _, err = Mounted(mountPoint); err != nil { - return err - } - - return ForceMount("", mountPoint, "none", options) -} diff --git a/vendor/github.com/docker/docker/pkg/progress/progress.go b/vendor/github.com/docker/docker/pkg/progress/progress.go index 9aea5919545..32300914eb6 100644 --- a/vendor/github.com/docker/docker/pkg/progress/progress.go +++ b/vendor/github.com/docker/docker/pkg/progress/progress.go @@ -39,6 +39,10 @@ type Output interface { type chanOutput chan<- Progress func (out chanOutput) WriteProgress(p Progress) error { + // FIXME: workaround for panic in #37735 + defer func() { + recover() + }() out <- p return nil } diff --git a/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go b/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go index 2b5e713040e..b0456e580dc 100644 --- a/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go +++ b/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go @@ -94,7 +94,7 @@ func NewProgressOutput(out io.Writer) progress.Output { return &progressOutput{sf: &rawProgressFormatter{}, out: out, newLines: true} } -// NewJSONProgressOutput returns a progress.Output that that formats output +// NewJSONProgressOutput returns a progress.Output that formats output // using JSON objects func NewJSONProgressOutput(out io.Writer, newLines bool) progress.Output { return &progressOutput{sf: &jsonProgressFormatter{}, out: out, newLines: newLines} @@ -139,14 +139,14 @@ type AuxFormatter struct { } // Emit emits the given interface as an aux progress message -func (sf *AuxFormatter) Emit(aux interface{}) error { +func (sf *AuxFormatter) Emit(id string, aux interface{}) error { auxJSONBytes, err := json.Marshal(aux) if err != nil { return err } auxJSON := new(json.RawMessage) *auxJSON = auxJSONBytes - msgJSON, err := json.Marshal(&jsonmessage.JSONMessage{Aux: auxJSON}) + msgJSON, err := json.Marshal(&jsonmessage.JSONMessage{ID: id, Aux: auxJSON}) if err != nil { return err } diff --git a/vendor/github.com/docker/docker/pkg/stringid/stringid.go b/vendor/github.com/docker/docker/pkg/stringid/stringid.go index fa7d9166eb3..5fe071d6284 100644 --- a/vendor/github.com/docker/docker/pkg/stringid/stringid.go +++ b/vendor/github.com/docker/docker/pkg/stringid/stringid.go @@ -2,17 +2,12 @@ package stringid // import "github.com/docker/docker/pkg/stringid" import ( - cryptorand "crypto/rand" + "crypto/rand" "encoding/hex" "fmt" - "io" - "math" - "math/big" - "math/rand" "regexp" "strconv" "strings" - "time" ) const shortLen = 12 @@ -41,10 +36,11 @@ func TruncateID(id string) string { return id } -func generateID(r io.Reader) string { +// GenerateRandomID returns a unique id. +func GenerateRandomID() string { b := make([]byte, 32) for { - if _, err := io.ReadFull(r, b); err != nil { + if _, err := rand.Read(b); err != nil { panic(err) // This shouldn't happen } id := hex.EncodeToString(b) @@ -58,18 +54,6 @@ func generateID(r io.Reader) string { } } -// GenerateRandomID returns a unique id. -func GenerateRandomID() string { - return generateID(cryptorand.Reader) -} - -// GenerateNonCryptoID generates unique id without using cryptographically -// secure sources of random. -// It helps you to save entropy. -func GenerateNonCryptoID() string { - return generateID(readerFunc(rand.Read)) -} - // ValidateID checks whether an ID string is a valid image ID. func ValidateID(id string) error { if ok := validHex.MatchString(id); !ok { @@ -77,23 +61,3 @@ func ValidateID(id string) error { } return nil } - -func init() { - // safely set the seed globally so we generate random ids. Tries to use a - // crypto seed before falling back to time. - var seed int64 - if cryptoseed, err := cryptorand.Int(cryptorand.Reader, big.NewInt(math.MaxInt64)); err != nil { - // This should not happen, but worst-case fallback to time-based seed. - seed = time.Now().UnixNano() - } else { - seed = cryptoseed.Int64() - } - - rand.Seed(seed) -} - -type readerFunc func(p []byte) (int, error) - -func (fn readerFunc) Read(p []byte) (int, error) { - return fn(p) -} diff --git a/vendor/github.com/docker/docker/pkg/system/chtimes.go b/vendor/github.com/docker/docker/pkg/system/chtimes.go deleted file mode 100644 index c26a4e24b66..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/chtimes.go +++ /dev/null @@ -1,31 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "os" - "time" -) - -// Chtimes changes the access time and modified time of a file at the given path -func Chtimes(name string, atime time.Time, mtime time.Time) error { - unixMinTime := time.Unix(0, 0) - unixMaxTime := maxTime - - // If the modified time is prior to the Unix Epoch, or after the - // end of Unix Time, os.Chtimes has undefined behavior - // default to Unix Epoch in this case, just in case - - if atime.Before(unixMinTime) || atime.After(unixMaxTime) { - atime = unixMinTime - } - - if mtime.Before(unixMinTime) || mtime.After(unixMaxTime) { - mtime = unixMinTime - } - - if err := os.Chtimes(name, atime, mtime); err != nil { - return err - } - - // Take platform specific action for setting create time. - return setCTime(name, mtime) -} diff --git a/vendor/github.com/docker/docker/pkg/system/chtimes_unix.go b/vendor/github.com/docker/docker/pkg/system/chtimes_unix.go deleted file mode 100644 index 259138a45b5..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/chtimes_unix.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "time" -) - -//setCTime will set the create time on a file. On Unix, the create -//time is updated as a side effect of setting the modified time, so -//no action is required. -func setCTime(path string, ctime time.Time) error { - return nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/chtimes_windows.go b/vendor/github.com/docker/docker/pkg/system/chtimes_windows.go deleted file mode 100644 index d3a115ff42b..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/chtimes_windows.go +++ /dev/null @@ -1,26 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "time" - - "golang.org/x/sys/windows" -) - -//setCTime will set the create time on a file. On Windows, this requires -//calling SetFileTime and explicitly including the create time. -func setCTime(path string, ctime time.Time) error { - ctimespec := windows.NsecToTimespec(ctime.UnixNano()) - pathp, e := windows.UTF16PtrFromString(path) - if e != nil { - return e - } - h, e := windows.CreateFile(pathp, - windows.FILE_WRITE_ATTRIBUTES, windows.FILE_SHARE_WRITE, nil, - windows.OPEN_EXISTING, windows.FILE_FLAG_BACKUP_SEMANTICS, 0) - if e != nil { - return e - } - defer windows.Close(h) - c := windows.NsecToFiletime(windows.TimespecToNsec(ctimespec)) - return windows.SetFileTime(h, &c, nil, nil) -} diff --git a/vendor/github.com/docker/docker/pkg/system/errors.go b/vendor/github.com/docker/docker/pkg/system/errors.go deleted file mode 100644 index 2573d716222..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/errors.go +++ /dev/null @@ -1,13 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "errors" -) - -var ( - // ErrNotSupportedPlatform means the platform is not supported. - ErrNotSupportedPlatform = errors.New("platform and architecture is not supported") - - // ErrNotSupportedOperatingSystem means the operating system is not supported. - ErrNotSupportedOperatingSystem = errors.New("operating system is not supported") -) diff --git a/vendor/github.com/docker/docker/pkg/system/exitcode.go b/vendor/github.com/docker/docker/pkg/system/exitcode.go deleted file mode 100644 index 4ba8fe35bfd..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/exitcode.go +++ /dev/null @@ -1,19 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "fmt" - "os/exec" - "syscall" -) - -// GetExitCode returns the ExitStatus of the specified error if its type is -// exec.ExitError, returns 0 and an error otherwise. -func GetExitCode(err error) (int, error) { - exitCode := 0 - if exiterr, ok := err.(*exec.ExitError); ok { - if procExit, ok := exiterr.Sys().(syscall.WaitStatus); ok { - return procExit.ExitStatus(), nil - } - } - return exitCode, fmt.Errorf("failed to get exit code") -} diff --git a/vendor/github.com/docker/docker/pkg/system/filesys.go b/vendor/github.com/docker/docker/pkg/system/filesys.go deleted file mode 100644 index adeb1630520..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/filesys.go +++ /dev/null @@ -1,67 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "io/ioutil" - "os" - "path/filepath" -) - -// MkdirAllWithACL is a wrapper for MkdirAll on unix systems. -func MkdirAllWithACL(path string, perm os.FileMode, sddl string) error { - return MkdirAll(path, perm, sddl) -} - -// MkdirAll creates a directory named path along with any necessary parents, -// with permission specified by attribute perm for all dir created. -func MkdirAll(path string, perm os.FileMode, sddl string) error { - return os.MkdirAll(path, perm) -} - -// IsAbs is a platform-specific wrapper for filepath.IsAbs. -func IsAbs(path string) bool { - return filepath.IsAbs(path) -} - -// The functions below here are wrappers for the equivalents in the os and ioutils packages. -// They are passthrough on Unix platforms, and only relevant on Windows. - -// CreateSequential creates the named file with mode 0666 (before umask), truncating -// it if it already exists. If successful, methods on the returned -// File can be used for I/O; the associated file descriptor has mode -// O_RDWR. -// If there is an error, it will be of type *PathError. -func CreateSequential(name string) (*os.File, error) { - return os.Create(name) -} - -// OpenSequential opens the named file for reading. If successful, methods on -// the returned file can be used for reading; the associated file -// descriptor has mode O_RDONLY. -// If there is an error, it will be of type *PathError. -func OpenSequential(name string) (*os.File, error) { - return os.Open(name) -} - -// OpenFileSequential is the generalized open call; most users will use Open -// or Create instead. It opens the named file with specified flag -// (O_RDONLY etc.) and perm, (0666 etc.) if applicable. If successful, -// methods on the returned File can be used for I/O. -// If there is an error, it will be of type *PathError. -func OpenFileSequential(name string, flag int, perm os.FileMode) (*os.File, error) { - return os.OpenFile(name, flag, perm) -} - -// TempFileSequential creates a new temporary file in the directory dir -// with a name beginning with prefix, opens the file for reading -// and writing, and returns the resulting *os.File. -// If dir is the empty string, TempFile uses the default directory -// for temporary files (see os.TempDir). -// Multiple programs calling TempFile simultaneously -// will not choose the same file. The caller can use f.Name() -// to find the pathname of the file. It is the caller's responsibility -// to remove the file when no longer needed. -func TempFileSequential(dir, prefix string) (f *os.File, err error) { - return ioutil.TempFile(dir, prefix) -} diff --git a/vendor/github.com/docker/docker/pkg/system/filesys_windows.go b/vendor/github.com/docker/docker/pkg/system/filesys_windows.go deleted file mode 100644 index a1f6013f139..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/filesys_windows.go +++ /dev/null @@ -1,296 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "os" - "path/filepath" - "regexp" - "strconv" - "strings" - "sync" - "syscall" - "time" - "unsafe" - - winio "github.com/Microsoft/go-winio" - "golang.org/x/sys/windows" -) - -const ( - // SddlAdministratorsLocalSystem is local administrators plus NT AUTHORITY\System - SddlAdministratorsLocalSystem = "D:P(A;OICI;GA;;;BA)(A;OICI;GA;;;SY)" - // SddlNtvmAdministratorsLocalSystem is NT VIRTUAL MACHINE\Virtual Machines plus local administrators plus NT AUTHORITY\System - SddlNtvmAdministratorsLocalSystem = "D:P(A;OICI;GA;;;S-1-5-83-0)(A;OICI;GA;;;BA)(A;OICI;GA;;;SY)" -) - -// MkdirAllWithACL is a wrapper for MkdirAll that creates a directory -// with an appropriate SDDL defined ACL. -func MkdirAllWithACL(path string, perm os.FileMode, sddl string) error { - return mkdirall(path, true, sddl) -} - -// MkdirAll implementation that is volume path aware for Windows. -func MkdirAll(path string, _ os.FileMode, sddl string) error { - return mkdirall(path, false, sddl) -} - -// mkdirall is a custom version of os.MkdirAll modified for use on Windows -// so that it is both volume path aware, and can create a directory with -// a DACL. -func mkdirall(path string, applyACL bool, sddl string) error { - if re := regexp.MustCompile(`^\\\\\?\\Volume{[a-z0-9-]+}$`); re.MatchString(path) { - return nil - } - - // The rest of this method is largely copied from os.MkdirAll and should be kept - // as-is to ensure compatibility. - - // Fast path: if we can tell whether path is a directory or file, stop with success or error. - dir, err := os.Stat(path) - if err == nil { - if dir.IsDir() { - return nil - } - return &os.PathError{ - Op: "mkdir", - Path: path, - Err: syscall.ENOTDIR, - } - } - - // Slow path: make sure parent exists and then call Mkdir for path. - i := len(path) - for i > 0 && os.IsPathSeparator(path[i-1]) { // Skip trailing path separator. - i-- - } - - j := i - for j > 0 && !os.IsPathSeparator(path[j-1]) { // Scan backward over element. - j-- - } - - if j > 1 { - // Create parent - err = mkdirall(path[0:j-1], false, sddl) - if err != nil { - return err - } - } - - // Parent now exists; invoke os.Mkdir or mkdirWithACL and use its result. - if applyACL { - err = mkdirWithACL(path, sddl) - } else { - err = os.Mkdir(path, 0) - } - - if err != nil { - // Handle arguments like "foo/." by - // double-checking that directory doesn't exist. - dir, err1 := os.Lstat(path) - if err1 == nil && dir.IsDir() { - return nil - } - return err - } - return nil -} - -// mkdirWithACL creates a new directory. If there is an error, it will be of -// type *PathError. . -// -// This is a modified and combined version of os.Mkdir and windows.Mkdir -// in golang to cater for creating a directory am ACL permitting full -// access, with inheritance, to any subfolder/file for Built-in Administrators -// and Local System. -func mkdirWithACL(name string, sddl string) error { - sa := windows.SecurityAttributes{Length: 0} - sd, err := winio.SddlToSecurityDescriptor(sddl) - if err != nil { - return &os.PathError{Op: "mkdir", Path: name, Err: err} - } - sa.Length = uint32(unsafe.Sizeof(sa)) - sa.InheritHandle = 1 - sa.SecurityDescriptor = uintptr(unsafe.Pointer(&sd[0])) - - namep, err := windows.UTF16PtrFromString(name) - if err != nil { - return &os.PathError{Op: "mkdir", Path: name, Err: err} - } - - e := windows.CreateDirectory(namep, &sa) - if e != nil { - return &os.PathError{Op: "mkdir", Path: name, Err: e} - } - return nil -} - -// IsAbs is a platform-specific wrapper for filepath.IsAbs. On Windows, -// golang filepath.IsAbs does not consider a path \windows\system32 as absolute -// as it doesn't start with a drive-letter/colon combination. However, in -// docker we need to verify things such as WORKDIR /windows/system32 in -// a Dockerfile (which gets translated to \windows\system32 when being processed -// by the daemon. This SHOULD be treated as absolute from a docker processing -// perspective. -func IsAbs(path string) bool { - if !filepath.IsAbs(path) { - if !strings.HasPrefix(path, string(os.PathSeparator)) { - return false - } - } - return true -} - -// The origin of the functions below here are the golang OS and windows packages, -// slightly modified to only cope with files, not directories due to the -// specific use case. -// -// The alteration is to allow a file on Windows to be opened with -// FILE_FLAG_SEQUENTIAL_SCAN (particular for docker load), to avoid eating -// the standby list, particularly when accessing large files such as layer.tar. - -// CreateSequential creates the named file with mode 0666 (before umask), truncating -// it if it already exists. If successful, methods on the returned -// File can be used for I/O; the associated file descriptor has mode -// O_RDWR. -// If there is an error, it will be of type *PathError. -func CreateSequential(name string) (*os.File, error) { - return OpenFileSequential(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0) -} - -// OpenSequential opens the named file for reading. If successful, methods on -// the returned file can be used for reading; the associated file -// descriptor has mode O_RDONLY. -// If there is an error, it will be of type *PathError. -func OpenSequential(name string) (*os.File, error) { - return OpenFileSequential(name, os.O_RDONLY, 0) -} - -// OpenFileSequential is the generalized open call; most users will use Open -// or Create instead. -// If there is an error, it will be of type *PathError. -func OpenFileSequential(name string, flag int, _ os.FileMode) (*os.File, error) { - if name == "" { - return nil, &os.PathError{Op: "open", Path: name, Err: syscall.ENOENT} - } - r, errf := windowsOpenFileSequential(name, flag, 0) - if errf == nil { - return r, nil - } - return nil, &os.PathError{Op: "open", Path: name, Err: errf} -} - -func windowsOpenFileSequential(name string, flag int, _ os.FileMode) (file *os.File, err error) { - r, e := windowsOpenSequential(name, flag|windows.O_CLOEXEC, 0) - if e != nil { - return nil, e - } - return os.NewFile(uintptr(r), name), nil -} - -func makeInheritSa() *windows.SecurityAttributes { - var sa windows.SecurityAttributes - sa.Length = uint32(unsafe.Sizeof(sa)) - sa.InheritHandle = 1 - return &sa -} - -func windowsOpenSequential(path string, mode int, _ uint32) (fd windows.Handle, err error) { - if len(path) == 0 { - return windows.InvalidHandle, windows.ERROR_FILE_NOT_FOUND - } - pathp, err := windows.UTF16PtrFromString(path) - if err != nil { - return windows.InvalidHandle, err - } - var access uint32 - switch mode & (windows.O_RDONLY | windows.O_WRONLY | windows.O_RDWR) { - case windows.O_RDONLY: - access = windows.GENERIC_READ - case windows.O_WRONLY: - access = windows.GENERIC_WRITE - case windows.O_RDWR: - access = windows.GENERIC_READ | windows.GENERIC_WRITE - } - if mode&windows.O_CREAT != 0 { - access |= windows.GENERIC_WRITE - } - if mode&windows.O_APPEND != 0 { - access &^= windows.GENERIC_WRITE - access |= windows.FILE_APPEND_DATA - } - sharemode := uint32(windows.FILE_SHARE_READ | windows.FILE_SHARE_WRITE) - var sa *windows.SecurityAttributes - if mode&windows.O_CLOEXEC == 0 { - sa = makeInheritSa() - } - var createmode uint32 - switch { - case mode&(windows.O_CREAT|windows.O_EXCL) == (windows.O_CREAT | windows.O_EXCL): - createmode = windows.CREATE_NEW - case mode&(windows.O_CREAT|windows.O_TRUNC) == (windows.O_CREAT | windows.O_TRUNC): - createmode = windows.CREATE_ALWAYS - case mode&windows.O_CREAT == windows.O_CREAT: - createmode = windows.OPEN_ALWAYS - case mode&windows.O_TRUNC == windows.O_TRUNC: - createmode = windows.TRUNCATE_EXISTING - default: - createmode = windows.OPEN_EXISTING - } - // Use FILE_FLAG_SEQUENTIAL_SCAN rather than FILE_ATTRIBUTE_NORMAL as implemented in golang. - //https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx - const fileFlagSequentialScan = 0x08000000 // FILE_FLAG_SEQUENTIAL_SCAN - h, e := windows.CreateFile(pathp, access, sharemode, sa, createmode, fileFlagSequentialScan, 0) - return h, e -} - -// Helpers for TempFileSequential -var rand uint32 -var randmu sync.Mutex - -func reseed() uint32 { - return uint32(time.Now().UnixNano() + int64(os.Getpid())) -} -func nextSuffix() string { - randmu.Lock() - r := rand - if r == 0 { - r = reseed() - } - r = r*1664525 + 1013904223 // constants from Numerical Recipes - rand = r - randmu.Unlock() - return strconv.Itoa(int(1e9 + r%1e9))[1:] -} - -// TempFileSequential is a copy of ioutil.TempFile, modified to use sequential -// file access. Below is the original comment from golang: -// TempFile creates a new temporary file in the directory dir -// with a name beginning with prefix, opens the file for reading -// and writing, and returns the resulting *os.File. -// If dir is the empty string, TempFile uses the default directory -// for temporary files (see os.TempDir). -// Multiple programs calling TempFile simultaneously -// will not choose the same file. The caller can use f.Name() -// to find the pathname of the file. It is the caller's responsibility -// to remove the file when no longer needed. -func TempFileSequential(dir, prefix string) (f *os.File, err error) { - if dir == "" { - dir = os.TempDir() - } - - nconflict := 0 - for i := 0; i < 10000; i++ { - name := filepath.Join(dir, prefix+nextSuffix()) - f, err = OpenFileSequential(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) - if os.IsExist(err) { - if nconflict++; nconflict > 10 { - randmu.Lock() - rand = reseed() - randmu.Unlock() - } - continue - } - break - } - return -} diff --git a/vendor/github.com/docker/docker/pkg/system/init.go b/vendor/github.com/docker/docker/pkg/system/init.go deleted file mode 100644 index a17597aaba2..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/init.go +++ /dev/null @@ -1,22 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "syscall" - "time" - "unsafe" -) - -// Used by chtimes -var maxTime time.Time - -func init() { - // chtimes initialization - if unsafe.Sizeof(syscall.Timespec{}.Nsec) == 8 { - // This is a 64 bit timespec - // os.Chtimes limits time to the following - maxTime = time.Unix(0, 1<<63-1) - } else { - // This is a 32 bit timespec - maxTime = time.Unix(1<<31-1, 0) - } -} diff --git a/vendor/github.com/docker/docker/pkg/system/init_unix.go b/vendor/github.com/docker/docker/pkg/system/init_unix.go deleted file mode 100644 index 4996a67c12e..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/init_unix.go +++ /dev/null @@ -1,7 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -// InitLCOW does nothing since LCOW is a windows only feature -func InitLCOW(experimental bool) { -} diff --git a/vendor/github.com/docker/docker/pkg/system/init_windows.go b/vendor/github.com/docker/docker/pkg/system/init_windows.go deleted file mode 100644 index 4910ff69d66..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/init_windows.go +++ /dev/null @@ -1,12 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -// lcowSupported determines if Linux Containers on Windows are supported. -var lcowSupported = false - -// InitLCOW sets whether LCOW is supported or not -func InitLCOW(experimental bool) { - v := GetOSVersion() - if experimental && v.Build >= 16299 { - lcowSupported = true - } -} diff --git a/vendor/github.com/docker/docker/pkg/system/lcow.go b/vendor/github.com/docker/docker/pkg/system/lcow.go deleted file mode 100644 index 5c3fbfe6f4a..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/lcow.go +++ /dev/null @@ -1,69 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "fmt" - "runtime" - "strings" - - specs "github.com/opencontainers/image-spec/specs-go/v1" -) - -// ValidatePlatform determines if a platform structure is valid. -// TODO This is a temporary function - can be replaced by parsing from -// https://github.com/containerd/containerd/pull/1403/files at a later date. -// @jhowardmsft -func ValidatePlatform(platform *specs.Platform) error { - platform.Architecture = strings.ToLower(platform.Architecture) - platform.OS = strings.ToLower(platform.OS) - // Based on https://github.com/moby/moby/pull/34642#issuecomment-330375350, do - // not support anything except operating system. - if platform.Architecture != "" { - return fmt.Errorf("invalid platform architecture %q", platform.Architecture) - } - if platform.OS != "" { - if !(platform.OS == runtime.GOOS || (LCOWSupported() && platform.OS == "linux")) { - return fmt.Errorf("invalid platform os %q", platform.OS) - } - } - if len(platform.OSFeatures) != 0 { - return fmt.Errorf("invalid platform osfeatures %q", platform.OSFeatures) - } - if platform.OSVersion != "" { - return fmt.Errorf("invalid platform osversion %q", platform.OSVersion) - } - if platform.Variant != "" { - return fmt.Errorf("invalid platform variant %q", platform.Variant) - } - return nil -} - -// ParsePlatform parses a platform string in the format os[/arch[/variant] -// into an OCI image-spec platform structure. -// TODO This is a temporary function - can be replaced by parsing from -// https://github.com/containerd/containerd/pull/1403/files at a later date. -// @jhowardmsft -func ParsePlatform(in string) *specs.Platform { - p := &specs.Platform{} - elements := strings.SplitN(strings.ToLower(in), "/", 3) - if len(elements) == 3 { - p.Variant = elements[2] - } - if len(elements) >= 2 { - p.Architecture = elements[1] - } - if len(elements) >= 1 { - p.OS = elements[0] - } - return p -} - -// IsOSSupported determines if an operating system is supported by the host -func IsOSSupported(os string) bool { - if runtime.GOOS == os { - return true - } - if LCOWSupported() && os == "linux" { - return true - } - return false -} diff --git a/vendor/github.com/docker/docker/pkg/system/lcow_unix.go b/vendor/github.com/docker/docker/pkg/system/lcow_unix.go deleted file mode 100644 index 26397fb8a17..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/lcow_unix.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -// LCOWSupported returns true if Linux containers on Windows are supported. -func LCOWSupported() bool { - return false -} diff --git a/vendor/github.com/docker/docker/pkg/system/lcow_windows.go b/vendor/github.com/docker/docker/pkg/system/lcow_windows.go deleted file mode 100644 index f0139df8f7e..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/lcow_windows.go +++ /dev/null @@ -1,6 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -// LCOWSupported returns true if Linux containers on Windows are supported. -func LCOWSupported() bool { - return lcowSupported -} diff --git a/vendor/github.com/docker/docker/pkg/system/lstat_unix.go b/vendor/github.com/docker/docker/pkg/system/lstat_unix.go deleted file mode 100644 index 7477995f1bf..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/lstat_unix.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "syscall" -) - -// Lstat takes a path to a file and returns -// a system.StatT type pertaining to that file. -// -// Throws an error if the file does not exist -func Lstat(path string) (*StatT, error) { - s := &syscall.Stat_t{} - if err := syscall.Lstat(path, s); err != nil { - return nil, err - } - return fromStatT(s) -} diff --git a/vendor/github.com/docker/docker/pkg/system/lstat_windows.go b/vendor/github.com/docker/docker/pkg/system/lstat_windows.go deleted file mode 100644 index 359c791d9b6..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/lstat_windows.go +++ /dev/null @@ -1,14 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "os" - -// Lstat calls os.Lstat to get a fileinfo interface back. -// This is then copied into our own locally defined structure. -func Lstat(path string) (*StatT, error) { - fi, err := os.Lstat(path) - if err != nil { - return nil, err - } - - return fromStatT(&fi) -} diff --git a/vendor/github.com/docker/docker/pkg/system/meminfo.go b/vendor/github.com/docker/docker/pkg/system/meminfo.go deleted file mode 100644 index 6667eb84dcb..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/meminfo.go +++ /dev/null @@ -1,17 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -// MemInfo contains memory statistics of the host system. -type MemInfo struct { - // Total usable RAM (i.e. physical RAM minus a few reserved bits and the - // kernel binary code). - MemTotal int64 - - // Amount of free memory. - MemFree int64 - - // Total amount of swap space available. - SwapTotal int64 - - // Amount of swap space that is currently unused. - SwapFree int64 -} diff --git a/vendor/github.com/docker/docker/pkg/system/meminfo_linux.go b/vendor/github.com/docker/docker/pkg/system/meminfo_linux.go deleted file mode 100644 index d79e8b07653..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/meminfo_linux.go +++ /dev/null @@ -1,65 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "bufio" - "io" - "os" - "strconv" - "strings" - - "github.com/docker/go-units" -) - -// ReadMemInfo retrieves memory statistics of the host system and returns a -// MemInfo type. -func ReadMemInfo() (*MemInfo, error) { - file, err := os.Open("/proc/meminfo") - if err != nil { - return nil, err - } - defer file.Close() - return parseMemInfo(file) -} - -// parseMemInfo parses the /proc/meminfo file into -// a MemInfo object given an io.Reader to the file. -// Throws error if there are problems reading from the file -func parseMemInfo(reader io.Reader) (*MemInfo, error) { - meminfo := &MemInfo{} - scanner := bufio.NewScanner(reader) - for scanner.Scan() { - // Expected format: ["MemTotal:", "1234", "kB"] - parts := strings.Fields(scanner.Text()) - - // Sanity checks: Skip malformed entries. - if len(parts) < 3 || parts[2] != "kB" { - continue - } - - // Convert to bytes. - size, err := strconv.Atoi(parts[1]) - if err != nil { - continue - } - bytes := int64(size) * units.KiB - - switch parts[0] { - case "MemTotal:": - meminfo.MemTotal = bytes - case "MemFree:": - meminfo.MemFree = bytes - case "SwapTotal:": - meminfo.SwapTotal = bytes - case "SwapFree:": - meminfo.SwapFree = bytes - } - - } - - // Handle errors that may have occurred during the reading of the file. - if err := scanner.Err(); err != nil { - return nil, err - } - - return meminfo, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/meminfo_unsupported.go b/vendor/github.com/docker/docker/pkg/system/meminfo_unsupported.go deleted file mode 100644 index 56f44942680..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/meminfo_unsupported.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build !linux,!windows - -package system // import "github.com/docker/docker/pkg/system" - -// ReadMemInfo is not supported on platforms other than linux and windows. -func ReadMemInfo() (*MemInfo, error) { - return nil, ErrNotSupportedPlatform -} diff --git a/vendor/github.com/docker/docker/pkg/system/meminfo_windows.go b/vendor/github.com/docker/docker/pkg/system/meminfo_windows.go deleted file mode 100644 index 6ed93f2fe26..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/meminfo_windows.go +++ /dev/null @@ -1,45 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "unsafe" - - "golang.org/x/sys/windows" -) - -var ( - modkernel32 = windows.NewLazySystemDLL("kernel32.dll") - - procGlobalMemoryStatusEx = modkernel32.NewProc("GlobalMemoryStatusEx") -) - -// https://msdn.microsoft.com/en-us/library/windows/desktop/aa366589(v=vs.85).aspx -// https://msdn.microsoft.com/en-us/library/windows/desktop/aa366770(v=vs.85).aspx -type memorystatusex struct { - dwLength uint32 - dwMemoryLoad uint32 - ullTotalPhys uint64 - ullAvailPhys uint64 - ullTotalPageFile uint64 - ullAvailPageFile uint64 - ullTotalVirtual uint64 - ullAvailVirtual uint64 - ullAvailExtendedVirtual uint64 -} - -// ReadMemInfo retrieves memory statistics of the host system and returns a -// MemInfo type. -func ReadMemInfo() (*MemInfo, error) { - msi := &memorystatusex{ - dwLength: 64, - } - r1, _, _ := procGlobalMemoryStatusEx.Call(uintptr(unsafe.Pointer(msi))) - if r1 == 0 { - return &MemInfo{}, nil - } - return &MemInfo{ - MemTotal: int64(msi.ullTotalPhys), - MemFree: int64(msi.ullAvailPhys), - SwapTotal: int64(msi.ullTotalPageFile), - SwapFree: int64(msi.ullAvailPageFile), - }, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/mknod.go b/vendor/github.com/docker/docker/pkg/system/mknod.go deleted file mode 100644 index b132482e038..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/mknod.go +++ /dev/null @@ -1,22 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "golang.org/x/sys/unix" -) - -// Mknod creates a filesystem node (file, device special file or named pipe) named path -// with attributes specified by mode and dev. -func Mknod(path string, mode uint32, dev int) error { - return unix.Mknod(path, mode, dev) -} - -// Mkdev is used to build the value of linux devices (in /dev/) which specifies major -// and minor number of the newly created device special file. -// Linux device nodes are a bit weird due to backwards compat with 16 bit device nodes. -// They are, from low to high: the lower 8 bits of the minor, then 12 bits of the major, -// then the top 12 bits of the minor. -func Mkdev(major int64, minor int64) uint32 { - return uint32(unix.Mkdev(uint32(major), uint32(minor))) -} diff --git a/vendor/github.com/docker/docker/pkg/system/mknod_windows.go b/vendor/github.com/docker/docker/pkg/system/mknod_windows.go deleted file mode 100644 index ec89d7a15ea..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/mknod_windows.go +++ /dev/null @@ -1,11 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -// Mknod is not implemented on Windows. -func Mknod(path string, mode uint32, dev int) error { - return ErrNotSupportedPlatform -} - -// Mkdev is not implemented on Windows. -func Mkdev(major int64, minor int64) uint32 { - panic("Mkdev not implemented on Windows.") -} diff --git a/vendor/github.com/docker/docker/pkg/system/path.go b/vendor/github.com/docker/docker/pkg/system/path.go deleted file mode 100644 index a3d957afab7..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/path.go +++ /dev/null @@ -1,60 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "fmt" - "path/filepath" - "runtime" - "strings" - - "github.com/containerd/continuity/pathdriver" -) - -const defaultUnixPathEnv = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - -// DefaultPathEnv is unix style list of directories to search for -// executables. Each directory is separated from the next by a colon -// ':' character . -func DefaultPathEnv(os string) string { - if runtime.GOOS == "windows" { - if os != runtime.GOOS { - return defaultUnixPathEnv - } - // Deliberately empty on Windows containers on Windows as the default path will be set by - // the container. Docker has no context of what the default path should be. - return "" - } - return defaultUnixPathEnv - -} - -// CheckSystemDriveAndRemoveDriveLetter verifies that a path, if it includes a drive letter, -// is the system drive. -// On Linux: this is a no-op. -// On Windows: this does the following> -// CheckSystemDriveAndRemoveDriveLetter verifies and manipulates a Windows path. -// This is used, for example, when validating a user provided path in docker cp. -// If a drive letter is supplied, it must be the system drive. The drive letter -// is always removed. Also, it translates it to OS semantics (IOW / to \). We -// need the path in this syntax so that it can ultimately be concatenated with -// a Windows long-path which doesn't support drive-letters. Examples: -// C: --> Fail -// C:\ --> \ -// a --> a -// /a --> \a -// d:\ --> Fail -func CheckSystemDriveAndRemoveDriveLetter(path string, driver pathdriver.PathDriver) (string, error) { - if runtime.GOOS != "windows" || LCOWSupported() { - return path, nil - } - - if len(path) == 2 && string(path[1]) == ":" { - return "", fmt.Errorf("No relative path specified in %q", path) - } - if !driver.IsAbs(path) || len(path) < 2 { - return filepath.FromSlash(path), nil - } - if string(path[1]) == ":" && !strings.EqualFold(string(path[0]), "c") { - return "", fmt.Errorf("The specified path is not on the system drive (C:)") - } - return filepath.FromSlash(path[2:]), nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/process_unix.go b/vendor/github.com/docker/docker/pkg/system/process_unix.go deleted file mode 100644 index 0195a891b27..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/process_unix.go +++ /dev/null @@ -1,24 +0,0 @@ -// +build linux freebsd darwin - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "syscall" - - "golang.org/x/sys/unix" -) - -// IsProcessAlive returns true if process with a given pid is running. -func IsProcessAlive(pid int) bool { - err := unix.Kill(pid, syscall.Signal(0)) - if err == nil || err == unix.EPERM { - return true - } - - return false -} - -// KillProcess force-stops a process. -func KillProcess(pid int) { - unix.Kill(pid, unix.SIGKILL) -} diff --git a/vendor/github.com/docker/docker/pkg/system/process_windows.go b/vendor/github.com/docker/docker/pkg/system/process_windows.go deleted file mode 100644 index 4e70c97b18f..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/process_windows.go +++ /dev/null @@ -1,18 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "os" - -// IsProcessAlive returns true if process with a given pid is running. -func IsProcessAlive(pid int) bool { - _, err := os.FindProcess(pid) - - return err == nil -} - -// KillProcess force-stops a process. -func KillProcess(pid int) { - p, err := os.FindProcess(pid) - if err == nil { - p.Kill() - } -} diff --git a/vendor/github.com/docker/docker/pkg/system/rm.go b/vendor/github.com/docker/docker/pkg/system/rm.go deleted file mode 100644 index 02e4d262216..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/rm.go +++ /dev/null @@ -1,80 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "os" - "syscall" - "time" - - "github.com/docker/docker/pkg/mount" - "github.com/pkg/errors" -) - -// EnsureRemoveAll wraps `os.RemoveAll` to check for specific errors that can -// often be remedied. -// Only use `EnsureRemoveAll` if you really want to make every effort to remove -// a directory. -// -// Because of the way `os.Remove` (and by extension `os.RemoveAll`) works, there -// can be a race between reading directory entries and then actually attempting -// to remove everything in the directory. -// These types of errors do not need to be returned since it's ok for the dir to -// be gone we can just retry the remove operation. -// -// This should not return a `os.ErrNotExist` kind of error under any circumstances -func EnsureRemoveAll(dir string) error { - notExistErr := make(map[string]bool) - - // track retries - exitOnErr := make(map[string]int) - maxRetry := 50 - - // Attempt to unmount anything beneath this dir first - mount.RecursiveUnmount(dir) - - for { - err := os.RemoveAll(dir) - if err == nil { - return err - } - - pe, ok := err.(*os.PathError) - if !ok { - return err - } - - if os.IsNotExist(err) { - if notExistErr[pe.Path] { - return err - } - notExistErr[pe.Path] = true - - // There is a race where some subdir can be removed but after the parent - // dir entries have been read. - // So the path could be from `os.Remove(subdir)` - // If the reported non-existent path is not the passed in `dir` we - // should just retry, but otherwise return with no error. - if pe.Path == dir { - return nil - } - continue - } - - if pe.Err != syscall.EBUSY { - return err - } - - if mounted, _ := mount.Mounted(pe.Path); mounted { - if e := mount.Unmount(pe.Path); e != nil { - if mounted, _ := mount.Mounted(pe.Path); mounted { - return errors.Wrapf(e, "error while removing %s", dir) - } - } - } - - if exitOnErr[pe.Path] == maxRetry { - return err - } - exitOnErr[pe.Path]++ - time.Sleep(100 * time.Millisecond) - } -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_darwin.go b/vendor/github.com/docker/docker/pkg/system/stat_darwin.go deleted file mode 100644 index c1c0ee9f386..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_darwin.go +++ /dev/null @@ -1,13 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "syscall" - -// fromStatT converts a syscall.Stat_t type to a system.Stat_t type -func fromStatT(s *syscall.Stat_t) (*StatT, error) { - return &StatT{size: s.Size, - mode: uint32(s.Mode), - uid: s.Uid, - gid: s.Gid, - rdev: uint64(s.Rdev), - mtim: s.Mtimespec}, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_freebsd.go b/vendor/github.com/docker/docker/pkg/system/stat_freebsd.go deleted file mode 100644 index c1c0ee9f386..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_freebsd.go +++ /dev/null @@ -1,13 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "syscall" - -// fromStatT converts a syscall.Stat_t type to a system.Stat_t type -func fromStatT(s *syscall.Stat_t) (*StatT, error) { - return &StatT{size: s.Size, - mode: uint32(s.Mode), - uid: s.Uid, - gid: s.Gid, - rdev: uint64(s.Rdev), - mtim: s.Mtimespec}, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_linux.go b/vendor/github.com/docker/docker/pkg/system/stat_linux.go deleted file mode 100644 index 98c9eb18d18..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_linux.go +++ /dev/null @@ -1,19 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "syscall" - -// fromStatT converts a syscall.Stat_t type to a system.Stat_t type -func fromStatT(s *syscall.Stat_t) (*StatT, error) { - return &StatT{size: s.Size, - mode: s.Mode, - uid: s.Uid, - gid: s.Gid, - rdev: s.Rdev, - mtim: s.Mtim}, nil -} - -// FromStatT converts a syscall.Stat_t type to a system.Stat_t type -// This is exposed on Linux as pkg/archive/changes uses it. -func FromStatT(s *syscall.Stat_t) (*StatT, error) { - return fromStatT(s) -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_openbsd.go b/vendor/github.com/docker/docker/pkg/system/stat_openbsd.go deleted file mode 100644 index 756b92d1e6c..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_openbsd.go +++ /dev/null @@ -1,13 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "syscall" - -// fromStatT converts a syscall.Stat_t type to a system.Stat_t type -func fromStatT(s *syscall.Stat_t) (*StatT, error) { - return &StatT{size: s.Size, - mode: uint32(s.Mode), - uid: s.Uid, - gid: s.Gid, - rdev: uint64(s.Rdev), - mtim: s.Mtim}, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_solaris.go b/vendor/github.com/docker/docker/pkg/system/stat_solaris.go deleted file mode 100644 index 756b92d1e6c..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_solaris.go +++ /dev/null @@ -1,13 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "syscall" - -// fromStatT converts a syscall.Stat_t type to a system.Stat_t type -func fromStatT(s *syscall.Stat_t) (*StatT, error) { - return &StatT{size: s.Size, - mode: uint32(s.Mode), - uid: s.Uid, - gid: s.Gid, - rdev: uint64(s.Rdev), - mtim: s.Mtim}, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_unix.go b/vendor/github.com/docker/docker/pkg/system/stat_unix.go deleted file mode 100644 index 3d7e2ebbefa..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_unix.go +++ /dev/null @@ -1,65 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "syscall" -) - -// StatT type contains status of a file. It contains metadata -// like permission, owner, group, size, etc about a file. -type StatT struct { - mode uint32 - uid uint32 - gid uint32 - rdev uint64 - size int64 - mtim syscall.Timespec -} - -// Mode returns file's permission mode. -func (s StatT) Mode() uint32 { - return s.mode -} - -// UID returns file's user id of owner. -func (s StatT) UID() uint32 { - return s.uid -} - -// GID returns file's group id of owner. -func (s StatT) GID() uint32 { - return s.gid -} - -// Rdev returns file's device ID (if it's special file). -func (s StatT) Rdev() uint64 { - return s.rdev -} - -// Size returns file's size. -func (s StatT) Size() int64 { - return s.size -} - -// Mtim returns file's last modification time. -func (s StatT) Mtim() syscall.Timespec { - return s.mtim -} - -// IsDir reports whether s describes a directory. -func (s StatT) IsDir() bool { - return s.mode&syscall.S_IFDIR != 0 -} - -// Stat takes a path to a file and returns -// a system.StatT type pertaining to that file. -// -// Throws an error if the file does not exist -func Stat(path string) (*StatT, error) { - s := &syscall.Stat_t{} - if err := syscall.Stat(path, s); err != nil { - return nil, err - } - return fromStatT(s) -} diff --git a/vendor/github.com/docker/docker/pkg/system/stat_windows.go b/vendor/github.com/docker/docker/pkg/system/stat_windows.go deleted file mode 100644 index b2456cb8870..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/stat_windows.go +++ /dev/null @@ -1,49 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "os" - "time" -) - -// StatT type contains status of a file. It contains metadata -// like permission, size, etc about a file. -type StatT struct { - mode os.FileMode - size int64 - mtim time.Time -} - -// Size returns file's size. -func (s StatT) Size() int64 { - return s.size -} - -// Mode returns file's permission mode. -func (s StatT) Mode() os.FileMode { - return os.FileMode(s.mode) -} - -// Mtim returns file's last modification time. -func (s StatT) Mtim() time.Time { - return time.Time(s.mtim) -} - -// Stat takes a path to a file and returns -// a system.StatT type pertaining to that file. -// -// Throws an error if the file does not exist -func Stat(path string) (*StatT, error) { - fi, err := os.Stat(path) - if err != nil { - return nil, err - } - return fromStatT(&fi) -} - -// fromStatT converts a os.FileInfo type to a system.StatT type -func fromStatT(fi *os.FileInfo) (*StatT, error) { - return &StatT{ - size: (*fi).Size(), - mode: (*fi).Mode(), - mtim: (*fi).ModTime()}, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/syscall_unix.go b/vendor/github.com/docker/docker/pkg/system/syscall_unix.go deleted file mode 100644 index 919a412a7b3..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/syscall_unix.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build linux freebsd - -package system // import "github.com/docker/docker/pkg/system" - -import "golang.org/x/sys/unix" - -// Unmount is a platform-specific helper function to call -// the unmount syscall. -func Unmount(dest string) error { - return unix.Unmount(dest, 0) -} - -// CommandLineToArgv should not be used on Unix. -// It simply returns commandLine in the only element in the returned array. -func CommandLineToArgv(commandLine string) ([]string, error) { - return []string{commandLine}, nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/syscall_windows.go b/vendor/github.com/docker/docker/pkg/system/syscall_windows.go deleted file mode 100644 index ee7e0256f33..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/syscall_windows.go +++ /dev/null @@ -1,127 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "fmt" - "unsafe" - - "github.com/sirupsen/logrus" - "golang.org/x/sys/windows" -) - -var ( - ntuserApiset = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0") - procGetVersionExW = modkernel32.NewProc("GetVersionExW") - procGetProductInfo = modkernel32.NewProc("GetProductInfo") -) - -// OSVersion is a wrapper for Windows version information -// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx -type OSVersion struct { - Version uint32 - MajorVersion uint8 - MinorVersion uint8 - Build uint16 -} - -// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724833(v=vs.85).aspx -type osVersionInfoEx struct { - OSVersionInfoSize uint32 - MajorVersion uint32 - MinorVersion uint32 - BuildNumber uint32 - PlatformID uint32 - CSDVersion [128]uint16 - ServicePackMajor uint16 - ServicePackMinor uint16 - SuiteMask uint16 - ProductType byte - Reserve byte -} - -// GetOSVersion gets the operating system version on Windows. Note that -// docker.exe must be manifested to get the correct version information. -func GetOSVersion() OSVersion { - var err error - osv := OSVersion{} - osv.Version, err = windows.GetVersion() - if err != nil { - // GetVersion never fails. - panic(err) - } - osv.MajorVersion = uint8(osv.Version & 0xFF) - osv.MinorVersion = uint8(osv.Version >> 8 & 0xFF) - osv.Build = uint16(osv.Version >> 16) - return osv -} - -func (osv OSVersion) ToString() string { - return fmt.Sprintf("%d.%d.%d", osv.MajorVersion, osv.MinorVersion, osv.Build) -} - -// IsWindowsClient returns true if the SKU is client -// @engine maintainers - this function should not be removed or modified as it -// is used to enforce licensing restrictions on Windows. -func IsWindowsClient() bool { - osviex := &osVersionInfoEx{OSVersionInfoSize: 284} - r1, _, err := procGetVersionExW.Call(uintptr(unsafe.Pointer(osviex))) - if r1 == 0 { - logrus.Warnf("GetVersionExW failed - assuming server SKU: %v", err) - return false - } - const verNTWorkstation = 0x00000001 - return osviex.ProductType == verNTWorkstation -} - -// IsIoTCore returns true if the currently running image is based off of -// Windows 10 IoT Core. -// @engine maintainers - this function should not be removed or modified as it -// is used to enforce licensing restrictions on Windows. -func IsIoTCore() bool { - var returnedProductType uint32 - r1, _, err := procGetProductInfo.Call(6, 1, 0, 0, uintptr(unsafe.Pointer(&returnedProductType))) - if r1 == 0 { - logrus.Warnf("GetProductInfo failed - assuming this is not IoT: %v", err) - return false - } - const productIoTUAP = 0x0000007B - const productIoTUAPCommercial = 0x00000083 - return returnedProductType == productIoTUAP || returnedProductType == productIoTUAPCommercial -} - -// Unmount is a platform-specific helper function to call -// the unmount syscall. Not supported on Windows -func Unmount(dest string) error { - return nil -} - -// CommandLineToArgv wraps the Windows syscall to turn a commandline into an argument array. -func CommandLineToArgv(commandLine string) ([]string, error) { - var argc int32 - - argsPtr, err := windows.UTF16PtrFromString(commandLine) - if err != nil { - return nil, err - } - - argv, err := windows.CommandLineToArgv(argsPtr, &argc) - if err != nil { - return nil, err - } - defer windows.LocalFree(windows.Handle(uintptr(unsafe.Pointer(argv)))) - - newArgs := make([]string, argc) - for i, v := range (*argv)[:argc] { - newArgs[i] = string(windows.UTF16ToString((*v)[:])) - } - - return newArgs, nil -} - -// HasWin32KSupport determines whether containers that depend on win32k can -// run on this machine. Win32k is the driver used to implement windowing. -func HasWin32KSupport() bool { - // For now, check for ntuser API support on the host. In the future, a host - // may support win32k in containers even if the host does not support ntuser - // APIs. - return ntuserApiset.Load() == nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/umask.go b/vendor/github.com/docker/docker/pkg/system/umask.go deleted file mode 100644 index 9912a2babb3..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/umask.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build !windows - -package system // import "github.com/docker/docker/pkg/system" - -import ( - "golang.org/x/sys/unix" -) - -// Umask sets current process's file mode creation mask to newmask -// and returns oldmask. -func Umask(newmask int) (oldmask int, err error) { - return unix.Umask(newmask), nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/umask_windows.go b/vendor/github.com/docker/docker/pkg/system/umask_windows.go deleted file mode 100644 index fc62388c389..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/umask_windows.go +++ /dev/null @@ -1,7 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -// Umask is not supported on the windows platform. -func Umask(newmask int) (oldmask int, err error) { - // should not be called on cli code path - return 0, ErrNotSupportedPlatform -} diff --git a/vendor/github.com/docker/docker/pkg/system/utimes_freebsd.go b/vendor/github.com/docker/docker/pkg/system/utimes_freebsd.go deleted file mode 100644 index ed1b9fad59b..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/utimes_freebsd.go +++ /dev/null @@ -1,24 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/unix" -) - -// LUtimesNano is used to change access and modification time of the specified path. -// It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm. -func LUtimesNano(path string, ts []syscall.Timespec) error { - var _path *byte - _path, err := unix.BytePtrFromString(path) - if err != nil { - return err - } - - if _, _, err := unix.Syscall(unix.SYS_LUTIMES, uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), 0); err != 0 && err != unix.ENOSYS { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/utimes_linux.go b/vendor/github.com/docker/docker/pkg/system/utimes_linux.go deleted file mode 100644 index 0afe854589f..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/utimes_linux.go +++ /dev/null @@ -1,25 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/unix" -) - -// LUtimesNano is used to change access and modification time of the specified path. -// It's used for symbol link file because unix.UtimesNano doesn't support a NOFOLLOW flag atm. -func LUtimesNano(path string, ts []syscall.Timespec) error { - atFdCwd := unix.AT_FDCWD - - var _path *byte - _path, err := unix.BytePtrFromString(path) - if err != nil { - return err - } - if _, _, err := unix.Syscall6(unix.SYS_UTIMENSAT, uintptr(atFdCwd), uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), unix.AT_SYMLINK_NOFOLLOW, 0, 0); err != 0 && err != unix.ENOSYS { - return err - } - - return nil -} diff --git a/vendor/github.com/docker/docker/pkg/system/utimes_unsupported.go b/vendor/github.com/docker/docker/pkg/system/utimes_unsupported.go deleted file mode 100644 index 095e072e1df..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/utimes_unsupported.go +++ /dev/null @@ -1,10 +0,0 @@ -// +build !linux,!freebsd - -package system // import "github.com/docker/docker/pkg/system" - -import "syscall" - -// LUtimesNano is only supported on linux and freebsd. -func LUtimesNano(path string, ts []syscall.Timespec) error { - return ErrNotSupportedPlatform -} diff --git a/vendor/github.com/docker/docker/pkg/system/xattrs_linux.go b/vendor/github.com/docker/docker/pkg/system/xattrs_linux.go deleted file mode 100644 index 66d4895b27a..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/xattrs_linux.go +++ /dev/null @@ -1,29 +0,0 @@ -package system // import "github.com/docker/docker/pkg/system" - -import "golang.org/x/sys/unix" - -// Lgetxattr retrieves the value of the extended attribute identified by attr -// and associated with the given path in the file system. -// It will returns a nil slice and nil error if the xattr is not set. -func Lgetxattr(path string, attr string) ([]byte, error) { - dest := make([]byte, 128) - sz, errno := unix.Lgetxattr(path, attr, dest) - if errno == unix.ENODATA { - return nil, nil - } - if errno == unix.ERANGE { - dest = make([]byte, sz) - sz, errno = unix.Lgetxattr(path, attr, dest) - } - if errno != nil { - return nil, errno - } - - return dest[:sz], nil -} - -// Lsetxattr sets the value of the extended attribute identified by attr -// and associated with the given path in the file system. -func Lsetxattr(path string, attr string, data []byte, flags int) error { - return unix.Lsetxattr(path, attr, data, flags) -} diff --git a/vendor/github.com/docker/docker/pkg/system/xattrs_unsupported.go b/vendor/github.com/docker/docker/pkg/system/xattrs_unsupported.go deleted file mode 100644 index d780a90cd38..00000000000 --- a/vendor/github.com/docker/docker/pkg/system/xattrs_unsupported.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build !linux - -package system // import "github.com/docker/docker/pkg/system" - -// Lgetxattr is not supported on platforms other than linux. -func Lgetxattr(path string, attr string) ([]byte, error) { - return nil, ErrNotSupportedPlatform -} - -// Lsetxattr is not supported on platforms other than linux. -func Lsetxattr(path string, attr string, data []byte, flags int) error { - return ErrNotSupportedPlatform -} diff --git a/vendor/github.com/docker/docker/pkg/term/term_windows.go b/vendor/github.com/docker/docker/pkg/term/term_windows.go index 64ead3c53b8..6e83b59e901 100644 --- a/vendor/github.com/docker/docker/pkg/term/term_windows.go +++ b/vendor/github.com/docker/docker/pkg/term/term_windows.go @@ -7,7 +7,7 @@ import ( "syscall" // used for STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and STD_ERROR_HANDLE "github.com/Azure/go-ansiterm/winterm" - "github.com/docker/docker/pkg/term/windows" + windowsconsole "github.com/docker/docker/pkg/term/windows" ) // State holds the console mode for the terminal. @@ -62,13 +62,6 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) { } } - if os.Getenv("ConEmuANSI") == "ON" || os.Getenv("ConsoleZVersion") != "" { - // The ConEmu and ConsoleZ terminals emulate ANSI on output streams well. - emulateStdin = true - emulateStdout = false - emulateStderr = false - } - // Temporarily use STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and // STD_ERROR_HANDLE from syscall rather than x/sys/windows as long as // go-ansiterm hasn't switch to x/sys/windows. diff --git a/vendor/github.com/docker/docker/pkg/term/windows/windows.go b/vendor/github.com/docker/docker/pkg/term/windows/windows.go index 3e5593ca6a6..7e8f265d47e 100644 --- a/vendor/github.com/docker/docker/pkg/term/windows/windows.go +++ b/vendor/github.com/docker/docker/pkg/term/windows/windows.go @@ -1,3 +1,4 @@ +// +build windows // These files implement ANSI-aware input and output streams for use by the Docker Windows client. // When asked for the set of standard streams (e.g., stdin, stdout, stderr), the code will create // and return pseudo-streams that convert ANSI sequences to / from Windows Console API calls. @@ -9,7 +10,7 @@ import ( "os" "sync" - "github.com/Azure/go-ansiterm" + ansiterm "github.com/Azure/go-ansiterm" "github.com/sirupsen/logrus" ) diff --git a/vendor/github.com/docker/docker/registry/auth.go b/vendor/github.com/docker/docker/registry/auth.go index 1f2043a0d96..3f58fc6cffe 100644 --- a/vendor/github.com/docker/docker/registry/auth.go +++ b/vendor/github.com/docker/docker/registry/auth.go @@ -248,7 +248,6 @@ func (err PingResponseError) Error() string { // challenge manager for the supported authentication types and // whether v2 was confirmed by the response. If a response is received but // cannot be interpreted a PingResponseError will be returned. -// nolint: interfacer func PingV2Registry(endpoint *url.URL, transport http.RoundTripper) (challenge.Manager, bool, error) { var ( foundV2 = false diff --git a/vendor/github.com/docker/docker/registry/config.go b/vendor/github.com/docker/docker/registry/config.go index de5a526b694..6bb9258c9b6 100644 --- a/vendor/github.com/docker/docker/registry/config.go +++ b/vendor/github.com/docker/docker/registry/config.go @@ -19,16 +19,11 @@ type ServiceOptions struct { AllowNondistributableArtifacts []string `json:"allow-nondistributable-artifacts,omitempty"` Mirrors []string `json:"registry-mirrors,omitempty"` InsecureRegistries []string `json:"insecure-registries,omitempty"` - - // V2Only controls access to legacy registries. If it is set to true via the - // command line flag the daemon will not attempt to contact v1 legacy registries - V2Only bool `json:"disable-legacy-registry,omitempty"` } // serviceConfig holds daemon configuration for the registry service. type serviceConfig struct { registrytypes.ServiceConfig - V2Only bool } var ( @@ -76,7 +71,6 @@ func newServiceConfig(options ServiceOptions) (*serviceConfig, error) { // Hack: Bypass setting the mirrors to IndexConfigs since they are going away // and Mirrors are only for the official registry anyways. }, - V2Only: options.V2Only, } if err := config.LoadAllowNondistributableArtifacts(options.AllowNondistributableArtifacts); err != nil { return nil, err diff --git a/vendor/github.com/docker/docker/registry/endpoint_v1.go b/vendor/github.com/docker/docker/registry/endpoint_v1.go index 832fdb95a48..2fc2ea0e741 100644 --- a/vendor/github.com/docker/docker/registry/endpoint_v1.go +++ b/vendor/github.com/docker/docker/registry/endpoint_v1.go @@ -124,9 +124,6 @@ func newV1EndpointFromStr(address string, tlsConfig *tls.Config, userAgent strin } endpoint := newV1Endpoint(*uri, tlsConfig, userAgent, metaHeaders) - if err != nil { - return nil, err - } return endpoint, nil } diff --git a/vendor/github.com/docker/docker/registry/registry.go b/vendor/github.com/docker/docker/registry/registry.go index 7a84bbfb7ee..2a914963bd3 100644 --- a/vendor/github.com/docker/docker/registry/registry.go +++ b/vendor/github.com/docker/docker/registry/registry.go @@ -14,7 +14,6 @@ import ( "time" "github.com/docker/distribution/registry/client/transport" - "github.com/docker/go-connections/sockets" "github.com/docker/go-connections/tlsconfig" "github.com/sirupsen/logrus" ) @@ -145,7 +144,7 @@ func trustedLocation(req *http.Request) bool { // addRequiredHeadersToRedirectedRequests adds the necessary redirection headers // for redirected requests func addRequiredHeadersToRedirectedRequests(req *http.Request, via []*http.Request) error { - if via != nil && via[0] != nil { + if len(via) != 0 && via[0] != nil { if trustedLocation(req) && trustedLocation(via[0]) { req.Header = via[0].Header return nil @@ -176,16 +175,12 @@ func NewTransport(tlsConfig *tls.Config) *http.Transport { base := &http.Transport{ Proxy: http.ProxyFromEnvironment, - Dial: direct.Dial, + DialContext: direct.DialContext, TLSHandshakeTimeout: 10 * time.Second, TLSClientConfig: tlsConfig, // TODO(dmcgowan): Call close idle connections when complete and use keep alive DisableKeepAlives: true, } - proxyDialer, err := sockets.DialerFromEnvironment(direct) - if err == nil { - base.Dial = proxyDialer.Dial - } return base } diff --git a/vendor/github.com/docker/docker/registry/service.go b/vendor/github.com/docker/docker/registry/service.go index b441970ff17..08f5c7a4e12 100644 --- a/vendor/github.com/docker/docker/registry/service.go +++ b/vendor/github.com/docker/docker/registry/service.go @@ -309,20 +309,5 @@ func (s *DefaultService) LookupPushEndpoints(hostname string) (endpoints []APIEn } func (s *DefaultService) lookupEndpoints(hostname string) (endpoints []APIEndpoint, err error) { - endpoints, err = s.lookupV2Endpoints(hostname) - if err != nil { - return nil, err - } - - if s.config.V2Only { - return endpoints, nil - } - - legacyEndpoints, err := s.lookupV1Endpoints(hostname) - if err != nil { - return nil, err - } - endpoints = append(endpoints, legacyEndpoints...) - - return endpoints, nil + return s.lookupV2Endpoints(hostname) } diff --git a/vendor/github.com/docker/docker/registry/service_v1.go b/vendor/github.com/docker/docker/registry/service_v1.go deleted file mode 100644 index d955ec51fbf..00000000000 --- a/vendor/github.com/docker/docker/registry/service_v1.go +++ /dev/null @@ -1,40 +0,0 @@ -package registry // import "github.com/docker/docker/registry" - -import "net/url" - -func (s *DefaultService) lookupV1Endpoints(hostname string) (endpoints []APIEndpoint, err error) { - if hostname == DefaultNamespace || hostname == DefaultV2Registry.Host || hostname == IndexHostname { - return []APIEndpoint{}, nil - } - - tlsConfig, err := s.tlsConfig(hostname) - if err != nil { - return nil, err - } - - endpoints = []APIEndpoint{ - { - URL: &url.URL{ - Scheme: "https", - Host: hostname, - }, - Version: APIVersion1, - TrimHostname: true, - TLSConfig: tlsConfig, - }, - } - - if tlsConfig.InsecureSkipVerify { - endpoints = append(endpoints, APIEndpoint{ // or this - URL: &url.URL{ - Scheme: "http", - Host: hostname, - }, - Version: APIVersion1, - TrimHostname: true, - // used to check if supposed to be secure via InsecureSkipVerify - TLSConfig: tlsConfig, - }) - } - return endpoints, nil -} diff --git a/vendor/github.com/docker/docker/registry/service_v2.go b/vendor/github.com/docker/docker/registry/service_v2.go index 3a56dc91145..1a4c9e31054 100644 --- a/vendor/github.com/docker/docker/registry/service_v2.go +++ b/vendor/github.com/docker/docker/registry/service_v2.go @@ -57,7 +57,7 @@ func (s *DefaultService) lookupV2Endpoints(hostname string) (endpoints []APIEndp Scheme: "https", Host: hostname, }, - Version: APIVersion2, + Version: APIVersion2, AllowNondistributableArtifacts: ana, TrimHostname: true, TLSConfig: tlsConfig, @@ -70,7 +70,7 @@ func (s *DefaultService) lookupV2Endpoints(hostname string) (endpoints []APIEndp Scheme: "http", Host: hostname, }, - Version: APIVersion2, + Version: APIVersion2, AllowNondistributableArtifacts: ana, TrimHostname: true, // used to check if supposed to be secure via InsecureSkipVerify diff --git a/vendor/github.com/docker/docker/registry/session.go b/vendor/github.com/docker/docker/registry/session.go index ef142995942..59f5ad50ff9 100644 --- a/vendor/github.com/docker/docker/registry/session.go +++ b/vendor/github.com/docker/docker/registry/session.go @@ -3,6 +3,7 @@ package registry // import "github.com/docker/docker/registry" import ( "bytes" "crypto/sha256" + // this is required for some certificates _ "crypto/sha512" "encoding/hex" diff --git a/vendor/github.com/docker/go-units/MAINTAINERS b/vendor/github.com/docker/go-units/MAINTAINERS index 9b3b6b101ef..4aac7c74110 100644 --- a/vendor/github.com/docker/go-units/MAINTAINERS +++ b/vendor/github.com/docker/go-units/MAINTAINERS @@ -27,7 +27,7 @@ [people.akihirosuda] Name = "Akihiro Suda" - Email = "suda.akihiro@lab.ntt.co.jp" + Email = "akihiro.suda.cz@hco.ntt.co.jp" GitHub = "AkihiroSuda" [people.dnephin] diff --git a/vendor/github.com/docker/go-units/circle.yml b/vendor/github.com/docker/go-units/circle.yml index 9043b35478c..af9d6055293 100644 --- a/vendor/github.com/docker/go-units/circle.yml +++ b/vendor/github.com/docker/go-units/circle.yml @@ -1,7 +1,7 @@ dependencies: post: # install golint - - go get github.com/golang/lint/golint + - go get golang.org/x/lint/golint test: pre: diff --git a/vendor/github.com/docker/go-units/duration.go b/vendor/github.com/docker/go-units/duration.go index ba02af26dc5..48dd8744d43 100644 --- a/vendor/github.com/docker/go-units/duration.go +++ b/vendor/github.com/docker/go-units/duration.go @@ -18,7 +18,7 @@ func HumanDuration(d time.Duration) string { return fmt.Sprintf("%d seconds", seconds) } else if minutes := int(d.Minutes()); minutes == 1 { return "About a minute" - } else if minutes < 46 { + } else if minutes < 60 { return fmt.Sprintf("%d minutes", minutes) } else if hours := int(d.Hours() + 0.5); hours == 1 { return "About an hour" diff --git a/vendor/github.com/docker/go-units/ulimit.go b/vendor/github.com/docker/go-units/ulimit.go index 5ac7fd825fc..fca0400cc82 100644 --- a/vendor/github.com/docker/go-units/ulimit.go +++ b/vendor/github.com/docker/go-units/ulimit.go @@ -96,8 +96,13 @@ func ParseUlimit(val string) (*Ulimit, error) { return nil, fmt.Errorf("too many limit value arguments - %s, can only have up to two, `soft[:hard]`", parts[1]) } - if soft > *hard { - return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) + if *hard != -1 { + if soft == -1 { + return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: soft: -1 (unlimited), hard: %d", *hard) + } + if soft > *hard { + return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) + } } return &Ulimit{Name: parts[0], Soft: soft, Hard: *hard}, nil diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor.go b/vendor/github.com/golang/protobuf/descriptor/descriptor.go new file mode 100644 index 00000000000..ac7e51bfb19 --- /dev/null +++ b/vendor/github.com/golang/protobuf/descriptor/descriptor.go @@ -0,0 +1,93 @@ +// 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 descriptor provides functions for obtaining protocol buffer +// descriptors for generated Go types. +// +// These functions cannot go in package proto because they depend on the +// generated protobuf descriptor messages, which themselves depend on proto. +package descriptor + +import ( + "bytes" + "compress/gzip" + "fmt" + "io/ioutil" + + "github.com/golang/protobuf/proto" + protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" +) + +// extractFile extracts a FileDescriptorProto from a gzip'd buffer. +func extractFile(gz []byte) (*protobuf.FileDescriptorProto, error) { + r, err := gzip.NewReader(bytes.NewReader(gz)) + if err != nil { + return nil, fmt.Errorf("failed to open gzip reader: %v", err) + } + defer r.Close() + + b, err := ioutil.ReadAll(r) + if err != nil { + return nil, fmt.Errorf("failed to uncompress descriptor: %v", err) + } + + fd := new(protobuf.FileDescriptorProto) + if err := proto.Unmarshal(b, fd); err != nil { + return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err) + } + + return fd, nil +} + +// Message is a proto.Message with a method to return its descriptor. +// +// Message types generated by the protocol compiler always satisfy +// the Message interface. +type Message interface { + proto.Message + Descriptor() ([]byte, []int) +} + +// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it +// describing the given message. +func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto) { + gz, path := msg.Descriptor() + fd, err := extractFile(gz) + if err != nil { + panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err)) + } + + md = fd.MessageType[path[0]] + for _, i := range path[1:] { + md = md.NestedType[i] + } + return fd, md +} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go new file mode 100644 index 00000000000..0d6055d610e --- /dev/null +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go @@ -0,0 +1,51 @@ +// 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. + +/* + A plugin for the Google protocol buffer compiler to generate Go code. + Run it by building this program and putting it in your path with the name + protoc-gen-go + That word 'go' at the end becomes part of the option string set for the + protocol compiler, so once the protocol compiler (protoc) is installed + you can run + protoc --go_out=output_directory input_directory/file.proto + to generate Go bindings for the protocol defined by file.proto. + With that input, the output will be written to + output_directory/file.pb.go + + The generated code is documented in the package comment for + the library. + + See the README and documentation for protocol buffers to learn more: + https://developers.google.com/protocol-buffers/ + +*/ +package documentation diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go new file mode 100644 index 00000000000..5d1e3f0f619 --- /dev/null +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go @@ -0,0 +1,537 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2015 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 grpc outputs gRPC service descriptions in Go code. +// It runs as a plugin for the Go protocol buffer compiler plugin. +// It is linked in to protoc-gen-go. +package grpc + +import ( + "fmt" + "strconv" + "strings" + + pb "github.com/golang/protobuf/protoc-gen-go/descriptor" + "github.com/golang/protobuf/protoc-gen-go/generator" +) + +// generatedCodeVersion indicates a version of the generated code. +// It is incremented whenever an incompatibility between the generated code and +// the grpc package is introduced; the generated code references +// a constant, grpc.SupportPackageIsVersionN (where N is generatedCodeVersion). +const generatedCodeVersion = 4 + +// Paths for packages used by code generated in this file, +// relative to the import_prefix of the generator.Generator. +const ( + contextPkgPath = "context" + grpcPkgPath = "google.golang.org/grpc" + codePkgPath = "google.golang.org/grpc/codes" + statusPkgPath = "google.golang.org/grpc/status" +) + +func init() { + generator.RegisterPlugin(new(grpc)) +} + +// grpc is an implementation of the Go protocol buffer compiler's +// plugin architecture. It generates bindings for gRPC support. +type grpc struct { + gen *generator.Generator +} + +// Name returns the name of this plugin, "grpc". +func (g *grpc) Name() string { + return "grpc" +} + +// The names for packages imported in the generated code. +// They may vary from the final path component of the import path +// if the name is used by other packages. +var ( + contextPkg string + grpcPkg string +) + +// Init initializes the plugin. +func (g *grpc) Init(gen *generator.Generator) { + g.gen = gen +} + +// Given a type name defined in a .proto, return its object. +// Also record that we're using it, to guarantee the associated import. +func (g *grpc) objectNamed(name string) generator.Object { + g.gen.RecordTypeUse(name) + return g.gen.ObjectNamed(name) +} + +// Given a type name defined in a .proto, return its name as we will print it. +func (g *grpc) typeName(str string) string { + return g.gen.TypeName(g.objectNamed(str)) +} + +// P forwards to g.gen.P. +func (g *grpc) P(args ...interface{}) { g.gen.P(args...) } + +// Generate generates code for the services in the given file. +func (g *grpc) Generate(file *generator.FileDescriptor) { + if len(file.FileDescriptorProto.Service) == 0 { + return + } + + contextPkg = string(g.gen.AddImport(contextPkgPath)) + grpcPkg = string(g.gen.AddImport(grpcPkgPath)) + + g.P("// Reference imports to suppress errors if they are not otherwise used.") + g.P("var _ ", contextPkg, ".Context") + g.P("var _ ", grpcPkg, ".ClientConn") + g.P() + + // Assert version compatibility. + g.P("// This is a compile-time assertion to ensure that this generated file") + g.P("// is compatible with the grpc package it is being compiled against.") + g.P("const _ = ", grpcPkg, ".SupportPackageIsVersion", generatedCodeVersion) + g.P() + + for i, service := range file.FileDescriptorProto.Service { + g.generateService(file, service, i) + } +} + +// GenerateImports generates the import declaration for this file. +func (g *grpc) GenerateImports(file *generator.FileDescriptor) { +} + +// reservedClientName records whether a client name is reserved on the client side. +var reservedClientName = map[string]bool{ + // TODO: do we need any in gRPC? +} + +func unexport(s string) string { return strings.ToLower(s[:1]) + s[1:] } + +// deprecationComment is the standard comment added to deprecated +// messages, fields, enums, and enum values. +var deprecationComment = "// Deprecated: Do not use." + +// generateService generates all the code for the named service. +func (g *grpc) generateService(file *generator.FileDescriptor, service *pb.ServiceDescriptorProto, index int) { + path := fmt.Sprintf("6,%d", index) // 6 means service. + + origServName := service.GetName() + fullServName := origServName + if pkg := file.GetPackage(); pkg != "" { + fullServName = pkg + "." + fullServName + } + servName := generator.CamelCase(origServName) + deprecated := service.GetOptions().GetDeprecated() + + g.P() + g.P(fmt.Sprintf(`// %sClient is the client API for %s service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.`, servName, servName)) + + // Client interface. + if deprecated { + g.P("//") + g.P(deprecationComment) + } + g.P("type ", servName, "Client interface {") + for i, method := range service.Method { + g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service. + g.P(g.generateClientSignature(servName, method)) + } + g.P("}") + g.P() + + // Client structure. + g.P("type ", unexport(servName), "Client struct {") + g.P("cc *", grpcPkg, ".ClientConn") + g.P("}") + g.P() + + // NewClient factory. + if deprecated { + g.P(deprecationComment) + } + g.P("func New", servName, "Client (cc *", grpcPkg, ".ClientConn) ", servName, "Client {") + g.P("return &", unexport(servName), "Client{cc}") + g.P("}") + g.P() + + var methodIndex, streamIndex int + serviceDescVar := "_" + servName + "_serviceDesc" + // Client method implementations. + for _, method := range service.Method { + var descExpr string + if !method.GetServerStreaming() && !method.GetClientStreaming() { + // Unary RPC method + descExpr = fmt.Sprintf("&%s.Methods[%d]", serviceDescVar, methodIndex) + methodIndex++ + } else { + // Streaming RPC method + descExpr = fmt.Sprintf("&%s.Streams[%d]", serviceDescVar, streamIndex) + streamIndex++ + } + g.generateClientMethod(servName, fullServName, serviceDescVar, method, descExpr) + } + + // Server interface. + serverType := servName + "Server" + g.P("// ", serverType, " is the server API for ", servName, " service.") + if deprecated { + g.P("//") + g.P(deprecationComment) + } + g.P("type ", serverType, " interface {") + for i, method := range service.Method { + g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service. + g.P(g.generateServerSignature(servName, method)) + } + g.P("}") + g.P() + + // Server Unimplemented struct for forward compatability. + if deprecated { + g.P(deprecationComment) + } + g.generateUnimplementedServer(servName, service) + + // Server registration. + if deprecated { + g.P(deprecationComment) + } + g.P("func Register", servName, "Server(s *", grpcPkg, ".Server, srv ", serverType, ") {") + g.P("s.RegisterService(&", serviceDescVar, `, srv)`) + g.P("}") + g.P() + + // Server handler implementations. + var handlerNames []string + for _, method := range service.Method { + hname := g.generateServerMethod(servName, fullServName, method) + handlerNames = append(handlerNames, hname) + } + + // Service descriptor. + g.P("var ", serviceDescVar, " = ", grpcPkg, ".ServiceDesc {") + g.P("ServiceName: ", strconv.Quote(fullServName), ",") + g.P("HandlerType: (*", serverType, ")(nil),") + g.P("Methods: []", grpcPkg, ".MethodDesc{") + for i, method := range service.Method { + if method.GetServerStreaming() || method.GetClientStreaming() { + continue + } + g.P("{") + g.P("MethodName: ", strconv.Quote(method.GetName()), ",") + g.P("Handler: ", handlerNames[i], ",") + g.P("},") + } + g.P("},") + g.P("Streams: []", grpcPkg, ".StreamDesc{") + for i, method := range service.Method { + if !method.GetServerStreaming() && !method.GetClientStreaming() { + continue + } + g.P("{") + g.P("StreamName: ", strconv.Quote(method.GetName()), ",") + g.P("Handler: ", handlerNames[i], ",") + if method.GetServerStreaming() { + g.P("ServerStreams: true,") + } + if method.GetClientStreaming() { + g.P("ClientStreams: true,") + } + g.P("},") + } + g.P("},") + g.P("Metadata: \"", file.GetName(), "\",") + g.P("}") + g.P() +} + +// generateUnimplementedServer creates the unimplemented server struct +func (g *grpc) generateUnimplementedServer(servName string, service *pb.ServiceDescriptorProto) { + serverType := servName + "Server" + g.P("// Unimplemented", serverType, " can be embedded to have forward compatible implementations.") + g.P("type Unimplemented", serverType, " struct {") + g.P("}") + g.P() + // UnimplementedServer's concrete methods + for _, method := range service.Method { + g.generateServerMethodConcrete(servName, method) + } + g.P() +} + +// generateServerMethodConcrete returns unimplemented methods which ensure forward compatibility +func (g *grpc) generateServerMethodConcrete(servName string, method *pb.MethodDescriptorProto) { + header := g.generateServerSignatureWithParamNames(servName, method) + g.P("func (*Unimplemented", servName, "Server) ", header, " {") + var nilArg string + if !method.GetServerStreaming() && !method.GetClientStreaming() { + nilArg = "nil, " + } + methName := generator.CamelCase(method.GetName()) + statusPkg := string(g.gen.AddImport(statusPkgPath)) + codePkg := string(g.gen.AddImport(codePkgPath)) + g.P("return ", nilArg, statusPkg, `.Errorf(`, codePkg, `.Unimplemented, "method `, methName, ` not implemented")`) + g.P("}") +} + +// generateClientSignature returns the client-side signature for a method. +func (g *grpc) generateClientSignature(servName string, method *pb.MethodDescriptorProto) string { + origMethName := method.GetName() + methName := generator.CamelCase(origMethName) + if reservedClientName[methName] { + methName += "_" + } + reqArg := ", in *" + g.typeName(method.GetInputType()) + if method.GetClientStreaming() { + reqArg = "" + } + respName := "*" + g.typeName(method.GetOutputType()) + if method.GetServerStreaming() || method.GetClientStreaming() { + respName = servName + "_" + generator.CamelCase(origMethName) + "Client" + } + return fmt.Sprintf("%s(ctx %s.Context%s, opts ...%s.CallOption) (%s, error)", methName, contextPkg, reqArg, grpcPkg, respName) +} + +func (g *grpc) generateClientMethod(servName, fullServName, serviceDescVar string, method *pb.MethodDescriptorProto, descExpr string) { + sname := fmt.Sprintf("/%s/%s", fullServName, method.GetName()) + methName := generator.CamelCase(method.GetName()) + inType := g.typeName(method.GetInputType()) + outType := g.typeName(method.GetOutputType()) + + if method.GetOptions().GetDeprecated() { + g.P(deprecationComment) + } + g.P("func (c *", unexport(servName), "Client) ", g.generateClientSignature(servName, method), "{") + if !method.GetServerStreaming() && !method.GetClientStreaming() { + g.P("out := new(", outType, ")") + // TODO: Pass descExpr to Invoke. + g.P(`err := c.cc.Invoke(ctx, "`, sname, `", in, out, opts...)`) + g.P("if err != nil { return nil, err }") + g.P("return out, nil") + g.P("}") + g.P() + return + } + streamType := unexport(servName) + methName + "Client" + g.P("stream, err := c.cc.NewStream(ctx, ", descExpr, `, "`, sname, `", opts...)`) + g.P("if err != nil { return nil, err }") + g.P("x := &", streamType, "{stream}") + if !method.GetClientStreaming() { + g.P("if err := x.ClientStream.SendMsg(in); err != nil { return nil, err }") + g.P("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }") + } + g.P("return x, nil") + g.P("}") + g.P() + + genSend := method.GetClientStreaming() + genRecv := method.GetServerStreaming() + genCloseAndRecv := !method.GetServerStreaming() + + // Stream auxiliary types and methods. + g.P("type ", servName, "_", methName, "Client interface {") + if genSend { + g.P("Send(*", inType, ") error") + } + if genRecv { + g.P("Recv() (*", outType, ", error)") + } + if genCloseAndRecv { + g.P("CloseAndRecv() (*", outType, ", error)") + } + g.P(grpcPkg, ".ClientStream") + g.P("}") + g.P() + + g.P("type ", streamType, " struct {") + g.P(grpcPkg, ".ClientStream") + g.P("}") + g.P() + + if genSend { + g.P("func (x *", streamType, ") Send(m *", inType, ") error {") + g.P("return x.ClientStream.SendMsg(m)") + g.P("}") + g.P() + } + if genRecv { + g.P("func (x *", streamType, ") Recv() (*", outType, ", error) {") + g.P("m := new(", outType, ")") + g.P("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }") + g.P("return m, nil") + g.P("}") + g.P() + } + if genCloseAndRecv { + g.P("func (x *", streamType, ") CloseAndRecv() (*", outType, ", error) {") + g.P("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }") + g.P("m := new(", outType, ")") + g.P("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }") + g.P("return m, nil") + g.P("}") + g.P() + } +} + +// generateServerSignatureWithParamNames returns the server-side signature for a method with parameter names. +func (g *grpc) generateServerSignatureWithParamNames(servName string, method *pb.MethodDescriptorProto) string { + origMethName := method.GetName() + methName := generator.CamelCase(origMethName) + if reservedClientName[methName] { + methName += "_" + } + + var reqArgs []string + ret := "error" + if !method.GetServerStreaming() && !method.GetClientStreaming() { + reqArgs = append(reqArgs, "ctx "+contextPkg+".Context") + ret = "(*" + g.typeName(method.GetOutputType()) + ", error)" + } + if !method.GetClientStreaming() { + reqArgs = append(reqArgs, "req *"+g.typeName(method.GetInputType())) + } + if method.GetServerStreaming() || method.GetClientStreaming() { + reqArgs = append(reqArgs, "srv "+servName+"_"+generator.CamelCase(origMethName)+"Server") + } + + return methName + "(" + strings.Join(reqArgs, ", ") + ") " + ret +} + +// generateServerSignature returns the server-side signature for a method. +func (g *grpc) generateServerSignature(servName string, method *pb.MethodDescriptorProto) string { + origMethName := method.GetName() + methName := generator.CamelCase(origMethName) + if reservedClientName[methName] { + methName += "_" + } + + var reqArgs []string + ret := "error" + if !method.GetServerStreaming() && !method.GetClientStreaming() { + reqArgs = append(reqArgs, contextPkg+".Context") + ret = "(*" + g.typeName(method.GetOutputType()) + ", error)" + } + if !method.GetClientStreaming() { + reqArgs = append(reqArgs, "*"+g.typeName(method.GetInputType())) + } + if method.GetServerStreaming() || method.GetClientStreaming() { + reqArgs = append(reqArgs, servName+"_"+generator.CamelCase(origMethName)+"Server") + } + + return methName + "(" + strings.Join(reqArgs, ", ") + ") " + ret +} + +func (g *grpc) generateServerMethod(servName, fullServName string, method *pb.MethodDescriptorProto) string { + methName := generator.CamelCase(method.GetName()) + hname := fmt.Sprintf("_%s_%s_Handler", servName, methName) + inType := g.typeName(method.GetInputType()) + outType := g.typeName(method.GetOutputType()) + + if !method.GetServerStreaming() && !method.GetClientStreaming() { + g.P("func ", hname, "(srv interface{}, ctx ", contextPkg, ".Context, dec func(interface{}) error, interceptor ", grpcPkg, ".UnaryServerInterceptor) (interface{}, error) {") + g.P("in := new(", inType, ")") + g.P("if err := dec(in); err != nil { return nil, err }") + g.P("if interceptor == nil { return srv.(", servName, "Server).", methName, "(ctx, in) }") + g.P("info := &", grpcPkg, ".UnaryServerInfo{") + g.P("Server: srv,") + g.P("FullMethod: ", strconv.Quote(fmt.Sprintf("/%s/%s", fullServName, methName)), ",") + g.P("}") + g.P("handler := func(ctx ", contextPkg, ".Context, req interface{}) (interface{}, error) {") + g.P("return srv.(", servName, "Server).", methName, "(ctx, req.(*", inType, "))") + g.P("}") + g.P("return interceptor(ctx, in, info, handler)") + g.P("}") + g.P() + return hname + } + streamType := unexport(servName) + methName + "Server" + g.P("func ", hname, "(srv interface{}, stream ", grpcPkg, ".ServerStream) error {") + if !method.GetClientStreaming() { + g.P("m := new(", inType, ")") + g.P("if err := stream.RecvMsg(m); err != nil { return err }") + g.P("return srv.(", servName, "Server).", methName, "(m, &", streamType, "{stream})") + } else { + g.P("return srv.(", servName, "Server).", methName, "(&", streamType, "{stream})") + } + g.P("}") + g.P() + + genSend := method.GetServerStreaming() + genSendAndClose := !method.GetServerStreaming() + genRecv := method.GetClientStreaming() + + // Stream auxiliary types and methods. + g.P("type ", servName, "_", methName, "Server interface {") + if genSend { + g.P("Send(*", outType, ") error") + } + if genSendAndClose { + g.P("SendAndClose(*", outType, ") error") + } + if genRecv { + g.P("Recv() (*", inType, ", error)") + } + g.P(grpcPkg, ".ServerStream") + g.P("}") + g.P() + + g.P("type ", streamType, " struct {") + g.P(grpcPkg, ".ServerStream") + g.P("}") + g.P() + + if genSend { + g.P("func (x *", streamType, ") Send(m *", outType, ") error {") + g.P("return x.ServerStream.SendMsg(m)") + g.P("}") + g.P() + } + if genSendAndClose { + g.P("func (x *", streamType, ") SendAndClose(m *", outType, ") error {") + g.P("return x.ServerStream.SendMsg(m)") + g.P("}") + g.P() + } + if genRecv { + g.P("func (x *", streamType, ") Recv() (*", inType, ", error) {") + g.P("m := new(", inType, ")") + g.P("if err := x.ServerStream.RecvMsg(m); err != nil { return nil, err }") + g.P("return m, nil") + g.P("}") + g.P() + } + + return hname +} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go new file mode 100644 index 00000000000..532a550050e --- /dev/null +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go @@ -0,0 +1,34 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2015 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 main + +import _ "github.com/golang/protobuf/protoc-gen-go/grpc" diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/main.go b/vendor/github.com/golang/protobuf/protoc-gen-go/main.go new file mode 100644 index 00000000000..8e2486de0b2 --- /dev/null +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/main.go @@ -0,0 +1,98 @@ +// 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. + +// protoc-gen-go is a plugin for the Google protocol buffer compiler to generate +// Go code. Run it by building this program and putting it in your path with +// the name +// protoc-gen-go +// That word 'go' at the end becomes part of the option string set for the +// protocol compiler, so once the protocol compiler (protoc) is installed +// you can run +// protoc --go_out=output_directory input_directory/file.proto +// to generate Go bindings for the protocol defined by file.proto. +// With that input, the output will be written to +// output_directory/file.pb.go +// +// The generated code is documented in the package comment for +// the library. +// +// See the README and documentation for protocol buffers to learn more: +// https://developers.google.com/protocol-buffers/ +package main + +import ( + "io/ioutil" + "os" + + "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/protoc-gen-go/generator" +) + +func main() { + // Begin by allocating a generator. The request and response structures are stored there + // so we can do error handling easily - the response structure contains the field to + // report failure. + g := generator.New() + + data, err := ioutil.ReadAll(os.Stdin) + if err != nil { + g.Error(err, "reading input") + } + + if err := proto.Unmarshal(data, g.Request); err != nil { + g.Error(err, "parsing input proto") + } + + if len(g.Request.FileToGenerate) == 0 { + g.Fail("no files to generate") + } + + g.CommandLineParameters(g.Request.GetParameter()) + + // Create a wrapped version of the Descriptors and EnumDescriptors that + // point to the file that defines them. + g.WrapTypes() + + g.SetPackageNames() + g.BuildTypeNameMap() + + g.GenerateAllFiles() + + // Send back the results. + data, err = proto.Marshal(g.Response) + if err != nil { + g.Error(err, "failed to marshal output proto") + } + _, err = os.Stdout.Write(data) + if err != nil { + g.Error(err, "failed to write output proto") + } +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go index 8e6676c6630..476e1eb8039 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go @@ -15,10 +15,12 @@ package authn import ( + "encoding/json" "os" "github.com/docker/cli/cli/config" "github.com/docker/cli/cli/config/types" + "github.com/google/go-containerregistry/pkg/logs" "github.com/google/go-containerregistry/pkg/name" ) @@ -72,6 +74,14 @@ func (dk *defaultKeychain) Resolve(target Resource) (Authenticator, error) { if err != nil { return nil, err } + if logs.Enabled(logs.Debug) { + b, err := json.Marshal(cfg) + if err != nil { + logs.Debug.Printf("defaultKeychain.Resolve(%q) = %+v", key, cfg) + } else { + logs.Debug.Printf("defaultKeychain.Resolve(%q) = %s", key, string(b)) + } + } empty := types.AuthConfig{} if cfg == empty { diff --git a/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go b/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go index af3c1a3b7d3..5d25d63d618 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go +++ b/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go @@ -26,4 +26,14 @@ var ( // Progress is used to log notable, successful events. Progress = log.New(ioutil.Discard, "", log.LstdFlags) + + // Debug is used to log information that is useful for debugging. + Debug = log.New(ioutil.Discard, "", log.LstdFlags) ) + +// Enabled checks to see if the logger's writer is set to something other +// than ioutil.Discard. This allows callers to avoid expensive operations +// that will end up in /dev/null anyway. +func Enabled(l *log.Logger) bool { + return l.Writer() != ioutil.Discard +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go index 6840b2f6dc8..1de65ee79e4 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go @@ -57,6 +57,13 @@ func makeOptions(target authn.Resource, opts ...Option) (*options, error) { o.auth = auth } + // Wrap the transport in something that logs requests and responses. + // It's expensive to generate the dumps, so skip it if we're writing + // to nothing. + if logs.Enabled(logs.Debug) { + o.transport = transport.NewLogger(o.transport) + } + // Wrap the transport in something that can retry network flakes. o.transport = transport.NewRetry(o.transport) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go index 74e59706dbf..bff2ece0119 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go @@ -55,30 +55,19 @@ var portMap = map[string]string{ // RoundTrip implements http.RoundTripper func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { sendRequest := func() (*http.Response, error) { - auth, err := bt.bearer.Authorization() - if err != nil { - return nil, err - } - // http.Client handles redirects at a layer above the http.RoundTripper // abstraction, so to avoid forwarding Authorization headers to places // we are redirected, only set it when the authorization header matches // the registry with which we are interacting. // In case of redirect http.Client can use an empty Host, check URL too. - canonicalHeaderHost := bt.canonicalAddress(in.Host) - canonicalURLHost := bt.canonicalAddress(in.URL.Host) - canonicalRegistryHost := bt.canonicalAddress(bt.registry.RegistryStr()) - if canonicalHeaderHost == canonicalRegistryHost || canonicalURLHost == canonicalRegistryHost { + if matchesHost(bt.registry, in, bt.scheme) { + auth, err := bt.bearer.Authorization() + if err != nil { + return nil, err + } hdr := fmt.Sprintf("Bearer %s", auth.RegistryToken) in.Header.Set("Authorization", hdr) - - // When we ping() the registry, we determine whether to use http or https - // based on which scheme was successful. That is only valid for the - // registry server and not e.g. a separate token server or blob storage, - // so we should only override the scheme if the host is the registry. - in.URL.Scheme = bt.scheme } - in.Header.Set("User-Agent", transportName) return bt.inner.RoundTrip(in) } @@ -168,7 +157,14 @@ func (bt *bearerTransport) refresh() error { return nil } -func (bt *bearerTransport) canonicalAddress(host string) (address string) { +func matchesHost(reg name.Registry, in *http.Request, scheme string) bool { + canonicalHeaderHost := canonicalAddress(in.Host, scheme) + canonicalURLHost := canonicalAddress(in.URL.Host, scheme) + canonicalRegistryHost := canonicalAddress(reg.RegistryStr(), scheme) + return canonicalHeaderHost == canonicalRegistryHost || canonicalURLHost == canonicalRegistryHost +} + +func canonicalAddress(host, scheme string) (address string) { // The host may be any one of: // - hostname // - hostname:port @@ -184,13 +180,13 @@ func (bt *bearerTransport) canonicalAddress(host string) (address string) { return host } if port == "" { - port = portMap[bt.scheme] + port = portMap[scheme] } return net.JoinHostPort(hostname, port) } - return net.JoinHostPort(host, portMap[bt.scheme]) + return net.JoinHostPort(host, portMap[scheme]) } // https://docs.docker.com/registry/spec/auth/oauth/ diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/logger.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/logger.go new file mode 100644 index 00000000000..5532dcc510a --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/logger.go @@ -0,0 +1,43 @@ +package transport + +import ( + "net/http" + "net/http/httputil" + + "github.com/google/go-containerregistry/pkg/logs" +) + +type logTransport struct { + inner http.RoundTripper +} + +// NewLogger returns a transport that logs requests and responses to +// github.com/google/go-containerregistry/pkg/logs.Debug. +func NewLogger(inner http.RoundTripper) http.RoundTripper { + return &logTransport{inner} +} + +func (t *logTransport) RoundTrip(in *http.Request) (out *http.Response, err error) { + // Inspired by: github.com/motemen/go-loghttp + logs.Debug.Printf("--> %s %s", in.Method, in.URL) + b, err := httputil.DumpRequestOut(in, true) + if err != nil { + logs.Debug.Printf("Could not dump request: %v", err) + } else { + logs.Debug.Printf(string(b)) + } + out, err = t.inner.RoundTrip(in) + if err != nil { + logs.Debug.Printf("<-- %v %s", err, in.URL) + } + if out != nil { + logs.Debug.Printf("<-- %d %s", out.StatusCode, out.Request.URL) + b, err := httputil.DumpResponse(out, true) + if err != nil { + logs.Debug.Printf("Could not dump response: %v", err) + } else { + logs.Debug.Printf(string(b)) + } + } + return +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go new file mode 100644 index 00000000000..d70b6a850cd --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go @@ -0,0 +1,44 @@ +// Copyright 2019 Google LLC 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 transport + +import ( + "net/http" + + "github.com/google/go-containerregistry/pkg/name" +) + +type schemeTransport struct { + // Scheme we should use, determined by ping response. + scheme string + + // Registry we're talking to. + registry name.Registry + + // Wrapped by schemeTransport. + inner http.RoundTripper +} + +// RoundTrip implements http.RoundTripper +func (st *schemeTransport) RoundTrip(in *http.Request) (*http.Response, error) { + // When we ping() the registry, we determine whether to use http or https + // based on which scheme was successful. That is only valid for the + // registry server and not e.g. a separate token server or blob storage, + // so we should only override the scheme if the host is the registry. + if matchesHost(st.registry, in, st.scheme) { + in.URL.Scheme = st.scheme + } + return st.inner.RoundTrip(in) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go index 61b695d766c..1bea604acb7 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go @@ -22,10 +22,6 @@ import ( "github.com/google/go-containerregistry/pkg/name" ) -const ( - transportName = "go-containerregistry" -) - // New returns a new RoundTripper based on the provided RoundTripper that has been // setup to authenticate with the remote registry "reg", in the capacity // laid out by the specified scopes. @@ -49,6 +45,16 @@ func New(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, scope return nil, err } + // Wrap the given transport in transports that use an appropriate scheme, + // (based on the ping response) and set the user agent. + t = &useragentTransport{ + inner: &schemeTransport{ + scheme: pr.scheme, + registry: reg, + inner: t, + }, + } + switch pr.challenge.Canonical() { case anonymous: return t, nil diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/useragent.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/useragent.go new file mode 100644 index 00000000000..8d59ab76ca5 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/useragent.go @@ -0,0 +1,32 @@ +// Copyright 2019 Google LLC 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 transport + +import "net/http" + +const ( + transportName = "go-containerregistry" +) + +type useragentTransport struct { + // Wrapped by useragentTransport. + inner http.RoundTripper +} + +// RoundTrip implements http.RoundTripper +func (ut *useragentTransport) RoundTrip(in *http.Request) (*http.Response, error) { + in.Header.Set("User-Agent", transportName) + return ut.inner.RoundTrip(in) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go index aa816359c4c..03ddfb9a106 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go @@ -39,8 +39,9 @@ var ( // Layer is a streaming implementation of v1.Layer. type Layer struct { - blob io.ReadCloser - consumed bool + blob io.ReadCloser + consumed bool + compression int mu sync.Mutex digest, diffID *v1.Hash @@ -49,8 +50,29 @@ type Layer struct { var _ v1.Layer = (*Layer)(nil) +// LayerOption applies options to layer +type LayerOption func(*Layer) + +// WithCompressionLevel sets the gzip compression. See `gzip.NewWriterLevel` for possible values. +func WithCompressionLevel(level int) LayerOption { + return func(l *Layer) { + l.compression = level + } +} + // NewLayer creates a Layer from an io.ReadCloser. -func NewLayer(rc io.ReadCloser) *Layer { return &Layer{blob: rc} } +func NewLayer(rc io.ReadCloser, opts ...LayerOption) *Layer { + layer := &Layer{ + blob: rc, + compression: gzip.BestSpeed, + } + + for _, opt := range opts { + opt(layer) + } + + return layer +} // Digest implements v1.Layer. func (l *Layer) Digest() (v1.Hash, error) { @@ -121,7 +143,7 @@ func newCompressedReader(l *Layer) (*compressedReader, error) { // capture compressed digest, and a countWriter to capture compressed // size. pr, pw := io.Pipe() - zw, err := gzip.NewWriterLevel(io.MultiWriter(pw, zh, count), gzip.BestSpeed) + zw, err := gzip.NewWriterLevel(io.MultiWriter(pw, zh, count), l.compression) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go index 55eb82bb9c7..314a51f1405 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go @@ -27,11 +27,12 @@ import ( ) type layer struct { - digest v1.Hash - diffID v1.Hash - size int64 - opener Opener - compressed bool + digest v1.Hash + diffID v1.Hash + size int64 + opener Opener + compressed bool + compression int } func (l *layer) Digest() (v1.Hash, error) { @@ -45,7 +46,7 @@ func (l *layer) DiffID() (v1.Hash, error) { func (l *layer) Compressed() (io.ReadCloser, error) { rc, err := l.opener() if err == nil && !l.compressed { - return v1util.GzipReadCloser(rc), nil + return v1util.GzipReadCloserLevel(rc, l.compression), nil } return rc, err @@ -68,16 +69,26 @@ func (l *layer) MediaType() (types.MediaType, error) { return types.DockerLayer, nil } +// LayerOption applies options to layer +type LayerOption func(*layer) + +// WithCompressionLevel sets the gzip compression. See `gzip.NewWriterLevel` for possible values. +func WithCompressionLevel(level int) LayerOption { + return func(l *layer) { + l.compression = level + } +} + // LayerFromFile returns a v1.Layer given a tarball -func LayerFromFile(path string) (v1.Layer, error) { +func LayerFromFile(path string, opts ...LayerOption) (v1.Layer, error) { opener := func() (io.ReadCloser, error) { return os.Open(path) } - return LayerFromOpener(opener) + return LayerFromOpener(opener, opts...) } // LayerFromOpener returns a v1.Layer given an Opener function -func LayerFromOpener(opener Opener) (v1.Layer, error) { +func LayerFromOpener(opener Opener, opts ...LayerOption) (v1.Layer, error) { rc, err := opener() if err != nil { return nil, err @@ -89,24 +100,25 @@ func LayerFromOpener(opener Opener) (v1.Layer, error) { return nil, err } - var digest v1.Hash - var size int64 - if digest, size, err = computeDigest(opener, compressed); err != nil { + layer := &layer{ + compressed: compressed, + compression: gzip.BestSpeed, + opener: opener, + } + + for _, opt := range opts { + opt(layer) + } + + if layer.digest, layer.size, err = computeDigest(opener, compressed, layer.compression); err != nil { return nil, err } - diffID, err := computeDiffID(opener, compressed) - if err != nil { + if layer.diffID, err = computeDiffID(opener, compressed); err != nil { return nil, err } - return &layer{ - digest: digest, - diffID: diffID, - size: size, - compressed: compressed, - opener: opener, - }, nil + return layer, nil } // LayerFromReader returns a v1.Layer given a io.Reader. @@ -121,7 +133,7 @@ func LayerFromReader(reader io.Reader) (v1.Layer, error) { }) } -func computeDigest(opener Opener, compressed bool) (v1.Hash, int64, error) { +func computeDigest(opener Opener, compressed bool, compression int) (v1.Hash, int64, error) { rc, err := opener() if err != nil { return v1.Hash{}, 0, err @@ -132,7 +144,7 @@ func computeDigest(opener Opener, compressed bool) (v1.Hash, int64, error) { return v1.SHA256(rc) } - return v1.SHA256(v1util.GzipReadCloser(ioutil.NopCloser(rc))) + return v1.SHA256(v1util.GzipReadCloserLevel(ioutil.NopCloser(rc), compression)) } func computeDiffID(opener Opener, compressed bool) (v1.Hash, error) { diff --git a/vendor/github.com/gorilla/context/.travis.yml b/vendor/github.com/gorilla/context/.travis.yml deleted file mode 100644 index 6f440f1e42d..00000000000 --- a/vendor/github.com/gorilla/context/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: go -sudo: false - -matrix: - include: - - go: 1.3 - - go: 1.4 - - go: 1.5 - - go: 1.6 - - go: 1.7 - - go: tip - allow_failures: - - go: tip - -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d .) - - go vet $(go list ./... | grep -v /vendor/) - - go test -v -race ./... diff --git a/vendor/github.com/gorilla/context/README.md b/vendor/github.com/gorilla/context/README.md deleted file mode 100644 index 08f86693bcd..00000000000 --- a/vendor/github.com/gorilla/context/README.md +++ /dev/null @@ -1,10 +0,0 @@ -context -======= -[![Build Status](https://travis-ci.org/gorilla/context.png?branch=master)](https://travis-ci.org/gorilla/context) - -gorilla/context is a general purpose registry for global request variables. - -> Note: gorilla/context, having been born well before `context.Context` existed, does not play well -> with the shallow copying of the request that [`http.Request.WithContext`](https://golang.org/pkg/net/http/#Request.WithContext) (added to net/http Go 1.7 onwards) performs. You should either use *just* gorilla/context, or moving forward, the new `http.Request.Context()`. - -Read the full documentation here: http://www.gorillatoolkit.org/pkg/context diff --git a/vendor/github.com/gorilla/context/context.go b/vendor/github.com/gorilla/context/context.go deleted file mode 100644 index 81cb128b19c..00000000000 --- a/vendor/github.com/gorilla/context/context.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2012 The Gorilla 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 context - -import ( - "net/http" - "sync" - "time" -) - -var ( - mutex sync.RWMutex - data = make(map[*http.Request]map[interface{}]interface{}) - datat = make(map[*http.Request]int64) -) - -// Set stores a value for a given key in a given request. -func Set(r *http.Request, key, val interface{}) { - mutex.Lock() - if data[r] == nil { - data[r] = make(map[interface{}]interface{}) - datat[r] = time.Now().Unix() - } - data[r][key] = val - mutex.Unlock() -} - -// Get returns a value stored for a given key in a given request. -func Get(r *http.Request, key interface{}) interface{} { - mutex.RLock() - if ctx := data[r]; ctx != nil { - value := ctx[key] - mutex.RUnlock() - return value - } - mutex.RUnlock() - return nil -} - -// GetOk returns stored value and presence state like multi-value return of map access. -func GetOk(r *http.Request, key interface{}) (interface{}, bool) { - mutex.RLock() - if _, ok := data[r]; ok { - value, ok := data[r][key] - mutex.RUnlock() - return value, ok - } - mutex.RUnlock() - return nil, false -} - -// GetAll returns all stored values for the request as a map. Nil is returned for invalid requests. -func GetAll(r *http.Request) map[interface{}]interface{} { - mutex.RLock() - if context, ok := data[r]; ok { - result := make(map[interface{}]interface{}, len(context)) - for k, v := range context { - result[k] = v - } - mutex.RUnlock() - return result - } - mutex.RUnlock() - return nil -} - -// GetAllOk returns all stored values for the request as a map and a boolean value that indicates if -// the request was registered. -func GetAllOk(r *http.Request) (map[interface{}]interface{}, bool) { - mutex.RLock() - context, ok := data[r] - result := make(map[interface{}]interface{}, len(context)) - for k, v := range context { - result[k] = v - } - mutex.RUnlock() - return result, ok -} - -// Delete removes a value stored for a given key in a given request. -func Delete(r *http.Request, key interface{}) { - mutex.Lock() - if data[r] != nil { - delete(data[r], key) - } - mutex.Unlock() -} - -// Clear removes all values stored for a given request. -// -// This is usually called by a handler wrapper to clean up request -// variables at the end of a request lifetime. See ClearHandler(). -func Clear(r *http.Request) { - mutex.Lock() - clear(r) - mutex.Unlock() -} - -// clear is Clear without the lock. -func clear(r *http.Request) { - delete(data, r) - delete(datat, r) -} - -// Purge removes request data stored for longer than maxAge, in seconds. -// It returns the amount of requests removed. -// -// If maxAge <= 0, all request data is removed. -// -// This is only used for sanity check: in case context cleaning was not -// properly set some request data can be kept forever, consuming an increasing -// amount of memory. In case this is detected, Purge() must be called -// periodically until the problem is fixed. -func Purge(maxAge int) int { - mutex.Lock() - count := 0 - if maxAge <= 0 { - count = len(data) - data = make(map[*http.Request]map[interface{}]interface{}) - datat = make(map[*http.Request]int64) - } else { - min := time.Now().Unix() - int64(maxAge) - for r := range data { - if datat[r] < min { - clear(r) - count++ - } - } - } - mutex.Unlock() - return count -} - -// ClearHandler wraps an http.Handler and clears request values at the end -// of a request lifetime. -func ClearHandler(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer Clear(r) - h.ServeHTTP(w, r) - }) -} diff --git a/vendor/github.com/gorilla/context/doc.go b/vendor/github.com/gorilla/context/doc.go deleted file mode 100644 index 448d1bfcac6..00000000000 --- a/vendor/github.com/gorilla/context/doc.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2012 The Gorilla 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 context stores values shared during a request lifetime. - -Note: gorilla/context, having been born well before `context.Context` existed, -does not play well > with the shallow copying of the request that -[`http.Request.WithContext`](https://golang.org/pkg/net/http/#Request.WithContext) -(added to net/http Go 1.7 onwards) performs. You should either use *just* -gorilla/context, or moving forward, the new `http.Request.Context()`. - -For example, a router can set variables extracted from the URL and later -application handlers can access those values, or it can be used to store -sessions values to be saved at the end of a request. There are several -others common uses. - -The idea was posted by Brad Fitzpatrick to the go-nuts mailing list: - - http://groups.google.com/group/golang-nuts/msg/e2d679d303aa5d53 - -Here's the basic usage: first define the keys that you will need. The key -type is interface{} so a key can be of any type that supports equality. -Here we define a key using a custom int type to avoid name collisions: - - package foo - - import ( - "github.com/gorilla/context" - ) - - type key int - - const MyKey key = 0 - -Then set a variable. Variables are bound to an http.Request object, so you -need a request instance to set a value: - - context.Set(r, MyKey, "bar") - -The application can later access the variable using the same key you provided: - - func MyHandler(w http.ResponseWriter, r *http.Request) { - // val is "bar". - val := context.Get(r, foo.MyKey) - - // returns ("bar", true) - val, ok := context.GetOk(r, foo.MyKey) - // ... - } - -And that's all about the basic usage. We discuss some other ideas below. - -Any type can be stored in the context. To enforce a given type, make the key -private and wrap Get() and Set() to accept and return values of a specific -type: - - type key int - - const mykey key = 0 - - // GetMyKey returns a value for this package from the request values. - func GetMyKey(r *http.Request) SomeType { - if rv := context.Get(r, mykey); rv != nil { - return rv.(SomeType) - } - return nil - } - - // SetMyKey sets a value for this package in the request values. - func SetMyKey(r *http.Request, val SomeType) { - context.Set(r, mykey, val) - } - -Variables must be cleared at the end of a request, to remove all values -that were stored. This can be done in an http.Handler, after a request was -served. Just call Clear() passing the request: - - context.Clear(r) - -...or use ClearHandler(), which conveniently wraps an http.Handler to clear -variables at the end of a request lifetime. - -The Routers from the packages gorilla/mux and gorilla/pat call Clear() -so if you are using either of them you don't need to clear the context manually. -*/ -package context diff --git a/vendor/github.com/gorilla/mux/.travis.yml b/vendor/github.com/gorilla/mux/.travis.yml deleted file mode 100644 index ad0935dbd37..00000000000 --- a/vendor/github.com/gorilla/mux/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: go -sudo: false - -matrix: - include: - - go: 1.5.x - - go: 1.6.x - - go: 1.7.x - - go: 1.8.x - - go: 1.9.x - - go: 1.10.x - - go: tip - allow_failures: - - go: tip - -install: - - # Skip - -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d .) - - go tool vet . - - go test -v -race ./... diff --git a/vendor/github.com/gorilla/mux/AUTHORS b/vendor/github.com/gorilla/mux/AUTHORS new file mode 100644 index 00000000000..b722392ee59 --- /dev/null +++ b/vendor/github.com/gorilla/mux/AUTHORS @@ -0,0 +1,8 @@ +# This is the official list of gorilla/mux authors for copyright purposes. +# +# Please keep the list sorted. + +Google LLC (https://opensource.google.com/) +Kamil Kisielk +Matt Silverlock +Rodrigo Moraes (https://github.com/moraes) diff --git a/vendor/github.com/gorilla/mux/ISSUE_TEMPLATE.md b/vendor/github.com/gorilla/mux/ISSUE_TEMPLATE.md deleted file mode 100644 index 232be82e47a..00000000000 --- a/vendor/github.com/gorilla/mux/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,11 +0,0 @@ -**What version of Go are you running?** (Paste the output of `go version`) - - -**What version of gorilla/mux are you at?** (Paste the output of `git rev-parse HEAD` inside `$GOPATH/src/github.com/gorilla/mux`) - - -**Describe your problem** (and what you have tried so far) - - -**Paste a minimal, runnable, reproduction of your issue below** (use backticks to format it) - diff --git a/vendor/github.com/gorilla/mux/LICENSE b/vendor/github.com/gorilla/mux/LICENSE index 0e5fb872800..6903df6386e 100644 --- a/vendor/github.com/gorilla/mux/LICENSE +++ b/vendor/github.com/gorilla/mux/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2012 Rodrigo Moraes. All rights reserved. +Copyright (c) 2012-2018 The Gorilla Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/gorilla/mux/README.md b/vendor/github.com/gorilla/mux/README.md index e424397ac4d..92e422eed7a 100644 --- a/vendor/github.com/gorilla/mux/README.md +++ b/vendor/github.com/gorilla/mux/README.md @@ -2,11 +2,12 @@ [![GoDoc](https://godoc.org/github.com/gorilla/mux?status.svg)](https://godoc.org/github.com/gorilla/mux) [![Build Status](https://travis-ci.org/gorilla/mux.svg?branch=master)](https://travis-ci.org/gorilla/mux) +[![CircleCI](https://circleci.com/gh/gorilla/mux.svg?style=svg)](https://circleci.com/gh/gorilla/mux) [![Sourcegraph](https://sourcegraph.com/github.com/gorilla/mux/-/badge.svg)](https://sourcegraph.com/github.com/gorilla/mux?badge) ![Gorilla Logo](http://www.gorillatoolkit.org/static/images/gorilla-icon-64.png) -http://www.gorillatoolkit.org/pkg/mux +https://www.gorillatoolkit.org/pkg/mux Package `gorilla/mux` implements a request router and dispatcher for matching incoming requests to their respective handler. @@ -29,6 +30,7 @@ The name mux stands for "HTTP request multiplexer". Like the standard `http.Serv * [Walking Routes](#walking-routes) * [Graceful Shutdown](#graceful-shutdown) * [Middleware](#middleware) +* [Handling CORS Requests](#handling-cors-requests) * [Testing Handlers](#testing-handlers) * [Full Example](#full-example) @@ -88,7 +90,7 @@ r := mux.NewRouter() // Only matches if domain is "www.example.com". r.Host("www.example.com") // Matches a dynamic subdomain. -r.Host("{subdomain:[a-z]+}.domain.com") +r.Host("{subdomain:[a-z]+}.example.com") ``` There are several other matchers that can be added. To match path prefixes: @@ -238,13 +240,13 @@ This also works for host and query value variables: ```go r := mux.NewRouter() -r.Host("{subdomain}.domain.com"). +r.Host("{subdomain}.example.com"). Path("/articles/{category}/{id:[0-9]+}"). Queries("filter", "{filter}"). HandlerFunc(ArticleHandler). Name("article") -// url.String() will be "http://news.domain.com/articles/technology/42?filter=gorilla" +// url.String() will be "http://news.example.com/articles/technology/42?filter=gorilla" url, err := r.Get("article").URL("subdomain", "news", "category", "technology", "id", "42", @@ -264,7 +266,7 @@ r.HeadersRegexp("Content-Type", "application/(text|json)") There's also a way to build only the URL host or path for a route: use the methods `URLHost()` or `URLPath()` instead. For the previous route, we would do: ```go -// "http://news.domain.com/" +// "http://news.example.com/" host, err := r.Get("article").URLHost("subdomain", "news") // "/articles/technology/42" @@ -275,12 +277,12 @@ And if you use subrouters, host and path defined separately can be built as well ```go r := mux.NewRouter() -s := r.Host("{subdomain}.domain.com").Subrouter() +s := r.Host("{subdomain}.example.com").Subrouter() s.Path("/articles/{category}/{id:[0-9]+}"). HandlerFunc(ArticleHandler). Name("article") -// "http://news.domain.com/articles/technology/42" +// "http://news.example.com/articles/technology/42" url, err := r.Get("article").URL("subdomain", "news", "category", "technology", "id", "42") @@ -491,6 +493,73 @@ r.Use(amw.Middleware) Note: The handler chain will be stopped if your middleware doesn't call `next.ServeHTTP()` with the corresponding parameters. This can be used to abort a request if the middleware writer wants to. Middlewares _should_ write to `ResponseWriter` if they _are_ going to terminate the request, and they _should not_ write to `ResponseWriter` if they _are not_ going to terminate it. +### Handling CORS Requests + +[CORSMethodMiddleware](https://godoc.org/github.com/gorilla/mux#CORSMethodMiddleware) intends to make it easier to strictly set the `Access-Control-Allow-Methods` response header. + +* You will still need to use your own CORS handler to set the other CORS headers such as `Access-Control-Allow-Origin` +* The middleware will set the `Access-Control-Allow-Methods` header to all the method matchers (e.g. `r.Methods(http.MethodGet, http.MethodPut, http.MethodOptions)` -> `Access-Control-Allow-Methods: GET,PUT,OPTIONS`) on a route +* If you do not specify any methods, then: +> _Important_: there must be an `OPTIONS` method matcher for the middleware to set the headers. + +Here is an example of using `CORSMethodMiddleware` along with a custom `OPTIONS` handler to set all the required CORS headers: + +```go +package main + +import ( + "net/http" + "github.com/gorilla/mux" +) + +func main() { + r := mux.NewRouter() + + // IMPORTANT: you must specify an OPTIONS method matcher for the middleware to set CORS headers + r.HandleFunc("/foo", fooHandler).Methods(http.MethodGet, http.MethodPut, http.MethodPatch, http.MethodOptions) + r.Use(mux.CORSMethodMiddleware(r)) + + http.ListenAndServe(":8080", r) +} + +func fooHandler(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Access-Control-Allow-Origin", "*") + if r.Method == http.MethodOptions { + return + } + + w.Write([]byte("foo")) +} +``` + +And an request to `/foo` using something like: + +```bash +curl localhost:8080/foo -v +``` + +Would look like: + +```bash +* Trying ::1... +* TCP_NODELAY set +* Connected to localhost (::1) port 8080 (#0) +> GET /foo HTTP/1.1 +> Host: localhost:8080 +> User-Agent: curl/7.59.0 +> Accept: */* +> +< HTTP/1.1 200 OK +< Access-Control-Allow-Methods: GET,PUT,PATCH,OPTIONS +< Access-Control-Allow-Origin: * +< Date: Fri, 28 Jun 2019 20:13:30 GMT +< Content-Length: 3 +< Content-Type: text/plain; charset=utf-8 +< +* Connection #0 to host localhost left intact +foo +``` + ### Testing Handlers Testing handlers in a Go web application is straightforward, and _mux_ doesn't complicate this any further. Given two files: `endpoints.go` and `endpoints_test.go`, here's how we'd test an application using _mux_. @@ -503,8 +572,8 @@ package main func HealthCheckHandler(w http.ResponseWriter, r *http.Request) { // A very simple health check. - w.WriteHeader(http.StatusOK) w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) // In the future we could report back on the status of our DB, or our cache // (e.g. Redis) by performing a simple PING, and include them in the response. diff --git a/vendor/github.com/gorilla/mux/context_native.go b/vendor/github.com/gorilla/mux/context.go similarity index 82% rename from vendor/github.com/gorilla/mux/context_native.go rename to vendor/github.com/gorilla/mux/context.go index 209cbea7d66..665940a2682 100644 --- a/vendor/github.com/gorilla/mux/context_native.go +++ b/vendor/github.com/gorilla/mux/context.go @@ -1,5 +1,3 @@ -// +build go1.7 - package mux import ( @@ -18,7 +16,3 @@ func contextSet(r *http.Request, key, val interface{}) *http.Request { return r.WithContext(context.WithValue(r.Context(), key, val)) } - -func contextClear(r *http.Request) { - return -} diff --git a/vendor/github.com/gorilla/mux/context_gorilla.go b/vendor/github.com/gorilla/mux/context_gorilla.go deleted file mode 100644 index d7adaa8fad4..00000000000 --- a/vendor/github.com/gorilla/mux/context_gorilla.go +++ /dev/null @@ -1,26 +0,0 @@ -// +build !go1.7 - -package mux - -import ( - "net/http" - - "github.com/gorilla/context" -) - -func contextGet(r *http.Request, key interface{}) interface{} { - return context.Get(r, key) -} - -func contextSet(r *http.Request, key, val interface{}) *http.Request { - if val == nil { - return r - } - - context.Set(r, key, val) - return r -} - -func contextClear(r *http.Request) { - context.Clear(r) -} diff --git a/vendor/github.com/gorilla/mux/doc.go b/vendor/github.com/gorilla/mux/doc.go index 38957deead3..bd5a38b55d8 100644 --- a/vendor/github.com/gorilla/mux/doc.go +++ b/vendor/github.com/gorilla/mux/doc.go @@ -295,7 +295,7 @@ A more complex authentication middleware, which maps session token to users, cou r := mux.NewRouter() r.HandleFunc("/", handler) - amw := authenticationMiddleware{} + amw := authenticationMiddleware{tokenUsers: make(map[string]string)} amw.Populate() r.Use(amw.Middleware) diff --git a/vendor/github.com/gorilla/mux/go.mod b/vendor/github.com/gorilla/mux/go.mod new file mode 100644 index 00000000000..cfc8ede5818 --- /dev/null +++ b/vendor/github.com/gorilla/mux/go.mod @@ -0,0 +1 @@ +module github.com/gorilla/mux diff --git a/vendor/github.com/gorilla/mux/middleware.go b/vendor/github.com/gorilla/mux/middleware.go index ceb812cee28..cf2b26dc037 100644 --- a/vendor/github.com/gorilla/mux/middleware.go +++ b/vendor/github.com/gorilla/mux/middleware.go @@ -32,37 +32,19 @@ func (r *Router) useInterface(mw middleware) { r.middlewares = append(r.middlewares, mw) } -// CORSMethodMiddleware sets the Access-Control-Allow-Methods response header -// on a request, by matching routes based only on paths. It also handles -// OPTIONS requests, by settings Access-Control-Allow-Methods, and then -// returning without calling the next http handler. +// CORSMethodMiddleware automatically sets the Access-Control-Allow-Methods response header +// on requests for routes that have an OPTIONS method matcher to all the method matchers on +// the route. Routes that do not explicitly handle OPTIONS requests will not be processed +// by the middleware. See examples for usage. func CORSMethodMiddleware(r *Router) MiddlewareFunc { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - var allMethods []string - - err := r.Walk(func(route *Route, _ *Router, _ []*Route) error { - for _, m := range route.matchers { - if _, ok := m.(*routeRegexp); ok { - if m.Match(req, &RouteMatch{}) { - methods, err := route.GetMethods() - if err != nil { - return err - } - - allMethods = append(allMethods, methods...) - } - break - } - } - return nil - }) - + allMethods, err := getAllMethodsForRoute(r, req) if err == nil { - w.Header().Set("Access-Control-Allow-Methods", strings.Join(append(allMethods, "OPTIONS"), ",")) - - if req.Method == "OPTIONS" { - return + for _, v := range allMethods { + if v == http.MethodOptions { + w.Header().Set("Access-Control-Allow-Methods", strings.Join(allMethods, ",")) + } } } @@ -70,3 +52,28 @@ func CORSMethodMiddleware(r *Router) MiddlewareFunc { }) } } + +// getAllMethodsForRoute returns all the methods from method matchers matching a given +// request. +func getAllMethodsForRoute(r *Router, req *http.Request) ([]string, error) { + var allMethods []string + + err := r.Walk(func(route *Route, _ *Router, _ []*Route) error { + for _, m := range route.matchers { + if _, ok := m.(*routeRegexp); ok { + if m.Match(req, &RouteMatch{}) { + methods, err := route.GetMethods() + if err != nil { + return err + } + + allMethods = append(allMethods, methods...) + } + break + } + } + return nil + }) + + return allMethods, err +} diff --git a/vendor/github.com/gorilla/mux/mux.go b/vendor/github.com/gorilla/mux/mux.go index 4bbafa51da3..a2cd193e487 100644 --- a/vendor/github.com/gorilla/mux/mux.go +++ b/vendor/github.com/gorilla/mux/mux.go @@ -22,7 +22,7 @@ var ( // NewRouter returns a new router instance. func NewRouter() *Router { - return &Router{namedRoutes: make(map[string]*Route), KeepContext: false} + return &Router{namedRoutes: make(map[string]*Route)} } // Router registers routes to be matched and dispatches a handler. @@ -50,24 +50,78 @@ type Router struct { // Configurable Handler to be used when the request method does not match the route. MethodNotAllowedHandler http.Handler - // Parent route, if this is a subrouter. - parent parentRoute // Routes to be matched, in order. routes []*Route + // Routes by name for URL building. namedRoutes map[string]*Route - // See Router.StrictSlash(). This defines the flag for new routes. - strictSlash bool - // See Router.SkipClean(). This defines the flag for new routes. - skipClean bool + // If true, do not clear the request context after handling the request. - // This has no effect when go1.7+ is used, since the context is stored + // + // Deprecated: No effect when go1.7+ is used, since the context is stored // on the request itself. KeepContext bool - // see Router.UseEncodedPath(). This defines a flag for all routes. - useEncodedPath bool + // Slice of middlewares to be called after a match is found middlewares []middleware + + // configuration shared with `Route` + routeConf +} + +// common route configuration shared between `Router` and `Route` +type routeConf struct { + // If true, "/path/foo%2Fbar/to" will match the path "/path/{var}/to" + useEncodedPath bool + + // If true, when the path pattern is "/path/", accessing "/path" will + // redirect to the former and vice versa. + strictSlash bool + + // If true, when the path pattern is "/path//to", accessing "/path//to" + // will not redirect + skipClean bool + + // Manager for the variables from host and path. + regexp routeRegexpGroup + + // List of matchers. + matchers []matcher + + // The scheme used when building URLs. + buildScheme string + + buildVarsFunc BuildVarsFunc +} + +// returns an effective deep copy of `routeConf` +func copyRouteConf(r routeConf) routeConf { + c := r + + if r.regexp.path != nil { + c.regexp.path = copyRouteRegexp(r.regexp.path) + } + + if r.regexp.host != nil { + c.regexp.host = copyRouteRegexp(r.regexp.host) + } + + c.regexp.queries = make([]*routeRegexp, 0, len(r.regexp.queries)) + for _, q := range r.regexp.queries { + c.regexp.queries = append(c.regexp.queries, copyRouteRegexp(q)) + } + + c.matchers = make([]matcher, 0, len(r.matchers)) + for _, m := range r.matchers { + c.matchers = append(c.matchers, m) + } + + return c +} + +func copyRouteRegexp(r *routeRegexp) *routeRegexp { + c := *r + return &c } // Match attempts to match the given request against the router's registered routes. @@ -155,22 +209,18 @@ func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { handler = http.NotFoundHandler() } - if !r.KeepContext { - defer contextClear(req) - } - handler.ServeHTTP(w, req) } // Get returns a route registered with the given name. func (r *Router) Get(name string) *Route { - return r.getNamedRoutes()[name] + return r.namedRoutes[name] } // GetRoute returns a route registered with the given name. This method // was renamed to Get() and remains here for backwards compatibility. func (r *Router) GetRoute(name string) *Route { - return r.getNamedRoutes()[name] + return r.namedRoutes[name] } // StrictSlash defines the trailing slash behavior for new routes. The initial @@ -221,55 +271,24 @@ func (r *Router) UseEncodedPath() *Router { return r } -// ---------------------------------------------------------------------------- -// parentRoute -// ---------------------------------------------------------------------------- - -func (r *Router) getBuildScheme() string { - if r.parent != nil { - return r.parent.getBuildScheme() - } - return "" -} - -// getNamedRoutes returns the map where named routes are registered. -func (r *Router) getNamedRoutes() map[string]*Route { - if r.namedRoutes == nil { - if r.parent != nil { - r.namedRoutes = r.parent.getNamedRoutes() - } else { - r.namedRoutes = make(map[string]*Route) - } - } - return r.namedRoutes -} - -// getRegexpGroup returns regexp definitions from the parent route, if any. -func (r *Router) getRegexpGroup() *routeRegexpGroup { - if r.parent != nil { - return r.parent.getRegexpGroup() - } - return nil -} - -func (r *Router) buildVars(m map[string]string) map[string]string { - if r.parent != nil { - m = r.parent.buildVars(m) - } - return m -} - // ---------------------------------------------------------------------------- // Route factories // ---------------------------------------------------------------------------- // NewRoute registers an empty route. func (r *Router) NewRoute() *Route { - route := &Route{parent: r, strictSlash: r.strictSlash, skipClean: r.skipClean, useEncodedPath: r.useEncodedPath} + // initialize a route with a copy of the parent router's configuration + route := &Route{routeConf: copyRouteConf(r.routeConf), namedRoutes: r.namedRoutes} r.routes = append(r.routes, route) return route } +// Name registers a new route with a name. +// See Route.Name(). +func (r *Router) Name(name string) *Route { + return r.NewRoute().Name(name) +} + // Handle registers a new route with a matcher for the URL path. // See Route.Path() and Route.Handler(). func (r *Router) Handle(path string, handler http.Handler) *Route { diff --git a/vendor/github.com/gorilla/mux/regexp.go b/vendor/github.com/gorilla/mux/regexp.go index 2b57e5627d5..ac1abcd473e 100644 --- a/vendor/github.com/gorilla/mux/regexp.go +++ b/vendor/github.com/gorilla/mux/regexp.go @@ -113,6 +113,13 @@ func newRouteRegexp(tpl string, typ regexpType, options routeRegexpOptions) (*ro if typ != regexpTypePrefix { pattern.WriteByte('$') } + + var wildcardHostPort bool + if typ == regexpTypeHost { + if !strings.Contains(pattern.String(), ":") { + wildcardHostPort = true + } + } reverse.WriteString(raw) if endSlash { reverse.WriteByte('/') @@ -131,13 +138,14 @@ func newRouteRegexp(tpl string, typ regexpType, options routeRegexpOptions) (*ro // Done! return &routeRegexp{ - template: template, - regexpType: typ, - options: options, - regexp: reg, - reverse: reverse.String(), - varsN: varsN, - varsR: varsR, + template: template, + regexpType: typ, + options: options, + regexp: reg, + reverse: reverse.String(), + varsN: varsN, + varsR: varsR, + wildcardHostPort: wildcardHostPort, }, nil } @@ -158,11 +166,22 @@ type routeRegexp struct { varsN []string // Variable regexps (validators). varsR []*regexp.Regexp + // Wildcard host-port (no strict port match in hostname) + wildcardHostPort bool } // Match matches the regexp against the URL host or path. func (r *routeRegexp) Match(req *http.Request, match *RouteMatch) bool { - if r.regexpType != regexpTypeHost { + if r.regexpType == regexpTypeHost { + host := getHost(req) + if r.wildcardHostPort { + // Don't be strict on the port match + if i := strings.Index(host, ":"); i != -1 { + host = host[:i] + } + } + return r.regexp.MatchString(host) + } else { if r.regexpType == regexpTypeQuery { return r.matchQueryString(req) } @@ -172,8 +191,6 @@ func (r *routeRegexp) Match(req *http.Request, match *RouteMatch) bool { } return r.regexp.MatchString(path) } - - return r.regexp.MatchString(getHost(req)) } // url builds a URL part using the given values. @@ -267,7 +284,7 @@ type routeRegexpGroup struct { } // setMatch extracts the variables from the URL once a route matches. -func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) { +func (v routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) { // Store host variables. if v.host != nil { host := getHost(req) @@ -296,7 +313,7 @@ func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) } else { u.Path += "/" } - m.Handler = http.RedirectHandler(u.String(), 301) + m.Handler = http.RedirectHandler(u.String(), http.StatusMovedPermanently) } } } @@ -312,17 +329,13 @@ func (v *routeRegexpGroup) setMatch(req *http.Request, m *RouteMatch, r *Route) } // getHost tries its best to return the request host. +// According to section 14.23 of RFC 2616 the Host header +// can include the port number if the default value of 80 is not used. func getHost(r *http.Request) string { if r.URL.IsAbs() { return r.URL.Host } - host := r.Host - // Slice off any port information. - if i := strings.Index(host, ":"); i != -1 { - host = host[:i] - } - return host - + return r.Host } func extractVars(input string, matches []int, names []string, output map[string]string) { diff --git a/vendor/github.com/gorilla/mux/route.go b/vendor/github.com/gorilla/mux/route.go index a591d735450..8479c68c1df 100644 --- a/vendor/github.com/gorilla/mux/route.go +++ b/vendor/github.com/gorilla/mux/route.go @@ -15,24 +15,8 @@ import ( // Route stores information to match a request and build URLs. type Route struct { - // Parent where the route was registered (a Router). - parent parentRoute // Request handler for the route. handler http.Handler - // List of matchers. - matchers []matcher - // Manager for the variables from host and path. - regexp *routeRegexpGroup - // If true, when the path pattern is "/path/", accessing "/path" will - // redirect to the former and vice versa. - strictSlash bool - // If true, when the path pattern is "/path//to", accessing "/path//to" - // will not redirect - skipClean bool - // If true, "/path/foo%2Fbar/to" will match the path "/path/{var}/to" - useEncodedPath bool - // The scheme used when building URLs. - buildScheme string // If true, this route never matches: it is only used to build URLs. buildOnly bool // The name used to build URLs. @@ -40,7 +24,11 @@ type Route struct { // Error resulted from building a route. err error - buildVarsFunc BuildVarsFunc + // "global" reference to all named routes + namedRoutes map[string]*Route + + // config possibly passed in from `Router` + routeConf } // SkipClean reports whether path cleaning is enabled for this route via @@ -64,6 +52,18 @@ func (r *Route) Match(req *http.Request, match *RouteMatch) bool { matchErr = ErrMethodMismatch continue } + + // Ignore ErrNotFound errors. These errors arise from match call + // to Subrouters. + // + // This prevents subsequent matching subrouters from failing to + // run middleware. If not ignored, the middleware would see a + // non-nil MatchErr and be skipped, even when there was a + // matching route. + if match.MatchErr == ErrNotFound { + match.MatchErr = nil + } + matchErr = nil return false } @@ -93,9 +93,7 @@ func (r *Route) Match(req *http.Request, match *RouteMatch) bool { } // Set variables. - if r.regexp != nil { - r.regexp.setMatch(req, match, r) - } + r.regexp.setMatch(req, match, r) return true } @@ -137,7 +135,7 @@ func (r *Route) GetHandler() http.Handler { // Name ----------------------------------------------------------------------- // Name sets the name for the route, used to build URLs. -// If the name was registered already it will be overwritten. +// It is an error to call Name more than once on a route. func (r *Route) Name(name string) *Route { if r.name != "" { r.err = fmt.Errorf("mux: route already has name %q, can't set %q", @@ -145,7 +143,7 @@ func (r *Route) Name(name string) *Route { } if r.err == nil { r.name = name - r.getNamedRoutes()[name] = r + r.namedRoutes[name] = r } return r } @@ -177,7 +175,6 @@ func (r *Route) addRegexpMatcher(tpl string, typ regexpType) error { if r.err != nil { return r.err } - r.regexp = r.getRegexpGroup() if typ == regexpTypePath || typ == regexpTypePrefix { if len(tpl) > 0 && tpl[0] != '/' { return fmt.Errorf("mux: path must start with a slash, got %q", tpl) @@ -386,7 +383,7 @@ func (r *Route) PathPrefix(tpl string) *Route { // The above route will only match if the URL contains the defined queries // values, e.g.: ?foo=bar&id=42. // -// It the value is an empty string, it will match any value if the key is set. +// If the value is an empty string, it will match any value if the key is set. // // Variables can define an optional regexp pattern to be matched: // @@ -424,7 +421,7 @@ func (r *Route) Schemes(schemes ...string) *Route { for k, v := range schemes { schemes[k] = strings.ToLower(v) } - if r.buildScheme == "" && len(schemes) > 0 { + if len(schemes) > 0 { r.buildScheme = schemes[0] } return r.addMatcher(schemeMatcher(schemes)) @@ -439,7 +436,15 @@ type BuildVarsFunc func(map[string]string) map[string]string // BuildVarsFunc adds a custom function to be used to modify build variables // before a route's URL is built. func (r *Route) BuildVarsFunc(f BuildVarsFunc) *Route { - r.buildVarsFunc = f + if r.buildVarsFunc != nil { + // compose the old and new functions + old := r.buildVarsFunc + r.buildVarsFunc = func(m map[string]string) map[string]string { + return f(old(m)) + } + } else { + r.buildVarsFunc = f + } return r } @@ -458,7 +463,8 @@ func (r *Route) BuildVarsFunc(f BuildVarsFunc) *Route { // Here, the routes registered in the subrouter won't be tested if the host // doesn't match. func (r *Route) Subrouter() *Router { - router := &Router{parent: r, strictSlash: r.strictSlash} + // initialize a subrouter with a copy of the parent route's configuration + router := &Router{routeConf: copyRouteConf(r.routeConf), namedRoutes: r.namedRoutes} r.addMatcher(router) return router } @@ -502,9 +508,6 @@ func (r *Route) URL(pairs ...string) (*url.URL, error) { if r.err != nil { return nil, r.err } - if r.regexp == nil { - return nil, errors.New("mux: route doesn't have a host or path") - } values, err := r.prepareVars(pairs...) if err != nil { return nil, err @@ -516,8 +519,8 @@ func (r *Route) URL(pairs ...string) (*url.URL, error) { return nil, err } scheme = "http" - if s := r.getBuildScheme(); s != "" { - scheme = s + if r.buildScheme != "" { + scheme = r.buildScheme } } if r.regexp.path != nil { @@ -547,7 +550,7 @@ func (r *Route) URLHost(pairs ...string) (*url.URL, error) { if r.err != nil { return nil, r.err } - if r.regexp == nil || r.regexp.host == nil { + if r.regexp.host == nil { return nil, errors.New("mux: route doesn't have a host") } values, err := r.prepareVars(pairs...) @@ -562,8 +565,8 @@ func (r *Route) URLHost(pairs ...string) (*url.URL, error) { Scheme: "http", Host: host, } - if s := r.getBuildScheme(); s != "" { - u.Scheme = s + if r.buildScheme != "" { + u.Scheme = r.buildScheme } return u, nil } @@ -575,7 +578,7 @@ func (r *Route) URLPath(pairs ...string) (*url.URL, error) { if r.err != nil { return nil, r.err } - if r.regexp == nil || r.regexp.path == nil { + if r.regexp.path == nil { return nil, errors.New("mux: route doesn't have a path") } values, err := r.prepareVars(pairs...) @@ -600,7 +603,7 @@ func (r *Route) GetPathTemplate() (string, error) { if r.err != nil { return "", r.err } - if r.regexp == nil || r.regexp.path == nil { + if r.regexp.path == nil { return "", errors.New("mux: route doesn't have a path") } return r.regexp.path.template, nil @@ -614,7 +617,7 @@ func (r *Route) GetPathRegexp() (string, error) { if r.err != nil { return "", r.err } - if r.regexp == nil || r.regexp.path == nil { + if r.regexp.path == nil { return "", errors.New("mux: route does not have a path") } return r.regexp.path.regexp.String(), nil @@ -629,7 +632,7 @@ func (r *Route) GetQueriesRegexp() ([]string, error) { if r.err != nil { return nil, r.err } - if r.regexp == nil || r.regexp.queries == nil { + if r.regexp.queries == nil { return nil, errors.New("mux: route doesn't have queries") } var queries []string @@ -648,7 +651,7 @@ func (r *Route) GetQueriesTemplates() ([]string, error) { if r.err != nil { return nil, r.err } - if r.regexp == nil || r.regexp.queries == nil { + if r.regexp.queries == nil { return nil, errors.New("mux: route doesn't have queries") } var queries []string @@ -683,7 +686,7 @@ func (r *Route) GetHostTemplate() (string, error) { if r.err != nil { return "", r.err } - if r.regexp == nil || r.regexp.host == nil { + if r.regexp.host == nil { return "", errors.New("mux: route doesn't have a host") } return r.regexp.host.template, nil @@ -700,64 +703,8 @@ func (r *Route) prepareVars(pairs ...string) (map[string]string, error) { } func (r *Route) buildVars(m map[string]string) map[string]string { - if r.parent != nil { - m = r.parent.buildVars(m) - } if r.buildVarsFunc != nil { m = r.buildVarsFunc(m) } return m } - -// ---------------------------------------------------------------------------- -// parentRoute -// ---------------------------------------------------------------------------- - -// parentRoute allows routes to know about parent host and path definitions. -type parentRoute interface { - getBuildScheme() string - getNamedRoutes() map[string]*Route - getRegexpGroup() *routeRegexpGroup - buildVars(map[string]string) map[string]string -} - -func (r *Route) getBuildScheme() string { - if r.buildScheme != "" { - return r.buildScheme - } - if r.parent != nil { - return r.parent.getBuildScheme() - } - return "" -} - -// getNamedRoutes returns the map where named routes are registered. -func (r *Route) getNamedRoutes() map[string]*Route { - if r.parent == nil { - // During tests router is not always set. - r.parent = NewRouter() - } - return r.parent.getNamedRoutes() -} - -// getRegexpGroup returns regexp definitions from this route. -func (r *Route) getRegexpGroup() *routeRegexpGroup { - if r.regexp == nil { - if r.parent == nil { - // During tests router is not always set. - r.parent = NewRouter() - } - regexp := r.parent.getRegexpGroup() - if regexp == nil { - r.regexp = new(routeRegexpGroup) - } else { - // Copy. - r.regexp = &routeRegexpGroup{ - host: regexp.host, - path: regexp.path, - queries: regexp.queries, - } - } - } - return r.regexp -} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/BUILD.bazel b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/BUILD.bazel index 20862228ef8..819c45a7657 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/BUILD.bazel +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/BUILD.bazel @@ -27,11 +27,12 @@ go_library( deps = [ "//internal:go_default_library", "//utilities:go_default_library", + "@com_github_golang_protobuf//descriptor:go_default_library_gen", "@com_github_golang_protobuf//jsonpb:go_default_library_gen", "@com_github_golang_protobuf//proto:go_default_library", - "@com_github_golang_protobuf//protoc-gen-go/generator:go_default_library_gen", "@go_googleapis//google/api:httpbody_go_proto", "@io_bazel_rules_go//proto/wkt:any_go_proto", + "@io_bazel_rules_go//proto/wkt:descriptor_go_proto", "@io_bazel_rules_go//proto/wkt:duration_go_proto", "@io_bazel_rules_go//proto/wkt:field_mask_go_proto", "@io_bazel_rules_go//proto/wkt:timestamp_go_proto", @@ -48,6 +49,7 @@ go_test( size = "small", srcs = [ "context_test.go", + "convert_test.go", "errors_test.go", "fieldmask_test.go", "handler_test.go", diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go index 896057e1e1e..f8083821f3d 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go @@ -57,13 +57,39 @@ except that the forwarded destination is not another HTTP service but rather a gRPC service. */ func AnnotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (context.Context, error) { + ctx, md, err := annotateContext(ctx, mux, req) + if err != nil { + return nil, err + } + if md == nil { + return ctx, nil + } + + return metadata.NewOutgoingContext(ctx, md), nil +} + +// AnnotateIncomingContext adds context information such as metadata from the request. +// Attach metadata as incoming context. +func AnnotateIncomingContext(ctx context.Context, mux *ServeMux, req *http.Request) (context.Context, error) { + ctx, md, err := annotateContext(ctx, mux, req) + if err != nil { + return nil, err + } + if md == nil { + return ctx, nil + } + + return metadata.NewIncomingContext(ctx, md), nil +} + +func annotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (context.Context, metadata.MD, error) { var pairs []string timeout := DefaultContextTimeout if tm := req.Header.Get(metadataGrpcTimeout); tm != "" { var err error timeout, err = timeoutDecode(tm) if err != nil { - return nil, status.Errorf(codes.InvalidArgument, "invalid grpc-timeout: %s", tm) + return nil, nil, status.Errorf(codes.InvalidArgument, "invalid grpc-timeout: %s", tm) } } @@ -80,7 +106,7 @@ func AnnotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (con if strings.HasSuffix(key, metadataHeaderBinarySuffix) { b, err := decodeBinHeader(val) if err != nil { - return nil, status.Errorf(codes.InvalidArgument, "invalid binary header %s: %s", key, err) + return nil, nil, status.Errorf(codes.InvalidArgument, "invalid binary header %s: %s", key, err) } val = string(b) @@ -111,13 +137,13 @@ func AnnotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (con ctx, _ = context.WithTimeout(ctx, timeout) } if len(pairs) == 0 { - return ctx, nil + return ctx, nil, nil } md := metadata.Pairs(pairs...) for _, mda := range mux.metadataAnnotators { md = metadata.Join(md, mda(ctx, req)) } - return metadata.NewOutgoingContext(ctx, md), nil + return ctx, md, nil } // ServerMetadata consists of metadata sent from gRPC server. diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go index a5b3bd6a792..2c279344dc4 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/convert.go @@ -206,16 +206,22 @@ func BytesSlice(val, sep string) ([][]byte, error) { // Timestamp converts the given RFC3339 formatted string into a timestamp.Timestamp. func Timestamp(val string) (*timestamp.Timestamp, error) { - var r *timestamp.Timestamp - err := jsonpb.UnmarshalString(val, r) - return r, err + var r timestamp.Timestamp + err := jsonpb.UnmarshalString(val, &r) + if err != nil { + return nil, err + } + return &r, nil } // Duration converts the given string into a timestamp.Duration. func Duration(val string) (*duration.Duration, error) { - var r *duration.Duration - err := jsonpb.UnmarshalString(val, r) - return r, err + var r duration.Duration + err := jsonpb.UnmarshalString(val, &r) + if err != nil { + return nil, err + } + return &r, nil } // Enum converts the given string into an int32 that should be type casted into the diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go index 41d54ef916a..a36080713ce 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go @@ -37,7 +37,8 @@ func HTTPStatusFromCode(code codes.Code) int { case codes.ResourceExhausted: return http.StatusTooManyRequests case codes.FailedPrecondition: - return http.StatusPreconditionFailed + // Note, this deliberately doesn't translate to the similarly named '412 Precondition Failed' HTTP response status. + return http.StatusBadRequest case codes.Aborted: return http.StatusConflict case codes.OutOfRange: @@ -65,12 +66,12 @@ var ( ) type errorBody struct { - Error string `protobuf:"bytes,1,name=error" json:"error"` + Error string `protobuf:"bytes,100,name=error" json:"error"` // This is to make the error more compatible with users that expect errors to be Status objects: // https://github.com/grpc/grpc/blob/master/src/proto/grpc/status/status.proto // It should be the exact same message as the Error field. - Message string `protobuf:"bytes,1,name=message" json:"message"` - Code int32 `protobuf:"varint,2,name=code" json:"code"` + Code int32 `protobuf:"varint,1,name=code" json:"code"` + Message string `protobuf:"bytes,2,name=message" json:"message"` Details []*any.Any `protobuf:"bytes,3,rep,name=details" json:"details,omitempty"` } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/fieldmask.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/fieldmask.go index e1cf7a91461..341aad5a3ea 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/fieldmask.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/fieldmask.go @@ -5,12 +5,37 @@ import ( "io" "strings" - "github.com/golang/protobuf/protoc-gen-go/generator" + descriptor2 "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/protoc-gen-go/descriptor" "google.golang.org/genproto/protobuf/field_mask" ) +func translateName(name string, md *descriptor.DescriptorProto) (string, *descriptor.DescriptorProto) { + // TODO - should really gate this with a test that the marshaller has used json names + if md != nil { + for _, f := range md.Field { + if f.JsonName != nil && f.Name != nil && *f.JsonName == name { + var subType *descriptor.DescriptorProto + + // If the field has a TypeName then we retrieve the nested type for translating the embedded message names. + if f.TypeName != nil { + typeSplit := strings.Split(*f.TypeName, ".") + typeName := typeSplit[len(typeSplit)-1] + for _, t := range md.NestedType { + if typeName == *t.Name { + subType = t + } + } + } + return *f.Name, subType + } + } + } + return name, nil +} + // FieldMaskFromRequestBody creates a FieldMask printing all complete paths from the JSON body. -func FieldMaskFromRequestBody(r io.Reader) (*field_mask.FieldMask, error) { +func FieldMaskFromRequestBody(r io.Reader, md *descriptor.DescriptorProto) (*field_mask.FieldMask, error) { fm := &field_mask.FieldMask{} var root interface{} if err := json.NewDecoder(r).Decode(&root); err != nil { @@ -20,7 +45,7 @@ func FieldMaskFromRequestBody(r io.Reader) (*field_mask.FieldMask, error) { return nil, err } - queue := []fieldMaskPathItem{{node: root}} + queue := []fieldMaskPathItem{{node: root, md: md}} for len(queue) > 0 { // dequeue an item item := queue[0] @@ -29,7 +54,11 @@ func FieldMaskFromRequestBody(r io.Reader) (*field_mask.FieldMask, error) { if m, ok := item.node.(map[string]interface{}); ok { // if the item is an object, then enqueue all of its children for k, v := range m { - queue = append(queue, fieldMaskPathItem{path: append(item.path, generator.CamelCase(k)), node: v}) + protoName, subMd := translateName(k, item.md) + if subMsg, ok := v.(descriptor2.Message); ok { + _, subMd = descriptor2.ForMessage(subMsg) + } + queue = append(queue, fieldMaskPathItem{path: append(item.path, protoName), node: v, md: subMd}) } } else if len(item.path) > 0 { // otherwise, it's a leaf node so print its path @@ -47,24 +76,7 @@ type fieldMaskPathItem struct { // a generic decoded json object the current item to inspect for further path extraction node interface{} -} - -// CamelCaseFieldMask updates the given FieldMask by converting all of its paths to CamelCase, using the same heuristic -// that's used for naming protobuf fields in Go. -func CamelCaseFieldMask(mask *field_mask.FieldMask) { - if mask == nil || mask.Paths == nil { - return - } - - var newPaths []string - for _, path := range mask.Paths { - lowerCasedParts := strings.Split(path, ".") - var camelCasedParts []string - for _, part := range lowerCasedParts { - camelCasedParts = append(camelCasedParts, generator.CamelCase(part)) - } - newPaths = append(newPaths, strings.Join(camelCasedParts, ".")) - } - mask.Paths = newPaths + // descriptor for parent message + md *descriptor.DescriptorProto } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go index 1fc63f7f58b..2af900650dc 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go @@ -1,6 +1,7 @@ package runtime import ( + "errors" "fmt" "io" "net/http" @@ -8,13 +9,12 @@ import ( "context" "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes/any" "github.com/grpc-ecosystem/grpc-gateway/internal" - "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/status" ) +var errEmptyResponse = errors.New("empty response") + // ForwardResponseStream forwards the stream from gRPC server to REST client. func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, recv func() (proto.Message, error), opts ...func(context.Context, http.ResponseWriter, proto.Message) error) { f, ok := w.(http.Flusher) @@ -53,18 +53,18 @@ func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshal return } if err != nil { - handleForwardResponseStreamError(wroteHeader, marshaler, w, err) + handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err) return } if err := handleForwardResponseOptions(ctx, w, resp, opts); err != nil { - handleForwardResponseStreamError(wroteHeader, marshaler, w, err) + handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err) return } - buf, err := marshaler.Marshal(streamChunk(resp, nil)) + buf, err := marshaler.Marshal(streamChunk(ctx, resp, mux.streamErrorHandler)) if err != nil { grpclog.Infof("Failed to marshal response chunk: %v", err) - handleForwardResponseStreamError(wroteHeader, marshaler, w, err) + handleForwardResponseStreamError(ctx, wroteHeader, marshaler, w, req, mux, err) return } if _, err = w.Write(buf); err != nil { @@ -124,7 +124,7 @@ func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marsha contentType := marshaler.ContentType() // Check marshaler on run time in order to keep backwards compatability - // An interface param needs to be added to the ContentType() function on + // An interface param needs to be added to the ContentType() function on // the Marshal interface to be able to remove this check if httpBodyMarshaler, ok := marshaler.(*HTTPBodyMarshaler); ok { contentType = httpBodyMarshaler.ContentTypeFromMessage(resp) @@ -168,48 +168,42 @@ func handleForwardResponseOptions(ctx context.Context, w http.ResponseWriter, re return nil } -func handleForwardResponseStreamError(wroteHeader bool, marshaler Marshaler, w http.ResponseWriter, err error) { - buf, merr := marshaler.Marshal(streamChunk(nil, err)) +func handleForwardResponseStreamError(ctx context.Context, wroteHeader bool, marshaler Marshaler, w http.ResponseWriter, req *http.Request, mux *ServeMux, err error) { + serr := streamError(ctx, mux.streamErrorHandler, err) + if !wroteHeader { + w.WriteHeader(int(serr.HttpCode)) + } + buf, merr := marshaler.Marshal(errorChunk(serr)) if merr != nil { grpclog.Infof("Failed to marshal an error: %v", merr) return } - if !wroteHeader { - s, ok := status.FromError(err) - if !ok { - s = status.New(codes.Unknown, err.Error()) - } - w.WriteHeader(HTTPStatusFromCode(s.Code())) - } if _, werr := w.Write(buf); werr != nil { grpclog.Infof("Failed to notify error to client: %v", werr) return } } -func streamChunk(result proto.Message, err error) map[string]proto.Message { - if err != nil { - grpcCode := codes.Unknown - grpcMessage := err.Error() - var grpcDetails []*any.Any - if s, ok := status.FromError(err); ok { - grpcCode = s.Code() - grpcMessage = s.Message() - grpcDetails = s.Proto().GetDetails() - } - httpCode := HTTPStatusFromCode(grpcCode) - return map[string]proto.Message{ - "error": &internal.StreamError{ - GrpcCode: int32(grpcCode), - HttpCode: int32(httpCode), - Message: grpcMessage, - HttpStatus: http.StatusText(httpCode), - Details: grpcDetails, - }, - } - } +// streamChunk returns a chunk in a response stream for the given result. The +// given errHandler is used to render an error chunk if result is nil. +func streamChunk(ctx context.Context, result proto.Message, errHandler StreamErrorHandlerFunc) map[string]proto.Message { if result == nil { - return streamChunk(nil, fmt.Errorf("empty response")) + return errorChunk(streamError(ctx, errHandler, errEmptyResponse)) } return map[string]proto.Message{"result": result} } + +// streamError returns the payload for the final message in a response stream +// that represents the given err. +func streamError(ctx context.Context, errHandler StreamErrorHandlerFunc, err error) *StreamError { + serr := errHandler(ctx, err) + if serr != nil { + return serr + } + // TODO: log about misbehaving stream error handler? + return DefaultHTTPStreamErrorHandler(ctx, err) +} + +func errorChunk(err *StreamError) map[string]proto.Message { + return map[string]proto.Message{"error": (*internal.StreamError)(err)} +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_jsonpb.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_jsonpb.go index 3530dddd0aa..f0de351b212 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_jsonpb.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/marshal_jsonpb.go @@ -151,7 +151,15 @@ func (d DecoderWrapper) Decode(v interface{}) error { // NewEncoder returns an Encoder which writes JSON stream into "w". func (j *JSONPb) NewEncoder(w io.Writer) Encoder { - return EncoderFunc(func(v interface{}) error { return j.marshalTo(w, v) }) + return EncoderFunc(func(v interface{}) error { + if err := j.marshalTo(w, v); err != nil { + return err + } + // mimic json.Encoder by adding a newline (makes output + // easier to read when it contains multiple encoded items) + _, err := w.Write(j.Delimiter()) + return err + }) } func unmarshalJSONPb(data []byte, v interface{}) error { @@ -164,7 +172,7 @@ func decodeJSONPb(d *json.Decoder, v interface{}) error { if !ok { return decodeNonProtoField(d, v) } - unmarshaler := &jsonpb.Unmarshaler{AllowUnknownFields: true} + unmarshaler := &jsonpb.Unmarshaler{AllowUnknownFields: allowUnknownFields} return unmarshaler.UnmarshalNext(d, p) } @@ -178,7 +186,7 @@ func decodeNonProtoField(d *json.Decoder, v interface{}) error { rv.Set(reflect.New(rv.Type().Elem())) } if rv.Type().ConvertibleTo(typeProtoMessage) { - unmarshaler := &jsonpb.Unmarshaler{AllowUnknownFields: true} + unmarshaler := &jsonpb.Unmarshaler{AllowUnknownFields: allowUnknownFields} return unmarshaler.UnmarshalNext(d, rv.Interface().(proto.Message)) } rv = rv.Elem() @@ -240,3 +248,15 @@ var typeProtoMessage = reflect.TypeOf((*proto.Message)(nil)).Elem() func (j *JSONPb) Delimiter() []byte { return []byte("\n") } + +// allowUnknownFields helps not to return an error when the destination +// is a struct and the input contains object keys which do not match any +// non-ignored, exported fields in the destination. +var allowUnknownFields = true + +// DisallowUnknownFields enables option in decoder (unmarshaller) to +// return an error when it finds an unknown field. This function must be +// called before using the JSON marshaller. +func DisallowUnknownFields() { + allowUnknownFields = false +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go index ec81e55b5ef..1da3a58854d 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go @@ -16,6 +16,14 @@ import ( // A HandlerFunc handles a specific pair of path pattern and HTTP method. type HandlerFunc func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) +// ErrUnknownURI is the error supplied to a custom ProtoErrorHandlerFunc when +// a request is received with a URI path that does not match any registered +// service method. +// +// Since gRPC servers return an "Unimplemented" code for requests with an +// unrecognized URI path, this error also has a gRPC "Unimplemented" code. +var ErrUnknownURI = status.Error(codes.Unimplemented, http.StatusText(http.StatusNotImplemented)) + // ServeMux is a request multiplexer for grpc-gateway. // It matches http requests to patterns and invokes the corresponding handler. type ServeMux struct { @@ -26,8 +34,10 @@ type ServeMux struct { incomingHeaderMatcher HeaderMatcherFunc outgoingHeaderMatcher HeaderMatcherFunc metadataAnnotators []func(context.Context, *http.Request) metadata.MD + streamErrorHandler StreamErrorHandlerFunc protoErrorHandler ProtoErrorHandlerFunc disablePathLengthFallback bool + lastMatchWins bool } // ServeMuxOption is an option that can be given to a ServeMux on construction. @@ -110,12 +120,36 @@ func WithDisablePathLengthFallback() ServeMuxOption { } } +// WithStreamErrorHandler returns a ServeMuxOption that will use the given custom stream +// error handler, which allows for customizing the error trailer for server-streaming +// calls. +// +// For stream errors that occur before any response has been written, the mux's +// ProtoErrorHandler will be invoked. However, once data has been written, the errors must +// be handled differently: they must be included in the response body. The response body's +// final message will include the error details returned by the stream error handler. +func WithStreamErrorHandler(fn StreamErrorHandlerFunc) ServeMuxOption { + return func(serveMux *ServeMux) { + serveMux.streamErrorHandler = fn + } +} + +// WithLastMatchWins returns a ServeMuxOption that will enable "last +// match wins" behavior, where if multiple path patterns match a +// request path, the last one defined in the .proto file will be used. +func WithLastMatchWins() ServeMuxOption { + return func(serveMux *ServeMux) { + serveMux.lastMatchWins = true + } +} + // NewServeMux returns a new ServeMux whose internal mapping is empty. func NewServeMux(opts ...ServeMuxOption) *ServeMux { serveMux := &ServeMux{ handlers: make(map[string][]handler), forwardResponseOptions: make([]func(context.Context, http.ResponseWriter, proto.Message) error, 0), marshalers: makeMarshalerMIMERegistry(), + streamErrorHandler: DefaultHTTPStreamErrorHandler, } for _, opt := range opts { @@ -149,7 +183,11 @@ func NewServeMux(opts ...ServeMuxOption) *ServeMux { // Handle associates "h" to the pair of HTTP method and path pattern. func (s *ServeMux) Handle(meth string, pat Pattern, h HandlerFunc) { - s.handlers[meth] = append(s.handlers[meth], handler{pat: pat, h: h}) + if s.lastMatchWins { + s.handlers[meth] = append([]handler{handler{pat: pat, h: h}}, s.handlers[meth]...) + } else { + s.handlers[meth] = append(s.handlers[meth], handler{pat: pat, h: h}) + } } // ServeHTTP dispatches the request to the first handler whose pattern matches to r.Method and r.Path. @@ -174,8 +212,7 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { if idx := strings.LastIndex(components[l-1], ":"); idx == 0 { if s.protoErrorHandler != nil { _, outboundMarshaler := MarshalerForRequest(s, r) - sterr := status.Error(codes.Unimplemented, http.StatusText(http.StatusNotImplemented)) - s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr) + s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, ErrUnknownURI) } else { OtherErrorHandler(w, r, http.StatusText(http.StatusNotFound), http.StatusNotFound) } @@ -235,8 +272,7 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { } if s.protoErrorHandler != nil { _, outboundMarshaler := MarshalerForRequest(s, r) - sterr := status.Error(codes.Unimplemented, http.StatusText(http.StatusMethodNotAllowed)) - s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr) + s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, ErrUnknownURI) } else { OtherErrorHandler(w, r, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed) } @@ -246,8 +282,7 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) { if s.protoErrorHandler != nil { _, outboundMarshaler := MarshalerForRequest(s, r) - sterr := status.Error(codes.Unimplemented, http.StatusText(http.StatusNotImplemented)) - s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr) + s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, ErrUnknownURI) } else { OtherErrorHandler(w, r, http.StatusText(http.StatusNotFound), http.StatusNotFound) } diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go index f16a84ad389..09053695da7 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go @@ -35,14 +35,31 @@ type Pattern struct { tailLen int // verb is the VERB part of the path pattern. It is empty if the pattern does not have VERB part. verb string + // assumeColonVerb indicates whether a path suffix after a final + // colon may only be interpreted as a verb. + assumeColonVerb bool } +type patternOptions struct { + assumeColonVerb bool +} + +// PatternOpt is an option for creating Patterns. +type PatternOpt func(*patternOptions) + // NewPattern returns a new Pattern from the given definition values. // "ops" is a sequence of op codes. "pool" is a constant pool. // "verb" is the verb part of the pattern. It is empty if the pattern does not have the part. // "version" must be 1 for now. // It returns an error if the given definition is invalid. -func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, error) { +func NewPattern(version int, ops []int, pool []string, verb string, opts ...PatternOpt) (Pattern, error) { + options := patternOptions{ + assumeColonVerb: true, + } + for _, o := range opts { + o(&options) + } + if version != 1 { grpclog.Infof("unsupported version: %d", version) return Pattern{}, ErrInvalidPattern @@ -122,12 +139,13 @@ func NewPattern(version int, ops []int, pool []string, verb string) (Pattern, er typedOps = append(typedOps, op) } return Pattern{ - ops: typedOps, - pool: pool, - vars: vars, - stacksize: maxstack, - tailLen: tailLen, - verb: verb, + ops: typedOps, + pool: pool, + vars: vars, + stacksize: maxstack, + tailLen: tailLen, + verb: verb, + assumeColonVerb: options.assumeColonVerb, }, nil } @@ -144,7 +162,16 @@ func MustPattern(p Pattern, err error) Pattern { // If otherwise, the function returns an error. func (p Pattern) Match(components []string, verb string) (map[string]string, error) { if p.verb != verb { - return nil, ErrNotMatch + if p.assumeColonVerb || p.verb != "" { + return nil, ErrNotMatch + } + if len(components) == 0 { + components = []string{":" + verb} + } else { + components = append([]string{}, components...) + components[len(components)-1] += ":" + verb + } + verb = "" } var pos int @@ -225,3 +252,11 @@ func (p Pattern) String() string { } return "/" + segs } + +// AssumeColonVerbOpt indicates whether a path suffix after a final +// colon may only be interpreted as a verb. +func AssumeColonVerbOpt(val bool) PatternOpt { + return PatternOpt(func(o *patternOptions) { + o.assumeColonVerb = val + }) +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go index b7fa32e45db..ca76324efb1 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go @@ -1,15 +1,25 @@ package runtime import ( + "context" "io" "net/http" - "context" + "github.com/golang/protobuf/ptypes/any" + "github.com/grpc-ecosystem/grpc-gateway/internal" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/status" ) +// StreamErrorHandlerFunc accepts an error as a gRPC error generated via status package and translates it into a +// a proto struct used to represent error at the end of a stream. +type StreamErrorHandlerFunc func(context.Context, error) *StreamError + +// StreamError is the payload for the final message in a server stream in the event that the server returns an +// error after a response message has already been sent. +type StreamError internal.StreamError + // ProtoErrorHandlerFunc handles the error as a gRPC error generated via status package and replies to the request. type ProtoErrorHandlerFunc func(context.Context, *ServeMux, Marshaler, http.ResponseWriter, *http.Request, error) @@ -35,7 +45,7 @@ func DefaultHTTPProtoErrorHandler(ctx context.Context, mux *ServeMux, marshaler contentType := marshaler.ContentType() // Check marshaler on run time in order to keep backwards compatability - // An interface param needs to be added to the ContentType() function on + // An interface param needs to be added to the ContentType() function on // the Marshal interface to be able to remove this check if httpBodyMarshaler, ok := marshaler.(*HTTPBodyMarshaler); ok { pb := s.Proto() @@ -68,3 +78,29 @@ func DefaultHTTPProtoErrorHandler(ctx context.Context, mux *ServeMux, marshaler handleForwardResponseTrailer(w, md) } + +// DefaultHTTPStreamErrorHandler converts the given err into a *StreamError via +// default logic. +// +// It extracts the gRPC status from err if possible. The fields of the status are +// used to populate the returned StreamError, and the HTTP status code is derived +// from the gRPC code via HTTPStatusFromCode. If the given err does not contain a +// gRPC status, an "Unknown" gRPC code is used and "Internal Server Error" HTTP code. +func DefaultHTTPStreamErrorHandler(_ context.Context, err error) *StreamError { + grpcCode := codes.Unknown + grpcMessage := err.Error() + var grpcDetails []*any.Any + if s, ok := status.FromError(err); ok { + grpcCode = s.Code() + grpcMessage = s.Message() + grpcDetails = s.Proto().GetDetails() + } + httpCode := HTTPStatusFromCode(grpcCode) + return &StreamError{ + GrpcCode: int32(grpcCode), + HttpCode: int32(httpCode), + Message: grpcMessage, + HttpStatus: http.StatusText(httpCode), + Details: grpcDetails, + } +} diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go index bb9359f17c0..ee0207e461e 100644 --- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go +++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go @@ -15,15 +15,13 @@ import ( "google.golang.org/grpc/grpclog" ) +var valuesKeyRegexp = regexp.MustCompile("^(.*)\\[(.*)\\]$") + // PopulateQueryParameters populates "values" into "msg". // A value is ignored if its key starts with one of the elements in "filter". func PopulateQueryParameters(msg proto.Message, values url.Values, filter *utilities.DoubleArray) error { for key, values := range values { - re, err := regexp.Compile("^(.*)\\[(.*)\\]$") - if err != nil { - return err - } - match := re.FindStringSubmatch(key) + match := valuesKeyRegexp.FindStringSubmatch(key) if len(match) == 3 { key = match[1] values = append([]string{match[2]}, values...) @@ -202,103 +200,102 @@ func populateField(f reflect.Value, value string, props *proto.Properties) error i := f.Addr().Interface() // Handle protobuf well known types - type wkt interface { - XXX_WellKnownType() string + var name string + switch m := i.(type) { + case interface{ XXX_WellKnownType() string }: + name = m.XXX_WellKnownType() + case proto.Message: + const wktPrefix = "google.protobuf." + if fullName := proto.MessageName(m); strings.HasPrefix(fullName, wktPrefix) { + name = fullName[len(wktPrefix):] + } } - if wkt, ok := i.(wkt); ok { - switch wkt.XXX_WellKnownType() { - case "Timestamp": - if value == "null" { - f.Field(0).SetInt(0) - f.Field(1).SetInt(0) - return nil - } - - t, err := time.Parse(time.RFC3339Nano, value) - if err != nil { - return fmt.Errorf("bad Timestamp: %v", err) - } - f.Field(0).SetInt(int64(t.Unix())) - f.Field(1).SetInt(int64(t.Nanosecond())) + switch name { + case "Timestamp": + if value == "null" { + f.FieldByName("Seconds").SetInt(0) + f.FieldByName("Nanos").SetInt(0) return nil - case "Duration": - if value == "null" { - f.Field(0).SetInt(0) - f.Field(1).SetInt(0) - return nil - } - d, err := time.ParseDuration(value) - if err != nil { - return fmt.Errorf("bad Duration: %v", err) - } + } - ns := d.Nanoseconds() - s := ns / 1e9 - ns %= 1e9 - f.Field(0).SetInt(s) - f.Field(1).SetInt(ns) - return nil - case "DoubleValue": - fallthrough - case "FloatValue": - float64Val, err := strconv.ParseFloat(value, 64) - if err != nil { - return fmt.Errorf("bad DoubleValue: %s", value) - } - f.Field(0).SetFloat(float64Val) - return nil - case "Int64Value": - fallthrough - case "Int32Value": - int64Val, err := strconv.ParseInt(value, 10, 64) - if err != nil { - return fmt.Errorf("bad DoubleValue: %s", value) - } - f.Field(0).SetInt(int64Val) - return nil - case "UInt64Value": - fallthrough - case "UInt32Value": - uint64Val, err := strconv.ParseUint(value, 10, 64) - if err != nil { - return fmt.Errorf("bad DoubleValue: %s", value) - } - f.Field(0).SetUint(uint64Val) - return nil - case "BoolValue": - if value == "true" { - f.Field(0).SetBool(true) - } else if value == "false" { - f.Field(0).SetBool(false) - } else { - return fmt.Errorf("bad BoolValue: %s", value) - } - return nil - case "StringValue": - f.Field(0).SetString(value) - return nil - case "BytesValue": - bytesVal, err := base64.StdEncoding.DecodeString(value) - if err != nil { - return fmt.Errorf("bad BytesValue: %s", value) - } - f.Field(0).SetBytes(bytesVal) + t, err := time.Parse(time.RFC3339Nano, value) + if err != nil { + return fmt.Errorf("bad Timestamp: %v", err) + } + f.FieldByName("Seconds").SetInt(int64(t.Unix())) + f.FieldByName("Nanos").SetInt(int64(t.Nanosecond())) + return nil + case "Duration": + if value == "null" { + f.FieldByName("Seconds").SetInt(0) + f.FieldByName("Nanos").SetInt(0) return nil } - } + d, err := time.ParseDuration(value) + if err != nil { + return fmt.Errorf("bad Duration: %v", err) + } - // Handle google well known types - if gwkt, ok := i.(proto.Message); ok { - switch proto.MessageName(gwkt) { - case "google.protobuf.FieldMask": - p := f.Field(0) - for _, v := range strings.Split(value, ",") { - if v != "" { - p.Set(reflect.Append(p, reflect.ValueOf(v))) - } + ns := d.Nanoseconds() + s := ns / 1e9 + ns %= 1e9 + f.FieldByName("Seconds").SetInt(s) + f.FieldByName("Nanos").SetInt(ns) + return nil + case "DoubleValue": + fallthrough + case "FloatValue": + float64Val, err := strconv.ParseFloat(value, 64) + if err != nil { + return fmt.Errorf("bad DoubleValue: %s", value) + } + f.FieldByName("Value").SetFloat(float64Val) + return nil + case "Int64Value": + fallthrough + case "Int32Value": + int64Val, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return fmt.Errorf("bad DoubleValue: %s", value) + } + f.FieldByName("Value").SetInt(int64Val) + return nil + case "UInt64Value": + fallthrough + case "UInt32Value": + uint64Val, err := strconv.ParseUint(value, 10, 64) + if err != nil { + return fmt.Errorf("bad DoubleValue: %s", value) + } + f.FieldByName("Value").SetUint(uint64Val) + return nil + case "BoolValue": + if value == "true" { + f.FieldByName("Value").SetBool(true) + } else if value == "false" { + f.FieldByName("Value").SetBool(false) + } else { + return fmt.Errorf("bad BoolValue: %s", value) + } + return nil + case "StringValue": + f.FieldByName("Value").SetString(value) + return nil + case "BytesValue": + bytesVal, err := base64.StdEncoding.DecodeString(value) + if err != nil { + return fmt.Errorf("bad BytesValue: %s", value) + } + f.FieldByName("Value").SetBytes(bytesVal) + return nil + case "FieldMask": + p := f.FieldByName("Paths") + for _, v := range strings.Split(value, ",") { + if v != "" { + p.Set(reflect.Append(p, reflect.ValueOf(v))) } - return nil } + return nil } // Handle Time and Duration stdlib types diff --git a/vendor/github.com/imdario/mergo/.travis.yml b/vendor/github.com/imdario/mergo/.travis.yml index b13a50ed1fb..dad29725f86 100644 --- a/vendor/github.com/imdario/mergo/.travis.yml +++ b/vendor/github.com/imdario/mergo/.travis.yml @@ -4,4 +4,6 @@ install: - go get golang.org/x/tools/cmd/cover - go get github.com/mattn/goveralls script: + - go test -race -v ./... +after_script: - $HOME/gopath/bin/goveralls -service=travis-ci -repotoken $COVERALLS_TOKEN diff --git a/vendor/github.com/imdario/mergo/merge.go b/vendor/github.com/imdario/mergo/merge.go index f8de6c54305..3fb6c64d05b 100644 --- a/vendor/github.com/imdario/mergo/merge.go +++ b/vendor/github.com/imdario/mergo/merge.go @@ -26,10 +26,12 @@ func hasExportedField(dst reflect.Value) (exported bool) { } type Config struct { - Overwrite bool - AppendSlice bool - Transformers Transformers - overwriteWithEmptyValue bool + Overwrite bool + AppendSlice bool + TypeCheck bool + Transformers Transformers + overwriteWithEmptyValue bool + overwriteSliceWithEmptyValue bool } type Transformers interface { @@ -41,7 +43,9 @@ type Transformers interface { // short circuiting on recursive types. func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, config *Config) (err error) { overwrite := config.Overwrite + typeCheck := config.TypeCheck overwriteWithEmptySrc := config.overwriteWithEmptyValue + overwriteSliceWithEmptySrc := config.overwriteSliceWithEmptyValue config.overwriteWithEmptyValue = false if !src.IsValid() { @@ -128,11 +132,14 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co dstSlice = reflect.ValueOf(dstElement.Interface()) } - if (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if typeCheck && srcSlice.Type() != dstSlice.Type() { + return fmt.Errorf("cannot override two slices with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) + } dstSlice = srcSlice } else if config.AppendSlice { if srcSlice.Type() != dstSlice.Type() { - return fmt.Errorf("cannot append two slice with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) + return fmt.Errorf("cannot append two slices with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) } dstSlice = reflect.AppendSlice(dstSlice, srcSlice) } @@ -143,7 +150,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co continue } - if srcElement.IsValid() && (overwrite || (!dstElement.IsValid() || isEmptyValue(dstElement))) { + if srcElement.IsValid() && ((srcElement.Kind() != reflect.Ptr && overwrite) || !dstElement.IsValid() || isEmptyValue(dstElement)) { if dst.IsNil() { dst.Set(reflect.MakeMap(dst.Type())) } @@ -154,7 +161,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if !dst.CanSet() { break } - if (!isEmptyValue(src) || overwriteWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { + if (!isEmptyValue(src) || overwriteWithEmptySrc || overwriteSliceWithEmptySrc) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { dst.Set(src) } else if config.AppendSlice { if src.Type() != dst.Type() { @@ -168,11 +175,21 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if src.IsNil() { break } - if src.Kind() != reflect.Interface { + + if dst.Kind() != reflect.Ptr && src.Type().AssignableTo(dst.Type()) { if dst.IsNil() || overwrite { if dst.CanSet() && (overwrite || isEmptyValue(dst)) { dst.Set(src) } + } + break + } + + if src.Kind() != reflect.Interface { + if dst.IsNil() || (src.Kind() != reflect.Ptr && overwrite) { + if dst.CanSet() && (overwrite || isEmptyValue(dst)) { + dst.Set(src) + } } else if src.Kind() == reflect.Ptr { if err = deepMerge(dst.Elem(), src.Elem(), visited, depth+1, config); err != nil { return @@ -198,6 +215,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co dst.Set(src) } } + return } @@ -209,7 +227,7 @@ func Merge(dst, src interface{}, opts ...func(*Config)) error { return merge(dst, src, opts...) } -// MergeWithOverwrite will do the same as Merge except that non-empty dst attributes will be overriden by +// MergeWithOverwrite will do the same as Merge except that non-empty dst attributes will be overridden by // non-empty src attribute values. // Deprecated: use Merge(…) with WithOverride func MergeWithOverwrite(dst, src interface{}, opts ...func(*Config)) error { @@ -228,11 +246,21 @@ func WithOverride(config *Config) { config.Overwrite = true } -// WithAppendSlice will make merge append slices instead of overwriting it +// WithOverride will make merge override empty dst slice with empty src slice. +func WithOverrideEmptySlice(config *Config) { + config.overwriteSliceWithEmptyValue = true +} + +// WithAppendSlice will make merge append slices instead of overwriting it. func WithAppendSlice(config *Config) { config.AppendSlice = true } +// WithTypeCheck will make merge check types while overwriting it (must be used with WithOverride). +func WithTypeCheck(config *Config) { + config.TypeCheck = true +} + func merge(dst, src interface{}, opts ...func(*Config)) error { var ( vDst, vSrc reflect.Value diff --git a/vendor/github.com/jstemmer/go-junit-report/.gitignore b/vendor/github.com/jstemmer/go-junit-report/.gitignore new file mode 100644 index 00000000000..720bda6070d --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/.gitignore @@ -0,0 +1 @@ +go-junit-report diff --git a/vendor/github.com/jstemmer/go-junit-report/.travis.yml b/vendor/github.com/jstemmer/go-junit-report/.travis.yml new file mode 100644 index 00000000000..d0dff3ef8e5 --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/.travis.yml @@ -0,0 +1,16 @@ +language: go + +go: + - tip + - "1.13.x" + - "1.12.x" + - "1.11.x" + - "1.10.x" + - "1.9.x" + - "1.8.x" + - "1.7.x" + - "1.6.x" + - "1.5.x" + - "1.4.x" + - "1.3.x" + - "1.2.x" diff --git a/vendor/github.com/jstemmer/go-junit-report/LICENSE b/vendor/github.com/jstemmer/go-junit-report/LICENSE new file mode 100644 index 00000000000..f346564cefd --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2012 Joel Stemmer + +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/jstemmer/go-junit-report/README.md b/vendor/github.com/jstemmer/go-junit-report/README.md new file mode 100644 index 00000000000..5b5f608be3d --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/README.md @@ -0,0 +1,49 @@ +# go-junit-report + +Converts `go test` output to an xml report, suitable for applications that +expect junit xml reports (e.g. [Jenkins](http://jenkins-ci.org)). + +[![Build Status][travis-badge]][travis-link] +[![Report Card][report-badge]][report-link] + +## Installation + +Go version 1.2 or higher is required. Install or update using the `go get` +command: + +```bash +go get -u github.com/jstemmer/go-junit-report +``` + +## Usage + +go-junit-report reads the `go test` verbose output from standard in and writes +junit compatible XML to standard out. + +```bash +go test -v 2>&1 | go-junit-report > report.xml +``` + +Note that it also can parse benchmark output with `-bench` flag: +```bash +go test -v -bench . -count 5 2>&1 | go-junit-report > report.xml +``` + +## Contribution + +Create an Issue and discuss the fix or feature, then fork the package. +Clone to github.com/jstemmer/go-junit-report. This is necessary because go import uses this path. +Fix or implement feature. Test and then commit change. +Specify #Issue and describe change in the commit message. +Create Pull Request. It can be merged by owner or administrator then. + +### Run Tests + +```bash +go test +``` + +[travis-badge]: https://travis-ci.org/jstemmer/go-junit-report.svg +[travis-link]: https://travis-ci.org/jstemmer/go-junit-report +[report-badge]: https://goreportcard.com/badge/github.com/jstemmer/go-junit-report +[report-link]: https://goreportcard.com/report/github.com/jstemmer/go-junit-report diff --git a/vendor/github.com/jstemmer/go-junit-report/formatter/formatter.go b/vendor/github.com/jstemmer/go-junit-report/formatter/formatter.go new file mode 100644 index 00000000000..6e1a0f31d68 --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/formatter/formatter.go @@ -0,0 +1,182 @@ +package formatter + +import ( + "bufio" + "encoding/xml" + "fmt" + "io" + "runtime" + "strings" + "time" + + "github.com/jstemmer/go-junit-report/parser" +) + +// JUnitTestSuites is a collection of JUnit test suites. +type JUnitTestSuites struct { + XMLName xml.Name `xml:"testsuites"` + Suites []JUnitTestSuite `xml:"testsuite"` +} + +// JUnitTestSuite is a single JUnit test suite which may contain many +// testcases. +type JUnitTestSuite struct { + XMLName xml.Name `xml:"testsuite"` + Tests int `xml:"tests,attr"` + Failures int `xml:"failures,attr"` + Time string `xml:"time,attr"` + Name string `xml:"name,attr"` + Properties []JUnitProperty `xml:"properties>property,omitempty"` + TestCases []JUnitTestCase `xml:"testcase"` +} + +// JUnitTestCase is a single test case with its result. +type JUnitTestCase struct { + XMLName xml.Name `xml:"testcase"` + Classname string `xml:"classname,attr"` + Name string `xml:"name,attr"` + Time string `xml:"time,attr"` + SkipMessage *JUnitSkipMessage `xml:"skipped,omitempty"` + Failure *JUnitFailure `xml:"failure,omitempty"` +} + +// JUnitSkipMessage contains the reason why a testcase was skipped. +type JUnitSkipMessage struct { + Message string `xml:"message,attr"` +} + +// JUnitProperty represents a key/value pair used to define properties. +type JUnitProperty struct { + Name string `xml:"name,attr"` + Value string `xml:"value,attr"` +} + +// JUnitFailure contains data related to a failed test. +type JUnitFailure struct { + Message string `xml:"message,attr"` + Type string `xml:"type,attr"` + Contents string `xml:",chardata"` +} + +// JUnitReportXML writes a JUnit xml representation of the given report to w +// in the format described at http://windyroad.org/dl/Open%20Source/JUnit.xsd +func JUnitReportXML(report *parser.Report, noXMLHeader bool, goVersion string, w io.Writer) error { + suites := JUnitTestSuites{} + + // convert Report to JUnit test suites + for _, pkg := range report.Packages { + pkg.Benchmarks = mergeBenchmarks(pkg.Benchmarks) + ts := JUnitTestSuite{ + Tests: len(pkg.Tests) + len(pkg.Benchmarks), + Failures: 0, + Time: formatTime(pkg.Duration), + Name: pkg.Name, + Properties: []JUnitProperty{}, + TestCases: []JUnitTestCase{}, + } + + classname := pkg.Name + if idx := strings.LastIndex(classname, "/"); idx > -1 && idx < len(pkg.Name) { + classname = pkg.Name[idx+1:] + } + + // properties + if goVersion == "" { + // if goVersion was not specified as a flag, fall back to version reported by runtime + goVersion = runtime.Version() + } + ts.Properties = append(ts.Properties, JUnitProperty{"go.version", goVersion}) + if pkg.CoveragePct != "" { + ts.Properties = append(ts.Properties, JUnitProperty{"coverage.statements.pct", pkg.CoveragePct}) + } + + // individual test cases + for _, test := range pkg.Tests { + testCase := JUnitTestCase{ + Classname: classname, + Name: test.Name, + Time: formatTime(test.Duration), + Failure: nil, + } + + if test.Result == parser.FAIL { + ts.Failures++ + testCase.Failure = &JUnitFailure{ + Message: "Failed", + Type: "", + Contents: strings.Join(test.Output, "\n"), + } + } + + if test.Result == parser.SKIP { + testCase.SkipMessage = &JUnitSkipMessage{strings.Join(test.Output, "\n")} + } + + ts.TestCases = append(ts.TestCases, testCase) + } + + // individual benchmarks + for _, benchmark := range pkg.Benchmarks { + benchmarkCase := JUnitTestCase{ + Classname: classname, + Name: benchmark.Name, + Time: formatBenchmarkTime(benchmark.Duration), + } + + ts.TestCases = append(ts.TestCases, benchmarkCase) + } + + suites.Suites = append(suites.Suites, ts) + } + + // to xml + bytes, err := xml.MarshalIndent(suites, "", "\t") + if err != nil { + return err + } + + writer := bufio.NewWriter(w) + + if !noXMLHeader { + writer.WriteString(xml.Header) + } + + writer.Write(bytes) + writer.WriteByte('\n') + writer.Flush() + + return nil +} + +func mergeBenchmarks(benchmarks []*parser.Benchmark) []*parser.Benchmark { + var merged []*parser.Benchmark + benchmap := make(map[string][]*parser.Benchmark) + for _, bm := range benchmarks { + if _, ok := benchmap[bm.Name]; !ok { + merged = append(merged, &parser.Benchmark{Name: bm.Name}) + } + benchmap[bm.Name] = append(benchmap[bm.Name], bm) + } + + for _, bm := range merged { + for _, b := range benchmap[bm.Name] { + bm.Allocs += b.Allocs + bm.Bytes += b.Bytes + bm.Duration += b.Duration + } + n := len(benchmap[bm.Name]) + bm.Allocs /= n + bm.Bytes /= n + bm.Duration /= time.Duration(n) + } + + return merged +} + +func formatTime(d time.Duration) string { + return fmt.Sprintf("%.3f", d.Seconds()) +} + +func formatBenchmarkTime(d time.Duration) string { + return fmt.Sprintf("%.9f", d.Seconds()) +} diff --git a/vendor/github.com/jstemmer/go-junit-report/go-junit-report.go b/vendor/github.com/jstemmer/go-junit-report/go-junit-report.go new file mode 100644 index 00000000000..1332f3b65b1 --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/go-junit-report.go @@ -0,0 +1,45 @@ +package main + +import ( + "flag" + "fmt" + "os" + + "github.com/jstemmer/go-junit-report/formatter" + "github.com/jstemmer/go-junit-report/parser" +) + +var ( + noXMLHeader = flag.Bool("no-xml-header", false, "do not print xml header") + packageName = flag.String("package-name", "", "specify a package name (compiled test have no package name in output)") + goVersionFlag = flag.String("go-version", "", "specify the value to use for the go.version property in the generated XML") + setExitCode = flag.Bool("set-exit-code", false, "set exit code to 1 if tests failed") +) + +func main() { + flag.Parse() + + if flag.NArg() != 0 { + fmt.Fprintf(os.Stderr, "%s does not accept positional arguments\n", os.Args[0]) + flag.Usage() + os.Exit(1) + } + + // Read input + report, err := parser.Parse(os.Stdin, *packageName) + if err != nil { + fmt.Printf("Error reading input: %s\n", err) + os.Exit(1) + } + + // Write xml + err = formatter.JUnitReportXML(report, *noXMLHeader, *goVersionFlag, os.Stdout) + if err != nil { + fmt.Printf("Error writing XML: %s\n", err) + os.Exit(1) + } + + if *setExitCode && report.Failures() > 0 { + os.Exit(1) + } +} diff --git a/vendor/github.com/jstemmer/go-junit-report/go.mod b/vendor/github.com/jstemmer/go-junit-report/go.mod new file mode 100644 index 00000000000..de52369acc9 --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/go.mod @@ -0,0 +1,3 @@ +module github.com/jstemmer/go-junit-report + +go 1.2 diff --git a/vendor/github.com/jstemmer/go-junit-report/parser/parser.go b/vendor/github.com/jstemmer/go-junit-report/parser/parser.go new file mode 100644 index 00000000000..e268128a2dc --- /dev/null +++ b/vendor/github.com/jstemmer/go-junit-report/parser/parser.go @@ -0,0 +1,319 @@ +package parser + +import ( + "bufio" + "io" + "regexp" + "strconv" + "strings" + "time" +) + +// Result represents a test result. +type Result int + +// Test result constants +const ( + PASS Result = iota + FAIL + SKIP +) + +// Report is a collection of package tests. +type Report struct { + Packages []Package +} + +// Package contains the test results of a single package. +type Package struct { + Name string + Duration time.Duration + Tests []*Test + Benchmarks []*Benchmark + CoveragePct string + + // Time is deprecated, use Duration instead. + Time int // in milliseconds +} + +// Test contains the results of a single test. +type Test struct { + Name string + Duration time.Duration + Result Result + Output []string + + SubtestIndent string + + // Time is deprecated, use Duration instead. + Time int // in milliseconds +} + +// Benchmark contains the results of a single benchmark. +type Benchmark struct { + Name string + Duration time.Duration + // number of B/op + Bytes int + // number of allocs/op + Allocs int +} + +var ( + regexStatus = regexp.MustCompile(`--- (PASS|FAIL|SKIP): (.+) \((\d+\.\d+)(?: seconds|s)\)`) + regexIndent = regexp.MustCompile(`^([ \t]+)---`) + regexCoverage = regexp.MustCompile(`^coverage:\s+(\d+\.\d+)%\s+of\s+statements(?:\sin\s.+)?$`) + regexResult = regexp.MustCompile(`^(ok|FAIL)\s+([^ ]+)\s+(?:(\d+\.\d+)s|\(cached\)|(\[\w+ failed]))(?:\s+coverage:\s+(\d+\.\d+)%\sof\sstatements(?:\sin\s.+)?)?$`) + // regexBenchmark captures 3-5 groups: benchmark name, number of times ran, ns/op (with or without decimal), B/op (optional), and allocs/op (optional). + regexBenchmark = regexp.MustCompile(`^(Benchmark[^ -]+)(?:-\d+\s+|\s+)(\d+)\s+(\d+|\d+\.\d+)\sns/op(?:\s+(\d+)\sB/op)?(?:\s+(\d+)\sallocs/op)?`) + regexOutput = regexp.MustCompile(`( )*\t(.*)`) + regexSummary = regexp.MustCompile(`^(PASS|FAIL|SKIP)$`) + regexPackageWithTest = regexp.MustCompile(`^# ([^\[\]]+) \[[^\]]+\]$`) +) + +// Parse parses go test output from reader r and returns a report with the +// results. An optional pkgName can be given, which is used in case a package +// result line is missing. +func Parse(r io.Reader, pkgName string) (*Report, error) { + reader := bufio.NewReader(r) + + report := &Report{make([]Package, 0)} + + // keep track of tests we find + var tests []*Test + + // keep track of benchmarks we find + var benchmarks []*Benchmark + + // sum of tests' time, use this if current test has no result line (when it is compiled test) + var testsTime time.Duration + + // current test + var cur string + + // coverage percentage report for current package + var coveragePct string + + // stores mapping between package name and output of build failures + var packageCaptures = map[string][]string{} + + // the name of the package which it's build failure output is being captured + var capturedPackage string + + // capture any non-test output + var buffers = map[string][]string{} + + // parse lines + for { + l, _, err := reader.ReadLine() + if err != nil && err == io.EOF { + break + } else if err != nil { + return nil, err + } + + line := string(l) + + if strings.HasPrefix(line, "=== RUN ") { + // new test + cur = strings.TrimSpace(line[8:]) + tests = append(tests, &Test{ + Name: cur, + Result: FAIL, + Output: make([]string, 0), + }) + + // clear the current build package, so output lines won't be added to that build + capturedPackage = "" + } else if matches := regexBenchmark.FindStringSubmatch(line); len(matches) == 6 { + bytes, _ := strconv.Atoi(matches[4]) + allocs, _ := strconv.Atoi(matches[5]) + + benchmarks = append(benchmarks, &Benchmark{ + Name: matches[1], + Duration: parseNanoseconds(matches[3]), + Bytes: bytes, + Allocs: allocs, + }) + } else if strings.HasPrefix(line, "=== PAUSE ") { + continue + } else if strings.HasPrefix(line, "=== CONT ") { + cur = strings.TrimSpace(line[8:]) + continue + } else if matches := regexResult.FindStringSubmatch(line); len(matches) == 6 { + if matches[5] != "" { + coveragePct = matches[5] + } + if strings.HasSuffix(matches[4], "failed]") { + // the build of the package failed, inject a dummy test into the package + // which indicate about the failure and contain the failure description. + tests = append(tests, &Test{ + Name: matches[4], + Result: FAIL, + Output: packageCaptures[matches[2]], + }) + } else if matches[1] == "FAIL" && !containsFailures(tests) && len(buffers[cur]) > 0 { + // This package didn't have any failing tests, but still it + // failed with some output. Create a dummy test with the + // output. + tests = append(tests, &Test{ + Name: "Failure", + Result: FAIL, + Output: buffers[cur], + }) + buffers[cur] = buffers[cur][0:0] + } + + // all tests in this package are finished + report.Packages = append(report.Packages, Package{ + Name: matches[2], + Duration: parseSeconds(matches[3]), + Tests: tests, + Benchmarks: benchmarks, + CoveragePct: coveragePct, + + Time: int(parseSeconds(matches[3]) / time.Millisecond), // deprecated + }) + + buffers[cur] = buffers[cur][0:0] + tests = make([]*Test, 0) + benchmarks = make([]*Benchmark, 0) + coveragePct = "" + cur = "" + testsTime = 0 + } else if matches := regexStatus.FindStringSubmatch(line); len(matches) == 4 { + cur = matches[2] + test := findTest(tests, cur) + if test == nil { + continue + } + + // test status + if matches[1] == "PASS" { + test.Result = PASS + } else if matches[1] == "SKIP" { + test.Result = SKIP + } else { + test.Result = FAIL + } + + if matches := regexIndent.FindStringSubmatch(line); len(matches) == 2 { + test.SubtestIndent = matches[1] + } + + test.Output = buffers[cur] + + test.Name = matches[2] + test.Duration = parseSeconds(matches[3]) + testsTime += test.Duration + + test.Time = int(test.Duration / time.Millisecond) // deprecated + } else if matches := regexCoverage.FindStringSubmatch(line); len(matches) == 2 { + coveragePct = matches[1] + } else if matches := regexOutput.FindStringSubmatch(line); capturedPackage == "" && len(matches) == 3 { + // Sub-tests start with one or more series of 4-space indents, followed by a hard tab, + // followed by the test output + // Top-level tests start with a hard tab. + test := findTest(tests, cur) + if test == nil { + continue + } + test.Output = append(test.Output, matches[2]) + } else if strings.HasPrefix(line, "# ") { + // indicates a capture of build output of a package. set the current build package. + packageWithTestBinary := regexPackageWithTest.FindStringSubmatch(line) + if packageWithTestBinary != nil { + // Sometimes, the text after "# " shows the name of the test binary + // (".test") in addition to the package + // e.g.: "# package/name [package/name.test]" + capturedPackage = packageWithTestBinary[1] + } else { + capturedPackage = line[2:] + } + } else if capturedPackage != "" { + // current line is build failure capture for the current built package + packageCaptures[capturedPackage] = append(packageCaptures[capturedPackage], line) + } else if regexSummary.MatchString(line) { + // unset current test name so any additional output after the + // summary is captured separately. + cur = "" + } else { + // buffer anything else that we didn't recognize + buffers[cur] = append(buffers[cur], line) + + // if we have a current test, also append to its output + test := findTest(tests, cur) + if test != nil { + if strings.HasPrefix(line, test.SubtestIndent+" ") { + test.Output = append(test.Output, strings.TrimPrefix(line, test.SubtestIndent+" ")) + } + } + } + } + + if len(tests) > 0 { + // no result line found + report.Packages = append(report.Packages, Package{ + Name: pkgName, + Duration: testsTime, + Time: int(testsTime / time.Millisecond), + Tests: tests, + Benchmarks: benchmarks, + CoveragePct: coveragePct, + }) + } + + return report, nil +} + +func parseSeconds(t string) time.Duration { + if t == "" { + return time.Duration(0) + } + // ignore error + d, _ := time.ParseDuration(t + "s") + return d +} + +func parseNanoseconds(t string) time.Duration { + // note: if input < 1 ns precision, result will be 0s. + if t == "" { + return time.Duration(0) + } + // ignore error + d, _ := time.ParseDuration(t + "ns") + return d +} + +func findTest(tests []*Test, name string) *Test { + for i := len(tests) - 1; i >= 0; i-- { + if tests[i].Name == name { + return tests[i] + } + } + return nil +} + +func containsFailures(tests []*Test) bool { + for _, test := range tests { + if test.Result == FAIL { + return true + } + } + return false +} + +// Failures counts the number of failed tests in this report +func (r *Report) Failures() int { + count := 0 + + for _, p := range r.Packages { + for _, t := range p.Tests { + if t.Result == FAIL { + count++ + } + } + } + + return count +} diff --git a/vendor/github.com/karrick/godirwalk/README.md b/vendor/github.com/karrick/godirwalk/README.md index dfe5406604b..e2ba74c782f 100644 --- a/vendor/github.com/karrick/godirwalk/README.md +++ b/vendor/github.com/karrick/godirwalk/README.md @@ -54,9 +54,9 @@ How does it obtain this performance boost? It does less work to give you nearly the same output. This library calls the same `syscall` functions to do the work, but it makes fewer calls, does not throw away information that it might need, and creates less memory churn -along the way by reusing the same scratch buffer rather than -reallocating a new buffer every time it reads data from the operating -system. +along the way by reusing the same scratch buffer for reading from a +directory rather than reallocating a new buffer every time it reads +file system entry data from the operating system. While traversing a file system directory tree, `filepath.Walk` obtains the list of immediate descendants of a directory, and throws away the @@ -85,31 +85,37 @@ entire `os.FileInfo` data structure, the callback can easiy invoke ##### macOS ```Bash -go test -bench=. +$ go test -bench=. -benchmem goos: darwin goarch: amd64 pkg: github.com/karrick/godirwalk -BenchmarkFilepathWalk-8 1 3001274570 ns/op -BenchmarkGoDirWalk-8 3 465573172 ns/op -BenchmarkFlameGraphFilepathWalk-8 1 6957916936 ns/op -BenchmarkFlameGraphGoDirWalk-8 1 4210582571 ns/op +BenchmarkReadDirnamesStandardLibrary-12 50000 26250 ns/op 10360 B/op 16 allocs/op +BenchmarkReadDirnamesThisLibrary-12 50000 24372 ns/op 5064 B/op 20 allocs/op +BenchmarkFilepathWalk-12 1 1099524875 ns/op 228415912 B/op 416952 allocs/op +BenchmarkGodirwalk-12 2 526754589 ns/op 103110464 B/op 451442 allocs/op +BenchmarkGodirwalkUnsorted-12 3 509219296 ns/op 100751400 B/op 378800 allocs/op +BenchmarkFlameGraphFilepathWalk-12 1 7478618820 ns/op 2284138176 B/op 4169453 allocs/op +BenchmarkFlameGraphGodirwalk-12 1 4977264058 ns/op 1031105328 B/op 4514423 allocs/op PASS -ok github.com/karrick/godirwalk 16.822s +ok github.com/karrick/godirwalk 21.219s ``` ##### Linux ```Bash -go test -bench=. +$ go test -bench=. -benchmem goos: linux goarch: amd64 pkg: github.com/karrick/godirwalk -BenchmarkFilepathWalk-12 1 1609189170 ns/op -BenchmarkGoDirWalk-12 5 211336628 ns/op -BenchmarkFlameGraphFilepathWalk-12 1 3968119932 ns/op -BenchmarkFlameGraphGoDirWalk-12 1 2139598998 ns/op +BenchmarkReadDirnamesStandardLibrary-12 100000 15458 ns/op 10360 B/op 16 allocs/op +BenchmarkReadDirnamesThisLibrary-12 100000 14646 ns/op 5064 B/op 20 allocs/op +BenchmarkFilepathWalk-12 2 631034745 ns/op 228210216 B/op 416939 allocs/op +BenchmarkGodirwalk-12 3 358714883 ns/op 102988664 B/op 451437 allocs/op +BenchmarkGodirwalkUnsorted-12 3 355363915 ns/op 100629234 B/op 378796 allocs/op +BenchmarkFlameGraphFilepathWalk-12 1 6086913991 ns/op 2282104720 B/op 4169417 allocs/op +BenchmarkFlameGraphGodirwalk-12 1 3456398824 ns/op 1029886400 B/op 4514373 allocs/op PASS -ok github.com/karrick/godirwalk 9.007s +ok github.com/karrick/godirwalk 19.179s ``` ### It's more correct on Windows than `filepath.Walk` @@ -183,11 +189,13 @@ can be invoked in manner to do so, by setting the The default behavior of this library is to always sort the immediate descendants of a directory prior to visiting each node, just like `filepath.Walk` does. This is usually the desired behavior. However, -this does come at a performance penalty to sort the names when a -directory node has many entries. If a particular use case exists that -does not require sorting the directory's immediate descendants prior -to visiting its nodes, this library will skip the sorting step when -the `Unsorted` parameter is set to true. +this does come at slight performance and memory penalties required to +sort the names when a directory node has many entries. Additionally if +caller specifies `Unsorted` enumeration, reading directories is lazily +performed as the caller consumes entries. If a particular use case +exists that does not require sorting the directory's immediate +descendants prior to visiting its nodes, this library will skip the +sorting step when the `Unsorted` parameter is set to true. #### Configurable Post Children Callback diff --git a/vendor/github.com/karrick/godirwalk/azure-pipelines.yml b/vendor/github.com/karrick/godirwalk/azure-pipelines.yml index 64d1d062944..81d5cf7c9f2 100644 --- a/vendor/github.com/karrick/godirwalk/azure-pipelines.yml +++ b/vendor/github.com/karrick/godirwalk/azure-pipelines.yml @@ -22,7 +22,7 @@ jobs: - task: Go@0 inputs: command: test - arguments: -v ./... + arguments: -race -v ./... displayName: 'Execute Tests' - job: Mac @@ -37,7 +37,7 @@ jobs: - task: Go@0 inputs: command: test - arguments: -v ./... + arguments: -race -v ./... displayName: 'Execute Tests' - job: Windows @@ -52,5 +52,5 @@ jobs: - task: Go@0 inputs: command: test - arguments: -v ./... + arguments: -race -v ./... displayName: 'Execute Tests' diff --git a/vendor/github.com/karrick/godirwalk/debug_development.go b/vendor/github.com/karrick/godirwalk/debug_development.go new file mode 100644 index 00000000000..6e1cb0bf7ed --- /dev/null +++ b/vendor/github.com/karrick/godirwalk/debug_development.go @@ -0,0 +1,14 @@ +// +build godirwalk_debug + +package godirwalk + +import ( + "fmt" + "os" +) + +// debug formats and prints arguments to stderr for development builds +func debug(f string, a ...interface{}) { + // fmt.Fprintf(os.Stderr, f, a...) + os.Stderr.Write([]byte("godirwalk: " + fmt.Sprintf(f, a...))) +} diff --git a/vendor/github.com/karrick/godirwalk/debug_release.go b/vendor/github.com/karrick/godirwalk/debug_release.go new file mode 100644 index 00000000000..986178731fe --- /dev/null +++ b/vendor/github.com/karrick/godirwalk/debug_release.go @@ -0,0 +1,6 @@ +// +build !godirwalk_debug + +package godirwalk + +// debug is a no-op for release builds +func debug(_ string, _ ...interface{}) {} diff --git a/vendor/github.com/karrick/godirwalk/dirent.go b/vendor/github.com/karrick/godirwalk/dirent.go index 419ba2f2d7d..3bee8b26995 100644 --- a/vendor/github.com/karrick/godirwalk/dirent.go +++ b/vendor/github.com/karrick/godirwalk/dirent.go @@ -8,8 +8,8 @@ import ( // Dirent stores the name and file system mode type of discovered file system // entries. type Dirent struct { - name string - modeType os.FileMode + name string // name is the basename of the file system entry. + modeType os.FileMode // modeType is the type of file system entry. } // NewDirent returns a newly initialized Dirent structure, or an error. This @@ -19,16 +19,24 @@ type Dirent struct { // functions in this library that read and walk directories, but is provided, // however, for the occasion when a program needs to create a Dirent. func NewDirent(osPathname string) (*Dirent, error) { - fi, err := os.Lstat(osPathname) + modeType, err := modeType(osPathname) if err != nil { return nil, err } return &Dirent{ name: filepath.Base(osPathname), - modeType: fi.Mode() & os.ModeType, + modeType: modeType, }, nil } +// // dup returns a duplicate of the directory entry. +// func (de Dirent) dup() *Dirent { +// return &Dirent{ +// name: de.name, +// modeType: de.modeType, +// } +// } + // Name returns the basename of the file system entry. func (de Dirent) Name() string { return de.name } @@ -61,6 +69,12 @@ func (de Dirent) IsSymlink() bool { return de.modeType&os.ModeSymlink != 0 } // IsDevice returns true if and only if the Dirent represents a device file. func (de Dirent) IsDevice() bool { return de.modeType&os.ModeDevice != 0 } +// reset releases memory held by entry err and name, and resets mode type to 0. +func (de *Dirent) reset() { + de.name = "" + de.modeType = 0 +} + // Dirents represents a slice of Dirent pointers, which are sortable by // name. This type satisfies the `sort.Interface` interface. type Dirents []*Dirent diff --git a/vendor/github.com/karrick/godirwalk/go.mod b/vendor/github.com/karrick/godirwalk/go.mod index 68668c9fc0d..b54a5431cec 100644 --- a/vendor/github.com/karrick/godirwalk/go.mod +++ b/vendor/github.com/karrick/godirwalk/go.mod @@ -1,3 +1 @@ module github.com/karrick/godirwalk - -go 1.12 diff --git a/vendor/github.com/karrick/godirwalk/modeType.go b/vendor/github.com/karrick/godirwalk/modeType.go new file mode 100644 index 00000000000..6427a6852cd --- /dev/null +++ b/vendor/github.com/karrick/godirwalk/modeType.go @@ -0,0 +1,22 @@ +package godirwalk + +import ( + "os" +) + +// modeType returns the mode type of the file system entry identified by +// osPathname by calling os.LStat function, to intentionally not follow symbolic +// links. +// +// Even though os.LStat provides all file mode bits, we want to ensure same +// values returned to caller regardless of whether we obtained file mode bits +// from syscall or stat call. Therefore mask out the additional file mode bits +// that are provided by stat but not by the syscall, so users can rely on their +// values. +func modeType(osPathname string) (os.FileMode, error) { + fi, err := os.Lstat(osPathname) + if err == nil { + return fi.Mode() & os.ModeType, nil + } + return 0, err +} diff --git a/vendor/github.com/karrick/godirwalk/modeTypeWithType.go b/vendor/github.com/karrick/godirwalk/modeTypeWithType.go index 6fbecf08060..7890e7761b6 100644 --- a/vendor/github.com/karrick/godirwalk/modeTypeWithType.go +++ b/vendor/github.com/karrick/godirwalk/modeTypeWithType.go @@ -8,12 +8,12 @@ import ( "syscall" ) -// modeType converts a syscall defined constant, which is in purview of OS, to a -// constant defined by Go, assumed by this project to be stable. +// modeTypeFromDirent converts a syscall defined constant, which is in purview +// of OS, to a constant defined by Go, assumed by this project to be stable. // // When the syscall constant is not recognized, this function falls back to a // Stat on the file system. -func modeType(de *syscall.Dirent, osDirname, osChildname string) (os.FileMode, error) { +func modeTypeFromDirent(de *syscall.Dirent, osDirname, osBasename string) (os.FileMode, error) { switch de.Type { case syscall.DT_REG: return 0, nil @@ -30,18 +30,8 @@ func modeType(de *syscall.Dirent, osDirname, osChildname string) (os.FileMode, e case syscall.DT_SOCK: return os.ModeSocket, nil default: - // If syscall returned unknown type (e.g., DT_UNKNOWN, DT_WHT), - // then resolve actual mode by getting stat. - fi, err := os.Lstat(filepath.Join(osDirname, osChildname)) - if err != nil { - return 0, err - } - // Even though the stat provided all file mode bits, we want to - // ensure same values returned to caller regardless of whether - // we obtained file mode bits from syscall or stat call. - // Therefore mask out the additional file mode bits that are - // provided by stat but not by the syscall, so users can rely on - // their values. - return fi.Mode() & os.ModeType, nil + // If syscall returned unknown type (e.g., DT_UNKNOWN, DT_WHT), then + // resolve actual mode by reading file information. + return modeType(filepath.Join(osDirname, osBasename)) } } diff --git a/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go b/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go index 1c801d1b941..5299392ee90 100644 --- a/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go +++ b/vendor/github.com/karrick/godirwalk/modeTypeWithoutType.go @@ -8,21 +8,11 @@ import ( "syscall" ) -// modeType converts a syscall defined constant, which is in purview of OS, to a -// constant defined by Go, assumed by this project to be stable. +// modeTypeFromDirent converts a syscall defined constant, which is in purview +// of OS, to a constant defined by Go, assumed by this project to be stable. // -// Because some operating system syscall.Dirent structure does not include a -// Type field, fall back on Stat of the file system. -func modeType(_ *syscall.Dirent, osDirname, osChildname string) (os.FileMode, error) { - fi, err := os.Lstat(filepath.Join(osDirname, osChildname)) - if err != nil { - return 0, err - } - // Even though the stat provided all file mode bits, we want to - // ensure same values returned to caller regardless of whether - // we obtained file mode bits from syscall or stat call. - // Therefore mask out the additional file mode bits that are - // provided by stat but not by the syscall, so users can rely on - // their values. - return fi.Mode() & os.ModeType, nil +// Because some operating system syscall.Dirent structures do not include a Type +// field, fall back on Stat of the file system. +func modeTypeFromDirent(_ *syscall.Dirent, osDirname, osBasename string) (os.FileMode, error) { + return modeType(filepath.Join(osDirname, osBasename)) } diff --git a/vendor/github.com/karrick/godirwalk/readdir.go b/vendor/github.com/karrick/godirwalk/readdir.go index 0c1910848aa..33cdbe34bc2 100644 --- a/vendor/github.com/karrick/godirwalk/readdir.go +++ b/vendor/github.com/karrick/godirwalk/readdir.go @@ -5,8 +5,9 @@ package godirwalk // descendant of the specified directory. If the specified directory is a // symbolic link, it will be resolved. // -// If an optional scratch buffer is provided that is at least one page of -// memory, it will be used when reading directory entries from the file system. +// The second parameter was an optional scratch buffer, but is no longer used +// because ReadDirents invokes Scanner to enumerate the contents of the +// directory. // // children, err := godirwalk.ReadDirents(osDirname, nil) // if err != nil { @@ -16,24 +17,37 @@ package godirwalk // for _, child := range children { // fmt.Printf("%s %s\n", child.ModeType, child.Name) // } -func ReadDirents(osDirname string, scratchBuffer []byte) (Dirents, error) { - // Invokes build flag enabled version of this function. - return readdirents(osDirname, scratchBuffer) +func ReadDirents(osDirname string, _ []byte) (Dirents, error) { + var entries Dirents + scanner, err := NewScanner(osDirname) + if err != nil { + return nil, err + } + for scanner.Scan() { + if dirent, err := scanner.Dirent(); err == nil { + entries = append(entries, dirent) + } + } + if err = scanner.Err(); err != nil { + return nil, err + } + return entries, nil } // ReadDirnames returns a slice of strings, representing the immediate // descendants of the specified directory. If the specified directory is a // symbolic link, it will be resolved. // -// If an optional scratch buffer is provided that is at least one page of -// memory, it will be used when reading directory entries from the file system. +// The second parameter was an optional scratch buffer, but is no longer used +// because ReadDirents invokes Scanner to enumerate the contents of the +// directory. // // Note that this function, depending on operating system, may or may not invoke // the ReadDirents function, in order to prepare the list of immediate // descendants. Therefore, if your program needs both the names and the file // system mode types of descendants, it will always be faster to invoke // ReadDirents directly, rather than calling this function, then looping over -// the results and calling os.Stat for each child. +// the results and calling os.Stat or os.LStat for each entry. // // children, err := godirwalk.ReadDirnames(osDirname, nil) // if err != nil { @@ -43,7 +57,17 @@ func ReadDirents(osDirname string, scratchBuffer []byte) (Dirents, error) { // for _, child := range children { // fmt.Printf("%s\n", child) // } -func ReadDirnames(osDirname string, scratchBuffer []byte) ([]string, error) { - // Invokes build flag enabled version of this function. - return readdirnames(osDirname, scratchBuffer) +func ReadDirnames(osDirname string, _ []byte) ([]string, error) { + var entries []string + scanner, err := NewScanner(osDirname) + if err != nil { + return nil, err + } + for scanner.Scan() { + entries = append(entries, scanner.Name()) + } + if err = scanner.Err(); err != nil { + return nil, err + } + return entries, nil } diff --git a/vendor/github.com/karrick/godirwalk/readdir_unix.go b/vendor/github.com/karrick/godirwalk/readdir_unix.go deleted file mode 100644 index 3bedc6519c0..00000000000 --- a/vendor/github.com/karrick/godirwalk/readdir_unix.go +++ /dev/null @@ -1,115 +0,0 @@ -// +build !windows - -package godirwalk - -import ( - "os" - "syscall" - "unsafe" -) - -func readdirents(osDirname string, scratchBuffer []byte) (Dirents, error) { - dh, err := os.Open(osDirname) - if err != nil { - return nil, err - } - fd := int(dh.Fd()) - - if len(scratchBuffer) < MinimumScratchBufferSize { - scratchBuffer = make([]byte, DefaultScratchBufferSize) - } - - var entries Dirents - var de *syscall.Dirent - - for { - n, err := syscall.ReadDirent(fd, scratchBuffer) - if err != nil { - _ = dh.Close() // ignore potential error returned by Close - return nil, err - } - if n <= 0 { - break // end of directory reached - } - // Loop over the bytes returned by reading the directory entries. - buf := scratchBuffer[:n] - for len(buf) > 0 { - de = (*syscall.Dirent)(unsafe.Pointer(&buf[0])) // point entry to first syscall.Dirent in buffer - buf = buf[de.Reclen:] // advance buffer for next iteration through loop - - if inoFromDirent(de) == 0 { - continue // this item has been deleted, but its entry not yet removed from directory listing - } - - nameSlice := nameFromDirent(de) - namlen := len(nameSlice) - if (namlen == 0) || (namlen == 1 && nameSlice[0] == '.') || (namlen == 2 && nameSlice[0] == '.' && nameSlice[1] == '.') { - continue // skip unimportant entries - } - osChildname := string(nameSlice) - - mode, err := modeType(de, osDirname, osChildname) - if err != nil { - _ = dh.Close() // ignore potential error returned by Close - return nil, err - } - - entries = append(entries, &Dirent{name: osChildname, modeType: mode}) - } - } - - if err = dh.Close(); err != nil { - return nil, err - } - return entries, nil -} - -func readdirnames(osDirname string, scratchBuffer []byte) ([]string, error) { - dh, err := os.Open(osDirname) - if err != nil { - return nil, err - } - fd := int(dh.Fd()) - - if len(scratchBuffer) < MinimumScratchBufferSize { - scratchBuffer = make([]byte, DefaultScratchBufferSize) - } - - var entries []string - var de *syscall.Dirent - - for { - n, err := syscall.ReadDirent(fd, scratchBuffer) - if err != nil { - _ = dh.Close() // ignore potential error returned by Close - return nil, err - } - if n <= 0 { - break // end of directory reached - } - // Loop over the bytes returned by reading the directory entries. - buf := scratchBuffer[:n] - for len(buf) > 0 { - de = (*syscall.Dirent)(unsafe.Pointer(&buf[0])) // point entry to first syscall.Dirent in buffer - buf = buf[de.Reclen:] // advance buffer for next iteration through loop - - if inoFromDirent(de) == 0 { - continue // this item has been deleted, but its entry not yet removed from directory listing - } - - nameSlice := nameFromDirent(de) - namlen := len(nameSlice) - if (namlen == 0) || (namlen == 1 && nameSlice[0] == '.') || (namlen == 2 && nameSlice[0] == '.' && nameSlice[1] == '.') { - continue // skip unimportant entries - } - osChildname := string(nameSlice) - - entries = append(entries, osChildname) - } - } - - if err = dh.Close(); err != nil { - return nil, err - } - return entries, nil -} diff --git a/vendor/github.com/karrick/godirwalk/readdir_windows.go b/vendor/github.com/karrick/godirwalk/readdir_windows.go deleted file mode 100644 index 0327bdfb8de..00000000000 --- a/vendor/github.com/karrick/godirwalk/readdir_windows.go +++ /dev/null @@ -1,51 +0,0 @@ -package godirwalk - -// The functions in this file are mere wrappers of what is already provided by -// standard library, in order to provide the same API as this library provides. -// -// The scratch buffer parameter in these functions is the underscore because -// presently that parameter is ignored by the functions for this architecture. -// -// Please send PR or link to article if you know of a more performant way of -// enumerating directory contents and mode types on Windows. - -import "os" - -func readdirents(osDirname string, _ []byte) (Dirents, error) { - dh, err := os.Open(osDirname) - if err != nil { - return nil, err - } - - fileinfos, err := dh.Readdir(0) - if er := dh.Close(); err == nil { - err = er - } - if err != nil { - return nil, err - } - - entries := make(Dirents, len(fileinfos)) - for i, info := range fileinfos { - entries[i] = &Dirent{name: info.Name(), modeType: info.Mode() & os.ModeType} - } - - return entries, nil -} - -func readdirnames(osDirname string, _ []byte) ([]string, error) { - dh, err := os.Open(osDirname) - if err != nil { - return nil, err - } - - entries, err := dh.Readdirnames(0) - if er := dh.Close(); err == nil { - err = er - } - if err != nil { - return nil, err - } - - return entries, nil -} diff --git a/vendor/github.com/karrick/godirwalk/scandir_unix.go b/vendor/github.com/karrick/godirwalk/scandir_unix.go new file mode 100644 index 00000000000..f9a4f7ea368 --- /dev/null +++ b/vendor/github.com/karrick/godirwalk/scandir_unix.go @@ -0,0 +1,140 @@ +// +build !windows + +package godirwalk + +import ( + "io" + "os" + "syscall" + "unsafe" +) + +// MinimumScratchBufferSize specifies the minimum size of the scratch buffer +// that Walk, ReadDirents, ReadDirnames, and Scandir will use when reading file +// entries from the operating system. It is initialized to the result from +// calling `os.Getpagesize()` during program startup. +var MinimumScratchBufferSize = os.Getpagesize() + +// Scanner is an iterator to enumerate the contents of a directory. +type Scanner struct { + scratchBuffer []byte // read directory bytes from file system into this buffer + workBuffer []byte // points into scratchBuffer, from which we chunk out directory entries + osDirname string + childName string + err error // err is the error associated with scanning directory + statErr error // statErr is any error return while attempting to stat an entry + dh *os.File // used to close directory after done reading + de *Dirent // most recently decoded directory entry + sde *syscall.Dirent + fd int // file descriptor used to read entries from directory +} + +// NewScanner returns a new directory Scanner. +func NewScanner(osDirname string) (*Scanner, error) { + dh, err := os.Open(osDirname) + if err != nil { + return nil, err + } + scanner := &Scanner{ + scratchBuffer: make([]byte, MinimumScratchBufferSize), + osDirname: osDirname, + dh: dh, + fd: int(dh.Fd()), + } + return scanner, nil +} + +// Dirent returns the current directory entry while scanning a directory. +func (s *Scanner) Dirent() (*Dirent, error) { + if s.de == nil { + s.de = &Dirent{name: s.childName} + s.de.modeType, s.statErr = modeTypeFromDirent(s.sde, s.osDirname, s.childName) + } + return s.de, s.statErr +} + +// done is called when directory scanner unable to continue, with either the +// triggering error, or nil when there are simply no more entries to read from +// the directory. +func (s *Scanner) done(err error) { + if s.dh == nil { + return + } + cerr := s.dh.Close() + s.dh = nil + + if err == nil { + s.err = cerr + } else { + s.err = err + } + + s.osDirname, s.childName = "", "" + s.scratchBuffer, s.workBuffer = nil, nil + s.statErr, s.de, s.sde = nil, nil, nil + s.fd = 0 +} + +// Err returns the error associated with scanning a directory. +func (s *Scanner) Err() error { + s.done(s.err) + if s.err == io.EOF { + return nil + } + return s.err +} + +// Name returns the name of the current directory entry while scanning a +// directory. +func (s *Scanner) Name() string { return s.childName } + +// Scan potentially reads and then decodes the next directory entry from the +// file system. +// +// When it returns false, this releases resources used by the Scanner then +// returns any error associated with closing the file system directory resource. +func (s *Scanner) Scan() bool { + if s.err != nil { + return false + } + + for { + // When the work buffer has nothing remaining to decode, we need to load + // more data from disk. + if len(s.workBuffer) == 0 { + n, err := syscall.ReadDirent(s.fd, s.scratchBuffer) + if err != nil { + s.done(err) + return false + } + if n <= 0 { // end of directory + s.done(io.EOF) + return false + } + s.workBuffer = s.scratchBuffer[:n] // trim work buffer to number of bytes read + } + + // Loop until we have a usable file system entry, or we run out of data + // in the work buffer. + for len(s.workBuffer) > 0 { + s.sde = (*syscall.Dirent)(unsafe.Pointer(&s.workBuffer[0])) // point entry to first syscall.Dirent in buffer + s.workBuffer = s.workBuffer[s.sde.Reclen:] // advance buffer for next iteration through loop + + if inoFromDirent(s.sde) == 0 { + continue // inode set to 0 indicates an entry that was marked as deleted + } + + nameSlice := nameFromDirent(s.sde) + namlen := len(nameSlice) + if namlen == 0 || (nameSlice[0] == '.' && (namlen == 1 || (namlen == 2 && nameSlice[1] == '.'))) { + continue + } + + s.de = nil + s.childName = string(nameSlice) + return true + } + // No more data in the work buffer, so loop around in the outside loop + // to fetch more data. + } +} diff --git a/vendor/github.com/karrick/godirwalk/scandir_windows.go b/vendor/github.com/karrick/godirwalk/scandir_windows.go new file mode 100644 index 00000000000..c91e27970be --- /dev/null +++ b/vendor/github.com/karrick/godirwalk/scandir_windows.go @@ -0,0 +1,92 @@ +// +build windows + +package godirwalk + +import ( + "fmt" + "io" + "os" +) + +// Scanner is an iterator to enumerate the contents of a directory. +type Scanner struct { + osDirname string + dh *os.File // dh is handle to open directory + de *Dirent + err error // err is the error associated with scanning directory +} + +// NewScanner returns a new directory Scanner. +func NewScanner(osDirname string) (*Scanner, error) { + dh, err := os.Open(osDirname) + if err != nil { + return nil, err + } + scanner := &Scanner{ + osDirname: osDirname, + dh: dh, + } + return scanner, nil +} + +// Dirent returns the current directory entry while scanning a directory. +func (s *Scanner) Dirent() (*Dirent, error) { return s.de, nil } + +// done is called when directory scanner unable to continue, with either the +// triggering error, or nil when there are simply no more entries to read from +// the directory. +func (s *Scanner) done(err error) { + if s.dh == nil { + return + } + cerr := s.dh.Close() + s.dh = nil + + if err == nil { + s.err = cerr + } else { + s.err = err + } + + s.osDirname = "" + s.de = nil +} + +// Err returns the error associated with scanning a directory. +func (s *Scanner) Err() error { + s.done(s.err) + if s.err == io.EOF { + return nil + } + return s.err +} + +// Name returns the name of the current directory entry while scanning a +// directory. +func (s *Scanner) Name() string { return s.de.name } + +// Scan potentially reads and then decodes the next directory entry from the +// file system. +func (s *Scanner) Scan() bool { + if s.err != nil { + return false + } + + fileinfos, err := s.dh.Readdir(1) + if err != nil { + s.err = err + return false + } + + if l := len(fileinfos); l != 1 { + s.err = fmt.Errorf("expected a single entry rather than %d", l) + return false + } + + fi := fileinfos[0] + s.de = &Dirent{ + name: fi.Name(), + modeType: fi.Mode() & os.ModeType, + } + return true +} diff --git a/vendor/github.com/karrick/godirwalk/scanner.go b/vendor/github.com/karrick/godirwalk/scanner.go new file mode 100644 index 00000000000..1abf38335fd --- /dev/null +++ b/vendor/github.com/karrick/godirwalk/scanner.go @@ -0,0 +1,44 @@ +package godirwalk + +import "sort" + +type scanner interface { + Dirent() (*Dirent, error) + Err() error + Name() string + Scan() bool +} + +// sortedScanner enumerates through a directory's contents after reading the +// entire directory and sorting the entries by name. Used by walk to simplify +// its implementation. +type sortedScanner struct { + dd []*Dirent + de *Dirent +} + +func newSortedScanner(osPathname string) (*sortedScanner, error) { + deChildren, err := ReadDirents(osPathname, nil) + if err != nil { + return nil, err + } + sort.Sort(deChildren) + return &sortedScanner{dd: deChildren}, nil +} + +func (d *sortedScanner) Err() error { + d.dd, d.de = nil, nil + return nil +} + +func (d *sortedScanner) Dirent() (*Dirent, error) { return d.de, nil } + +func (d *sortedScanner) Name() string { return d.de.name } + +func (d *sortedScanner) Scan() bool { + if len(d.dd) > 0 { + d.de, d.dd = d.dd[0], d.dd[1:] + return true + } + return false +} diff --git a/vendor/github.com/karrick/godirwalk/walk.go b/vendor/github.com/karrick/godirwalk/walk.go index 10aa2b4e19c..7f4fcd9989d 100644 --- a/vendor/github.com/karrick/godirwalk/walk.go +++ b/vendor/github.com/karrick/godirwalk/walk.go @@ -5,26 +5,13 @@ import ( "fmt" "os" "path/filepath" - "sort" ) -// DefaultScratchBufferSize specifies the size of the scratch buffer that will -// be allocated by Walk, ReadDirents, or ReadDirnames when a scratch buffer is -// not provided or the scratch buffer that is provided is smaller than -// MinimumScratchBufferSize bytes. This may seem like a large value; however, -// when a program intends to enumerate large directories, having a larger -// scratch buffer results in fewer operating system calls. -const DefaultScratchBufferSize = 64 * 1024 - -// MinimumScratchBufferSize specifies the minimum size of the scratch buffer -// that Walk, ReadDirents, and ReadDirnames will use when reading file entries -// from the operating system. It is initialized to the result from calling -// `os.Getpagesize()` during program startup. -var MinimumScratchBufferSize int - -func init() { - MinimumScratchBufferSize = os.Getpagesize() -} +// DefaultScratchBuffer is a deprecated config parameter, whose usage was +// obsoleted by the introduction of the Scanner struct, and migrating +// ReadDirents, ReadDirnames, and Walk to use Scanner for enumerating directory +// contents. +const DefaultScratchBufferSize = 0 // Options provide parameters for how the Walk function operates. type Options struct { @@ -80,12 +67,9 @@ type Options struct { // processed. PostChildrenCallback WalkFunc - // ScratchBuffer is an optional byte slice to use as a scratch buffer for - // Walk to use when reading directory entries, to reduce amount of garbage - // generation. Not all architectures take advantage of the scratch - // buffer. If omitted or the provided buffer has fewer bytes than - // MinimumScratchBufferSize, then a buffer with DefaultScratchBufferSize - // bytes will be created and used once per Walk invocation. + // ScratchBuffer is a deprecated config parameter, whose usage was obsoleted + // by the introduction of the Scanner struct, and migrating ReadDirents, + // ReadDirnames, and Walk to use Scanner for enumerating directory contents. ScratchBuffer []byte } @@ -208,10 +192,6 @@ func Walk(pathname string, options *Options) error { options.ErrorCallback = defaultErrorCallback } - if len(options.ScratchBuffer) < MinimumScratchBufferSize { - options.ScratchBuffer = make([]byte, DefaultScratchBufferSize) - } - dirent := &Dirent{ name: filepath.Base(pathname), modeType: mode & os.ModeType, @@ -263,7 +243,19 @@ func walk(osPathname string, dirent *Dirent, options *Options) error { // If get here, then specified pathname refers to a directory or a // symbolic link to a directory. - deChildren, err := ReadDirents(osPathname, options.ScratchBuffer) + + var ds scanner + + if options.Unsorted { + // When upstream does not request a sorted iteration, it's more memory + // efficient to read a single child at a time from the file system. + ds, err = NewScanner(osPathname) + } else { + // When upstream wants a sorted iteration, we must read the entire + // directory and sort through the child names, and then iterate on each + // child. + ds, err = newSortedScanner(osPathname) + } if err != nil { if action := options.ErrorCallback(osPathname, err); action == SkipNode { return nil @@ -271,13 +263,17 @@ func walk(osPathname string, dirent *Dirent, options *Options) error { return err } - if !options.Unsorted { - sort.Sort(deChildren) // sort children entries unless upstream says to leave unsorted - } - - for _, deChild := range deChildren { + for ds.Scan() { + deChild, err := ds.Dirent() osChildname := filepath.Join(osPathname, deChild.name) + if err != nil { + if action := options.ErrorCallback(osChildname, err); action == SkipNode { + return nil + } + return err + } err = walk(osChildname, deChild, options) + debug("osChildname: %q; error: %v\n", osChildname, err) if err == nil { continue } @@ -300,6 +296,9 @@ func walk(osPathname string, dirent *Dirent, options *Options) error { } // continue processing remaining siblings } + if err = ds.Err(); err != nil { + return err + } if options.PostChildrenCallback == nil { return nil diff --git a/vendor/github.com/kevinburke/ssh_config/.gitignore b/vendor/github.com/kevinburke/ssh_config/.gitignore index a6ef824c1f8..e69de29bb2d 100644 --- a/vendor/github.com/kevinburke/ssh_config/.gitignore +++ b/vendor/github.com/kevinburke/ssh_config/.gitignore @@ -1 +0,0 @@ -/bazel-* diff --git a/vendor/github.com/kevinburke/ssh_config/.mailmap b/vendor/github.com/kevinburke/ssh_config/.mailmap new file mode 100644 index 00000000000..253406b1cc6 --- /dev/null +++ b/vendor/github.com/kevinburke/ssh_config/.mailmap @@ -0,0 +1 @@ +Kevin Burke Kevin Burke diff --git a/vendor/github.com/kevinburke/ssh_config/.travis.yml b/vendor/github.com/kevinburke/ssh_config/.travis.yml index 8b5964dd528..4306f30f854 100644 --- a/vendor/github.com/kevinburke/ssh_config/.travis.yml +++ b/vendor/github.com/kevinburke/ssh_config/.travis.yml @@ -3,9 +3,8 @@ go_import_path: github.com/kevinburke/ssh_config language: go go: - - 1.9.x - - 1.10.x - 1.11.x + - 1.12.x - master before_script: diff --git a/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt b/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt index 51b98f897a7..cd3379400dc 100644 --- a/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt +++ b/vendor/github.com/kevinburke/ssh_config/AUTHORS.txt @@ -1,4 +1,5 @@ Eugene Terentev -Kevin Burke +Kevin Burke +Mark Nevill Sergey Lukjanov Wayne Ashley Berry diff --git a/vendor/github.com/kevinburke/ssh_config/Makefile b/vendor/github.com/kevinburke/ssh_config/Makefile index 90c3a28616b..a1880d18e17 100644 --- a/vendor/github.com/kevinburke/ssh_config/Makefile +++ b/vendor/github.com/kevinburke/ssh_config/Makefile @@ -1,15 +1,13 @@ BUMP_VERSION := $(GOPATH)/bin/bump_version -MEGACHECK := $(GOPATH)/bin/megacheck +STATICCHECK := $(GOPATH)/bin/staticcheck WRITE_MAILMAP := $(GOPATH)/bin/write_mailmap -IGNORES := 'github.com/kevinburke/ssh_config/config.go:U1000 github.com/kevinburke/ssh_config/config.go:S1002 github.com/kevinburke/ssh_config/token.go:U1000' +$(STATICCHECK): + go get honnef.co/go/tools/cmd/staticcheck -$(MEGACHECK): - go get honnef.co/go/tools/cmd/megacheck - -lint: $(MEGACHECK) +lint: $(STATICCHECK) go vet ./... - $(MEGACHECK) --ignore=$(IGNORES) ./... + $(STATICCHECK) test: lint @# the timeout helps guard against infinite recursion diff --git a/vendor/github.com/kevinburke/ssh_config/config.go b/vendor/github.com/kevinburke/ssh_config/config.go index f400cef9c5f..136f0c35c67 100644 --- a/vendor/github.com/kevinburke/ssh_config/config.go +++ b/vendor/github.com/kevinburke/ssh_config/config.go @@ -34,6 +34,7 @@ import ( "errors" "fmt" "io" + "io/ioutil" "os" osuser "os/user" "path/filepath" @@ -43,7 +44,9 @@ import ( "sync" ) -const version = "0.5" +const version = "1.0" + +var _ = version type configFinder func() string @@ -156,6 +159,7 @@ func (u *UserSettings) GetStrict(alias, key string) (string, error) { } var err error u.userConfig, err = parseFile(filename) + //lint:ignore S1002 I prefer it this way if err != nil && os.IsNotExist(err) == false { u.onceErr = err return @@ -166,11 +170,13 @@ func (u *UserSettings) GetStrict(alias, key string) (string, error) { filename = u.systemConfigFinder() } u.systemConfig, err = parseFile(filename) + //lint:ignore S1002 I prefer it this way if err != nil && os.IsNotExist(err) == false { u.onceErr = err return } }) + //lint:ignore S1002 I prefer it this way if u.onceErr != nil && u.IgnoreErrors == false { return "", u.onceErr } @@ -190,26 +196,29 @@ func parseFile(filename string) (*Config, error) { } func parseWithDepth(filename string, depth uint8) (*Config, error) { - f, err := os.Open(filename) + b, err := ioutil.ReadFile(filename) if err != nil { return nil, err } - defer f.Close() - return decode(f, isSystem(filename), depth) + return decodeBytes(b, isSystem(filename), depth) } func isSystem(filename string) bool { - // TODO i'm not sure this is the best way to detect a system repo + // TODO: not sure this is the best way to detect a system repo return strings.HasPrefix(filepath.Clean(filename), "/etc/ssh") } // Decode reads r into a Config, or returns an error if r could not be parsed as // an SSH config file. func Decode(r io.Reader) (*Config, error) { - return decode(r, false, 0) + b, err := ioutil.ReadAll(r) + if err != nil { + return nil, err + } + return decodeBytes(b, false, 0) } -func decode(r io.Reader, system bool, depth uint8) (c *Config, err error) { +func decodeBytes(b []byte, system bool, depth uint8) (c *Config, err error) { defer func() { if r := recover(); r != nil { if _, ok := r.(runtime.Error); ok { @@ -223,7 +232,7 @@ func decode(r io.Reader, system bool, depth uint8) (c *Config, err error) { } }() - c = parseSSH(lexSSH(r), system, depth) + c = parseSSH(lexSSH(b), system, depth) return c, err } @@ -367,7 +376,7 @@ type Host struct { // EOLComment is the comment (if any) terminating the Host line. EOLComment string hasEquals bool - leadingSpace uint16 // TODO: handle spaces vs tabs here. + leadingSpace int // TODO: handle spaces vs tabs here. // The file starts with an implicit "Host *" declaration. implicit bool } @@ -379,7 +388,7 @@ func (h *Host) Matches(alias string) bool { found := false for i := range h.Patterns { if h.Patterns[i].regex.MatchString(alias) { - if h.Patterns[i].not == true { + if h.Patterns[i].not { // Negated match. "A pattern entry may be negated by prefixing // it with an exclamation mark (`!'). If a negated entry is // matched, then the Host entry is ignored, regardless of @@ -398,6 +407,7 @@ func (h *Host) Matches(alias string) bool { // present in the whitespace in the printed file. func (h *Host) String() string { var buf bytes.Buffer + //lint:ignore S1002 I prefer to write it this way if h.implicit == false { buf.WriteString(strings.Repeat(" ", int(h.leadingSpace))) buf.WriteString("Host") @@ -438,7 +448,7 @@ type KV struct { Value string Comment string hasEquals bool - leadingSpace uint16 // Space before the key. TODO handle spaces vs tabs. + leadingSpace int // Space before the key. TODO handle spaces vs tabs. position Position } @@ -467,7 +477,7 @@ func (k *KV) String() string { // Empty is a line in the config file that contains only whitespace or comments. type Empty struct { Comment string - leadingSpace uint16 // TODO handle spaces vs tabs. + leadingSpace int // TODO handle spaces vs tabs. position Position } @@ -494,7 +504,6 @@ type Include struct { // Comment is the contents of any comment at the end of the Include // statement. Comment string - parsed bool // an include directive can include several different files, and wildcards directives []string @@ -504,7 +513,7 @@ type Include struct { matches []string // actual filenames are listed here files map[string]*Config - leadingSpace uint16 + leadingSpace int position Position depth uint8 hasEquals bool @@ -523,6 +532,7 @@ func removeDups(arr []string) []string { result := make([]string, 0) for v := range arr { + //lint:ignore S1002 I prefer it this way if encountered[arr[v]] == false { encountered[arr[v]] = true result = append(result, arr[v]) @@ -544,7 +554,7 @@ func NewInclude(directives []string, hasEquals bool, pos Position, comment strin directives: directives, files: make(map[string]*Config), position: pos, - leadingSpace: uint16(pos.Col) - 1, + leadingSpace: pos.Col - 1, depth: depth, hasEquals: hasEquals, } diff --git a/vendor/github.com/kevinburke/ssh_config/lexer.go b/vendor/github.com/kevinburke/ssh_config/lexer.go index b0c6a8650ce..11680b4c74d 100644 --- a/vendor/github.com/kevinburke/ssh_config/lexer.go +++ b/vendor/github.com/kevinburke/ssh_config/lexer.go @@ -1,22 +1,22 @@ package ssh_config import ( - "io" - - buffruneio "github.com/pelletier/go-buffruneio" + "bytes" ) // Define state functions type sshLexStateFn func() sshLexStateFn type sshLexer struct { - input *buffruneio.Reader // Textual source - buffer []rune // Runes composing the current token + inputIdx int + input []rune // Textual source + + buffer []rune // Runes composing the current token tokens chan token - line uint32 - col uint16 - endbufferLine uint32 - endbufferCol uint16 + line int + col int + endbufferLine int + endbufferCol int } func (s *sshLexer) lexComment(previousState sshLexStateFn) sshLexStateFn { @@ -114,16 +114,14 @@ func (s *sshLexer) lexRvalue() sshLexStateFn { } func (s *sshLexer) read() rune { - r, _, err := s.input.ReadRune() - if err != nil { - panic(err) - } + r := s.peek() if r == '\n' { s.endbufferLine++ s.endbufferCol = 1 } else { s.endbufferCol++ } + s.inputIdx++ return r } @@ -197,21 +195,22 @@ func (s *sshLexer) emitWithValue(t tokenType, value string) { } func (s *sshLexer) peek() rune { - r, _, err := s.input.ReadRune() - if err != nil { - panic(err) + if s.inputIdx >= len(s.input) { + return eof } - s.input.UnreadRune() + + r := s.input[s.inputIdx] return r } func (s *sshLexer) follow(next string) bool { + inputIdx := s.inputIdx for _, expectedRune := range next { - r, _, err := s.input.ReadRune() - defer s.input.UnreadRune() - if err != nil { - panic(err) + if inputIdx >= len(s.input) { + return false } + r := s.input[inputIdx] + inputIdx++ if expectedRune != r { return false } @@ -226,10 +225,10 @@ func (s *sshLexer) run() { close(s.tokens) } -func lexSSH(input io.Reader) chan token { - bufferedInput := buffruneio.NewReader(input) +func lexSSH(input []byte) chan token { + runes := bytes.Runes(input) l := &sshLexer{ - input: bufferedInput, + input: runes, tokens: make(chan token), line: 1, col: 1, diff --git a/vendor/github.com/kevinburke/ssh_config/parser.go b/vendor/github.com/kevinburke/ssh_config/parser.go index 02745b4b293..36c42055f54 100644 --- a/vendor/github.com/kevinburke/ssh_config/parser.go +++ b/vendor/github.com/kevinburke/ssh_config/parser.go @@ -149,7 +149,7 @@ func (p *sshParser) parseKV() sshParserStateFn { Value: val.val, Comment: comment, hasEquals: hasEquals, - leadingSpace: uint16(key.Position.Col) - 1, + leadingSpace: key.Position.Col - 1, position: key.Position, } lastHost.Nodes = append(lastHost.Nodes, kv) @@ -169,6 +169,12 @@ func (p *sshParser) parseComment() sshParserStateFn { } func parseSSH(flow chan token, system bool, depth uint8) *Config { + // Ensure we consume tokens to completion even if parser exits early + defer func() { + for range flow { + } + }() + result := newConfig() result.position = Position{1, 1} parser := &sshParser{ diff --git a/vendor/github.com/kevinburke/ssh_config/position.go b/vendor/github.com/kevinburke/ssh_config/position.go index 7304bc3b7f7..e0b5e3fb33c 100644 --- a/vendor/github.com/kevinburke/ssh_config/position.go +++ b/vendor/github.com/kevinburke/ssh_config/position.go @@ -8,8 +8,8 @@ import "fmt" // column number, respectively. Values of zero or less will cause Invalid(), // to return true. type Position struct { - Line uint32 // line within the document - Col uint16 // column within the line + Line int // line within the document + Col int // column within the line } // String representation of the position. diff --git a/vendor/github.com/moby/buildkit/AUTHORS b/vendor/github.com/moby/buildkit/AUTHORS new file mode 100644 index 00000000000..c1dce65586b --- /dev/null +++ b/vendor/github.com/moby/buildkit/AUTHORS @@ -0,0 +1,66 @@ +# This file lists all individuals having contributed content to the repository. +# For how it is generated, see `scripts/generate-authors.sh`. + +Aaron L. Xu +Aaron Lehmann +Akihiro Suda +Alexander Morozov +Alice Frosi +Allen Sun +Anda Xu +Anthony Sottile +Arnaud Bailly +Bin Liu +Brian Goff +Daniel Nephin +Dave Chen +David Calavera +Dennis Chen +Derek McGowan +Doug Davis +Edgar Lee +Eli Uriegas +f0 +Fernando Miguel +Hao Hu +Helen Xie +Himanshu Pandey +Hiromu Nakamura +Ian Campbell +Iskander (Alex) Sharipov +Jean-Pierre Huynh +Jessica Frazelle +John Howard +Jonathan Stoppani +Justas Brazauskas +Justin Cormack +Kunal Kushwaha +Lajos Papp +Matt Rickard +Michael Crosby +Miyachi Katsuya +Nao YONASHIRO +Natasha Jarus +Noel Georgi <18496730+frezbo@users.noreply.github.com> +Ondrej Fabry +Patrick Van Stee +Ri Xu +Sebastiaan van Stijn +Shev Yan +Simon Ferquel +Stefan Weil +Thomas Leonard +Thomas Shaw +Tibor Vass +Tiffany Jernigan +Tino Rusch +Tobias Klauser +Tomas Tomecek +Tomohiro Kusumoto +Tõnis Tiigi +Vincent Demeester +Wei Fu +Yong Tang +Yuichiro Kaneko +Ziv Tsarfati +郑泽宇 diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go index 0453f3a9a2a..e9268abb818 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go @@ -35,7 +35,7 @@ type Node struct { Original string // original line used before parsing Flags []string // only top Node should have this set StartLine int // the line in the original dockerfile where the node begins - endLine int // the line in the original dockerfile where the node ends + EndLine int // the line in the original dockerfile where the node ends } // Dump dumps the AST defined by `node` as a list of sexps. @@ -65,7 +65,7 @@ func (node *Node) Dump() string { func (node *Node) lines(start, end int) { node.StartLine = start - node.endLine = end + node.EndLine = end } // AddChild adds a new child node, and updates line information @@ -74,7 +74,7 @@ func (node *Node) AddChild(child *Node, startLine, endLine int) { if node.StartLine < 0 { node.StartLine = startLine } - node.endLine = endLine + node.EndLine = endLine node.Children = append(node.Children, child) } @@ -275,6 +275,11 @@ func Parse(rwc io.Reader) (*Result, error) { if len(warnings) > 0 { warnings = append(warnings, "[WARNING]: Empty continuation lines will become errors in a future release.") } + + if root.StartLine < 0 { + return nil, errors.New("file with no instructions.") + } + return &Result{ AST: root, Warnings: warnings, diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go index 6153f50d63a..f9eb26f48b2 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go @@ -417,10 +417,7 @@ func BuildEnvs(env []string) map[string]string { k := e[:i] v := e[i+1:] - // If key already exists, keep previous value. - if _, ok := envs[k]; ok { - continue - } + // overwrite value if key already exists envs[k] = v } } diff --git a/vendor/github.com/morikuni/aec/LICENSE b/vendor/github.com/morikuni/aec/LICENSE new file mode 100644 index 00000000000..1c264016419 --- /dev/null +++ b/vendor/github.com/morikuni/aec/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Taihei Morikuni + +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/morikuni/aec/README.md b/vendor/github.com/morikuni/aec/README.md new file mode 100644 index 00000000000..3cbc4343ee2 --- /dev/null +++ b/vendor/github.com/morikuni/aec/README.md @@ -0,0 +1,178 @@ +# aec + +[![GoDoc](https://godoc.org/github.com/morikuni/aec?status.svg)](https://godoc.org/github.com/morikuni/aec) + +Go wrapper for ANSI escape code. + +## Install + +```bash +go get github.com/morikuni/aec +``` + +## Features + +ANSI escape codes depend on terminal environment. +Some of these features may not work. +Check supported Font-Style/Font-Color features with [checkansi](./checkansi). + +[Wikipedia](https://en.wikipedia.org/wiki/ANSI_escape_code) for more detail. + +### Cursor + +- `Up(n)` +- `Down(n)` +- `Right(n)` +- `Left(n)` +- `NextLine(n)` +- `PreviousLine(n)` +- `Column(col)` +- `Position(row, col)` +- `Save` +- `Restore` +- `Hide` +- `Show` +- `Report` + +### Erase + +- `EraseDisplay(mode)` +- `EraseLine(mode)` + +### Scroll + +- `ScrollUp(n)` +- `ScrollDown(n)` + +### Font Style + +- `Bold` +- `Faint` +- `Italic` +- `Underline` +- `BlinkSlow` +- `BlinkRapid` +- `Inverse` +- `Conceal` +- `CrossOut` +- `Frame` +- `Encircle` +- `Overline` + +### Font Color + +Foreground color. + +- `DefaultF` +- `BlackF` +- `RedF` +- `GreenF` +- `YellowF` +- `BlueF` +- `MagentaF` +- `CyanF` +- `WhiteF` +- `LightBlackF` +- `LightRedF` +- `LightGreenF` +- `LightYellowF` +- `LightBlueF` +- `LightMagentaF` +- `LightCyanF` +- `LightWhiteF` +- `Color3BitF(color)` +- `Color8BitF(color)` +- `FullColorF(r, g, b)` + +Background color. + +- `DefaultB` +- `BlackB` +- `RedB` +- `GreenB` +- `YellowB` +- `BlueB` +- `MagentaB` +- `CyanB` +- `WhiteB` +- `LightBlackB` +- `LightRedB` +- `LightGreenB` +- `LightYellowB` +- `LightBlueB` +- `LightMagentaB` +- `LightCyanB` +- `LightWhiteB` +- `Color3BitB(color)` +- `Color8BitB(color)` +- `FullColorB(r, g, b)` + +### Color Converter + +24bit RGB color to ANSI color. + +- `NewRGB3Bit(r, g, b)` +- `NewRGB8Bit(r, g, b)` + +### Builder + +To mix these features. + +```go +custom := aec.EmptyBuilder.Right(2).RGB8BitF(128, 255, 64).RedB().ANSI +custom.Apply("Hello World") +``` + +## Usage + +1. Create ANSI by `aec.XXX().With(aec.YYY())` or `aec.EmptyBuilder.XXX().YYY().ANSI` +2. Print ANSI by `fmt.Print(ansi, "some string", aec.Reset)` or `fmt.Print(ansi.Apply("some string"))` + +`aec.Reset` should be added when using font style or font color features. + +## Example + +Simple progressbar. + +![sample](./sample.gif) + +```go +package main + +import ( + "fmt" + "strings" + "time" + + "github.com/morikuni/aec" +) + +func main() { + const n = 20 + builder := aec.EmptyBuilder + + up2 := aec.Up(2) + col := aec.Column(n + 2) + bar := aec.Color8BitF(aec.NewRGB8Bit(64, 255, 64)) + label := builder.LightRedF().Underline().With(col).Right(1).ANSI + + // for up2 + fmt.Println() + fmt.Println() + + for i := 0; i <= n; i++ { + fmt.Print(up2) + fmt.Println(label.Apply(fmt.Sprint(i, "/", n))) + fmt.Print("[") + fmt.Print(bar.Apply(strings.Repeat("=", i))) + fmt.Println(col.Apply("]")) + time.Sleep(100 * time.Millisecond) + } +} +``` + +## License + +[MIT](./LICENSE) + + diff --git a/vendor/github.com/morikuni/aec/aec.go b/vendor/github.com/morikuni/aec/aec.go new file mode 100644 index 00000000000..566be6eb1ef --- /dev/null +++ b/vendor/github.com/morikuni/aec/aec.go @@ -0,0 +1,137 @@ +package aec + +import "fmt" + +// EraseMode is listed in a variable EraseModes. +type EraseMode uint + +var ( + // EraseModes is a list of EraseMode. + EraseModes struct { + // All erase all. + All EraseMode + + // Head erase to head. + Head EraseMode + + // Tail erase to tail. + Tail EraseMode + } + + // Save saves the cursor position. + Save ANSI + + // Restore restores the cursor position. + Restore ANSI + + // Hide hides the cursor. + Hide ANSI + + // Show shows the cursor. + Show ANSI + + // Report reports the cursor position. + Report ANSI +) + +// Up moves up the cursor. +func Up(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dA", n)) +} + +// Down moves down the cursor. +func Down(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dB", n)) +} + +// Right moves right the cursor. +func Right(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dC", n)) +} + +// Left moves left the cursor. +func Left(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dD", n)) +} + +// NextLine moves down the cursor to head of a line. +func NextLine(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dE", n)) +} + +// PreviousLine moves up the cursor to head of a line. +func PreviousLine(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dF", n)) +} + +// Column set the cursor position to a given column. +func Column(col uint) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dG", col)) +} + +// Position set the cursor position to a given absolute position. +func Position(row, col uint) ANSI { + return newAnsi(fmt.Sprintf(esc+"%d;%dH", row, col)) +} + +// EraseDisplay erases display by given EraseMode. +func EraseDisplay(m EraseMode) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dJ", m)) +} + +// EraseLine erases lines by given EraseMode. +func EraseLine(m EraseMode) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dK", m)) +} + +// ScrollUp scrolls up the page. +func ScrollUp(n int) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dS", n)) +} + +// ScrollDown scrolls down the page. +func ScrollDown(n int) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dT", n)) +} + +func init() { + EraseModes = struct { + All EraseMode + Head EraseMode + Tail EraseMode + }{ + Tail: 0, + Head: 1, + All: 2, + } + + Save = newAnsi(esc + "s") + Restore = newAnsi(esc + "u") + Hide = newAnsi(esc + "?25l") + Show = newAnsi(esc + "?25h") + Report = newAnsi(esc + "6n") +} diff --git a/vendor/github.com/morikuni/aec/ansi.go b/vendor/github.com/morikuni/aec/ansi.go new file mode 100644 index 00000000000..e60722e6e60 --- /dev/null +++ b/vendor/github.com/morikuni/aec/ansi.go @@ -0,0 +1,59 @@ +package aec + +import ( + "fmt" + "strings" +) + +const esc = "\x1b[" + +// Reset resets SGR effect. +const Reset string = "\x1b[0m" + +var empty = newAnsi("") + +// ANSI represents ANSI escape code. +type ANSI interface { + fmt.Stringer + + // With adapts given ANSIs. + With(...ANSI) ANSI + + // Apply wraps given string in ANSI. + Apply(string) string +} + +type ansiImpl string + +func newAnsi(s string) *ansiImpl { + r := ansiImpl(s) + return &r +} + +func (a *ansiImpl) With(ansi ...ANSI) ANSI { + return concat(append([]ANSI{a}, ansi...)) +} + +func (a *ansiImpl) Apply(s string) string { + return a.String() + s + Reset +} + +func (a *ansiImpl) String() string { + return string(*a) +} + +// Apply wraps given string in ANSIs. +func Apply(s string, ansi ...ANSI) string { + if len(ansi) == 0 { + return s + } + return concat(ansi).Apply(s) +} + +func concat(ansi []ANSI) ANSI { + strs := make([]string, 0, len(ansi)) + for _, p := range ansi { + strs = append(strs, p.String()) + } + return newAnsi(strings.Join(strs, "")) +} diff --git a/vendor/github.com/morikuni/aec/builder.go b/vendor/github.com/morikuni/aec/builder.go new file mode 100644 index 00000000000..13bd002d4e3 --- /dev/null +++ b/vendor/github.com/morikuni/aec/builder.go @@ -0,0 +1,388 @@ +package aec + +// Builder is a lightweight syntax to construct customized ANSI. +type Builder struct { + ANSI ANSI +} + +// EmptyBuilder is an initialized Builder. +var EmptyBuilder *Builder + +// NewBuilder creates a Builder from existing ANSI. +func NewBuilder(a ...ANSI) *Builder { + return &Builder{concat(a)} +} + +// With is a syntax for With. +func (builder *Builder) With(a ...ANSI) *Builder { + return NewBuilder(builder.ANSI.With(a...)) +} + +// Up is a syntax for Up. +func (builder *Builder) Up(n uint) *Builder { + return builder.With(Up(n)) +} + +// Down is a syntax for Down. +func (builder *Builder) Down(n uint) *Builder { + return builder.With(Down(n)) +} + +// Right is a syntax for Right. +func (builder *Builder) Right(n uint) *Builder { + return builder.With(Right(n)) +} + +// Left is a syntax for Left. +func (builder *Builder) Left(n uint) *Builder { + return builder.With(Left(n)) +} + +// NextLine is a syntax for NextLine. +func (builder *Builder) NextLine(n uint) *Builder { + return builder.With(NextLine(n)) +} + +// PreviousLine is a syntax for PreviousLine. +func (builder *Builder) PreviousLine(n uint) *Builder { + return builder.With(PreviousLine(n)) +} + +// Column is a syntax for Column. +func (builder *Builder) Column(col uint) *Builder { + return builder.With(Column(col)) +} + +// Position is a syntax for Position. +func (builder *Builder) Position(row, col uint) *Builder { + return builder.With(Position(row, col)) +} + +// EraseDisplay is a syntax for EraseDisplay. +func (builder *Builder) EraseDisplay(m EraseMode) *Builder { + return builder.With(EraseDisplay(m)) +} + +// EraseLine is a syntax for EraseLine. +func (builder *Builder) EraseLine(m EraseMode) *Builder { + return builder.With(EraseLine(m)) +} + +// ScrollUp is a syntax for ScrollUp. +func (builder *Builder) ScrollUp(n int) *Builder { + return builder.With(ScrollUp(n)) +} + +// ScrollDown is a syntax for ScrollDown. +func (builder *Builder) ScrollDown(n int) *Builder { + return builder.With(ScrollDown(n)) +} + +// Save is a syntax for Save. +func (builder *Builder) Save() *Builder { + return builder.With(Save) +} + +// Restore is a syntax for Restore. +func (builder *Builder) Restore() *Builder { + return builder.With(Restore) +} + +// Hide is a syntax for Hide. +func (builder *Builder) Hide() *Builder { + return builder.With(Hide) +} + +// Show is a syntax for Show. +func (builder *Builder) Show() *Builder { + return builder.With(Show) +} + +// Report is a syntax for Report. +func (builder *Builder) Report() *Builder { + return builder.With(Report) +} + +// Bold is a syntax for Bold. +func (builder *Builder) Bold() *Builder { + return builder.With(Bold) +} + +// Faint is a syntax for Faint. +func (builder *Builder) Faint() *Builder { + return builder.With(Faint) +} + +// Italic is a syntax for Italic. +func (builder *Builder) Italic() *Builder { + return builder.With(Italic) +} + +// Underline is a syntax for Underline. +func (builder *Builder) Underline() *Builder { + return builder.With(Underline) +} + +// BlinkSlow is a syntax for BlinkSlow. +func (builder *Builder) BlinkSlow() *Builder { + return builder.With(BlinkSlow) +} + +// BlinkRapid is a syntax for BlinkRapid. +func (builder *Builder) BlinkRapid() *Builder { + return builder.With(BlinkRapid) +} + +// Inverse is a syntax for Inverse. +func (builder *Builder) Inverse() *Builder { + return builder.With(Inverse) +} + +// Conceal is a syntax for Conceal. +func (builder *Builder) Conceal() *Builder { + return builder.With(Conceal) +} + +// CrossOut is a syntax for CrossOut. +func (builder *Builder) CrossOut() *Builder { + return builder.With(CrossOut) +} + +// BlackF is a syntax for BlackF. +func (builder *Builder) BlackF() *Builder { + return builder.With(BlackF) +} + +// RedF is a syntax for RedF. +func (builder *Builder) RedF() *Builder { + return builder.With(RedF) +} + +// GreenF is a syntax for GreenF. +func (builder *Builder) GreenF() *Builder { + return builder.With(GreenF) +} + +// YellowF is a syntax for YellowF. +func (builder *Builder) YellowF() *Builder { + return builder.With(YellowF) +} + +// BlueF is a syntax for BlueF. +func (builder *Builder) BlueF() *Builder { + return builder.With(BlueF) +} + +// MagentaF is a syntax for MagentaF. +func (builder *Builder) MagentaF() *Builder { + return builder.With(MagentaF) +} + +// CyanF is a syntax for CyanF. +func (builder *Builder) CyanF() *Builder { + return builder.With(CyanF) +} + +// WhiteF is a syntax for WhiteF. +func (builder *Builder) WhiteF() *Builder { + return builder.With(WhiteF) +} + +// DefaultF is a syntax for DefaultF. +func (builder *Builder) DefaultF() *Builder { + return builder.With(DefaultF) +} + +// BlackB is a syntax for BlackB. +func (builder *Builder) BlackB() *Builder { + return builder.With(BlackB) +} + +// RedB is a syntax for RedB. +func (builder *Builder) RedB() *Builder { + return builder.With(RedB) +} + +// GreenB is a syntax for GreenB. +func (builder *Builder) GreenB() *Builder { + return builder.With(GreenB) +} + +// YellowB is a syntax for YellowB. +func (builder *Builder) YellowB() *Builder { + return builder.With(YellowB) +} + +// BlueB is a syntax for BlueB. +func (builder *Builder) BlueB() *Builder { + return builder.With(BlueB) +} + +// MagentaB is a syntax for MagentaB. +func (builder *Builder) MagentaB() *Builder { + return builder.With(MagentaB) +} + +// CyanB is a syntax for CyanB. +func (builder *Builder) CyanB() *Builder { + return builder.With(CyanB) +} + +// WhiteB is a syntax for WhiteB. +func (builder *Builder) WhiteB() *Builder { + return builder.With(WhiteB) +} + +// DefaultB is a syntax for DefaultB. +func (builder *Builder) DefaultB() *Builder { + return builder.With(DefaultB) +} + +// Frame is a syntax for Frame. +func (builder *Builder) Frame() *Builder { + return builder.With(Frame) +} + +// Encircle is a syntax for Encircle. +func (builder *Builder) Encircle() *Builder { + return builder.With(Encircle) +} + +// Overline is a syntax for Overline. +func (builder *Builder) Overline() *Builder { + return builder.With(Overline) +} + +// LightBlackF is a syntax for LightBlueF. +func (builder *Builder) LightBlackF() *Builder { + return builder.With(LightBlackF) +} + +// LightRedF is a syntax for LightRedF. +func (builder *Builder) LightRedF() *Builder { + return builder.With(LightRedF) +} + +// LightGreenF is a syntax for LightGreenF. +func (builder *Builder) LightGreenF() *Builder { + return builder.With(LightGreenF) +} + +// LightYellowF is a syntax for LightYellowF. +func (builder *Builder) LightYellowF() *Builder { + return builder.With(LightYellowF) +} + +// LightBlueF is a syntax for LightBlueF. +func (builder *Builder) LightBlueF() *Builder { + return builder.With(LightBlueF) +} + +// LightMagentaF is a syntax for LightMagentaF. +func (builder *Builder) LightMagentaF() *Builder { + return builder.With(LightMagentaF) +} + +// LightCyanF is a syntax for LightCyanF. +func (builder *Builder) LightCyanF() *Builder { + return builder.With(LightCyanF) +} + +// LightWhiteF is a syntax for LightWhiteF. +func (builder *Builder) LightWhiteF() *Builder { + return builder.With(LightWhiteF) +} + +// LightBlackB is a syntax for LightBlackB. +func (builder *Builder) LightBlackB() *Builder { + return builder.With(LightBlackB) +} + +// LightRedB is a syntax for LightRedB. +func (builder *Builder) LightRedB() *Builder { + return builder.With(LightRedB) +} + +// LightGreenB is a syntax for LightGreenB. +func (builder *Builder) LightGreenB() *Builder { + return builder.With(LightGreenB) +} + +// LightYellowB is a syntax for LightYellowB. +func (builder *Builder) LightYellowB() *Builder { + return builder.With(LightYellowB) +} + +// LightBlueB is a syntax for LightBlueB. +func (builder *Builder) LightBlueB() *Builder { + return builder.With(LightBlueB) +} + +// LightMagentaB is a syntax for LightMagentaB. +func (builder *Builder) LightMagentaB() *Builder { + return builder.With(LightMagentaB) +} + +// LightCyanB is a syntax for LightCyanB. +func (builder *Builder) LightCyanB() *Builder { + return builder.With(LightCyanB) +} + +// LightWhiteB is a syntax for LightWhiteB. +func (builder *Builder) LightWhiteB() *Builder { + return builder.With(LightWhiteB) +} + +// Color3BitF is a syntax for Color3BitF. +func (builder *Builder) Color3BitF(c RGB3Bit) *Builder { + return builder.With(Color3BitF(c)) +} + +// Color3BitB is a syntax for Color3BitB. +func (builder *Builder) Color3BitB(c RGB3Bit) *Builder { + return builder.With(Color3BitB(c)) +} + +// Color8BitF is a syntax for Color8BitF. +func (builder *Builder) Color8BitF(c RGB8Bit) *Builder { + return builder.With(Color8BitF(c)) +} + +// Color8BitB is a syntax for Color8BitB. +func (builder *Builder) Color8BitB(c RGB8Bit) *Builder { + return builder.With(Color8BitB(c)) +} + +// FullColorF is a syntax for FullColorF. +func (builder *Builder) FullColorF(r, g, b uint8) *Builder { + return builder.With(FullColorF(r, g, b)) +} + +// FullColorB is a syntax for FullColorB. +func (builder *Builder) FullColorB(r, g, b uint8) *Builder { + return builder.With(FullColorB(r, g, b)) +} + +// RGB3BitF is a syntax for Color3BitF with NewRGB3Bit. +func (builder *Builder) RGB3BitF(r, g, b uint8) *Builder { + return builder.Color3BitF(NewRGB3Bit(r, g, b)) +} + +// RGB3BitB is a syntax for Color3BitB with NewRGB3Bit. +func (builder *Builder) RGB3BitB(r, g, b uint8) *Builder { + return builder.Color3BitB(NewRGB3Bit(r, g, b)) +} + +// RGB8BitF is a syntax for Color8BitF with NewRGB8Bit. +func (builder *Builder) RGB8BitF(r, g, b uint8) *Builder { + return builder.Color8BitF(NewRGB8Bit(r, g, b)) +} + +// RGB8BitB is a syntax for Color8BitB with NewRGB8Bit. +func (builder *Builder) RGB8BitB(r, g, b uint8) *Builder { + return builder.Color8BitB(NewRGB8Bit(r, g, b)) +} + +func init() { + EmptyBuilder = &Builder{empty} +} diff --git a/vendor/github.com/morikuni/aec/sample.gif b/vendor/github.com/morikuni/aec/sample.gif new file mode 100644 index 00000000000..c6c613bb706 Binary files /dev/null and b/vendor/github.com/morikuni/aec/sample.gif differ diff --git a/vendor/github.com/morikuni/aec/sgr.go b/vendor/github.com/morikuni/aec/sgr.go new file mode 100644 index 00000000000..0ba3464e6db --- /dev/null +++ b/vendor/github.com/morikuni/aec/sgr.go @@ -0,0 +1,202 @@ +package aec + +import ( + "fmt" +) + +// RGB3Bit is a 3bit RGB color. +type RGB3Bit uint8 + +// RGB8Bit is a 8bit RGB color. +type RGB8Bit uint8 + +func newSGR(n uint) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dm", n)) +} + +// NewRGB3Bit create a RGB3Bit from given RGB. +func NewRGB3Bit(r, g, b uint8) RGB3Bit { + return RGB3Bit((r >> 7) | ((g >> 6) & 0x2) | ((b >> 5) & 0x4)) +} + +// NewRGB8Bit create a RGB8Bit from given RGB. +func NewRGB8Bit(r, g, b uint8) RGB8Bit { + return RGB8Bit(16 + 36*(r/43) + 6*(g/43) + b/43) +} + +// Color3BitF set the foreground color of text. +func Color3BitF(c RGB3Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dm", c+30)) +} + +// Color3BitB set the background color of text. +func Color3BitB(c RGB3Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dm", c+40)) +} + +// Color8BitF set the foreground color of text. +func Color8BitF(c RGB8Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"38;5;%dm", c)) +} + +// Color8BitB set the background color of text. +func Color8BitB(c RGB8Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"48;5;%dm", c)) +} + +// FullColorF set the foreground color of text. +func FullColorF(r, g, b uint8) ANSI { + return newAnsi(fmt.Sprintf(esc+"38;2;%d;%d;%dm", r, g, b)) +} + +// FullColorB set the foreground color of text. +func FullColorB(r, g, b uint8) ANSI { + return newAnsi(fmt.Sprintf(esc+"48;2;%d;%d;%dm", r, g, b)) +} + +// Style +var ( + // Bold set the text style to bold or increased intensity. + Bold ANSI + + // Faint set the text style to faint. + Faint ANSI + + // Italic set the text style to italic. + Italic ANSI + + // Underline set the text style to underline. + Underline ANSI + + // BlinkSlow set the text style to slow blink. + BlinkSlow ANSI + + // BlinkRapid set the text style to rapid blink. + BlinkRapid ANSI + + // Inverse swap the foreground color and background color. + Inverse ANSI + + // Conceal set the text style to conceal. + Conceal ANSI + + // CrossOut set the text style to crossed out. + CrossOut ANSI + + // Frame set the text style to framed. + Frame ANSI + + // Encircle set the text style to encircled. + Encircle ANSI + + // Overline set the text style to overlined. + Overline ANSI +) + +// Foreground color of text. +var ( + // DefaultF is the default color of foreground. + DefaultF ANSI + + // Normal color + BlackF ANSI + RedF ANSI + GreenF ANSI + YellowF ANSI + BlueF ANSI + MagentaF ANSI + CyanF ANSI + WhiteF ANSI + + // Light color + LightBlackF ANSI + LightRedF ANSI + LightGreenF ANSI + LightYellowF ANSI + LightBlueF ANSI + LightMagentaF ANSI + LightCyanF ANSI + LightWhiteF ANSI +) + +// Background color of text. +var ( + // DefaultB is the default color of background. + DefaultB ANSI + + // Normal color + BlackB ANSI + RedB ANSI + GreenB ANSI + YellowB ANSI + BlueB ANSI + MagentaB ANSI + CyanB ANSI + WhiteB ANSI + + // Light color + LightBlackB ANSI + LightRedB ANSI + LightGreenB ANSI + LightYellowB ANSI + LightBlueB ANSI + LightMagentaB ANSI + LightCyanB ANSI + LightWhiteB ANSI +) + +func init() { + Bold = newSGR(1) + Faint = newSGR(2) + Italic = newSGR(3) + Underline = newSGR(4) + BlinkSlow = newSGR(5) + BlinkRapid = newSGR(6) + Inverse = newSGR(7) + Conceal = newSGR(8) + CrossOut = newSGR(9) + + BlackF = newSGR(30) + RedF = newSGR(31) + GreenF = newSGR(32) + YellowF = newSGR(33) + BlueF = newSGR(34) + MagentaF = newSGR(35) + CyanF = newSGR(36) + WhiteF = newSGR(37) + + DefaultF = newSGR(39) + + BlackB = newSGR(40) + RedB = newSGR(41) + GreenB = newSGR(42) + YellowB = newSGR(43) + BlueB = newSGR(44) + MagentaB = newSGR(45) + CyanB = newSGR(46) + WhiteB = newSGR(47) + + DefaultB = newSGR(49) + + Frame = newSGR(51) + Encircle = newSGR(52) + Overline = newSGR(53) + + LightBlackF = newSGR(90) + LightRedF = newSGR(91) + LightGreenF = newSGR(92) + LightYellowF = newSGR(93) + LightBlueF = newSGR(94) + LightMagentaF = newSGR(95) + LightCyanF = newSGR(96) + LightWhiteF = newSGR(97) + + LightBlackB = newSGR(100) + LightRedB = newSGR(101) + LightGreenB = newSGR(102) + LightYellowB = newSGR(103) + LightBlueB = newSGR(104) + LightMagentaB = newSGR(105) + LightCyanB = newSGR(106) + LightWhiteB = newSGR(107) +} diff --git a/vendor/github.com/opencontainers/runc/NOTICE b/vendor/github.com/opencontainers/runc/NOTICE deleted file mode 100644 index 5c97abce4b9..00000000000 --- a/vendor/github.com/opencontainers/runc/NOTICE +++ /dev/null @@ -1,17 +0,0 @@ -runc - -Copyright 2012-2015 Docker, Inc. - -This product includes software developed at Docker, Inc. (http://www.docker.com). - -The following is courtesy of our legal counsel: - - -Use and transfer of Docker may be subject to certain restrictions by the -United States and other governments. -It is your responsibility to ensure that your use and/or transfer does not -violate applicable laws. - -For more information, please see http://www.bis.doc.gov - -See also http://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/MAINTAINERS b/vendor/github.com/opencontainers/runc/libcontainer/user/MAINTAINERS deleted file mode 100644 index edbe2006694..00000000000 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/MAINTAINERS +++ /dev/null @@ -1,2 +0,0 @@ -Tianon Gravi (@tianon) -Aleksa Sarai (@cyphar) diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go deleted file mode 100644 index ab1439f3614..00000000000 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go +++ /dev/null @@ -1,110 +0,0 @@ -package user - -import ( - "errors" - "syscall" -) - -var ( - // The current operating system does not provide the required data for user lookups. - ErrUnsupported = errors.New("user lookup: operating system does not provide passwd-formatted data") - // No matching entries found in file. - ErrNoPasswdEntries = errors.New("no matching entries in passwd file") - ErrNoGroupEntries = errors.New("no matching entries in group file") -) - -func lookupUser(filter func(u User) bool) (User, error) { - // Get operating system-specific passwd reader-closer. - passwd, err := GetPasswd() - if err != nil { - return User{}, err - } - defer passwd.Close() - - // Get the users. - users, err := ParsePasswdFilter(passwd, filter) - if err != nil { - return User{}, err - } - - // No user entries found. - if len(users) == 0 { - return User{}, ErrNoPasswdEntries - } - - // Assume the first entry is the "correct" one. - return users[0], nil -} - -// CurrentUser looks up the current user by their user id in /etc/passwd. If the -// user cannot be found (or there is no /etc/passwd file on the filesystem), -// then CurrentUser returns an error. -func CurrentUser() (User, error) { - return LookupUid(syscall.Getuid()) -} - -// LookupUser looks up a user by their username in /etc/passwd. If the user -// cannot be found (or there is no /etc/passwd file on the filesystem), then -// LookupUser returns an error. -func LookupUser(username string) (User, error) { - return lookupUser(func(u User) bool { - return u.Name == username - }) -} - -// LookupUid looks up a user by their user id in /etc/passwd. If the user cannot -// be found (or there is no /etc/passwd file on the filesystem), then LookupId -// returns an error. -func LookupUid(uid int) (User, error) { - return lookupUser(func(u User) bool { - return u.Uid == uid - }) -} - -func lookupGroup(filter func(g Group) bool) (Group, error) { - // Get operating system-specific group reader-closer. - group, err := GetGroup() - if err != nil { - return Group{}, err - } - defer group.Close() - - // Get the users. - groups, err := ParseGroupFilter(group, filter) - if err != nil { - return Group{}, err - } - - // No user entries found. - if len(groups) == 0 { - return Group{}, ErrNoGroupEntries - } - - // Assume the first entry is the "correct" one. - return groups[0], nil -} - -// CurrentGroup looks up the current user's group by their primary group id's -// entry in /etc/passwd. If the group cannot be found (or there is no -// /etc/group file on the filesystem), then CurrentGroup returns an error. -func CurrentGroup() (Group, error) { - return LookupGid(syscall.Getgid()) -} - -// LookupGroup looks up a group by its name in /etc/group. If the group cannot -// be found (or there is no /etc/group file on the filesystem), then LookupGroup -// returns an error. -func LookupGroup(groupname string) (Group, error) { - return lookupGroup(func(g Group) bool { - return g.Name == groupname - }) -} - -// LookupGid looks up a group by its group id in /etc/group. If the group cannot -// be found (or there is no /etc/group file on the filesystem), then LookupGid -// returns an error. -func LookupGid(gid int) (Group, error) { - return lookupGroup(func(g Group) bool { - return g.Gid == gid - }) -} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go deleted file mode 100644 index 758b734c225..00000000000 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go +++ /dev/null @@ -1,30 +0,0 @@ -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package user - -import ( - "io" - "os" -) - -// Unix-specific path to the passwd and group formatted files. -const ( - unixPasswdPath = "/etc/passwd" - unixGroupPath = "/etc/group" -) - -func GetPasswdPath() (string, error) { - return unixPasswdPath, nil -} - -func GetPasswd() (io.ReadCloser, error) { - return os.Open(unixPasswdPath) -} - -func GetGroupPath() (string, error) { - return unixGroupPath, nil -} - -func GetGroup() (io.ReadCloser, error) { - return os.Open(unixGroupPath) -} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go deleted file mode 100644 index 7217948870c..00000000000 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go +++ /dev/null @@ -1,21 +0,0 @@ -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package user - -import "io" - -func GetPasswdPath() (string, error) { - return "", ErrUnsupported -} - -func GetPasswd() (io.ReadCloser, error) { - return nil, ErrUnsupported -} - -func GetGroupPath() (string, error) { - return "", ErrUnsupported -} - -func GetGroup() (io.ReadCloser, error) { - return nil, ErrUnsupported -} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/user.go b/vendor/github.com/opencontainers/runc/libcontainer/user/user.go deleted file mode 100644 index 43fd39ef54d..00000000000 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/user.go +++ /dev/null @@ -1,441 +0,0 @@ -package user - -import ( - "bufio" - "fmt" - "io" - "os" - "strconv" - "strings" -) - -const ( - minId = 0 - maxId = 1<<31 - 1 //for 32-bit systems compatibility -) - -var ( - ErrRange = fmt.Errorf("uids and gids must be in range %d-%d", minId, maxId) -) - -type User struct { - Name string - Pass string - Uid int - Gid int - Gecos string - Home string - Shell string -} - -type Group struct { - Name string - Pass string - Gid int - List []string -} - -func parseLine(line string, v ...interface{}) { - if line == "" { - return - } - - parts := strings.Split(line, ":") - for i, p := range parts { - // Ignore cases where we don't have enough fields to populate the arguments. - // Some configuration files like to misbehave. - if len(v) <= i { - break - } - - // Use the type of the argument to figure out how to parse it, scanf() style. - // This is legit. - switch e := v[i].(type) { - case *string: - *e = p - case *int: - // "numbers", with conversion errors ignored because of some misbehaving configuration files. - *e, _ = strconv.Atoi(p) - case *[]string: - // Comma-separated lists. - if p != "" { - *e = strings.Split(p, ",") - } else { - *e = []string{} - } - default: - // Someone goof'd when writing code using this function. Scream so they can hear us. - panic(fmt.Sprintf("parseLine only accepts {*string, *int, *[]string} as arguments! %#v is not a pointer!", e)) - } - } -} - -func ParsePasswdFile(path string) ([]User, error) { - passwd, err := os.Open(path) - if err != nil { - return nil, err - } - defer passwd.Close() - return ParsePasswd(passwd) -} - -func ParsePasswd(passwd io.Reader) ([]User, error) { - return ParsePasswdFilter(passwd, nil) -} - -func ParsePasswdFileFilter(path string, filter func(User) bool) ([]User, error) { - passwd, err := os.Open(path) - if err != nil { - return nil, err - } - defer passwd.Close() - return ParsePasswdFilter(passwd, filter) -} - -func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) { - if r == nil { - return nil, fmt.Errorf("nil source for passwd-formatted data") - } - - var ( - s = bufio.NewScanner(r) - out = []User{} - ) - - for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - - line := strings.TrimSpace(s.Text()) - if line == "" { - continue - } - - // see: man 5 passwd - // name:password:UID:GID:GECOS:directory:shell - // Name:Pass:Uid:Gid:Gecos:Home:Shell - // root:x:0:0:root:/root:/bin/bash - // adm:x:3:4:adm:/var/adm:/bin/false - p := User{} - parseLine(line, &p.Name, &p.Pass, &p.Uid, &p.Gid, &p.Gecos, &p.Home, &p.Shell) - - if filter == nil || filter(p) { - out = append(out, p) - } - } - - return out, nil -} - -func ParseGroupFile(path string) ([]Group, error) { - group, err := os.Open(path) - if err != nil { - return nil, err - } - - defer group.Close() - return ParseGroup(group) -} - -func ParseGroup(group io.Reader) ([]Group, error) { - return ParseGroupFilter(group, nil) -} - -func ParseGroupFileFilter(path string, filter func(Group) bool) ([]Group, error) { - group, err := os.Open(path) - if err != nil { - return nil, err - } - defer group.Close() - return ParseGroupFilter(group, filter) -} - -func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) { - if r == nil { - return nil, fmt.Errorf("nil source for group-formatted data") - } - - var ( - s = bufio.NewScanner(r) - out = []Group{} - ) - - for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - - text := s.Text() - if text == "" { - continue - } - - // see: man 5 group - // group_name:password:GID:user_list - // Name:Pass:Gid:List - // root:x:0:root - // adm:x:4:root,adm,daemon - p := Group{} - parseLine(text, &p.Name, &p.Pass, &p.Gid, &p.List) - - if filter == nil || filter(p) { - out = append(out, p) - } - } - - return out, nil -} - -type ExecUser struct { - Uid int - Gid int - Sgids []int - Home string -} - -// GetExecUserPath is a wrapper for GetExecUser. It reads data from each of the -// given file paths and uses that data as the arguments to GetExecUser. If the -// files cannot be opened for any reason, the error is ignored and a nil -// io.Reader is passed instead. -func GetExecUserPath(userSpec string, defaults *ExecUser, passwdPath, groupPath string) (*ExecUser, error) { - passwd, err := os.Open(passwdPath) - if err != nil { - passwd = nil - } else { - defer passwd.Close() - } - - group, err := os.Open(groupPath) - if err != nil { - group = nil - } else { - defer group.Close() - } - - return GetExecUser(userSpec, defaults, passwd, group) -} - -// GetExecUser parses a user specification string (using the passwd and group -// readers as sources for /etc/passwd and /etc/group data, respectively). In -// the case of blank fields or missing data from the sources, the values in -// defaults is used. -// -// GetExecUser will return an error if a user or group literal could not be -// found in any entry in passwd and group respectively. -// -// Examples of valid user specifications are: -// * "" -// * "user" -// * "uid" -// * "user:group" -// * "uid:gid -// * "user:gid" -// * "uid:group" -// -// It should be noted that if you specify a numeric user or group id, they will -// not be evaluated as usernames (only the metadata will be filled). So attempting -// to parse a user with user.Name = "1337" will produce the user with a UID of -// 1337. -func GetExecUser(userSpec string, defaults *ExecUser, passwd, group io.Reader) (*ExecUser, error) { - if defaults == nil { - defaults = new(ExecUser) - } - - // Copy over defaults. - user := &ExecUser{ - Uid: defaults.Uid, - Gid: defaults.Gid, - Sgids: defaults.Sgids, - Home: defaults.Home, - } - - // Sgids slice *cannot* be nil. - if user.Sgids == nil { - user.Sgids = []int{} - } - - // Allow for userArg to have either "user" syntax, or optionally "user:group" syntax - var userArg, groupArg string - parseLine(userSpec, &userArg, &groupArg) - - // Convert userArg and groupArg to be numeric, so we don't have to execute - // Atoi *twice* for each iteration over lines. - uidArg, uidErr := strconv.Atoi(userArg) - gidArg, gidErr := strconv.Atoi(groupArg) - - // Find the matching user. - users, err := ParsePasswdFilter(passwd, func(u User) bool { - if userArg == "" { - // Default to current state of the user. - return u.Uid == user.Uid - } - - if uidErr == nil { - // If the userArg is numeric, always treat it as a UID. - return uidArg == u.Uid - } - - return u.Name == userArg - }) - - // If we can't find the user, we have to bail. - if err != nil && passwd != nil { - if userArg == "" { - userArg = strconv.Itoa(user.Uid) - } - return nil, fmt.Errorf("unable to find user %s: %v", userArg, err) - } - - var matchedUserName string - if len(users) > 0 { - // First match wins, even if there's more than one matching entry. - matchedUserName = users[0].Name - user.Uid = users[0].Uid - user.Gid = users[0].Gid - user.Home = users[0].Home - } else if userArg != "" { - // If we can't find a user with the given username, the only other valid - // option is if it's a numeric username with no associated entry in passwd. - - if uidErr != nil { - // Not numeric. - return nil, fmt.Errorf("unable to find user %s: %v", userArg, ErrNoPasswdEntries) - } - user.Uid = uidArg - - // Must be inside valid uid range. - if user.Uid < minId || user.Uid > maxId { - return nil, ErrRange - } - - // Okay, so it's numeric. We can just roll with this. - } - - // On to the groups. If we matched a username, we need to do this because of - // the supplementary group IDs. - if groupArg != "" || matchedUserName != "" { - groups, err := ParseGroupFilter(group, func(g Group) bool { - // If the group argument isn't explicit, we'll just search for it. - if groupArg == "" { - // Check if user is a member of this group. - for _, u := range g.List { - if u == matchedUserName { - return true - } - } - return false - } - - if gidErr == nil { - // If the groupArg is numeric, always treat it as a GID. - return gidArg == g.Gid - } - - return g.Name == groupArg - }) - if err != nil && group != nil { - return nil, fmt.Errorf("unable to find groups for spec %v: %v", matchedUserName, err) - } - - // Only start modifying user.Gid if it is in explicit form. - if groupArg != "" { - if len(groups) > 0 { - // First match wins, even if there's more than one matching entry. - user.Gid = groups[0].Gid - } else if groupArg != "" { - // If we can't find a group with the given name, the only other valid - // option is if it's a numeric group name with no associated entry in group. - - if gidErr != nil { - // Not numeric. - return nil, fmt.Errorf("unable to find group %s: %v", groupArg, ErrNoGroupEntries) - } - user.Gid = gidArg - - // Must be inside valid gid range. - if user.Gid < minId || user.Gid > maxId { - return nil, ErrRange - } - - // Okay, so it's numeric. We can just roll with this. - } - } else if len(groups) > 0 { - // Supplementary group ids only make sense if in the implicit form. - user.Sgids = make([]int, len(groups)) - for i, group := range groups { - user.Sgids[i] = group.Gid - } - } - } - - return user, nil -} - -// GetAdditionalGroups looks up a list of groups by name or group id -// against the given /etc/group formatted data. If a group name cannot -// be found, an error will be returned. If a group id cannot be found, -// or the given group data is nil, the id will be returned as-is -// provided it is in the legal range. -func GetAdditionalGroups(additionalGroups []string, group io.Reader) ([]int, error) { - var groups = []Group{} - if group != nil { - var err error - groups, err = ParseGroupFilter(group, func(g Group) bool { - for _, ag := range additionalGroups { - if g.Name == ag || strconv.Itoa(g.Gid) == ag { - return true - } - } - return false - }) - if err != nil { - return nil, fmt.Errorf("Unable to find additional groups %v: %v", additionalGroups, err) - } - } - - gidMap := make(map[int]struct{}) - for _, ag := range additionalGroups { - var found bool - for _, g := range groups { - // if we found a matched group either by name or gid, take the - // first matched as correct - if g.Name == ag || strconv.Itoa(g.Gid) == ag { - if _, ok := gidMap[g.Gid]; !ok { - gidMap[g.Gid] = struct{}{} - found = true - break - } - } - } - // we asked for a group but didn't find it. let's check to see - // if we wanted a numeric group - if !found { - gid, err := strconv.Atoi(ag) - if err != nil { - return nil, fmt.Errorf("Unable to find group %s", ag) - } - // Ensure gid is inside gid range. - if gid < minId || gid > maxId { - return nil, ErrRange - } - gidMap[gid] = struct{}{} - } - } - gids := []int{} - for gid := range gidMap { - gids = append(gids, gid) - } - return gids, nil -} - -// GetAdditionalGroupsPath is a wrapper around GetAdditionalGroups -// that opens the groupPath given and gives it as an argument to -// GetAdditionalGroups. -func GetAdditionalGroupsPath(additionalGroups []string, groupPath string) ([]int, error) { - group, err := os.Open(groupPath) - if err == nil { - defer group.Close() - } - return GetAdditionalGroups(additionalGroups, group) -} diff --git a/vendor/github.com/pelletier/go-buffruneio/.gitignore b/vendor/github.com/pelletier/go-buffruneio/.gitignore deleted file mode 100644 index c56069fe260..00000000000 --- a/vendor/github.com/pelletier/go-buffruneio/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.test \ No newline at end of file diff --git a/vendor/github.com/pelletier/go-buffruneio/.travis.yml b/vendor/github.com/pelletier/go-buffruneio/.travis.yml deleted file mode 100644 index 9720442cd81..00000000000 --- a/vendor/github.com/pelletier/go-buffruneio/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go -sudo: false -go: - - 1.3.3 - - 1.4.3 - - 1.5.3 - - tip diff --git a/vendor/github.com/pelletier/go-buffruneio/README.md b/vendor/github.com/pelletier/go-buffruneio/README.md deleted file mode 100644 index ff608b3ab80..00000000000 --- a/vendor/github.com/pelletier/go-buffruneio/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# buffruneio - -[![Tests Status](https://travis-ci.org/pelletier/go-buffruneio.svg?branch=master)](https://travis-ci.org/pelletier/go-buffruneio) -[![GoDoc](https://godoc.org/github.com/pelletier/go-buffruneio?status.svg)](https://godoc.org/github.com/pelletier/go-buffruneio) - -Buffruneio is a wrapper around bufio to provide buffered runes access with -unlimited unreads. - -```go -import "github.com/pelletier/go-buffruneio" -``` - -## Examples - -```go -import ( - "fmt" - "github.com/pelletier/go-buffruneio" - "strings" -) - -reader := buffruneio.NewReader(strings.NewReader("abcd")) -fmt.Println(reader.ReadRune()) // 'a' -fmt.Println(reader.ReadRune()) // 'b' -fmt.Println(reader.ReadRune()) // 'c' -reader.UnreadRune() -reader.UnreadRune() -fmt.Println(reader.ReadRune()) // 'b' -fmt.Println(reader.ReadRune()) // 'c' -``` - -## Documentation - -The documentation and additional examples are available at -[godoc.org](http://godoc.org/github.com/pelletier/go-buffruneio). - -## Contribute - -Feel free to report bugs and patches using GitHub's pull requests system on -[pelletier/go-toml](https://github.com/pelletier/go-buffruneio). Any feedback is -much appreciated! - -## LICENSE - -Copyright (c) 2016 Thomas Pelletier - -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/pelletier/go-buffruneio/buffruneio.go b/vendor/github.com/pelletier/go-buffruneio/buffruneio.go deleted file mode 100644 index 4e6d6ea6100..00000000000 --- a/vendor/github.com/pelletier/go-buffruneio/buffruneio.go +++ /dev/null @@ -1,117 +0,0 @@ -// Package buffruneio is a wrapper around bufio to provide buffered runes access with unlimited unreads. -package buffruneio - -import ( - "bufio" - "container/list" - "errors" - "io" -) - -// Rune to indicate end of file. -const ( - EOF = -(iota + 1) -) - -// ErrNoRuneToUnread is returned by UnreadRune() when the read index is already at the beginning of the buffer. -var ErrNoRuneToUnread = errors.New("no rune to unwind") - -// Reader implements runes buffering for an io.Reader object. -type Reader struct { - buffer *list.List - current *list.Element - input *bufio.Reader -} - -// NewReader returns a new Reader. -func NewReader(rd io.Reader) *Reader { - return &Reader{ - buffer: list.New(), - input: bufio.NewReader(rd), - } -} - -type runeWithSize struct { - r rune - size int -} - -func (rd *Reader) feedBuffer() error { - r, size, err := rd.input.ReadRune() - - if err != nil { - if err != io.EOF { - return err - } - r = EOF - } - - newRuneWithSize := runeWithSize{r, size} - - rd.buffer.PushBack(newRuneWithSize) - if rd.current == nil { - rd.current = rd.buffer.Back() - } - return nil -} - -// ReadRune reads the next rune from buffer, or from the underlying reader if needed. -func (rd *Reader) ReadRune() (rune, int, error) { - if rd.current == rd.buffer.Back() || rd.current == nil { - err := rd.feedBuffer() - if err != nil { - return EOF, 0, err - } - } - - runeWithSize := rd.current.Value.(runeWithSize) - rd.current = rd.current.Next() - return runeWithSize.r, runeWithSize.size, nil -} - -// UnreadRune pushes back the previously read rune in the buffer, extending it if needed. -func (rd *Reader) UnreadRune() error { - if rd.current == rd.buffer.Front() { - return ErrNoRuneToUnread - } - if rd.current == nil { - rd.current = rd.buffer.Back() - } else { - rd.current = rd.current.Prev() - } - return nil -} - -// Forget removes runes stored before the current stream position index. -func (rd *Reader) Forget() { - if rd.current == nil { - rd.current = rd.buffer.Back() - } - for ; rd.current != rd.buffer.Front(); rd.buffer.Remove(rd.current.Prev()) { - } -} - -// PeekRune returns at most the next n runes, reading from the uderlying source if -// needed. Does not move the current index. It includes EOF if reached. -func (rd *Reader) PeekRunes(n int) []rune { - res := make([]rune, 0, n) - cursor := rd.current - for i := 0; i < n; i++ { - if cursor == nil { - err := rd.feedBuffer() - if err != nil { - return res - } - cursor = rd.buffer.Back() - } - if cursor != nil { - r := cursor.Value.(runeWithSize).r - res = append(res, r) - if r == EOF { - return res - } - cursor = cursor.Next() - } - } - return res -} diff --git a/vendor/github.com/xanzy/ssh-agent/go.mod b/vendor/github.com/xanzy/ssh-agent/go.mod new file mode 100644 index 00000000000..6664c4888e2 --- /dev/null +++ b/vendor/github.com/xanzy/ssh-agent/go.mod @@ -0,0 +1,6 @@ +module github.com/xanzy/ssh-agent + +require ( + golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2 + golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0 // indirect +) diff --git a/vendor/github.com/xanzy/ssh-agent/go.sum b/vendor/github.com/xanzy/ssh-agent/go.sum new file mode 100644 index 00000000000..a9a0016921b --- /dev/null +++ b/vendor/github.com/xanzy/ssh-agent/go.sum @@ -0,0 +1,4 @@ +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2 h1:NwxKRvbkH5MsNkvOtPZi3/3kmI8CAzs3mtv+GLQMkNo= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0 h1:bzeyCHgoAyjZjAhvTpks+qM7sdlh4cCSitmXeCEO3B4= +golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/golang.org/x/crypto/ed25519/ed25519.go b/vendor/golang.org/x/crypto/ed25519/ed25519.go index d6f683ba3f7..c7f8c7e64ec 100644 --- a/vendor/golang.org/x/crypto/ed25519/ed25519.go +++ b/vendor/golang.org/x/crypto/ed25519/ed25519.go @@ -2,6 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// In Go 1.13, the ed25519 package was promoted to the standard library as +// crypto/ed25519, and this package became a wrapper for the standard library one. +// +// +build !go1.13 + // Package ed25519 implements the Ed25519 signature algorithm. See // https://ed25519.cr.yp.to/. // diff --git a/vendor/golang.org/x/crypto/ed25519/ed25519_go113.go b/vendor/golang.org/x/crypto/ed25519/ed25519_go113.go new file mode 100644 index 00000000000..d1448d8d220 --- /dev/null +++ b/vendor/golang.org/x/crypto/ed25519/ed25519_go113.go @@ -0,0 +1,73 @@ +// 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.13 + +// Package ed25519 implements the Ed25519 signature algorithm. See +// https://ed25519.cr.yp.to/. +// +// These functions are also compatible with the “Ed25519” function defined in +// RFC 8032. However, unlike RFC 8032's formulation, this package's private key +// representation includes a public key suffix to make multiple signing +// operations with the same key more efficient. This package refers to the RFC +// 8032 private key as the “seed”. +// +// Beginning with Go 1.13, the functionality of this package was moved to the +// standard library as crypto/ed25519. This package only acts as a compatibility +// wrapper. +package ed25519 + +import ( + "crypto/ed25519" + "io" +) + +const ( + // PublicKeySize is the size, in bytes, of public keys as used in this package. + PublicKeySize = 32 + // PrivateKeySize is the size, in bytes, of private keys as used in this package. + PrivateKeySize = 64 + // SignatureSize is the size, in bytes, of signatures generated and verified by this package. + SignatureSize = 64 + // SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032. + SeedSize = 32 +) + +// PublicKey is the type of Ed25519 public keys. +// +// This type is an alias for crypto/ed25519's PublicKey type. +// See the crypto/ed25519 package for the methods on this type. +type PublicKey = ed25519.PublicKey + +// PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer. +// +// This type is an alias for crypto/ed25519's PrivateKey type. +// See the crypto/ed25519 package for the methods on this type. +type PrivateKey = ed25519.PrivateKey + +// GenerateKey generates a public/private key pair using entropy from rand. +// If rand is nil, crypto/rand.Reader will be used. +func GenerateKey(rand io.Reader) (PublicKey, PrivateKey, error) { + return ed25519.GenerateKey(rand) +} + +// NewKeyFromSeed calculates a private key from a seed. It will panic if +// len(seed) is not SeedSize. This function is provided for interoperability +// with RFC 8032. RFC 8032's private keys correspond to seeds in this +// package. +func NewKeyFromSeed(seed []byte) PrivateKey { + return ed25519.NewKeyFromSeed(seed) +} + +// Sign signs the message with privateKey and returns a signature. It will +// panic if len(privateKey) is not PrivateKeySize. +func Sign(privateKey PrivateKey, message []byte) []byte { + return ed25519.Sign(privateKey, message) +} + +// Verify reports whether sig is a valid signature of message by publicKey. It +// will panic if len(publicKey) is not PublicKeySize. +func Verify(publicKey PublicKey, message, sig []byte) bool { + return ed25519.Verify(publicKey, message, sig) +} diff --git a/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s b/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s index cde3fc989b7..54418522994 100644 --- a/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s +++ b/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s @@ -10,15 +10,14 @@ // # details see http://www.openssl.org/~appro/cryptogams/. // # ==================================================================== -// Original code can be found at the link below: -// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91e5c39ca79126a4a876d5d8ff +// Code for the perl script that generates the ppc64 assembler +// can be found in the cryptogams repository at the link below. It is based on +// the original from openssl. -// There are some differences between CRYPTOGAMS code and this one. The round -// loop for "_int" isn't the same as the original. Some adjustments were -// necessary because there are less vector registers available. For example, some -// X variables (r12, r13, r14, and r15) share the same register used by the -// counter. The original code uses ctr to name the counter. Here we use CNT -// because golang uses CTR as the counter register name. +// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91 + +// The differences in this and the original implementation are +// due to the calling conventions and initialization of constants. // +build ppc64le,!gccgo,!appengine @@ -29,8 +28,9 @@ #define LEN R5 #define KEY R6 #define CNT R7 +#define TMP R15 -#define TEMP R8 +#define CONSTBASE R16 #define X0 R11 #define X1 R12 @@ -49,620 +49,417 @@ #define X14 R26 #define X15 R27 -#define CON0 X0 -#define CON1 X1 -#define CON2 X2 -#define CON3 X3 - -#define KEY0 X4 -#define KEY1 X5 -#define KEY2 X6 -#define KEY3 X7 -#define KEY4 X8 -#define KEY5 X9 -#define KEY6 X10 -#define KEY7 X11 - -#define CNT0 X12 -#define CNT1 X13 -#define CNT2 X14 -#define CNT3 X15 - -#define TMP0 R9 -#define TMP1 R10 -#define TMP2 R28 -#define TMP3 R29 - -#define CONSTS R8 - -#define A0 V0 -#define B0 V1 -#define C0 V2 -#define D0 V3 -#define A1 V4 -#define B1 V5 -#define C1 V6 -#define D1 V7 -#define A2 V8 -#define B2 V9 -#define C2 V10 -#define D2 V11 -#define T0 V12 -#define T1 V13 -#define T2 V14 - -#define K0 V15 -#define K1 V16 -#define K2 V17 -#define K3 V18 -#define K4 V19 -#define K5 V20 - -#define FOUR V21 -#define SIXTEEN V22 -#define TWENTY4 V23 -#define TWENTY V24 -#define TWELVE V25 -#define TWENTY5 V26 -#define SEVEN V27 - -#define INPPERM V28 -#define OUTPERM V29 -#define OUTMASK V30 - -#define DD0 V31 -#define DD1 SEVEN -#define DD2 T0 -#define DD3 T1 -#define DD4 T2 - -DATA ·consts+0x00(SB)/8, $0x3320646e61707865 -DATA ·consts+0x08(SB)/8, $0x6b20657479622d32 -DATA ·consts+0x10(SB)/8, $0x0000000000000001 -DATA ·consts+0x18(SB)/8, $0x0000000000000000 -DATA ·consts+0x20(SB)/8, $0x0000000000000004 -DATA ·consts+0x28(SB)/8, $0x0000000000000000 -DATA ·consts+0x30(SB)/8, $0x0a0b08090e0f0c0d -DATA ·consts+0x38(SB)/8, $0x0203000106070405 -DATA ·consts+0x40(SB)/8, $0x090a0b080d0e0f0c -DATA ·consts+0x48(SB)/8, $0x0102030005060704 -GLOBL ·consts(SB), RODATA, $80 - -//func chaCha20_ctr32_vmx(out, inp *byte, len int, key *[32]byte, counter *[16]byte) -TEXT ·chaCha20_ctr32_vmx(SB),NOSPLIT|NOFRAME,$0 - // Load the arguments inside the registers + +DATA consts<>+0x00(SB)/8, $0x3320646e61707865 +DATA consts<>+0x08(SB)/8, $0x6b20657479622d32 +DATA consts<>+0x10(SB)/8, $0x0000000000000001 +DATA consts<>+0x18(SB)/8, $0x0000000000000000 +DATA consts<>+0x20(SB)/8, $0x0000000000000004 +DATA consts<>+0x28(SB)/8, $0x0000000000000000 +DATA consts<>+0x30(SB)/8, $0x0a0b08090e0f0c0d +DATA consts<>+0x38(SB)/8, $0x0203000106070405 +DATA consts<>+0x40(SB)/8, $0x090a0b080d0e0f0c +DATA consts<>+0x48(SB)/8, $0x0102030005060704 +DATA consts<>+0x50(SB)/8, $0x6170786561707865 +DATA consts<>+0x58(SB)/8, $0x6170786561707865 +DATA consts<>+0x60(SB)/8, $0x3320646e3320646e +DATA consts<>+0x68(SB)/8, $0x3320646e3320646e +DATA consts<>+0x70(SB)/8, $0x79622d3279622d32 +DATA consts<>+0x78(SB)/8, $0x79622d3279622d32 +DATA consts<>+0x80(SB)/8, $0x6b2065746b206574 +DATA consts<>+0x88(SB)/8, $0x6b2065746b206574 +DATA consts<>+0x90(SB)/8, $0x0000000100000000 +DATA consts<>+0x98(SB)/8, $0x0000000300000002 +GLOBL consts<>(SB), RODATA, $0xa0 + +//func chaCha20_ctr32_vsx(out, inp []byte, len int, key *[32]byte, counter *[16]byte) +TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40 MOVD out+0(FP), OUT MOVD inp+8(FP), INP MOVD len+16(FP), LEN MOVD key+24(FP), KEY - MOVD counter+32(FP), CNT - - MOVD $·consts(SB), CONSTS // point to consts addr - - MOVD $16, X0 - MOVD $32, X1 - MOVD $48, X2 - MOVD $64, X3 - MOVD $31, X4 - MOVD $15, X5 - - // Load key - LVX (KEY)(R0), K1 - LVSR (KEY)(R0), T0 - LVX (KEY)(X0), K2 - LVX (KEY)(X4), DD0 - - // Load counter - LVX (CNT)(R0), K3 - LVSR (CNT)(R0), T1 - LVX (CNT)(X5), DD1 - - // Load constants - LVX (CONSTS)(R0), K0 - LVX (CONSTS)(X0), K5 - LVX (CONSTS)(X1), FOUR - LVX (CONSTS)(X2), SIXTEEN - LVX (CONSTS)(X3), TWENTY4 - - // Align key and counter - VPERM K2, K1, T0, K1 - VPERM DD0, K2, T0, K2 - VPERM DD1, K3, T1, K3 - - // Load counter to GPR - MOVWZ 0(CNT), CNT0 - MOVWZ 4(CNT), CNT1 - MOVWZ 8(CNT), CNT2 - MOVWZ 12(CNT), CNT3 - - // Adjust vectors for the initial state - VADDUWM K3, K5, K3 - VADDUWM K3, K5, K4 - VADDUWM K4, K5, K5 - - // Synthesized constants - VSPLTISW $-12, TWENTY - VSPLTISW $12, TWELVE - VSPLTISW $-7, TWENTY5 - - VXOR T0, T0, T0 - VSPLTISW $-1, OUTMASK - LVSR (INP)(R0), INPPERM - LVSL (OUT)(R0), OUTPERM - VPERM OUTMASK, T0, OUTPERM, OUTMASK - -loop_outer_vmx: - // Load constant - MOVD $0x61707865, CON0 - MOVD $0x3320646e, CON1 - MOVD $0x79622d32, CON2 - MOVD $0x6b206574, CON3 - - VOR K0, K0, A0 - VOR K0, K0, A1 - VOR K0, K0, A2 - VOR K1, K1, B0 - - MOVD $10, TEMP - - // Load key to GPR - MOVWZ 0(KEY), X4 - MOVWZ 4(KEY), X5 - MOVWZ 8(KEY), X6 - MOVWZ 12(KEY), X7 - VOR K1, K1, B1 - VOR K1, K1, B2 - MOVWZ 16(KEY), X8 - MOVWZ 0(CNT), X12 - MOVWZ 20(KEY), X9 - MOVWZ 4(CNT), X13 - VOR K2, K2, C0 - VOR K2, K2, C1 - MOVWZ 24(KEY), X10 - MOVWZ 8(CNT), X14 - VOR K2, K2, C2 - VOR K3, K3, D0 - MOVWZ 28(KEY), X11 - MOVWZ 12(CNT), X15 - VOR K4, K4, D1 - VOR K5, K5, D2 - - MOVD X4, TMP0 - MOVD X5, TMP1 - MOVD X6, TMP2 - MOVD X7, TMP3 - VSPLTISW $7, SEVEN - - MOVD TEMP, CTR - -loop_vmx: - // CRYPTOGAMS uses a macro to create a loop using perl. This isn't possible - // using assembly macros. Therefore, the macro expansion result was used - // in order to maintain the algorithm efficiency. - // This loop generates three keystream blocks using VMX instructions and, - // in parallel, one keystream block using scalar instructions. - ADD X4, X0, X0 - ADD X5, X1, X1 - VADDUWM A0, B0, A0 - VADDUWM A1, B1, A1 - ADD X6, X2, X2 - ADD X7, X3, X3 - VADDUWM A2, B2, A2 - VXOR D0, A0, D0 - XOR X0, X12, X12 - XOR X1, X13, X13 - VXOR D1, A1, D1 - VXOR D2, A2, D2 - XOR X2, X14, X14 - XOR X3, X15, X15 - VPERM D0, D0, SIXTEEN, D0 - VPERM D1, D1, SIXTEEN, D1 - ROTLW $16, X12, X12 - ROTLW $16, X13, X13 - VPERM D2, D2, SIXTEEN, D2 - VADDUWM C0, D0, C0 - ROTLW $16, X14, X14 - ROTLW $16, X15, X15 - VADDUWM C1, D1, C1 - VADDUWM C2, D2, C2 - ADD X12, X8, X8 - ADD X13, X9, X9 - VXOR B0, C0, T0 - VXOR B1, C1, T1 - ADD X14, X10, X10 - ADD X15, X11, X11 - VXOR B2, C2, T2 - VRLW T0, TWELVE, B0 - XOR X8, X4, X4 - XOR X9, X5, X5 - VRLW T1, TWELVE, B1 - VRLW T2, TWELVE, B2 - XOR X10, X6, X6 - XOR X11, X7, X7 - VADDUWM A0, B0, A0 - VADDUWM A1, B1, A1 - ROTLW $12, X4, X4 - ROTLW $12, X5, X5 - VADDUWM A2, B2, A2 - VXOR D0, A0, D0 - ROTLW $12, X6, X6 - ROTLW $12, X7, X7 - VXOR D1, A1, D1 - VXOR D2, A2, D2 - ADD X4, X0, X0 - ADD X5, X1, X1 - VPERM D0, D0, TWENTY4, D0 - VPERM D1, D1, TWENTY4, D1 - ADD X6, X2, X2 - ADD X7, X3, X3 - VPERM D2, D2, TWENTY4, D2 - VADDUWM C0, D0, C0 - XOR X0, X12, X12 - XOR X1, X13, X13 - VADDUWM C1, D1, C1 - VADDUWM C2, D2, C2 - XOR X2, X14, X14 - XOR X3, X15, X15 - VXOR B0, C0, T0 - VXOR B1, C1, T1 - ROTLW $8, X12, X12 - ROTLW $8, X13, X13 - VXOR B2, C2, T2 - VRLW T0, SEVEN, B0 - ROTLW $8, X14, X14 - ROTLW $8, X15, X15 - VRLW T1, SEVEN, B1 - VRLW T2, SEVEN, B2 - ADD X12, X8, X8 - ADD X13, X9, X9 - VSLDOI $8, C0, C0, C0 - VSLDOI $8, C1, C1, C1 - ADD X14, X10, X10 - ADD X15, X11, X11 - VSLDOI $8, C2, C2, C2 - VSLDOI $12, B0, B0, B0 - XOR X8, X4, X4 - XOR X9, X5, X5 - VSLDOI $12, B1, B1, B1 - VSLDOI $12, B2, B2, B2 - XOR X10, X6, X6 - XOR X11, X7, X7 - VSLDOI $4, D0, D0, D0 - VSLDOI $4, D1, D1, D1 - ROTLW $7, X4, X4 - ROTLW $7, X5, X5 - VSLDOI $4, D2, D2, D2 - VADDUWM A0, B0, A0 - ROTLW $7, X6, X6 - ROTLW $7, X7, X7 - VADDUWM A1, B1, A1 - VADDUWM A2, B2, A2 - ADD X5, X0, X0 - ADD X6, X1, X1 - VXOR D0, A0, D0 - VXOR D1, A1, D1 - ADD X7, X2, X2 - ADD X4, X3, X3 - VXOR D2, A2, D2 - VPERM D0, D0, SIXTEEN, D0 - XOR X0, X15, X15 - XOR X1, X12, X12 - VPERM D1, D1, SIXTEEN, D1 - VPERM D2, D2, SIXTEEN, D2 - XOR X2, X13, X13 - XOR X3, X14, X14 - VADDUWM C0, D0, C0 - VADDUWM C1, D1, C1 - ROTLW $16, X15, X15 - ROTLW $16, X12, X12 - VADDUWM C2, D2, C2 - VXOR B0, C0, T0 - ROTLW $16, X13, X13 - ROTLW $16, X14, X14 - VXOR B1, C1, T1 - VXOR B2, C2, T2 - ADD X15, X10, X10 - ADD X12, X11, X11 - VRLW T0, TWELVE, B0 - VRLW T1, TWELVE, B1 - ADD X13, X8, X8 - ADD X14, X9, X9 - VRLW T2, TWELVE, B2 - VADDUWM A0, B0, A0 - XOR X10, X5, X5 - XOR X11, X6, X6 - VADDUWM A1, B1, A1 - VADDUWM A2, B2, A2 - XOR X8, X7, X7 - XOR X9, X4, X4 - VXOR D0, A0, D0 - VXOR D1, A1, D1 - ROTLW $12, X5, X5 - ROTLW $12, X6, X6 - VXOR D2, A2, D2 - VPERM D0, D0, TWENTY4, D0 - ROTLW $12, X7, X7 - ROTLW $12, X4, X4 - VPERM D1, D1, TWENTY4, D1 - VPERM D2, D2, TWENTY4, D2 - ADD X5, X0, X0 - ADD X6, X1, X1 - VADDUWM C0, D0, C0 - VADDUWM C1, D1, C1 - ADD X7, X2, X2 - ADD X4, X3, X3 - VADDUWM C2, D2, C2 - VXOR B0, C0, T0 - XOR X0, X15, X15 - XOR X1, X12, X12 - VXOR B1, C1, T1 - VXOR B2, C2, T2 - XOR X2, X13, X13 - XOR X3, X14, X14 - VRLW T0, SEVEN, B0 - VRLW T1, SEVEN, B1 - ROTLW $8, X15, X15 - ROTLW $8, X12, X12 - VRLW T2, SEVEN, B2 - VSLDOI $8, C0, C0, C0 - ROTLW $8, X13, X13 - ROTLW $8, X14, X14 - VSLDOI $8, C1, C1, C1 - VSLDOI $8, C2, C2, C2 - ADD X15, X10, X10 - ADD X12, X11, X11 - VSLDOI $4, B0, B0, B0 - VSLDOI $4, B1, B1, B1 - ADD X13, X8, X8 - ADD X14, X9, X9 - VSLDOI $4, B2, B2, B2 - VSLDOI $12, D0, D0, D0 - XOR X10, X5, X5 - XOR X11, X6, X6 - VSLDOI $12, D1, D1, D1 - VSLDOI $12, D2, D2, D2 - XOR X8, X7, X7 - XOR X9, X4, X4 - ROTLW $7, X5, X5 - ROTLW $7, X6, X6 - ROTLW $7, X7, X7 - ROTLW $7, X4, X4 - BC 0x10, 0, loop_vmx - - SUB $256, LEN, LEN - - // Accumulate key block - ADD $0x61707865, X0, X0 - ADD $0x3320646e, X1, X1 - ADD $0x79622d32, X2, X2 - ADD $0x6b206574, X3, X3 - ADD TMP0, X4, X4 - ADD TMP1, X5, X5 - ADD TMP2, X6, X6 - ADD TMP3, X7, X7 - MOVWZ 16(KEY), TMP0 - MOVWZ 20(KEY), TMP1 - MOVWZ 24(KEY), TMP2 - MOVWZ 28(KEY), TMP3 - ADD TMP0, X8, X8 - ADD TMP1, X9, X9 - ADD TMP2, X10, X10 - ADD TMP3, X11, X11 - - MOVWZ 12(CNT), TMP0 - MOVWZ 8(CNT), TMP1 - MOVWZ 4(CNT), TMP2 - MOVWZ 0(CNT), TEMP - ADD TMP0, X15, X15 - ADD TMP1, X14, X14 - ADD TMP2, X13, X13 - ADD TEMP, X12, X12 - - // Accumulate key block - VADDUWM A0, K0, A0 - VADDUWM A1, K0, A1 - VADDUWM A2, K0, A2 - VADDUWM B0, K1, B0 - VADDUWM B1, K1, B1 - VADDUWM B2, K1, B2 - VADDUWM C0, K2, C0 - VADDUWM C1, K2, C1 - VADDUWM C2, K2, C2 - VADDUWM D0, K3, D0 - VADDUWM D1, K4, D1 - VADDUWM D2, K5, D2 - - // Increment counter - ADD $4, TEMP, TEMP - MOVW TEMP, 0(CNT) - - VADDUWM K3, FOUR, K3 - VADDUWM K4, FOUR, K4 - VADDUWM K5, FOUR, K5 - - // XOR the input slice (INP) with the keystream, which is stored in GPRs (X0-X3). - - // Load input (aligned or not) - MOVWZ 0(INP), TMP0 - MOVWZ 4(INP), TMP1 - MOVWZ 8(INP), TMP2 - MOVWZ 12(INP), TMP3 - - // XOR with input - XOR TMP0, X0, X0 - XOR TMP1, X1, X1 - XOR TMP2, X2, X2 - XOR TMP3, X3, X3 - MOVWZ 16(INP), TMP0 - MOVWZ 20(INP), TMP1 - MOVWZ 24(INP), TMP2 - MOVWZ 28(INP), TMP3 - XOR TMP0, X4, X4 - XOR TMP1, X5, X5 - XOR TMP2, X6, X6 - XOR TMP3, X7, X7 - MOVWZ 32(INP), TMP0 - MOVWZ 36(INP), TMP1 - MOVWZ 40(INP), TMP2 - MOVWZ 44(INP), TMP3 - XOR TMP0, X8, X8 - XOR TMP1, X9, X9 - XOR TMP2, X10, X10 - XOR TMP3, X11, X11 - MOVWZ 48(INP), TMP0 - MOVWZ 52(INP), TMP1 - MOVWZ 56(INP), TMP2 - MOVWZ 60(INP), TMP3 - XOR TMP0, X12, X12 - XOR TMP1, X13, X13 - XOR TMP2, X14, X14 - XOR TMP3, X15, X15 - - // Store output (aligned or not) - MOVW X0, 0(OUT) - MOVW X1, 4(OUT) - MOVW X2, 8(OUT) - MOVW X3, 12(OUT) - - ADD $64, INP, INP // INP points to the end of the slice for the alignment code below - - MOVW X4, 16(OUT) - MOVD $16, TMP0 - MOVW X5, 20(OUT) - MOVD $32, TMP1 - MOVW X6, 24(OUT) - MOVD $48, TMP2 - MOVW X7, 28(OUT) - MOVD $64, TMP3 - MOVW X8, 32(OUT) - MOVW X9, 36(OUT) - MOVW X10, 40(OUT) - MOVW X11, 44(OUT) - MOVW X12, 48(OUT) - MOVW X13, 52(OUT) - MOVW X14, 56(OUT) - MOVW X15, 60(OUT) - ADD $64, OUT, OUT - - // Load input - LVX (INP)(R0), DD0 - LVX (INP)(TMP0), DD1 - LVX (INP)(TMP1), DD2 - LVX (INP)(TMP2), DD3 - LVX (INP)(TMP3), DD4 - ADD $64, INP, INP - - VPERM DD1, DD0, INPPERM, DD0 // Align input - VPERM DD2, DD1, INPPERM, DD1 - VPERM DD3, DD2, INPPERM, DD2 - VPERM DD4, DD3, INPPERM, DD3 - VXOR A0, DD0, A0 // XOR with input - VXOR B0, DD1, B0 - LVX (INP)(TMP0), DD1 // Keep loading input - VXOR C0, DD2, C0 - LVX (INP)(TMP1), DD2 - VXOR D0, DD3, D0 - LVX (INP)(TMP2), DD3 - LVX (INP)(TMP3), DD0 - ADD $64, INP, INP - MOVD $63, TMP3 // 63 is not a typo - VPERM A0, A0, OUTPERM, A0 - VPERM B0, B0, OUTPERM, B0 - VPERM C0, C0, OUTPERM, C0 - VPERM D0, D0, OUTPERM, D0 - - VPERM DD1, DD4, INPPERM, DD4 // Align input - VPERM DD2, DD1, INPPERM, DD1 - VPERM DD3, DD2, INPPERM, DD2 - VPERM DD0, DD3, INPPERM, DD3 - VXOR A1, DD4, A1 - VXOR B1, DD1, B1 - LVX (INP)(TMP0), DD1 // Keep loading - VXOR C1, DD2, C1 - LVX (INP)(TMP1), DD2 - VXOR D1, DD3, D1 - LVX (INP)(TMP2), DD3 - - // Note that the LVX address is always rounded down to the nearest 16-byte - // boundary, and that it always points to at most 15 bytes beyond the end of - // the slice, so we cannot cross a page boundary. - LVX (INP)(TMP3), DD4 // Redundant in aligned case. - ADD $64, INP, INP - VPERM A1, A1, OUTPERM, A1 // Pre-misalign output - VPERM B1, B1, OUTPERM, B1 - VPERM C1, C1, OUTPERM, C1 - VPERM D1, D1, OUTPERM, D1 - - VPERM DD1, DD0, INPPERM, DD0 // Align Input - VPERM DD2, DD1, INPPERM, DD1 - VPERM DD3, DD2, INPPERM, DD2 - VPERM DD4, DD3, INPPERM, DD3 - VXOR A2, DD0, A2 - VXOR B2, DD1, B2 - VXOR C2, DD2, C2 - VXOR D2, DD3, D2 - VPERM A2, A2, OUTPERM, A2 - VPERM B2, B2, OUTPERM, B2 - VPERM C2, C2, OUTPERM, C2 - VPERM D2, D2, OUTPERM, D2 - - ANDCC $15, OUT, X1 // Is out aligned? - MOVD OUT, X0 - - VSEL A0, B0, OUTMASK, DD0 // Collect pre-misaligned output - VSEL B0, C0, OUTMASK, DD1 - VSEL C0, D0, OUTMASK, DD2 - VSEL D0, A1, OUTMASK, DD3 - VSEL A1, B1, OUTMASK, B0 - VSEL B1, C1, OUTMASK, C0 - VSEL C1, D1, OUTMASK, D0 - VSEL D1, A2, OUTMASK, A1 - VSEL A2, B2, OUTMASK, B1 - VSEL B2, C2, OUTMASK, C1 - VSEL C2, D2, OUTMASK, D1 - - STVX DD0, (OUT+TMP0) - STVX DD1, (OUT+TMP1) - STVX DD2, (OUT+TMP2) - ADD $64, OUT, OUT - STVX DD3, (OUT+R0) - STVX B0, (OUT+TMP0) - STVX C0, (OUT+TMP1) - STVX D0, (OUT+TMP2) - ADD $64, OUT, OUT - STVX A1, (OUT+R0) - STVX B1, (OUT+TMP0) - STVX C1, (OUT+TMP1) - STVX D1, (OUT+TMP2) - ADD $64, OUT, OUT - - BEQ aligned_vmx - - SUB X1, OUT, X2 // in misaligned case edges - MOVD $0, X3 // are written byte-by-byte - -unaligned_tail_vmx: - STVEBX D2, (X2+X3) - ADD $1, X3, X3 - CMPW X3, X1 - BNE unaligned_tail_vmx - SUB X1, X0, X2 - -unaligned_head_vmx: - STVEBX A0, (X2+X1) - CMPW X1, $15 - ADD $1, X1, X1 - BNE unaligned_head_vmx - - CMPU LEN, $255 // done with 256-byte block yet? - BGT loop_outer_vmx - - JMP done_vmx - -aligned_vmx: - STVX A0, (X0+R0) - CMPU LEN, $255 // done with 256-byte block yet? - BGT loop_outer_vmx - -done_vmx: + MOVD cnt+32(FP), CNT + + // Addressing for constants + MOVD $consts<>+0x00(SB), CONSTBASE + MOVD $16, R8 + MOVD $32, R9 + MOVD $48, R10 + MOVD $64, R11 + // V16 + LXVW4X (CONSTBASE)(R0), VS48 + ADD $80,CONSTBASE + + // Load key into V17,V18 + LXVW4X (KEY)(R0), VS49 + LXVW4X (KEY)(R8), VS50 + + // Load CNT, NONCE into V19 + LXVW4X (CNT)(R0), VS51 + + // Clear V27 + VXOR V27, V27, V27 + + // V28 + LXVW4X (CONSTBASE)(R11), VS60 + + // splat slot from V19 -> V26 + VSPLTW $0, V19, V26 + + VSLDOI $4, V19, V27, V19 + VSLDOI $12, V27, V19, V19 + + VADDUWM V26, V28, V26 + + MOVD $10, R14 + MOVD R14, CTR + +loop_outer_vsx: + // V0, V1, V2, V3 + LXVW4X (R0)(CONSTBASE), VS32 + LXVW4X (R8)(CONSTBASE), VS33 + LXVW4X (R9)(CONSTBASE), VS34 + LXVW4X (R10)(CONSTBASE), VS35 + + // splat values from V17, V18 into V4-V11 + VSPLTW $0, V17, V4 + VSPLTW $1, V17, V5 + VSPLTW $2, V17, V6 + VSPLTW $3, V17, V7 + VSPLTW $0, V18, V8 + VSPLTW $1, V18, V9 + VSPLTW $2, V18, V10 + VSPLTW $3, V18, V11 + + // VOR + VOR V26, V26, V12 + + // splat values from V19 -> V13, V14, V15 + VSPLTW $1, V19, V13 + VSPLTW $2, V19, V14 + VSPLTW $3, V19, V15 + + // splat const values + VSPLTISW $-16, V27 + VSPLTISW $12, V28 + VSPLTISW $8, V29 + VSPLTISW $7, V30 + +loop_vsx: + VADDUWM V0, V4, V0 + VADDUWM V1, V5, V1 + VADDUWM V2, V6, V2 + VADDUWM V3, V7, V3 + + VXOR V12, V0, V12 + VXOR V13, V1, V13 + VXOR V14, V2, V14 + VXOR V15, V3, V15 + + VRLW V12, V27, V12 + VRLW V13, V27, V13 + VRLW V14, V27, V14 + VRLW V15, V27, V15 + + VADDUWM V8, V12, V8 + VADDUWM V9, V13, V9 + VADDUWM V10, V14, V10 + VADDUWM V11, V15, V11 + + VXOR V4, V8, V4 + VXOR V5, V9, V5 + VXOR V6, V10, V6 + VXOR V7, V11, V7 + + VRLW V4, V28, V4 + VRLW V5, V28, V5 + VRLW V6, V28, V6 + VRLW V7, V28, V7 + + VADDUWM V0, V4, V0 + VADDUWM V1, V5, V1 + VADDUWM V2, V6, V2 + VADDUWM V3, V7, V3 + + VXOR V12, V0, V12 + VXOR V13, V1, V13 + VXOR V14, V2, V14 + VXOR V15, V3, V15 + + VRLW V12, V29, V12 + VRLW V13, V29, V13 + VRLW V14, V29, V14 + VRLW V15, V29, V15 + + VADDUWM V8, V12, V8 + VADDUWM V9, V13, V9 + VADDUWM V10, V14, V10 + VADDUWM V11, V15, V11 + + VXOR V4, V8, V4 + VXOR V5, V9, V5 + VXOR V6, V10, V6 + VXOR V7, V11, V7 + + VRLW V4, V30, V4 + VRLW V5, V30, V5 + VRLW V6, V30, V6 + VRLW V7, V30, V7 + + VADDUWM V0, V5, V0 + VADDUWM V1, V6, V1 + VADDUWM V2, V7, V2 + VADDUWM V3, V4, V3 + + VXOR V15, V0, V15 + VXOR V12, V1, V12 + VXOR V13, V2, V13 + VXOR V14, V3, V14 + + VRLW V15, V27, V15 + VRLW V12, V27, V12 + VRLW V13, V27, V13 + VRLW V14, V27, V14 + + VADDUWM V10, V15, V10 + VADDUWM V11, V12, V11 + VADDUWM V8, V13, V8 + VADDUWM V9, V14, V9 + + VXOR V5, V10, V5 + VXOR V6, V11, V6 + VXOR V7, V8, V7 + VXOR V4, V9, V4 + + VRLW V5, V28, V5 + VRLW V6, V28, V6 + VRLW V7, V28, V7 + VRLW V4, V28, V4 + + VADDUWM V0, V5, V0 + VADDUWM V1, V6, V1 + VADDUWM V2, V7, V2 + VADDUWM V3, V4, V3 + + VXOR V15, V0, V15 + VXOR V12, V1, V12 + VXOR V13, V2, V13 + VXOR V14, V3, V14 + + VRLW V15, V29, V15 + VRLW V12, V29, V12 + VRLW V13, V29, V13 + VRLW V14, V29, V14 + + VADDUWM V10, V15, V10 + VADDUWM V11, V12, V11 + VADDUWM V8, V13, V8 + VADDUWM V9, V14, V9 + + VXOR V5, V10, V5 + VXOR V6, V11, V6 + VXOR V7, V8, V7 + VXOR V4, V9, V4 + + VRLW V5, V30, V5 + VRLW V6, V30, V6 + VRLW V7, V30, V7 + VRLW V4, V30, V4 + BC 16, LT, loop_vsx + + VADDUWM V12, V26, V12 + + WORD $0x13600F8C // VMRGEW V0, V1, V27 + WORD $0x13821F8C // VMRGEW V2, V3, V28 + + WORD $0x10000E8C // VMRGOW V0, V1, V0 + WORD $0x10421E8C // VMRGOW V2, V3, V2 + + WORD $0x13A42F8C // VMRGEW V4, V5, V29 + WORD $0x13C63F8C // VMRGEW V6, V7, V30 + + XXPERMDI VS32, VS34, $0, VS33 + XXPERMDI VS32, VS34, $3, VS35 + XXPERMDI VS59, VS60, $0, VS32 + XXPERMDI VS59, VS60, $3, VS34 + + WORD $0x10842E8C // VMRGOW V4, V5, V4 + WORD $0x10C63E8C // VMRGOW V6, V7, V6 + + WORD $0x13684F8C // VMRGEW V8, V9, V27 + WORD $0x138A5F8C // VMRGEW V10, V11, V28 + + XXPERMDI VS36, VS38, $0, VS37 + XXPERMDI VS36, VS38, $3, VS39 + XXPERMDI VS61, VS62, $0, VS36 + XXPERMDI VS61, VS62, $3, VS38 + + WORD $0x11084E8C // VMRGOW V8, V9, V8 + WORD $0x114A5E8C // VMRGOW V10, V11, V10 + + WORD $0x13AC6F8C // VMRGEW V12, V13, V29 + WORD $0x13CE7F8C // VMRGEW V14, V15, V30 + + XXPERMDI VS40, VS42, $0, VS41 + XXPERMDI VS40, VS42, $3, VS43 + XXPERMDI VS59, VS60, $0, VS40 + XXPERMDI VS59, VS60, $3, VS42 + + WORD $0x118C6E8C // VMRGOW V12, V13, V12 + WORD $0x11CE7E8C // VMRGOW V14, V15, V14 + + VSPLTISW $4, V27 + VADDUWM V26, V27, V26 + + XXPERMDI VS44, VS46, $0, VS45 + XXPERMDI VS44, VS46, $3, VS47 + XXPERMDI VS61, VS62, $0, VS44 + XXPERMDI VS61, VS62, $3, VS46 + + VADDUWM V0, V16, V0 + VADDUWM V4, V17, V4 + VADDUWM V8, V18, V8 + VADDUWM V12, V19, V12 + + CMPU LEN, $64 + BLT tail_vsx + + // Bottom of loop + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V1, V16, V0 + VADDUWM V5, V17, V4 + VADDUWM V9, V18, V8 + VADDUWM V13, V19, V12 + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + VXOR V27, V0, V27 + + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(V10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V2, V16, V0 + VADDUWM V6, V17, V4 + VADDUWM V10, V18, V8 + VADDUWM V14, V19, V12 + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V3, V16, V0 + VADDUWM V7, V17, V4 + VADDUWM V11, V18, V8 + VADDUWM V15, V19, V12 + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + + MOVD $10, R14 + MOVD R14, CTR + BNE loop_outer_vsx + +done_vsx: + // Increment counter by 4 + MOVD (CNT), R14 + ADD $4, R14 + MOVD R14, (CNT) RET + +tail_vsx: + ADD $32, R1, R11 + MOVD LEN, CTR + + // Save values on stack to copy from + STXVW4X VS32, (R11)(R0) + STXVW4X VS36, (R11)(R8) + STXVW4X VS40, (R11)(R9) + STXVW4X VS44, (R11)(R10) + ADD $-1, R11, R12 + ADD $-1, INP + ADD $-1, OUT + +looptail_vsx: + // Copying the result to OUT + // in bytes. + MOVBZU 1(R12), KEY + MOVBZU 1(INP), TMP + XOR KEY, TMP, KEY + MOVBU KEY, 1(OUT) + BC 16, LT, looptail_vsx + + // Clear the stack values + STXVW4X VS48, (R11)(R0) + STXVW4X VS48, (R11)(R8) + STXVW4X VS48, (R11)(R9) + STXVW4X VS48, (R11)(R10) + BR done_vsx diff --git a/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go b/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go index bf8beba6708..fc2682528b5 100644 --- a/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go +++ b/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !ppc64le,!arm64,!s390x arm64,!go1.11 gccgo appengine +// +build !arm64,!s390x,!ppc64le arm64,!go1.11 gccgo appengine package chacha20 diff --git a/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go b/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go index 638cb5e5de5..d38a7d380a2 100644 --- a/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go +++ b/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go @@ -6,22 +6,24 @@ package chacha20 -import "encoding/binary" - -const ( - bufSize = 256 - haveAsm = true +import ( + "encoding/binary" ) +var haveAsm = true + +const bufSize = 256 + //go:noescape -func chaCha20_ctr32_vmx(out, inp *byte, len int, key *[8]uint32, counter *uint32) +func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) func (c *Cipher) xorKeyStreamAsm(dst, src []byte) { + // This implementation can handle buffers that aren't multiples of + // 256. if len(src) >= bufSize { - chaCha20_ctr32_vmx(&dst[0], &src[0], len(src)-len(src)%bufSize, &c.key, &c.counter) - } - if len(src)%bufSize != 0 { - chaCha20_ctr32_vmx(&c.buf[0], &c.buf[0], bufSize, &c.key, &c.counter) + chaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter) + } else if len(src)%bufSize != 0 { + chaCha20_ctr32_vsx(&c.buf[0], &c.buf[0], bufSize, &c.key, &c.counter) start := len(src) - len(src)%bufSize ts, td, tb := src[start:], dst[start:], c.buf[:] // Unroll loop to XOR 32 bytes per iteration. @@ -46,7 +48,6 @@ func (c *Cipher) xorKeyStreamAsm(dst, src []byte) { td[i] = tb[i] ^ v } c.len = bufSize - (len(src) % bufSize) - } } diff --git a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go b/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go index 02b372cf374..6d7639722c9 100644 --- a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go +++ b/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go @@ -5,6 +5,7 @@ package packet import ( + "crypto" "crypto/rsa" "encoding/binary" "io" @@ -78,8 +79,9 @@ func (e *EncryptedKey) Decrypt(priv *PrivateKey, config *Config) error { // padding oracle attacks. switch priv.PubKeyAlgo { case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - k := priv.PrivateKey.(*rsa.PrivateKey) - b, err = rsa.DecryptPKCS1v15(config.Random(), k, padToKeySize(&k.PublicKey, e.encryptedMPI1.bytes)) + // Supports both *rsa.PrivateKey and crypto.Decrypter + k := priv.PrivateKey.(crypto.Decrypter) + b, err = k.Decrypt(config.Random(), padToKeySize(k.Public().(*rsa.PublicKey), e.encryptedMPI1.bytes), nil) case PubKeyAlgoElGamal: c1 := new(big.Int).SetBytes(e.encryptedMPI1.bytes) c2 := new(big.Int).SetBytes(e.encryptedMPI2.bytes) diff --git a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go b/vendor/golang.org/x/crypto/openpgp/packet/private_key.go index 6f8ec093841..81abb7cef98 100644 --- a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go +++ b/vendor/golang.org/x/crypto/openpgp/packet/private_key.go @@ -31,7 +31,7 @@ type PrivateKey struct { encryptedData []byte cipher CipherFunction s2k func(out, in []byte) - PrivateKey interface{} // An *{rsa|dsa|ecdsa}.PrivateKey or a crypto.Signer. + PrivateKey interface{} // An *{rsa|dsa|ecdsa}.PrivateKey or crypto.Signer/crypto.Decrypter (Decryptor RSA only). sha1Checksum bool iv []byte } diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index d97415d2d36..290382d059e 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -51,6 +51,21 @@ var supportedKexAlgos = []string{ kexAlgoDH14SHA1, kexAlgoDH1SHA1, } +// serverForbiddenKexAlgos contains key exchange algorithms, that are forbidden +// for the server half. +var serverForbiddenKexAlgos = map[string]struct{}{ + kexAlgoDHGEXSHA1: {}, // server half implementation is only minimal to satisfy the automated tests + kexAlgoDHGEXSHA256: {}, // server half implementation is only minimal to satisfy the automated tests +} + +// preferredKexAlgos specifies the default preference for key-exchange algorithms +// in preference order. +var preferredKexAlgos = []string{ + kexAlgoCurve25519SHA256, + kexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521, + kexAlgoDH14SHA1, +} + // supportedHostKeyAlgos specifies the supported host-key algorithms (i.e. methods // of authenticating servers) in preference order. var supportedHostKeyAlgos = []string{ @@ -239,7 +254,7 @@ func (c *Config) SetDefaults() { c.Ciphers = ciphers if c.KeyExchanges == nil { - c.KeyExchanges = supportedKexAlgos + c.KeyExchanges = preferredKexAlgos } if c.MACs == nil { diff --git a/vendor/golang.org/x/crypto/ssh/kex.go b/vendor/golang.org/x/crypto/ssh/kex.go index f34bcc01332..16072004b17 100644 --- a/vendor/golang.org/x/crypto/ssh/kex.go +++ b/vendor/golang.org/x/crypto/ssh/kex.go @@ -10,7 +10,9 @@ import ( "crypto/elliptic" "crypto/rand" "crypto/subtle" + "encoding/binary" "errors" + "fmt" "io" "math/big" @@ -24,6 +26,12 @@ const ( kexAlgoECDH384 = "ecdh-sha2-nistp384" kexAlgoECDH521 = "ecdh-sha2-nistp521" kexAlgoCurve25519SHA256 = "curve25519-sha256@libssh.org" + + // For the following kex only the client half contains a production + // ready implementation. The server half only consists of a minimal + // implementation to satisfy the automated tests. + kexAlgoDHGEXSHA1 = "diffie-hellman-group-exchange-sha1" + kexAlgoDHGEXSHA256 = "diffie-hellman-group-exchange-sha256" ) // kexResult captures the outcome of a key exchange. @@ -402,6 +410,8 @@ func init() { kexAlgoMap[kexAlgoECDH384] = &ecdh{elliptic.P384()} kexAlgoMap[kexAlgoECDH256] = &ecdh{elliptic.P256()} kexAlgoMap[kexAlgoCurve25519SHA256] = &curve25519sha256{} + kexAlgoMap[kexAlgoDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1} + kexAlgoMap[kexAlgoDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256} } // curve25519sha256 implements the curve25519-sha256@libssh.org key @@ -538,3 +548,242 @@ func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handsh Hash: crypto.SHA256, }, nil } + +// dhGEXSHA implements the diffie-hellman-group-exchange-sha1 and +// diffie-hellman-group-exchange-sha256 key agreement protocols, +// as described in RFC 4419 +type dhGEXSHA struct { + g, p *big.Int + hashFunc crypto.Hash +} + +const numMRTests = 64 + +const ( + dhGroupExchangeMinimumBits = 2048 + dhGroupExchangePreferredBits = 2048 + dhGroupExchangeMaximumBits = 8192 +) + +func (gex *dhGEXSHA) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) { + if theirPublic.Sign() <= 0 || theirPublic.Cmp(gex.p) >= 0 { + return nil, fmt.Errorf("ssh: DH parameter out of bounds") + } + return new(big.Int).Exp(theirPublic, myPrivate, gex.p), nil +} + +func (gex *dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { + // Send GexRequest + kexDHGexRequest := kexDHGexRequestMsg{ + MinBits: dhGroupExchangeMinimumBits, + PreferedBits: dhGroupExchangePreferredBits, + MaxBits: dhGroupExchangeMaximumBits, + } + if err := c.writePacket(Marshal(&kexDHGexRequest)); err != nil { + return nil, err + } + + // Receive GexGroup + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexDHGexGroup kexDHGexGroupMsg + if err = Unmarshal(packet, &kexDHGexGroup); err != nil { + return nil, err + } + + // reject if p's bit length < dhGroupExchangeMinimumBits or > dhGroupExchangeMaximumBits + if kexDHGexGroup.P.BitLen() < dhGroupExchangeMinimumBits || kexDHGexGroup.P.BitLen() > dhGroupExchangeMaximumBits { + return nil, fmt.Errorf("ssh: server-generated gex p is out of range (%d bits)", kexDHGexGroup.P.BitLen()) + } + + gex.p = kexDHGexGroup.P + gex.g = kexDHGexGroup.G + + // Check if p is safe by verifing that p and (p-1)/2 are primes + one := big.NewInt(1) + var pHalf = &big.Int{} + pHalf.Rsh(gex.p, 1) + if !gex.p.ProbablyPrime(numMRTests) || !pHalf.ProbablyPrime(numMRTests) { + return nil, fmt.Errorf("ssh: server provided gex p is not safe") + } + + // Check if g is safe by verifing that g > 1 and g < p - 1 + var pMinusOne = &big.Int{} + pMinusOne.Sub(gex.p, one) + if gex.g.Cmp(one) != 1 && gex.g.Cmp(pMinusOne) != -1 { + return nil, fmt.Errorf("ssh: server provided gex g is not safe") + } + + // Send GexInit + x, err := rand.Int(randSource, pHalf) + if err != nil { + return nil, err + } + X := new(big.Int).Exp(gex.g, x, gex.p) + kexDHGexInit := kexDHGexInitMsg{ + X: X, + } + if err := c.writePacket(Marshal(&kexDHGexInit)); err != nil { + return nil, err + } + + // Receive GexReply + packet, err = c.readPacket() + if err != nil { + return nil, err + } + + var kexDHGexReply kexDHGexReplyMsg + if err = Unmarshal(packet, &kexDHGexReply); err != nil { + return nil, err + } + + kInt, err := gex.diffieHellman(kexDHGexReply.Y, x) + if err != nil { + return nil, err + } + + // Check if k is safe by verifing that k > 1 and k < p - 1 + if kInt.Cmp(one) != 1 && kInt.Cmp(pMinusOne) != -1 { + return nil, fmt.Errorf("ssh: derived k is not safe") + } + + h := gex.hashFunc.New() + magics.write(h) + writeString(h, kexDHGexReply.HostKey) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits)) + writeInt(h, gex.p) + writeInt(h, gex.g) + writeInt(h, X) + writeInt(h, kexDHGexReply.Y) + K := make([]byte, intLength(kInt)) + marshalInt(K, kInt) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: kexDHGexReply.HostKey, + Signature: kexDHGexReply.Signature, + Hash: gex.hashFunc, + }, nil +} + +// Server half implementation of the Diffie Hellman Key Exchange with SHA1 and SHA256. +// +// This is a minimal implementation to satisfy the automated tests. +func (gex *dhGEXSHA) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv Signer) (result *kexResult, err error) { + // Receive GexRequest + packet, err := c.readPacket() + if err != nil { + return + } + var kexDHGexRequest kexDHGexRequestMsg + if err = Unmarshal(packet, &kexDHGexRequest); err != nil { + return + } + + // smoosh the user's preferred size into our own limits + if kexDHGexRequest.PreferedBits > dhGroupExchangeMaximumBits { + kexDHGexRequest.PreferedBits = dhGroupExchangeMaximumBits + } + if kexDHGexRequest.PreferedBits < dhGroupExchangeMinimumBits { + kexDHGexRequest.PreferedBits = dhGroupExchangeMinimumBits + } + // fix min/max if they're inconsistent. technically, we could just pout + // and hang up, but there's no harm in giving them the benefit of the + // doubt and just picking a bitsize for them. + if kexDHGexRequest.MinBits > kexDHGexRequest.PreferedBits { + kexDHGexRequest.MinBits = kexDHGexRequest.PreferedBits + } + if kexDHGexRequest.MaxBits < kexDHGexRequest.PreferedBits { + kexDHGexRequest.MaxBits = kexDHGexRequest.PreferedBits + } + + // Send GexGroup + // This is the group called diffie-hellman-group14-sha1 in RFC + // 4253 and Oakley Group 14 in RFC 3526. + p, _ := new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", 16) + gex.p = p + gex.g = big.NewInt(2) + + kexDHGexGroup := kexDHGexGroupMsg{ + P: gex.p, + G: gex.g, + } + if err := c.writePacket(Marshal(&kexDHGexGroup)); err != nil { + return nil, err + } + + // Receive GexInit + packet, err = c.readPacket() + if err != nil { + return + } + var kexDHGexInit kexDHGexInitMsg + if err = Unmarshal(packet, &kexDHGexInit); err != nil { + return + } + + var pHalf = &big.Int{} + pHalf.Rsh(gex.p, 1) + + y, err := rand.Int(randSource, pHalf) + if err != nil { + return + } + + Y := new(big.Int).Exp(gex.g, y, gex.p) + kInt, err := gex.diffieHellman(kexDHGexInit.X, y) + if err != nil { + return nil, err + } + + hostKeyBytes := priv.PublicKey().Marshal() + + h := gex.hashFunc.New() + magics.write(h) + writeString(h, hostKeyBytes) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits)) + writeInt(h, gex.p) + writeInt(h, gex.g) + writeInt(h, kexDHGexInit.X) + writeInt(h, Y) + + K := make([]byte, intLength(kInt)) + marshalInt(K, kInt) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, randSource, H) + if err != nil { + return nil, err + } + + kexDHGexReply := kexDHGexReplyMsg{ + HostKey: hostKeyBytes, + Y: Y, + Signature: sig, + } + packet = Marshal(&kexDHGexReply) + + err = c.writePacket(packet) + + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: gex.hashFunc, + }, err +} diff --git a/vendor/golang.org/x/crypto/ssh/messages.go b/vendor/golang.org/x/crypto/ssh/messages.go index db914d80391..ac41a4168bf 100644 --- a/vendor/golang.org/x/crypto/ssh/messages.go +++ b/vendor/golang.org/x/crypto/ssh/messages.go @@ -97,6 +97,36 @@ type kexDHReplyMsg struct { Signature []byte } +// See RFC 4419, section 5. +const msgKexDHGexGroup = 31 + +type kexDHGexGroupMsg struct { + P *big.Int `sshtype:"31"` + G *big.Int +} + +const msgKexDHGexInit = 32 + +type kexDHGexInitMsg struct { + X *big.Int `sshtype:"32"` +} + +const msgKexDHGexReply = 33 + +type kexDHGexReplyMsg struct { + HostKey []byte `sshtype:"33"` + Y *big.Int + Signature []byte +} + +const msgKexDHGexRequest = 34 + +type kexDHGexRequestMsg struct { + MinBits uint32 `sshtype:"34"` + PreferedBits uint32 + MaxBits uint32 +} + // See RFC 4253, section 10. const msgServiceRequest = 5 diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index ac7f8073ca2..7a5a1d7ad39 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -193,6 +193,12 @@ func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewCha if fullConf.MaxAuthTries == 0 { fullConf.MaxAuthTries = 6 } + // Check if the config contains any unsupported key exchanges + for _, kex := range fullConf.KeyExchanges { + if _, ok := serverForbiddenKexAlgos[kex]; ok { + return nil, nil, nil, fmt.Errorf("ssh: unsupported key exchange %s for server", kex) + } + } s := &connection{ sshConn: sshConn{conn: c}, diff --git a/vendor/golang.org/x/exp/AUTHORS b/vendor/golang.org/x/exp/AUTHORS new file mode 100644 index 00000000000..15167cd746c --- /dev/null +++ b/vendor/golang.org/x/exp/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/exp/CONTRIBUTORS b/vendor/golang.org/x/exp/CONTRIBUTORS new file mode 100644 index 00000000000..1c4577e9680 --- /dev/null +++ b/vendor/golang.org/x/exp/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/github.com/gorilla/context/LICENSE b/vendor/golang.org/x/exp/LICENSE similarity index 83% rename from vendor/github.com/gorilla/context/LICENSE rename to vendor/golang.org/x/exp/LICENSE index 0e5fb872800..6a66aea5eaf 100644 --- a/vendor/github.com/gorilla/context/LICENSE +++ b/vendor/golang.org/x/exp/LICENSE @@ -1,16 +1,16 @@ -Copyright (c) 2012 Rodrigo Moraes. All rights reserved. +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 + * 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 + * 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 + * 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. diff --git a/vendor/golang.org/x/exp/PATENTS b/vendor/golang.org/x/exp/PATENTS new file mode 100644 index 00000000000..733099041f8 --- /dev/null +++ b/vendor/golang.org/x/exp/PATENTS @@ -0,0 +1,22 @@ +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/exp/apidiff/README.md b/vendor/golang.org/x/exp/apidiff/README.md new file mode 100644 index 00000000000..3d9576c2866 --- /dev/null +++ b/vendor/golang.org/x/exp/apidiff/README.md @@ -0,0 +1,624 @@ +# Checking Go Package API Compatibility + +The `apidiff` tool in this directory determines whether two versions of the same +package are compatible. The goal is to help the developer make an informed +choice of semantic version after they have changed the code of their module. + +`apidiff` reports two kinds of changes: incompatible ones, which require +incrementing the major part of the semantic version, and compatible ones, which +require a minor version increment. If no API changes are reported but there are +code changes that could affect client code, then the patch version should +be incremented. + +Because `apidiff` ignores package import paths, it may be used to display API +differences between any two packages, not just different versions of the same +package. + +The current version of `apidiff` compares only packages, not modules. + + +## Compatibility Desiderata + +Any tool that checks compatibility can offer only an approximation. No tool can +detect behavioral changes; and even if it could, whether a behavioral change is +a breaking change or not depends on many factors, such as whether it closes a +security hole or fixes a bug. Even a change that causes some code to fail to +compile may not be considered a breaking change by the developers or their +users. It may only affect code marked as experimental or unstable, for +example, or the break may only manifest in unlikely cases. + +For a tool to be useful, its notion of compatibility must be relaxed enough to +allow reasonable changes, like adding a field to a struct, but strict enough to +catch significant breaking changes. A tool that is too lax will miss important +incompatibilities, and users will stop trusting it; one that is too strict may +generate so much noise that users will ignore it. + +To a first approximation, this tool reports a change as incompatible if it could +cause client code to stop compiling. But `apidiff` ignores five ways in which +code may fail to compile after a change. Three of them are mentioned in the +[Go 1 Compatibility Guarantee](https://golang.org/doc/go1compat). + +### Unkeyed Struct Literals + +Code that uses an unkeyed struct literal would fail to compile if a field was +added to the struct, making any such addition an incompatible change. An example: + +``` +// old +type Point struct { X, Y int } + +// new +type Point struct { X, Y, Z int } + +// client +p := pkg.Point{1, 2} // fails in new because there are more fields than expressions +``` +Here and below, we provide three snippets: the code in the old version of the +package, the code in the new version, and the code written in a client of the package, +which refers to it by the name `pkg`. The client code compiles against the old +code but not the new. + +### Embedding and Shadowing + +Adding an exported field to a struct can break code that embeds that struct, +because the newly added field may conflict with an identically named field +at the same struct depth. A selector referring to the latter would become +ambiguous and thus erroneous. + + +``` +// old +type Point struct { X, Y int } + +// new +type Point struct { X, Y, Z int } + +// client +type z struct { Z int } + +var v struct { + pkg.Point + z +} + +_ = v.Z // fails in new +``` +In the new version, the last line fails to compile because there are two embedded `Z` +fields at the same depth, one from `z` and one from `pkg.Point`. + + +### Using an Identical Type Externally + +If it is possible for client code to write a type expression representing the +underlying type of a defined type in a package, then external code can use it in +assignments involving the package type, making any change to that type incompatible. +``` +// old +type Point struct { X, Y int } + +// new +type Point struct { X, Y, Z int } + +// client +var p struct { X, Y int } = pkg.Point{} // fails in new because of Point's extra field +``` +Here, the external code could have used the provided name `Point`, but chose not +to. I'll have more to say about this and related examples later. + +### unsafe.Sizeof and Friends + +Since `unsafe.Sizeof`, `unsafe.Offsetof` and `unsafe.Alignof` are constant +expressions, they can be used in an array type literal: + +``` +// old +type S struct{ X int } + +// new +type S struct{ X, y int } + +// client +var a [unsafe.Sizeof(pkg.S{})]int = [8]int{} // fails in new because S's size is not 8 +``` +Use of these operations could make many changes to a type potentially incompatible. + + +### Type Switches + +A package change that merges two different types (with same underlying type) +into a single new type may break type switches in clients that refer to both +original types: + +``` +// old +type T1 int +type T2 int + +// new +type T1 int +type T2 = T1 + +// client +switch x.(type) { +case T1: +case T2: +} // fails with new because two cases have the same type +``` +This sort of incompatibility is sufficiently esoteric to ignore; the tool allows +merging types. + +## First Attempt at a Definition + +Our first attempt at defining compatibility captures the idea that all the +exported names in the old package must have compatible equivalents in the new +package. + +A new package is compatible with an old one if and only if: +- For every exported package-level name in the old package, the same name is + declared in the new at package level, and +- the names denote the same kind of object (e.g. both are variables), and +- the types of the objects are compatible. + +We will work out the details (and make some corrections) below, but it is clear +already that we will need to determine what makes two types compatible. And +whatever the definition of type compatibility, it's certainly true that if two +types are the same, they are compatible. So we will need to decide what makes an +old and new type the same. We will call this sameness relation _correspondence_. + +## Type Correspondence + +Go already has a definition of when two types are the same: +[type identity](https://golang.org/ref/spec#Type_identity). +But identity isn't adequate for our purpose: it says that two defined +types are identical if they arise from the same definition, but it's unclear +what "same" means when talking about two different packages (or two versions of +a single package). + +The obvious change to the definition of identity is to require that old and new +[defined types](https://golang.org/ref/spec#Type_definitions) +have the same name instead. But that doesn't work either, for two +reasons. First, type aliases can equate two defined types with different names: + +``` +// old +type E int + +// new +type t int +type E = t +``` +Second, an unexported type can be renamed: + +``` +// old +type u1 int +var V u1 + +// new +type u2 int +var V u2 +``` +Here, even though `u1` and `u2` are unexported, their exported fields and +methods are visible to clients, so they are part of the API. But since the name +`u1` is not visible to clients, it can be changed compatibly. We say that `u1` +and `u2` are _exposed_: a type is exposed if a client package can declare variables of that type. + +We will say that an old defined type _corresponds_ to a new one if they have the +same name, or one can be renamed to the other without otherwise changing the +API. In the first example above, old `E` and new `t` correspond. In the second, +old `u1` and new `u2` correspond. + +Two or more old defined types can correspond to a single new type: we consider +"merging" two types into one to be a compatible change. As mentioned above, +code that uses both names in a type switch will fail, but we deliberately ignore +this case. However, a single old type can correspond to only one new type. + +So far, we've explained what correspondence means for defined types. To extend +the definition to all types, we parallel the language's definition of type +identity. So, for instance, an old and a new slice type correspond if their +element types correspond. + +## Definition of Compatibility + +We can now present the definition of compatibility used by `apidiff`. + +### Package Compatibility + +> A new package is compatible with an old one if: +>1. Each exported name in the old package's scope also appears in the new +>package's scope, and the object (constant, variable, function or type) denoted +>by that name in the old package is compatible with the object denoted by the +>name in the new package, and +>2. For every exposed type that implements an exposed interface in the old package, +> its corresponding type should implement the corresponding interface in the new package. +> +>Otherwise the packages are incompatible. + +As an aside, the tool also finds exported names in the new package that are not +exported in the old, and marks them as compatible changes. + +Clause 2 is discussed further in "Whole-Package Compatibility." + +### Object Compatibility + +This section provides compatibility rules for constants, variables, functions +and types. + +#### Constants + +>A new exported constant is compatible with an old one of the same name if and only if +>1. Their types correspond, and +>2. Their values are identical. + +It is tempting to allow changing a typed constant to an untyped one. That may +seem harmless, but it can break code like this: + +``` +// old +const C int64 = 1 + +// new +const C = 1 + +// client +var x = C // old type is int64, new is int +var y int64 = x // fails with new: different types in assignment +``` + +A change to the value of a constant can break compatibility if the value is used +in an array type: + +``` +// old +const C = 1 + +// new +const C = 2 + +// client +var a [C]int = [1]int{} // fails with new because [2]int and [1]int are different types +``` +Changes to constant values are rare, and determining whether they are compatible +or not is better left to the user, so the tool reports them. + +#### Variables + +>A new exported variable is compatible with an old one of the same name if and +>only if their types correspond. + +Correspondence doesn't look past names, so this rule does not prevent adding a +field to `MyStruct` if the package declares `var V MyStruct`. It does, however, mean that + +``` +var V struct { X int } +``` +is incompatible with +``` +var V struct { X, Y int } +``` +I discuss this at length below in the section "Compatibility, Types and Names." + +#### Functions + +>A new exported function or variable is compatible with an old function of the +>same name if and only if their types (signatures) correspond. + +This rule captures the fact that, although many signature changes are compatible +for all call sites, none are compatible for assignment: + +``` +var v func(int) = pkg.F +``` +Here, `F` must be of type `func(int)` and not, for instance, `func(...int)` or `func(interface{})`. + +Note that the rule permits changing a function to a variable. This is a common +practice, usually done for test stubbing, and cannot break any code at compile +time. + +#### Exported Types + +> A new exported type is compatible with an old one if and only if their +> names are the same and their types correspond. + +This rule seems far too strict. But, ignoring aliases for the moment, it demands only +that the old and new _defined_ types correspond. Consider: +``` +// old +type T struct { X int } + +// new +type T struct { X, Y int } +``` +The addition of `Y` is a compatible change, because this rule does not require +that the struct literals have to correspond, only that the defined types +denoted by `T` must correspond. (Remember that correspondence stops at type +names.) + +If one type is an alias that refers to the corresponding defined type, the +situation is the same: + +``` +// old +type T struct { X int } + +// new +type u struct { X, Y int } +type T = u +``` +Here, the only requirement is that old `T` corresponds to new `u`, not that the +struct types correspond. (We can't tell from this snippet that the old `T` and +the new `u` do correspond; that depends on whether `u` replaces `T` throughout +the API.) + +However, the following change is incompatible, because the names do not +denote corresponding types: + +``` +// old +type T = struct { X int } + +// new +type T = struct { X, Y int } +``` +### Type Literal Compatibility + +Only five kinds of types can differ compatibly: defined types, structs, +interfaces, channels and numeric types. We only consider the compatibility of +the last four when they are the underlying type of a defined type. See +"Compatibility, Types and Names" for a rationale. + +We justify the compatibility rules by enumerating all the ways a type +can be used, and by showing that the allowed changes cannot break any code that +uses values of the type in those ways. + +Values of all types can be used in assignments (including argument passing and +function return), but we do not require that old and new types are assignment +compatible. That is because we assume that the old and new packages are never +used together: any given binary will link in either the old package or the new. +So in describing how a type can be used in the sections below, we omit +assignment. + +Any type can also be used in a type assertion or conversion. The changes we allow +below may affect the run-time behavior of these operations, but they cannot affect +whether they compile. The only such breaking change would be to change +the type `T` in an assertion `x.T` so that it no longer implements the interface +type of `x`; but the rules for interfaces below disallow that. + +> A new type is compatible with an old one if and only if they correspond, or +> one of the cases below applies. + +#### Defined Types + +Other than assignment, the only ways to use a defined type are to access its +methods, or to make use of the properties of its underlying type. Rule 2 below +covers the latter, and rules 3 and 4 cover the former. + +> A new defined type is compatible with an old one if and only if all of the +> following hold: +>1. They correspond. +>2. Their underlying types are compatible. +>3. The new exported value method set is a superset of the old. +>4. The new exported pointer method set is a superset of the old. + +An exported method set is a method set with all unexported methods removed. +When comparing methods of a method set, we require identical names and +corresponding signatures. + +Removing an exported method is clearly a breaking change. But removing an +unexported one (or changing its signature) can be breaking as well, if it +results in the type no longer implementing an interface. See "Whole-Package +Compatibility," below. + +#### Channels + +> A new channel type is compatible with an old one if +> 1. The element types correspond, and +> 2. Either the directions are the same, or the new type has no direction. + +Other than assignment, the only ways to use values of a channel type are to send +and receive on them, to close them, and to use them as map keys. Changes to a +channel type cannot cause code that closes a channel or uses it as a map key to +fail to compile, so we need not consider those operations. + +Rule 1 ensures that any operations on the values sent or received will compile. +Rule 2 captures the fact that any program that compiles with a directed channel +must use either only sends, or only receives, so allowing the other operation +by removing the channel direction cannot break any code. + + +#### Interfaces + +> A new interface is compatible with an old one if and only if: +> 1. The old interface does not have an unexported method, and it corresponds +> to the new interfaces (i.e. they have the same method set), or +> 2. The old interface has an unexported method and the new exported method set is a +> superset of the old. + +Other than assignment, the only ways to use an interface are to implement it, +embed it, or call one of its methods. (Interface values can also be used as map +keys, but that cannot cause a compile-time error.) + +Certainly, removing an exported method from an interface could break a client +call, so neither rule allows it. + +Rule 1 also disallows adding a method to an interface without an existing unexported +method. Such an interface can be implemented in client code. If adding a method +were allowed, a type that implements the old interface could fail to implement +the new one: + +``` +type I interface { M1() } // old +type I interface { M1(); M2() } // new + +// client +type t struct{} +func (t) M1() {} +var i pkg.I = t{} // fails with new, because t lacks M2 +``` + +Rule 2 is based on the observation that if an interface has an unexported +method, the only way a client can implement it is to embed it. +Adding a method is compatible in this case, because the embedding struct will +continue to implement the interface. Adding a method also cannot break any call +sites, since no program that compiles could have any such call sites. + +#### Structs + +> A new struct is compatible with an old one if all of the following hold: +> 1. The new set of top-level exported fields is a superset of the old. +> 2. The new set of _selectable_ exported fields is a superset of the old. +> 3. If the old struct is comparable, so is the new one. + +The set of selectable exported fields is the set of exported fields `F` +such that `x.F` is a valid selector expression for a value `x` of the struct +type. `F` may be at the top level of the struct, or it may be a field of an +embedded struct. + +Two fields are the same if they have the same name and corresponding types. + +Other than assignment, there are only four ways to use a struct: write a struct +literal, select a field, use a value of the struct as a map key, or compare two +values for equality. The first clause ensures that struct literals compile; the +second, that selections compile; and the third, that equality expressions and +map index expressions compile. + +#### Numeric Types + +> A new numeric type is compatible with an old one if and only if they are +> both unsigned integers, both signed integers, both floats or both complex +> types, and the new one is at least as large as the old on both 32-bit and +> 64-bit architectures. + +Other than in assignments, numeric types appear in arithmetic and comparison +expressions. Since all arithmetic operations but shifts (see below) require that +operand types be identical, and by assumption the old and new types underly +defined types (see "Compatibility, Types and Names," below), there is no way for +client code to write an arithmetic expression that compiles with operands of the +old type but not the new. + +Numeric types can also appear in type switches and type assertions. Again, since +the old and new types underly defined types, type switches and type assertions +that compiled using the old defined type will continue to compile with the new +defined type. + +Going from an unsigned to a signed integer type is an incompatible change for +the sole reason that only an unsigned type can appear as the right operand of a +shift. If this rule is relaxed, then changes from an unsigned type to a larger +signed type would be compatible. See [this +issue](https://github.com/golang/go/issues/19113). + +Only integer types can be used in bitwise and shift operations, and for indexing +slices and arrays. That is why switching from an integer to a floating-point +type--even one that can represent all values of the integer type--is an +incompatible change. + + +Conversions from floating-point to complex types or vice versa are not permitted +(the predeclared functions real, imag, and complex must be used instead). To +prevent valid floating-point or complex conversions from becoming invalid, +changing a floating-point type to a complex type or vice versa is considered an +incompatible change. + +Although conversions between any two integer types are valid, assigning a +constant value to a variable of integer type that is too small to represent the +constant is not permitted. That is why the only compatible changes are to +a new type whose values are a superset of the old. The requirement that the new +set of values must include the old on both 32-bit and 64-bit machines allows +conversions from `int32` to `int` and from `int` to `int64`, but not the other +direction; and similarly for `uint`. + +Changing a type to or from `uintptr` is considered an incompatible change. Since +its size is not specified, there is no way to know whether the new type's values +are a superset of the old type's. + +## Whole-Package Compatibility + +Some changes that are compatible for a single type are not compatible when the +package is considered as a whole. For example, if you remove an unexported +method on a defined type, it may no longer implement an interface of the +package. This can break client code: + +``` +// old +type T int +func (T) m() {} +type I interface { m() } + +// new +type T int // no method m anymore + +// client +var i pkg.I = pkg.T{} // fails with new because T lacks m +``` + +Similarly, adding a method to an interface can cause defined types +in the package to stop implementing it. + +The second clause in the definition for package compatibility handles these +cases. To repeat: +> 2. For every exposed type that implements an exposed interface in the old package, +> its corresponding type should implement the corresponding interface in the new package. +Recall that a type is exposed if it is part of the package's API, even if it is +unexported. + +Other incompatibilities that involve more than one type in the package can arise +whenever two types with identical underlying types exist in the old or new +package. Here, a change "splits" an identical underlying type into two, breaking +conversions: + +``` +// old +type B struct { X int } +type C struct { X int } + +// new +type B struct { X int } +type C struct { X, Y int } + +// client +var b B +_ = C(b) // fails with new: cannot convert B to C +``` +Finally, changes that are compatible for the package in which they occur can +break downstream packages. That can happen even if they involve unexported +methods, thanks to embedding. + +The definitions given here don't account for these sorts of problems. + + +## Compatibility, Types and Names + +The above definitions state that the only types that can differ compatibly are +defined types and the types that underly them. Changes to other type literals +are considered incompatible. For instance, it is considered an incompatible +change to add a field to the struct in this variable declaration: + +``` +var V struct { X int } +``` +or this alias definition: +``` +type T = struct { X int } +``` + +We make this choice to keep the definition of compatibility (relatively) simple. +A more precise definition could, for instance, distinguish between + +``` +func F(struct { X int }) +``` +where any changes to the struct are incompatible, and + +``` +func F(struct { X, u int }) +``` +where adding a field is compatible (since clients cannot write the signature, +and thus cannot assign `F` to a variable of the signature type). The definition +should then also allow other function signature changes that only require +call-site compatibility, like + +``` +func F(struct { X, u int }, ...int) +``` +The result would be a much more complex definition with little benefit, since +the examples in this section rarely arise in practice. diff --git a/vendor/golang.org/x/exp/apidiff/apidiff.go b/vendor/golang.org/x/exp/apidiff/apidiff.go new file mode 100644 index 00000000000..76669d8b053 --- /dev/null +++ b/vendor/golang.org/x/exp/apidiff/apidiff.go @@ -0,0 +1,220 @@ +// TODO: test swap corresponding types (e.g. u1 <-> u2 and u2 <-> u1) +// TODO: test exported alias refers to something in another package -- does correspondence work then? +// TODO: CODE COVERAGE +// TODO: note that we may miss correspondences because we bail early when we compare a signature (e.g. when lengths differ; we could do up to the shorter) +// TODO: if you add an unexported method to an exposed interface, you have to check that +// every exposed type that previously implemented the interface still does. Otherwise +// an external assignment of the exposed type to the interface type could fail. +// TODO: check constant values: large values aren't representable by some types. +// TODO: Document all the incompatibilities we don't check for. + +package apidiff + +import ( + "fmt" + "go/constant" + "go/token" + "go/types" +) + +// Changes reports on the differences between the APIs of the old and new packages. +// It classifies each difference as either compatible or incompatible (breaking.) For +// a detailed discussion of what constitutes an incompatible change, see the package +// documentation. +func Changes(old, new *types.Package) Report { + d := newDiffer(old, new) + d.checkPackage() + r := Report{} + for _, m := range d.incompatibles.collect() { + r.Changes = append(r.Changes, Change{Message: m, Compatible: false}) + } + for _, m := range d.compatibles.collect() { + r.Changes = append(r.Changes, Change{Message: m, Compatible: true}) + } + return r +} + +type differ struct { + old, new *types.Package + // Correspondences between named types. + // Even though it is the named types (*types.Named) that correspond, we use + // *types.TypeName as a map key because they are canonical. + // The values can be either named types or basic types. + correspondMap map[*types.TypeName]types.Type + + // Messages. + incompatibles messageSet + compatibles messageSet +} + +func newDiffer(old, new *types.Package) *differ { + return &differ{ + old: old, + new: new, + correspondMap: map[*types.TypeName]types.Type{}, + incompatibles: messageSet{}, + compatibles: messageSet{}, + } +} + +func (d *differ) incompatible(obj types.Object, part, format string, args ...interface{}) { + addMessage(d.incompatibles, obj, part, format, args) +} + +func (d *differ) compatible(obj types.Object, part, format string, args ...interface{}) { + addMessage(d.compatibles, obj, part, format, args) +} + +func addMessage(ms messageSet, obj types.Object, part, format string, args []interface{}) { + ms.add(obj, part, fmt.Sprintf(format, args...)) +} + +func (d *differ) checkPackage() { + // Old changes. + for _, name := range d.old.Scope().Names() { + oldobj := d.old.Scope().Lookup(name) + if !oldobj.Exported() { + continue + } + newobj := d.new.Scope().Lookup(name) + if newobj == nil { + d.incompatible(oldobj, "", "removed") + continue + } + d.checkObjects(oldobj, newobj) + } + // New additions. + for _, name := range d.new.Scope().Names() { + newobj := d.new.Scope().Lookup(name) + if newobj.Exported() && d.old.Scope().Lookup(name) == nil { + d.compatible(newobj, "", "added") + } + } + + // Whole-package satisfaction. + // For every old exposed interface oIface and its corresponding new interface nIface... + for otn1, nt1 := range d.correspondMap { + oIface, ok := otn1.Type().Underlying().(*types.Interface) + if !ok { + continue + } + nIface, ok := nt1.Underlying().(*types.Interface) + if !ok { + // If nt1 isn't an interface but otn1 is, then that's an incompatibility that + // we've already noticed, so there's no need to do anything here. + continue + } + // For every old type that implements oIface, its corresponding new type must implement + // nIface. + for otn2, nt2 := range d.correspondMap { + if otn1 == otn2 { + continue + } + if types.Implements(otn2.Type(), oIface) && !types.Implements(nt2, nIface) { + d.incompatible(otn2, "", "no longer implements %s", objectString(otn1)) + } + } + } +} + +func (d *differ) checkObjects(old, new types.Object) { + switch old := old.(type) { + case *types.Const: + if new, ok := new.(*types.Const); ok { + d.constChanges(old, new) + return + } + case *types.Var: + if new, ok := new.(*types.Var); ok { + d.checkCorrespondence(old, "", old.Type(), new.Type()) + return + } + case *types.Func: + switch new := new.(type) { + case *types.Func: + d.checkCorrespondence(old, "", old.Type(), new.Type()) + return + case *types.Var: + d.compatible(old, "", "changed from func to var") + d.checkCorrespondence(old, "", old.Type(), new.Type()) + return + + } + case *types.TypeName: + if new, ok := new.(*types.TypeName); ok { + d.checkCorrespondence(old, "", old.Type(), new.Type()) + return + } + default: + panic("unexpected obj type") + } + // Here if kind of type changed. + d.incompatible(old, "", "changed from %s to %s", + objectKindString(old), objectKindString(new)) +} + +// Compare two constants. +func (d *differ) constChanges(old, new *types.Const) { + ot := old.Type() + nt := new.Type() + // Check for change of type. + if !d.correspond(ot, nt) { + d.typeChanged(old, "", ot, nt) + return + } + // Check for change of value. + // We know the types are the same, so constant.Compare shouldn't panic. + if !constant.Compare(old.Val(), token.EQL, new.Val()) { + d.incompatible(old, "", "value changed from %s to %s", old.Val(), new.Val()) + } +} + +func objectKindString(obj types.Object) string { + switch obj.(type) { + case *types.Const: + return "const" + case *types.Var: + return "var" + case *types.Func: + return "func" + case *types.TypeName: + return "type" + default: + return "???" + } +} + +func (d *differ) checkCorrespondence(obj types.Object, part string, old, new types.Type) { + if !d.correspond(old, new) { + d.typeChanged(obj, part, old, new) + } +} + +func (d *differ) typeChanged(obj types.Object, part string, old, new types.Type) { + old = removeNamesFromSignature(old) + new = removeNamesFromSignature(new) + olds := types.TypeString(old, types.RelativeTo(d.old)) + news := types.TypeString(new, types.RelativeTo(d.new)) + d.incompatible(obj, part, "changed from %s to %s", olds, news) +} + +// go/types always includes the argument and result names when formatting a signature. +// Since these can change without affecting compatibility, we don't want users to +// be distracted by them, so we remove them. +func removeNamesFromSignature(t types.Type) types.Type { + sig, ok := t.(*types.Signature) + if !ok { + return t + } + + dename := func(p *types.Tuple) *types.Tuple { + var vars []*types.Var + for i := 0; i < p.Len(); i++ { + v := p.At(i) + vars = append(vars, types.NewVar(v.Pos(), v.Pkg(), "", v.Type())) + } + return types.NewTuple(vars...) + } + + return types.NewSignature(sig.Recv(), dename(sig.Params()), dename(sig.Results()), sig.Variadic()) +} diff --git a/vendor/golang.org/x/exp/apidiff/compatibility.go b/vendor/golang.org/x/exp/apidiff/compatibility.go new file mode 100644 index 00000000000..f78da8f3c92 --- /dev/null +++ b/vendor/golang.org/x/exp/apidiff/compatibility.go @@ -0,0 +1,361 @@ +package apidiff + +import ( + "fmt" + "go/types" + "reflect" +) + +func (d *differ) checkCompatible(otn *types.TypeName, old, new types.Type) { + switch old := old.(type) { + case *types.Interface: + if new, ok := new.(*types.Interface); ok { + d.checkCompatibleInterface(otn, old, new) + return + } + + case *types.Struct: + if new, ok := new.(*types.Struct); ok { + d.checkCompatibleStruct(otn, old, new) + return + } + + case *types.Chan: + if new, ok := new.(*types.Chan); ok { + d.checkCompatibleChan(otn, old, new) + return + } + + case *types.Basic: + if new, ok := new.(*types.Basic); ok { + d.checkCompatibleBasic(otn, old, new) + return + } + + case *types.Named: + panic("unreachable") + + default: + d.checkCorrespondence(otn, "", old, new) + return + + } + // Here if old and new are different kinds of types. + d.typeChanged(otn, "", old, new) +} + +func (d *differ) checkCompatibleChan(otn *types.TypeName, old, new *types.Chan) { + d.checkCorrespondence(otn, ", element type", old.Elem(), new.Elem()) + if old.Dir() != new.Dir() { + if new.Dir() == types.SendRecv { + d.compatible(otn, "", "removed direction") + } else { + d.incompatible(otn, "", "changed direction") + } + } +} + +func (d *differ) checkCompatibleBasic(otn *types.TypeName, old, new *types.Basic) { + // Certain changes to numeric types are compatible. Approximately, the info must + // be the same, and the new values must be a superset of the old. + if old.Kind() == new.Kind() { + // old and new are identical + return + } + if compatibleBasics[[2]types.BasicKind{old.Kind(), new.Kind()}] { + d.compatible(otn, "", "changed from %s to %s", old, new) + } else { + d.typeChanged(otn, "", old, new) + } +} + +// All pairs (old, new) of compatible basic types. +var compatibleBasics = map[[2]types.BasicKind]bool{ + {types.Uint8, types.Uint16}: true, + {types.Uint8, types.Uint32}: true, + {types.Uint8, types.Uint}: true, + {types.Uint8, types.Uint64}: true, + {types.Uint16, types.Uint32}: true, + {types.Uint16, types.Uint}: true, + {types.Uint16, types.Uint64}: true, + {types.Uint32, types.Uint}: true, + {types.Uint32, types.Uint64}: true, + {types.Uint, types.Uint64}: true, + {types.Int8, types.Int16}: true, + {types.Int8, types.Int32}: true, + {types.Int8, types.Int}: true, + {types.Int8, types.Int64}: true, + {types.Int16, types.Int32}: true, + {types.Int16, types.Int}: true, + {types.Int16, types.Int64}: true, + {types.Int32, types.Int}: true, + {types.Int32, types.Int64}: true, + {types.Int, types.Int64}: true, + {types.Float32, types.Float64}: true, + {types.Complex64, types.Complex128}: true, +} + +// Interface compatibility: +// If the old interface has an unexported method, the new interface is compatible +// if its exported method set is a superset of the old. (Users could not implement, +// only embed.) +// +// If the old interface did not have an unexported method, the new interface is +// compatible if its exported method set is the same as the old, and it has no +// unexported methods. (Adding an unexported method makes the interface +// unimplementable outside the package.) +// +// TODO: must also check that if any methods were added or removed, every exposed +// type in the package that implemented the interface in old still implements it in +// new. Otherwise external assignments could fail. +func (d *differ) checkCompatibleInterface(otn *types.TypeName, old, new *types.Interface) { + // Method sets are checked in checkCompatibleDefined. + + // Does the old interface have an unexported method? + if unexportedMethod(old) != nil { + d.checkMethodSet(otn, old, new, additionsCompatible) + } else { + // Perform an equivalence check, but with more information. + d.checkMethodSet(otn, old, new, additionsIncompatible) + if u := unexportedMethod(new); u != nil { + d.incompatible(otn, u.Name(), "added unexported method") + } + } +} + +// Return an unexported method from the method set of t, or nil if there are none. +func unexportedMethod(t *types.Interface) *types.Func { + for i := 0; i < t.NumMethods(); i++ { + if m := t.Method(i); !m.Exported() { + return m + } + } + return nil +} + +// We need to check three things for structs: +// 1. The set of exported fields must be compatible. This ensures that keyed struct +// literals continue to compile. (There is no compatibility guarantee for unkeyed +// struct literals.) +// 2. The set of exported *selectable* fields must be compatible. This includes the exported +// fields of all embedded structs. This ensures that selections continue to compile. +// 3. If the old struct is comparable, so must the new one be. This ensures that equality +// expressions and uses of struct values as map keys continue to compile. +// +// An unexported embedded struct can't appear in a struct literal outside the +// package, so it doesn't have to be present, or have the same name, in the new +// struct. +// +// Field tags are ignored: they have no compile-time implications. +func (d *differ) checkCompatibleStruct(obj types.Object, old, new *types.Struct) { + d.checkCompatibleObjectSets(obj, exportedFields(old), exportedFields(new)) + d.checkCompatibleObjectSets(obj, exportedSelectableFields(old), exportedSelectableFields(new)) + // Removing comparability from a struct is an incompatible change. + if types.Comparable(old) && !types.Comparable(new) { + d.incompatible(obj, "", "old is comparable, new is not") + } +} + +// exportedFields collects all the immediate fields of the struct that are exported. +// This is also the set of exported keys for keyed struct literals. +func exportedFields(s *types.Struct) map[string]types.Object { + m := map[string]types.Object{} + for i := 0; i < s.NumFields(); i++ { + f := s.Field(i) + if f.Exported() { + m[f.Name()] = f + } + } + return m +} + +// exportedSelectableFields collects all the exported fields of the struct, including +// exported fields of embedded structs. +// +// We traverse the struct breadth-first, because of the rule that a lower-depth field +// shadows one at a higher depth. +func exportedSelectableFields(s *types.Struct) map[string]types.Object { + var ( + m = map[string]types.Object{} + next []*types.Struct // embedded structs at the next depth + seen []*types.Struct // to handle recursive embedding + ) + for cur := []*types.Struct{s}; len(cur) > 0; cur, next = next, nil { + seen = append(seen, cur...) + // We only want to consider unambiguous fields. Ambiguous fields (where there + // is more than one field of the same name at the same level) are legal, but + // cannot be selected. + for name, f := range unambiguousFields(cur) { + // Record an exported field we haven't seen before. If we have seen it, + // it occurred a lower depth, so it shadows this field. + if f.Exported() && m[name] == nil { + m[name] = f + } + // Remember embedded structs for processing at the next depth, + // but only if we haven't seen the struct at this depth or above. + if !f.Anonymous() { + continue + } + t := f.Type().Underlying() + if p, ok := t.(*types.Pointer); ok { + t = p.Elem().Underlying() + } + if t, ok := t.(*types.Struct); ok && !contains(seen, t) { + next = append(next, t) + } + } + } + return m +} + +func contains(ts []*types.Struct, t *types.Struct) bool { + for _, s := range ts { + if types.Identical(s, t) { + return true + } + } + return false +} + +// Given a set of structs at the same depth, the unambiguous fields are the ones whose +// names appear exactly once. +func unambiguousFields(structs []*types.Struct) map[string]*types.Var { + fields := map[string]*types.Var{} + seen := map[string]bool{} + for _, s := range structs { + for i := 0; i < s.NumFields(); i++ { + f := s.Field(i) + name := f.Name() + if seen[name] { + delete(fields, name) + } else { + seen[name] = true + fields[name] = f + } + } + } + return fields +} + +// Anything removed or change from the old set is an incompatible change. +// Anything added to the new set is a compatible change. +func (d *differ) checkCompatibleObjectSets(obj types.Object, old, new map[string]types.Object) { + for name, oldo := range old { + newo := new[name] + if newo == nil { + d.incompatible(obj, name, "removed") + } else { + d.checkCorrespondence(obj, name, oldo.Type(), newo.Type()) + } + } + for name := range new { + if old[name] == nil { + d.compatible(obj, name, "added") + } + } +} + +func (d *differ) checkCompatibleDefined(otn *types.TypeName, old *types.Named, new types.Type) { + // We've already checked that old and new correspond. + d.checkCompatible(otn, old.Underlying(), new.Underlying()) + // If there are different kinds of types (e.g. struct and interface), don't bother checking + // the method sets. + if reflect.TypeOf(old.Underlying()) != reflect.TypeOf(new.Underlying()) { + return + } + // Interface method sets are checked in checkCompatibleInterface. + if _, ok := old.Underlying().(*types.Interface); ok { + return + } + + // A new method set is compatible with an old if the new exported methods are a superset of the old. + d.checkMethodSet(otn, old, new, additionsCompatible) + d.checkMethodSet(otn, types.NewPointer(old), types.NewPointer(new), additionsCompatible) +} + +const ( + additionsCompatible = true + additionsIncompatible = false +) + +func (d *differ) checkMethodSet(otn *types.TypeName, oldt, newt types.Type, addcompat bool) { + // TODO: find a way to use checkCompatibleObjectSets for this. + oldMethodSet := exportedMethods(oldt) + newMethodSet := exportedMethods(newt) + msname := otn.Name() + if _, ok := oldt.(*types.Pointer); ok { + msname = "*" + msname + } + for name, oldMethod := range oldMethodSet { + newMethod := newMethodSet[name] + if newMethod == nil { + var part string + // Due to embedding, it's possible that the method's receiver type is not + // the same as the defined type whose method set we're looking at. So for + // a type T with removed method M that is embedded in some other type U, + // we will generate two "removed" messages for T.M, one for its own type + // T and one for the embedded type U. We want both messages to appear, + // but the messageSet dedup logic will allow only one message for a given + // object. So use the part string to distinguish them. + if receiverNamedType(oldMethod).Obj() != otn { + part = fmt.Sprintf(", method set of %s", msname) + } + d.incompatible(oldMethod, part, "removed") + } else { + obj := oldMethod + // If a value method is changed to a pointer method and has a signature + // change, then we can get two messages for the same method definition: one + // for the value method set that says it's removed, and another for the + // pointer method set that says it changed. To keep both messages (since + // messageSet dedups), use newMethod for the second. (Slight hack.) + if !hasPointerReceiver(oldMethod) && hasPointerReceiver(newMethod) { + obj = newMethod + } + d.checkCorrespondence(obj, "", oldMethod.Type(), newMethod.Type()) + } + } + + // Check for added methods. + for name, newMethod := range newMethodSet { + if oldMethodSet[name] == nil { + if addcompat { + d.compatible(newMethod, "", "added") + } else { + d.incompatible(newMethod, "", "added") + } + } + } +} + +// exportedMethods collects all the exported methods of type's method set. +func exportedMethods(t types.Type) map[string]types.Object { + m := map[string]types.Object{} + ms := types.NewMethodSet(t) + for i := 0; i < ms.Len(); i++ { + obj := ms.At(i).Obj() + if obj.Exported() { + m[obj.Name()] = obj + } + } + return m +} + +func receiverType(method types.Object) types.Type { + return method.Type().(*types.Signature).Recv().Type() +} + +func receiverNamedType(method types.Object) *types.Named { + switch t := receiverType(method).(type) { + case *types.Pointer: + return t.Elem().(*types.Named) + case *types.Named: + return t + default: + panic("unreachable") + } +} + +func hasPointerReceiver(method types.Object) bool { + _, ok := receiverType(method).(*types.Pointer) + return ok +} diff --git a/vendor/golang.org/x/exp/apidiff/correspondence.go b/vendor/golang.org/x/exp/apidiff/correspondence.go new file mode 100644 index 00000000000..bd14c094b56 --- /dev/null +++ b/vendor/golang.org/x/exp/apidiff/correspondence.go @@ -0,0 +1,219 @@ +package apidiff + +import ( + "go/types" + "sort" +) + +// Two types are correspond if they are identical except for defined types, +// which must correspond. +// +// Two defined types correspond if they can be interchanged in the old and new APIs, +// possibly after a renaming. +// +// This is not a pure function. If we come across named types while traversing, +// we establish correspondence. +func (d *differ) correspond(old, new types.Type) bool { + return d.corr(old, new, nil) +} + +// corr determines whether old and new correspond. The argument p is a list of +// known interface identities, to avoid infinite recursion. +// +// corr calls itself recursively as much as possible, to establish more +// correspondences and so check more of the API. E.g. if the new function has more +// parameters than the old, compare all the old ones before returning false. +// +// Compare this to the implementation of go/types.Identical. +func (d *differ) corr(old, new types.Type, p *ifacePair) bool { + // Structure copied from types.Identical. + switch old := old.(type) { + case *types.Basic: + return types.Identical(old, new) + + case *types.Array: + if new, ok := new.(*types.Array); ok { + return d.corr(old.Elem(), new.Elem(), p) && old.Len() == new.Len() + } + + case *types.Slice: + if new, ok := new.(*types.Slice); ok { + return d.corr(old.Elem(), new.Elem(), p) + } + + case *types.Map: + if new, ok := new.(*types.Map); ok { + return d.corr(old.Key(), new.Key(), p) && d.corr(old.Elem(), new.Elem(), p) + } + + case *types.Chan: + if new, ok := new.(*types.Chan); ok { + return d.corr(old.Elem(), new.Elem(), p) && old.Dir() == new.Dir() + } + + case *types.Pointer: + if new, ok := new.(*types.Pointer); ok { + return d.corr(old.Elem(), new.Elem(), p) + } + + case *types.Signature: + if new, ok := new.(*types.Signature); ok { + pe := d.corr(old.Params(), new.Params(), p) + re := d.corr(old.Results(), new.Results(), p) + return old.Variadic() == new.Variadic() && pe && re + } + + case *types.Tuple: + if new, ok := new.(*types.Tuple); ok { + for i := 0; i < old.Len(); i++ { + if i >= new.Len() || !d.corr(old.At(i).Type(), new.At(i).Type(), p) { + return false + } + } + return old.Len() == new.Len() + } + + case *types.Struct: + if new, ok := new.(*types.Struct); ok { + for i := 0; i < old.NumFields(); i++ { + if i >= new.NumFields() { + return false + } + of := old.Field(i) + nf := new.Field(i) + if of.Anonymous() != nf.Anonymous() || + old.Tag(i) != new.Tag(i) || + !d.corr(of.Type(), nf.Type(), p) || + !d.corrFieldNames(of, nf) { + return false + } + } + return old.NumFields() == new.NumFields() + } + + case *types.Interface: + if new, ok := new.(*types.Interface); ok { + // Deal with circularity. See the comment in types.Identical. + q := &ifacePair{old, new, p} + for p != nil { + if p.identical(q) { + return true // same pair was compared before + } + p = p.prev + } + oldms := d.sortedMethods(old) + newms := d.sortedMethods(new) + for i, om := range oldms { + if i >= len(newms) { + return false + } + nm := newms[i] + if d.methodID(om) != d.methodID(nm) || !d.corr(om.Type(), nm.Type(), q) { + return false + } + } + return old.NumMethods() == new.NumMethods() + } + + case *types.Named: + if new, ok := new.(*types.Named); ok { + return d.establishCorrespondence(old, new) + } + if new, ok := new.(*types.Basic); ok { + // Basic types are defined types, too, so we have to support them. + + return d.establishCorrespondence(old, new) + } + + default: + panic("unknown type kind") + } + return false +} + +// Compare old and new field names. We are determining correspondence across packages, +// so just compare names, not packages. For an unexported, embedded field of named +// type (non-named embedded fields are possible with aliases), we check that the type +// names correspond. We check the types for correspondence before this is called, so +// we've established correspondence. +func (d *differ) corrFieldNames(of, nf *types.Var) bool { + if of.Anonymous() && nf.Anonymous() && !of.Exported() && !nf.Exported() { + if on, ok := of.Type().(*types.Named); ok { + nn := nf.Type().(*types.Named) + return d.establishCorrespondence(on, nn) + } + } + return of.Name() == nf.Name() +} + +// Establish that old corresponds with new if it does not already +// correspond to something else. +func (d *differ) establishCorrespondence(old *types.Named, new types.Type) bool { + oldname := old.Obj() + oldc := d.correspondMap[oldname] + if oldc == nil { + // For now, assume the types don't correspond unless they are from the old + // and new packages, respectively. + // + // This is too conservative. For instance, + // [old] type A = q.B; [new] type A q.C + // could be OK if in package q, B is an alias for C. + // Or, using p as the name of the current old/new packages: + // [old] type A = q.B; [new] type A int + // could be OK if in q, + // [old] type B int; [new] type B = p.A + // In this case, p.A and q.B name the same type in both old and new worlds. + // Note that this case doesn't imply circular package imports: it's possible + // that in the old world, p imports q, but in the new, q imports p. + // + // However, if we didn't do something here, then we'd incorrectly allow cases + // like the first one above in which q.B is not an alias for q.C + // + // What we should do is check that the old type, in the new world's package + // of the same path, doesn't correspond to something other than the new type. + // That is a bit hard, because there is no easy way to find a new package + // matching an old one. + if newn, ok := new.(*types.Named); ok { + if old.Obj().Pkg() != d.old || newn.Obj().Pkg() != d.new { + return old.Obj().Id() == newn.Obj().Id() + } + } + // If there is no correspondence, create one. + d.correspondMap[oldname] = new + // Check that the corresponding types are compatible. + d.checkCompatibleDefined(oldname, old, new) + return true + } + return types.Identical(oldc, new) +} + +func (d *differ) sortedMethods(iface *types.Interface) []*types.Func { + ms := make([]*types.Func, iface.NumMethods()) + for i := 0; i < iface.NumMethods(); i++ { + ms[i] = iface.Method(i) + } + sort.Slice(ms, func(i, j int) bool { return d.methodID(ms[i]) < d.methodID(ms[j]) }) + return ms +} + +func (d *differ) methodID(m *types.Func) string { + // If the method belongs to one of the two packages being compared, use + // just its name even if it's unexported. That lets us treat unexported names + // from the old and new packages as equal. + if m.Pkg() == d.old || m.Pkg() == d.new { + return m.Name() + } + return m.Id() +} + +// Copied from the go/types package: + +// An ifacePair is a node in a stack of interface type pairs compared for identity. +type ifacePair struct { + x, y *types.Interface + prev *ifacePair +} + +func (p *ifacePair) identical(q *ifacePair) bool { + return p.x == q.x && p.y == q.y || p.x == q.y && p.y == q.x +} diff --git a/vendor/golang.org/x/exp/apidiff/messageset.go b/vendor/golang.org/x/exp/apidiff/messageset.go new file mode 100644 index 00000000000..135479053d4 --- /dev/null +++ b/vendor/golang.org/x/exp/apidiff/messageset.go @@ -0,0 +1,79 @@ +// TODO: show that two-non-empty dotjoin can happen, by using an anon struct as a field type +// TODO: don't report removed/changed methods for both value and pointer method sets? + +package apidiff + +import ( + "fmt" + "go/types" + "sort" + "strings" +) + +// There can be at most one message for each object or part thereof. +// Parts include interface methods and struct fields. +// +// The part thing is necessary. Method (Func) objects have sufficient info, but field +// Vars do not: they just have a field name and a type, without the enclosing struct. +type messageSet map[types.Object]map[string]string + +// Add a message for obj and part, overwriting a previous message +// (shouldn't happen). +// obj is required but part can be empty. +func (m messageSet) add(obj types.Object, part, msg string) { + s := m[obj] + if s == nil { + s = map[string]string{} + m[obj] = s + } + if f, ok := s[part]; ok && f != msg { + fmt.Printf("! second, different message for obj %s, part %q\n", obj, part) + fmt.Printf(" first: %s\n", f) + fmt.Printf(" second: %s\n", msg) + } + s[part] = msg +} + +func (m messageSet) collect() []string { + var s []string + for obj, parts := range m { + // Format each object name relative to its own package. + objstring := objectString(obj) + for part, msg := range parts { + var p string + + if strings.HasPrefix(part, ",") { + p = objstring + part + } else { + p = dotjoin(objstring, part) + } + s = append(s, p+": "+msg) + } + } + sort.Strings(s) + return s +} + +func objectString(obj types.Object) string { + if f, ok := obj.(*types.Func); ok { + sig := f.Type().(*types.Signature) + if recv := sig.Recv(); recv != nil { + tn := types.TypeString(recv.Type(), types.RelativeTo(obj.Pkg())) + if tn[0] == '*' { + tn = "(" + tn + ")" + } + return fmt.Sprintf("%s.%s", tn, obj.Name()) + } + } + return obj.Name() +} + +func dotjoin(s1, s2 string) string { + if s1 == "" { + return s2 + } + if s2 == "" { + return s1 + } + return s1 + "." + s2 +} diff --git a/vendor/golang.org/x/exp/apidiff/report.go b/vendor/golang.org/x/exp/apidiff/report.go new file mode 100644 index 00000000000..ce79e2790a0 --- /dev/null +++ b/vendor/golang.org/x/exp/apidiff/report.go @@ -0,0 +1,71 @@ +package apidiff + +import ( + "bytes" + "fmt" + "io" +) + +// Report describes the changes detected by Changes. +type Report struct { + Changes []Change +} + +// A Change describes a single API change. +type Change struct { + Message string + Compatible bool +} + +func (r Report) messages(compatible bool) []string { + var msgs []string + for _, c := range r.Changes { + if c.Compatible == compatible { + msgs = append(msgs, c.Message) + } + } + return msgs +} + +func (r Report) String() string { + var buf bytes.Buffer + if err := r.Text(&buf); err != nil { + return fmt.Sprintf("!!%v", err) + } + return buf.String() +} + +func (r Report) Text(w io.Writer) error { + if err := r.TextIncompatible(w, true); err != nil { + return err + } + return r.TextCompatible(w) +} + +func (r Report) TextIncompatible(w io.Writer, withHeader bool) error { + if withHeader { + return r.writeMessages(w, "Incompatible changes:", r.messages(false)) + } + return r.writeMessages(w, "", r.messages(false)) +} + +func (r Report) TextCompatible(w io.Writer) error { + return r.writeMessages(w, "Compatible changes:", r.messages(true)) +} + +func (r Report) writeMessages(w io.Writer, header string, msgs []string) error { + if len(msgs) == 0 { + return nil + } + if header != "" { + if _, err := fmt.Fprintf(w, "%s\n", header); err != nil { + return err + } + } + for _, m := range msgs { + if _, err := fmt.Fprintf(w, "- %s\n", m); err != nil { + return err + } + } + return nil +} diff --git a/vendor/golang.org/x/exp/cmd/apidiff/main.go b/vendor/golang.org/x/exp/cmd/apidiff/main.go new file mode 100644 index 00000000000..a5446b7bcfd --- /dev/null +++ b/vendor/golang.org/x/exp/cmd/apidiff/main.go @@ -0,0 +1,142 @@ +// Command apidiff determines whether two versions of a package are compatible +package main + +import ( + "bufio" + "flag" + "fmt" + "go/token" + "go/types" + "os" + + "golang.org/x/exp/apidiff" + "golang.org/x/tools/go/gcexportdata" + "golang.org/x/tools/go/packages" +) + +var ( + exportDataOutfile = flag.String("w", "", "file for export data") + incompatibleOnly = flag.Bool("incompatible", false, "display only incompatible changes") +) + +func main() { + flag.Usage = func() { + w := flag.CommandLine.Output() + fmt.Fprintf(w, "usage:\n") + fmt.Fprintf(w, "apidiff OLD NEW\n") + fmt.Fprintf(w, " compares OLD and NEW package APIs\n") + fmt.Fprintf(w, " where OLD and NEW are either import paths or files of export data\n") + fmt.Fprintf(w, "apidiff -w FILE IMPORT_PATH\n") + fmt.Fprintf(w, " writes export data of the package at IMPORT_PATH to FILE\n") + fmt.Fprintf(w, " NOTE: In a GOPATH-less environment, this option consults the\n") + fmt.Fprintf(w, " module cache by default, unless used in the directory that\n") + fmt.Fprintf(w, " contains the go.mod module definition that IMPORT_PATH belongs\n") + fmt.Fprintf(w, " to. In most cases users want the latter behavior, so be sure\n") + fmt.Fprintf(w, " to cd to the exact directory which contains the module\n") + fmt.Fprintf(w, " definition of IMPORT_PATH.\n") + flag.PrintDefaults() + } + + flag.Parse() + if *exportDataOutfile != "" { + if len(flag.Args()) != 1 { + flag.Usage() + os.Exit(2) + } + pkg := mustLoadPackage(flag.Arg(0)) + if err := writeExportData(pkg, *exportDataOutfile); err != nil { + die("writing export data: %v", err) + } + } else { + if len(flag.Args()) != 2 { + flag.Usage() + os.Exit(2) + } + oldpkg := mustLoadOrRead(flag.Arg(0)) + newpkg := mustLoadOrRead(flag.Arg(1)) + + report := apidiff.Changes(oldpkg, newpkg) + var err error + if *incompatibleOnly { + err = report.TextIncompatible(os.Stdout, false) + } else { + err = report.Text(os.Stdout) + } + if err != nil { + die("writing report: %v", err) + } + } +} + +func mustLoadOrRead(importPathOrFile string) *types.Package { + fileInfo, err := os.Stat(importPathOrFile) + if err == nil && fileInfo.Mode().IsRegular() { + pkg, err := readExportData(importPathOrFile) + if err != nil { + die("reading export data from %s: %v", importPathOrFile, err) + } + return pkg + } else { + return mustLoadPackage(importPathOrFile).Types + } +} + +func mustLoadPackage(importPath string) *packages.Package { + pkg, err := loadPackage(importPath) + if err != nil { + die("loading %s: %v", importPath, err) + } + return pkg +} + +func loadPackage(importPath string) (*packages.Package, error) { + cfg := &packages.Config{Mode: packages.LoadTypes} + pkgs, err := packages.Load(cfg, importPath) + if err != nil { + return nil, err + } + if len(pkgs) == 0 { + return nil, fmt.Errorf("found no packages for import %s", importPath) + } + if len(pkgs[0].Errors) > 0 { + return nil, pkgs[0].Errors[0] + } + return pkgs[0], nil +} + +func readExportData(filename string) (*types.Package, error) { + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer f.Close() + r := bufio.NewReader(f) + m := map[string]*types.Package{} + pkgPath, err := r.ReadString('\n') + if err != nil { + return nil, err + } + pkgPath = pkgPath[:len(pkgPath)-1] // remove delimiter + return gcexportdata.Read(r, token.NewFileSet(), m, pkgPath) +} + +func writeExportData(pkg *packages.Package, filename string) error { + f, err := os.Create(filename) + if err != nil { + return err + } + // Include the package path in the file. The exportdata format does + // not record the path of the package being written. + fmt.Fprintln(f, pkg.PkgPath) + err1 := gcexportdata.Write(f, pkg.Fset, pkg.Types) + err2 := f.Close() + if err1 != nil { + return err1 + } + return err2 +} + +func die(format string, args ...interface{}) { + fmt.Fprintf(os.Stderr, format+"\n", args...) + os.Exit(1) +} diff --git a/vendor/golang.org/x/lint/.travis.yml b/vendor/golang.org/x/lint/.travis.yml new file mode 100644 index 00000000000..50553ebd004 --- /dev/null +++ b/vendor/golang.org/x/lint/.travis.yml @@ -0,0 +1,19 @@ +sudo: false +language: go +go: + - 1.10.x + - 1.11.x + - master + +go_import_path: golang.org/x/lint + +install: + - go get -t -v ./... + +script: + - go test -v -race ./... + +matrix: + allow_failures: + - go: master + fast_finish: true diff --git a/vendor/golang.org/x/lint/CONTRIBUTING.md b/vendor/golang.org/x/lint/CONTRIBUTING.md new file mode 100644 index 00000000000..1fadda62d2f --- /dev/null +++ b/vendor/golang.org/x/lint/CONTRIBUTING.md @@ -0,0 +1,15 @@ +# Contributing to Golint + +## Before filing an issue: + +### Are you having trouble building golint? + +Check you have the latest version of its dependencies. Run +``` +go get -u golang.org/x/lint/golint +``` +If you still have problems, consider searching for existing issues before filing a new issue. + +## Before sending a pull request: + +Have you understood the purpose of golint? Make sure to carefully read `README`. diff --git a/vendor/golang.org/x/lint/LICENSE b/vendor/golang.org/x/lint/LICENSE new file mode 100644 index 00000000000..65d761bc9f2 --- /dev/null +++ b/vendor/golang.org/x/lint/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2013 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/lint/README.md b/vendor/golang.org/x/lint/README.md new file mode 100644 index 00000000000..4968b13aef7 --- /dev/null +++ b/vendor/golang.org/x/lint/README.md @@ -0,0 +1,88 @@ +Golint is a linter for Go source code. + +[![Build Status](https://travis-ci.org/golang/lint.svg?branch=master)](https://travis-ci.org/golang/lint) + +## Installation + +Golint requires a +[supported release of Go](https://golang.org/doc/devel/release.html#policy). + + go get -u golang.org/x/lint/golint + +To find out where `golint` was installed you can run `go list -f {{.Target}} golang.org/x/lint/golint`. For `golint` to be used globally add that directory to the `$PATH` environment setting. + +## Usage + +Invoke `golint` with one or more filenames, directories, or packages named +by its import path. Golint uses the same +[import path syntax](https://golang.org/cmd/go/#hdr-Import_path_syntax) as +the `go` command and therefore +also supports relative import paths like `./...`. Additionally the `...` +wildcard can be used as suffix on relative and absolute file paths to recurse +into them. + +The output of this tool is a list of suggestions in Vim quickfix format, +which is accepted by lots of different editors. + +## Purpose + +Golint differs from gofmt. Gofmt reformats Go source code, whereas +golint prints out style mistakes. + +Golint differs from govet. Govet is concerned with correctness, whereas +golint is concerned with coding style. Golint is in use at Google, and it +seeks to match the accepted style of the open source Go project. + +The suggestions made by golint are exactly that: suggestions. +Golint is not perfect, and has both false positives and false negatives. +Do not treat its output as a gold standard. We will not be adding pragmas +or other knobs to suppress specific warnings, so do not expect or require +code to be completely "lint-free". +In short, this tool is not, and will never be, trustworthy enough for its +suggestions to be enforced automatically, for example as part of a build process. +Golint makes suggestions for many of the mechanically checkable items listed in +[Effective Go](https://golang.org/doc/effective_go.html) and the +[CodeReviewComments wiki page](https://golang.org/wiki/CodeReviewComments). + +## Scope + +Golint is meant to carry out the stylistic conventions put forth in +[Effective Go](https://golang.org/doc/effective_go.html) and +[CodeReviewComments](https://golang.org/wiki/CodeReviewComments). +Changes that are not aligned with those documents will not be considered. + +## Contributions + +Contributions to this project are welcome provided they are [in scope](#scope), +though please send mail before starting work on anything major. +Contributors retain their copyright, so we need you to fill out +[a short form](https://developers.google.com/open-source/cla/individual) +before we can accept your contribution. + +## Vim + +Add this to your ~/.vimrc: + + set rtp+=$GOPATH/src/golang.org/x/lint/misc/vim + +If you have multiple entries in your GOPATH, replace `$GOPATH` with the right value. + +Running `:Lint` will run golint on the current file and populate the quickfix list. + +Optionally, add this to your `~/.vimrc` to automatically run `golint` on `:w` + + autocmd BufWritePost,FileWritePost *.go execute 'Lint' | cwindow + + +## Emacs + +Add this to your `.emacs` file: + + (add-to-list 'load-path (concat (getenv "GOPATH") "/src/golang.org/x/lint/misc/emacs/")) + (require 'golint) + +If you have multiple entries in your GOPATH, replace `$GOPATH` with the right value. + +Running M-x golint will run golint on the current file. + +For more usage, see [Compilation-Mode](http://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation-Mode.html). diff --git a/vendor/golang.org/x/lint/go.mod b/vendor/golang.org/x/lint/go.mod new file mode 100644 index 00000000000..d5ba4dbfd6c --- /dev/null +++ b/vendor/golang.org/x/lint/go.mod @@ -0,0 +1,3 @@ +module golang.org/x/lint + +require golang.org/x/tools v0.0.0-20190311212946-11955173bddd diff --git a/vendor/golang.org/x/lint/go.sum b/vendor/golang.org/x/lint/go.sum new file mode 100644 index 00000000000..7d0e2e61884 --- /dev/null +++ b/vendor/golang.org/x/lint/go.sum @@ -0,0 +1,6 @@ +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd h1:/e+gpKk9r3dJobndpTytxS2gOy6m5uvpg+ISQoEcusQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= diff --git a/vendor/golang.org/x/lint/golint/golint.go b/vendor/golang.org/x/lint/golint/golint.go new file mode 100644 index 00000000000..ac024b6d26f --- /dev/null +++ b/vendor/golang.org/x/lint/golint/golint.go @@ -0,0 +1,159 @@ +// Copyright (c) 2013 The Go Authors. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd. + +// golint lints the Go source files named on its command line. +package main + +import ( + "flag" + "fmt" + "go/build" + "io/ioutil" + "os" + "path/filepath" + "strings" + + "golang.org/x/lint" +) + +var ( + minConfidence = flag.Float64("min_confidence", 0.8, "minimum confidence of a problem to print it") + setExitStatus = flag.Bool("set_exit_status", false, "set exit status to 1 if any issues are found") + suggestions int +) + +func usage() { + fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "\tgolint [flags] # runs on package in current directory\n") + fmt.Fprintf(os.Stderr, "\tgolint [flags] [packages]\n") + fmt.Fprintf(os.Stderr, "\tgolint [flags] [directories] # where a '/...' suffix includes all sub-directories\n") + fmt.Fprintf(os.Stderr, "\tgolint [flags] [files] # all must belong to a single package\n") + fmt.Fprintf(os.Stderr, "Flags:\n") + flag.PrintDefaults() +} + +func main() { + flag.Usage = usage + flag.Parse() + + if flag.NArg() == 0 { + lintDir(".") + } else { + // dirsRun, filesRun, and pkgsRun indicate whether golint is applied to + // directory, file or package targets. The distinction affects which + // checks are run. It is no valid to mix target types. + var dirsRun, filesRun, pkgsRun int + var args []string + for _, arg := range flag.Args() { + if strings.HasSuffix(arg, "/...") && isDir(arg[:len(arg)-len("/...")]) { + dirsRun = 1 + for _, dirname := range allPackagesInFS(arg) { + args = append(args, dirname) + } + } else if isDir(arg) { + dirsRun = 1 + args = append(args, arg) + } else if exists(arg) { + filesRun = 1 + args = append(args, arg) + } else { + pkgsRun = 1 + args = append(args, arg) + } + } + + if dirsRun+filesRun+pkgsRun != 1 { + usage() + os.Exit(2) + } + switch { + case dirsRun == 1: + for _, dir := range args { + lintDir(dir) + } + case filesRun == 1: + lintFiles(args...) + case pkgsRun == 1: + for _, pkg := range importPaths(args) { + lintPackage(pkg) + } + } + } + + if *setExitStatus && suggestions > 0 { + fmt.Fprintf(os.Stderr, "Found %d lint suggestions; failing.\n", suggestions) + os.Exit(1) + } +} + +func isDir(filename string) bool { + fi, err := os.Stat(filename) + return err == nil && fi.IsDir() +} + +func exists(filename string) bool { + _, err := os.Stat(filename) + return err == nil +} + +func lintFiles(filenames ...string) { + files := make(map[string][]byte) + for _, filename := range filenames { + src, err := ioutil.ReadFile(filename) + if err != nil { + fmt.Fprintln(os.Stderr, err) + continue + } + files[filename] = src + } + + l := new(lint.Linter) + ps, err := l.LintFiles(files) + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + return + } + for _, p := range ps { + if p.Confidence >= *minConfidence { + fmt.Printf("%v: %s\n", p.Position, p.Text) + suggestions++ + } + } +} + +func lintDir(dirname string) { + pkg, err := build.ImportDir(dirname, 0) + lintImportedPackage(pkg, err) +} + +func lintPackage(pkgname string) { + pkg, err := build.Import(pkgname, ".", 0) + lintImportedPackage(pkg, err) +} + +func lintImportedPackage(pkg *build.Package, err error) { + if err != nil { + if _, nogo := err.(*build.NoGoError); nogo { + // Don't complain if the failure is due to no Go source files. + return + } + fmt.Fprintln(os.Stderr, err) + return + } + + var files []string + files = append(files, pkg.GoFiles...) + files = append(files, pkg.CgoFiles...) + files = append(files, pkg.TestGoFiles...) + if pkg.Dir != "." { + for i, f := range files { + files[i] = filepath.Join(pkg.Dir, f) + } + } + // TODO(dsymonds): Do foo_test too (pkg.XTestGoFiles) + + lintFiles(files...) +} diff --git a/vendor/golang.org/x/lint/golint/import.go b/vendor/golang.org/x/lint/golint/import.go new file mode 100644 index 00000000000..2ba9dea7792 --- /dev/null +++ b/vendor/golang.org/x/lint/golint/import.go @@ -0,0 +1,309 @@ +package main + +/* + +This file holds a direct copy of the import path matching code of +https://github.com/golang/go/blob/master/src/cmd/go/main.go. It can be +replaced when https://golang.org/issue/8768 is resolved. + +It has been updated to follow upstream changes in a few ways. + +*/ + +import ( + "fmt" + "go/build" + "log" + "os" + "path" + "path/filepath" + "regexp" + "runtime" + "strings" +) + +var ( + buildContext = build.Default + goroot = filepath.Clean(runtime.GOROOT()) + gorootSrc = filepath.Join(goroot, "src") +) + +// importPathsNoDotExpansion returns the import paths to use for the given +// command line, but it does no ... expansion. +func importPathsNoDotExpansion(args []string) []string { + if len(args) == 0 { + return []string{"."} + } + var out []string + for _, a := range args { + // Arguments are supposed to be import paths, but + // as a courtesy to Windows developers, rewrite \ to / + // in command-line arguments. Handles .\... and so on. + if filepath.Separator == '\\' { + a = strings.Replace(a, `\`, `/`, -1) + } + + // Put argument in canonical form, but preserve leading ./. + if strings.HasPrefix(a, "./") { + a = "./" + path.Clean(a) + if a == "./." { + a = "." + } + } else { + a = path.Clean(a) + } + if a == "all" || a == "std" { + out = append(out, allPackages(a)...) + continue + } + out = append(out, a) + } + return out +} + +// importPaths returns the import paths to use for the given command line. +func importPaths(args []string) []string { + args = importPathsNoDotExpansion(args) + var out []string + for _, a := range args { + if strings.Contains(a, "...") { + if build.IsLocalImport(a) { + out = append(out, allPackagesInFS(a)...) + } else { + out = append(out, allPackages(a)...) + } + continue + } + out = append(out, a) + } + return out +} + +// matchPattern(pattern)(name) reports whether +// name matches pattern. Pattern is a limited glob +// pattern in which '...' means 'any string' and there +// is no other special syntax. +func matchPattern(pattern string) func(name string) bool { + re := regexp.QuoteMeta(pattern) + re = strings.Replace(re, `\.\.\.`, `.*`, -1) + // Special case: foo/... matches foo too. + if strings.HasSuffix(re, `/.*`) { + re = re[:len(re)-len(`/.*`)] + `(/.*)?` + } + reg := regexp.MustCompile(`^` + re + `$`) + return func(name string) bool { + return reg.MatchString(name) + } +} + +// hasPathPrefix reports whether the path s begins with the +// elements in prefix. +func hasPathPrefix(s, prefix string) bool { + switch { + default: + return false + case len(s) == len(prefix): + return s == prefix + case len(s) > len(prefix): + if prefix != "" && prefix[len(prefix)-1] == '/' { + return strings.HasPrefix(s, prefix) + } + return s[len(prefix)] == '/' && s[:len(prefix)] == prefix + } +} + +// treeCanMatchPattern(pattern)(name) reports whether +// name or children of name can possibly match pattern. +// Pattern is the same limited glob accepted by matchPattern. +func treeCanMatchPattern(pattern string) func(name string) bool { + wildCard := false + if i := strings.Index(pattern, "..."); i >= 0 { + wildCard = true + pattern = pattern[:i] + } + return func(name string) bool { + return len(name) <= len(pattern) && hasPathPrefix(pattern, name) || + wildCard && strings.HasPrefix(name, pattern) + } +} + +// allPackages returns all the packages that can be found +// under the $GOPATH directories and $GOROOT matching pattern. +// The pattern is either "all" (all packages), "std" (standard packages) +// or a path including "...". +func allPackages(pattern string) []string { + pkgs := matchPackages(pattern) + if len(pkgs) == 0 { + fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) + } + return pkgs +} + +func matchPackages(pattern string) []string { + match := func(string) bool { return true } + treeCanMatch := func(string) bool { return true } + if pattern != "all" && pattern != "std" { + match = matchPattern(pattern) + treeCanMatch = treeCanMatchPattern(pattern) + } + + have := map[string]bool{ + "builtin": true, // ignore pseudo-package that exists only for documentation + } + if !buildContext.CgoEnabled { + have["runtime/cgo"] = true // ignore during walk + } + var pkgs []string + + // Commands + cmd := filepath.Join(goroot, "src/cmd") + string(filepath.Separator) + filepath.Walk(cmd, func(path string, fi os.FileInfo, err error) error { + if err != nil || !fi.IsDir() || path == cmd { + return nil + } + name := path[len(cmd):] + if !treeCanMatch(name) { + return filepath.SkipDir + } + // Commands are all in cmd/, not in subdirectories. + if strings.Contains(name, string(filepath.Separator)) { + return filepath.SkipDir + } + + // We use, e.g., cmd/gofmt as the pseudo import path for gofmt. + name = "cmd/" + name + if have[name] { + return nil + } + have[name] = true + if !match(name) { + return nil + } + _, err = buildContext.ImportDir(path, 0) + if err != nil { + if _, noGo := err.(*build.NoGoError); !noGo { + log.Print(err) + } + return nil + } + pkgs = append(pkgs, name) + return nil + }) + + for _, src := range buildContext.SrcDirs() { + if (pattern == "std" || pattern == "cmd") && src != gorootSrc { + continue + } + src = filepath.Clean(src) + string(filepath.Separator) + root := src + if pattern == "cmd" { + root += "cmd" + string(filepath.Separator) + } + filepath.Walk(root, func(path string, fi os.FileInfo, err error) error { + if err != nil || !fi.IsDir() || path == src { + return nil + } + + // Avoid .foo, _foo, and testdata directory trees. + _, elem := filepath.Split(path) + if strings.HasPrefix(elem, ".") || strings.HasPrefix(elem, "_") || elem == "testdata" { + return filepath.SkipDir + } + + name := filepath.ToSlash(path[len(src):]) + if pattern == "std" && (strings.Contains(name, ".") || name == "cmd") { + // The name "std" is only the standard library. + // If the name is cmd, it's the root of the command tree. + return filepath.SkipDir + } + if !treeCanMatch(name) { + return filepath.SkipDir + } + if have[name] { + return nil + } + have[name] = true + if !match(name) { + return nil + } + _, err = buildContext.ImportDir(path, 0) + if err != nil { + if _, noGo := err.(*build.NoGoError); noGo { + return nil + } + } + pkgs = append(pkgs, name) + return nil + }) + } + return pkgs +} + +// allPackagesInFS is like allPackages but is passed a pattern +// beginning ./ or ../, meaning it should scan the tree rooted +// at the given directory. There are ... in the pattern too. +func allPackagesInFS(pattern string) []string { + pkgs := matchPackagesInFS(pattern) + if len(pkgs) == 0 { + fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) + } + return pkgs +} + +func matchPackagesInFS(pattern string) []string { + // Find directory to begin the scan. + // Could be smarter but this one optimization + // is enough for now, since ... is usually at the + // end of a path. + i := strings.Index(pattern, "...") + dir, _ := path.Split(pattern[:i]) + + // pattern begins with ./ or ../. + // path.Clean will discard the ./ but not the ../. + // We need to preserve the ./ for pattern matching + // and in the returned import paths. + prefix := "" + if strings.HasPrefix(pattern, "./") { + prefix = "./" + } + match := matchPattern(pattern) + + var pkgs []string + filepath.Walk(dir, func(path string, fi os.FileInfo, err error) error { + if err != nil || !fi.IsDir() { + return nil + } + if path == dir { + // filepath.Walk starts at dir and recurses. For the recursive case, + // the path is the result of filepath.Join, which calls filepath.Clean. + // The initial case is not Cleaned, though, so we do this explicitly. + // + // This converts a path like "./io/" to "io". Without this step, running + // "cd $GOROOT/src/pkg; go list ./io/..." would incorrectly skip the io + // package, because prepending the prefix "./" to the unclean path would + // result in "././io", and match("././io") returns false. + path = filepath.Clean(path) + } + + // Avoid .foo, _foo, and testdata directory trees, but do not avoid "." or "..". + _, elem := filepath.Split(path) + dot := strings.HasPrefix(elem, ".") && elem != "." && elem != ".." + if dot || strings.HasPrefix(elem, "_") || elem == "testdata" { + return filepath.SkipDir + } + + name := prefix + filepath.ToSlash(path) + if !match(name) { + return nil + } + if _, err = build.ImportDir(path, 0); err != nil { + if _, noGo := err.(*build.NoGoError); !noGo { + log.Print(err) + } + return nil + } + pkgs = append(pkgs, name) + return nil + }) + return pkgs +} diff --git a/vendor/golang.org/x/lint/golint/importcomment.go b/vendor/golang.org/x/lint/golint/importcomment.go new file mode 100644 index 00000000000..d5b32f73464 --- /dev/null +++ b/vendor/golang.org/x/lint/golint/importcomment.go @@ -0,0 +1,13 @@ +// Copyright (c) 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 or at +// https://developers.google.com/open-source/licenses/bsd. + +// +build go1.12 + +// Require use of the correct import path only for Go 1.12+ users, so +// any breakages coincide with people updating their CI configs or +// whatnot. + +package main // import "golang.org/x/lint/golint" diff --git a/vendor/golang.org/x/lint/lint.go b/vendor/golang.org/x/lint/lint.go new file mode 100644 index 00000000000..532a75ad247 --- /dev/null +++ b/vendor/golang.org/x/lint/lint.go @@ -0,0 +1,1614 @@ +// Copyright (c) 2013 The Go Authors. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd. + +// Package lint contains a linter for Go source code. +package lint // import "golang.org/x/lint" + +import ( + "bufio" + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "go/types" + "regexp" + "sort" + "strconv" + "strings" + "unicode" + "unicode/utf8" + + "golang.org/x/tools/go/ast/astutil" + "golang.org/x/tools/go/gcexportdata" +) + +const styleGuideBase = "https://golang.org/wiki/CodeReviewComments" + +// A Linter lints Go source code. +type Linter struct { +} + +// Problem represents a problem in some source code. +type Problem struct { + Position token.Position // position in source file + Text string // the prose that describes the problem + Link string // (optional) the link to the style guide for the problem + Confidence float64 // a value in (0,1] estimating the confidence in this problem's correctness + LineText string // the source line + Category string // a short name for the general category of the problem + + // If the problem has a suggested fix (the minority case), + // ReplacementLine is a full replacement for the relevant line of the source file. + ReplacementLine string +} + +func (p *Problem) String() string { + if p.Link != "" { + return p.Text + "\n\n" + p.Link + } + return p.Text +} + +type byPosition []Problem + +func (p byPosition) Len() int { return len(p) } +func (p byPosition) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +func (p byPosition) Less(i, j int) bool { + pi, pj := p[i].Position, p[j].Position + + if pi.Filename != pj.Filename { + return pi.Filename < pj.Filename + } + if pi.Line != pj.Line { + return pi.Line < pj.Line + } + if pi.Column != pj.Column { + return pi.Column < pj.Column + } + + return p[i].Text < p[j].Text +} + +// Lint lints src. +func (l *Linter) Lint(filename string, src []byte) ([]Problem, error) { + return l.LintFiles(map[string][]byte{filename: src}) +} + +// LintFiles lints a set of files of a single package. +// The argument is a map of filename to source. +func (l *Linter) LintFiles(files map[string][]byte) ([]Problem, error) { + pkg := &pkg{ + fset: token.NewFileSet(), + files: make(map[string]*file), + } + var pkgName string + for filename, src := range files { + if isGenerated(src) { + continue // See issue #239 + } + f, err := parser.ParseFile(pkg.fset, filename, src, parser.ParseComments) + if err != nil { + return nil, err + } + if pkgName == "" { + pkgName = f.Name.Name + } else if f.Name.Name != pkgName { + return nil, fmt.Errorf("%s is in package %s, not %s", filename, f.Name.Name, pkgName) + } + pkg.files[filename] = &file{ + pkg: pkg, + f: f, + fset: pkg.fset, + src: src, + filename: filename, + } + } + if len(pkg.files) == 0 { + return nil, nil + } + return pkg.lint(), nil +} + +var ( + genHdr = []byte("// Code generated ") + genFtr = []byte(" DO NOT EDIT.") +) + +// isGenerated reports whether the source file is generated code +// according the rules from https://golang.org/s/generatedcode. +func isGenerated(src []byte) bool { + sc := bufio.NewScanner(bytes.NewReader(src)) + for sc.Scan() { + b := sc.Bytes() + if bytes.HasPrefix(b, genHdr) && bytes.HasSuffix(b, genFtr) && len(b) >= len(genHdr)+len(genFtr) { + return true + } + } + return false +} + +// pkg represents a package being linted. +type pkg struct { + fset *token.FileSet + files map[string]*file + + typesPkg *types.Package + typesInfo *types.Info + + // sortable is the set of types in the package that implement sort.Interface. + sortable map[string]bool + // main is whether this is a "main" package. + main bool + + problems []Problem +} + +func (p *pkg) lint() []Problem { + if err := p.typeCheck(); err != nil { + /* TODO(dsymonds): Consider reporting these errors when golint operates on entire packages. + if e, ok := err.(types.Error); ok { + pos := p.fset.Position(e.Pos) + conf := 1.0 + if strings.Contains(e.Msg, "can't find import: ") { + // Golint is probably being run in a context that doesn't support + // typechecking (e.g. package files aren't found), so don't warn about it. + conf = 0 + } + if conf > 0 { + p.errorfAt(pos, conf, category("typechecking"), e.Msg) + } + + // TODO(dsymonds): Abort if !e.Soft? + } + */ + } + + p.scanSortable() + p.main = p.isMain() + + for _, f := range p.files { + f.lint() + } + + sort.Sort(byPosition(p.problems)) + + return p.problems +} + +// file represents a file being linted. +type file struct { + pkg *pkg + f *ast.File + fset *token.FileSet + src []byte + filename string +} + +func (f *file) isTest() bool { return strings.HasSuffix(f.filename, "_test.go") } + +func (f *file) lint() { + f.lintPackageComment() + f.lintImports() + f.lintBlankImports() + f.lintExported() + f.lintNames() + f.lintElses() + f.lintRanges() + f.lintErrorf() + f.lintErrors() + f.lintErrorStrings() + f.lintReceiverNames() + f.lintIncDec() + f.lintErrorReturn() + f.lintUnexportedReturn() + f.lintTimeNames() + f.lintContextKeyTypes() + f.lintContextArgs() +} + +type link string +type category string + +// The variadic arguments may start with link and category types, +// and must end with a format string and any arguments. +// It returns the new Problem. +func (f *file) errorf(n ast.Node, confidence float64, args ...interface{}) *Problem { + pos := f.fset.Position(n.Pos()) + if pos.Filename == "" { + pos.Filename = f.filename + } + return f.pkg.errorfAt(pos, confidence, args...) +} + +func (p *pkg) errorfAt(pos token.Position, confidence float64, args ...interface{}) *Problem { + problem := Problem{ + Position: pos, + Confidence: confidence, + } + if pos.Filename != "" { + // The file might not exist in our mapping if a //line directive was encountered. + if f, ok := p.files[pos.Filename]; ok { + problem.LineText = srcLine(f.src, pos) + } + } + +argLoop: + for len(args) > 1 { // always leave at least the format string in args + switch v := args[0].(type) { + case link: + problem.Link = string(v) + case category: + problem.Category = string(v) + default: + break argLoop + } + args = args[1:] + } + + problem.Text = fmt.Sprintf(args[0].(string), args[1:]...) + + p.problems = append(p.problems, problem) + return &p.problems[len(p.problems)-1] +} + +var newImporter = func(fset *token.FileSet) types.ImporterFrom { + return gcexportdata.NewImporter(fset, make(map[string]*types.Package)) +} + +func (p *pkg) typeCheck() error { + config := &types.Config{ + // By setting a no-op error reporter, the type checker does as much work as possible. + Error: func(error) {}, + Importer: newImporter(p.fset), + } + info := &types.Info{ + Types: make(map[ast.Expr]types.TypeAndValue), + Defs: make(map[*ast.Ident]types.Object), + Uses: make(map[*ast.Ident]types.Object), + Scopes: make(map[ast.Node]*types.Scope), + } + var anyFile *file + var astFiles []*ast.File + for _, f := range p.files { + anyFile = f + astFiles = append(astFiles, f.f) + } + pkg, err := config.Check(anyFile.f.Name.Name, p.fset, astFiles, info) + // Remember the typechecking info, even if config.Check failed, + // since we will get partial information. + p.typesPkg = pkg + p.typesInfo = info + return err +} + +func (p *pkg) typeOf(expr ast.Expr) types.Type { + if p.typesInfo == nil { + return nil + } + return p.typesInfo.TypeOf(expr) +} + +func (p *pkg) isNamedType(typ types.Type, importPath, name string) bool { + n, ok := typ.(*types.Named) + if !ok { + return false + } + tn := n.Obj() + return tn != nil && tn.Pkg() != nil && tn.Pkg().Path() == importPath && tn.Name() == name +} + +// scopeOf returns the tightest scope encompassing id. +func (p *pkg) scopeOf(id *ast.Ident) *types.Scope { + var scope *types.Scope + if obj := p.typesInfo.ObjectOf(id); obj != nil { + scope = obj.Parent() + } + if scope == p.typesPkg.Scope() { + // We were given a top-level identifier. + // Use the file-level scope instead of the package-level scope. + pos := id.Pos() + for _, f := range p.files { + if f.f.Pos() <= pos && pos < f.f.End() { + scope = p.typesInfo.Scopes[f.f] + break + } + } + } + return scope +} + +func (p *pkg) scanSortable() { + p.sortable = make(map[string]bool) + + // bitfield for which methods exist on each type. + const ( + Len = 1 << iota + Less + Swap + ) + nmap := map[string]int{"Len": Len, "Less": Less, "Swap": Swap} + has := make(map[string]int) + for _, f := range p.files { + f.walk(func(n ast.Node) bool { + fn, ok := n.(*ast.FuncDecl) + if !ok || fn.Recv == nil || len(fn.Recv.List) == 0 { + return true + } + // TODO(dsymonds): We could check the signature to be more precise. + recv := receiverType(fn) + if i, ok := nmap[fn.Name.Name]; ok { + has[recv] |= i + } + return false + }) + } + for typ, ms := range has { + if ms == Len|Less|Swap { + p.sortable[typ] = true + } + } +} + +func (p *pkg) isMain() bool { + for _, f := range p.files { + if f.isMain() { + return true + } + } + return false +} + +func (f *file) isMain() bool { + if f.f.Name.Name == "main" { + return true + } + return false +} + +// lintPackageComment checks package comments. It complains if +// there is no package comment, or if it is not of the right form. +// This has a notable false positive in that a package comment +// could rightfully appear in a different file of the same package, +// but that's not easy to fix since this linter is file-oriented. +func (f *file) lintPackageComment() { + if f.isTest() { + return + } + + const ref = styleGuideBase + "#package-comments" + prefix := "Package " + f.f.Name.Name + " " + + // Look for a detached package comment. + // First, scan for the last comment that occurs before the "package" keyword. + var lastCG *ast.CommentGroup + for _, cg := range f.f.Comments { + if cg.Pos() > f.f.Package { + // Gone past "package" keyword. + break + } + lastCG = cg + } + if lastCG != nil && strings.HasPrefix(lastCG.Text(), prefix) { + endPos := f.fset.Position(lastCG.End()) + pkgPos := f.fset.Position(f.f.Package) + if endPos.Line+1 < pkgPos.Line { + // There isn't a great place to anchor this error; + // the start of the blank lines between the doc and the package statement + // is at least pointing at the location of the problem. + pos := token.Position{ + Filename: endPos.Filename, + // Offset not set; it is non-trivial, and doesn't appear to be needed. + Line: endPos.Line + 1, + Column: 1, + } + f.pkg.errorfAt(pos, 0.9, link(ref), category("comments"), "package comment is detached; there should be no blank lines between it and the package statement") + return + } + } + + if f.f.Doc == nil { + f.errorf(f.f, 0.2, link(ref), category("comments"), "should have a package comment, unless it's in another file for this package") + return + } + s := f.f.Doc.Text() + if ts := strings.TrimLeft(s, " \t"); ts != s { + f.errorf(f.f.Doc, 1, link(ref), category("comments"), "package comment should not have leading space") + s = ts + } + // Only non-main packages need to keep to this form. + if !f.pkg.main && !strings.HasPrefix(s, prefix) { + f.errorf(f.f.Doc, 1, link(ref), category("comments"), `package comment should be of the form "%s..."`, prefix) + } +} + +// lintBlankImports complains if a non-main package has blank imports that are +// not documented. +func (f *file) lintBlankImports() { + // In package main and in tests, we don't complain about blank imports. + if f.pkg.main || f.isTest() { + return + } + + // The first element of each contiguous group of blank imports should have + // an explanatory comment of some kind. + for i, imp := range f.f.Imports { + pos := f.fset.Position(imp.Pos()) + + if !isBlank(imp.Name) { + continue // Ignore non-blank imports. + } + if i > 0 { + prev := f.f.Imports[i-1] + prevPos := f.fset.Position(prev.Pos()) + if isBlank(prev.Name) && prevPos.Line+1 == pos.Line { + continue // A subsequent blank in a group. + } + } + + // This is the first blank import of a group. + if imp.Doc == nil && imp.Comment == nil { + ref := "" + f.errorf(imp, 1, link(ref), category("imports"), "a blank import should be only in a main or test package, or have a comment justifying it") + } + } +} + +// lintImports examines import blocks. +func (f *file) lintImports() { + for i, is := range f.f.Imports { + _ = i + if is.Name != nil && is.Name.Name == "." && !f.isTest() { + f.errorf(is, 1, link(styleGuideBase+"#import-dot"), category("imports"), "should not use dot imports") + } + + } +} + +const docCommentsLink = styleGuideBase + "#doc-comments" + +// lintExported examines the exported names. +// It complains if any required doc comments are missing, +// or if they are not of the right form. The exact rules are in +// lintFuncDoc, lintTypeDoc and lintValueSpecDoc; this function +// also tracks the GenDecl structure being traversed to permit +// doc comments for constants to be on top of the const block. +// It also complains if the names stutter when combined with +// the package name. +func (f *file) lintExported() { + if f.isTest() { + return + } + + var lastGen *ast.GenDecl // last GenDecl entered. + + // Set of GenDecls that have already had missing comments flagged. + genDeclMissingComments := make(map[*ast.GenDecl]bool) + + f.walk(func(node ast.Node) bool { + switch v := node.(type) { + case *ast.GenDecl: + if v.Tok == token.IMPORT { + return false + } + // token.CONST, token.TYPE or token.VAR + lastGen = v + return true + case *ast.FuncDecl: + f.lintFuncDoc(v) + if v.Recv == nil { + // Only check for stutter on functions, not methods. + // Method names are not used package-qualified. + f.checkStutter(v.Name, "func") + } + // Don't proceed inside funcs. + return false + case *ast.TypeSpec: + // inside a GenDecl, which usually has the doc + doc := v.Doc + if doc == nil { + doc = lastGen.Doc + } + f.lintTypeDoc(v, doc) + f.checkStutter(v.Name, "type") + // Don't proceed inside types. + return false + case *ast.ValueSpec: + f.lintValueSpecDoc(v, lastGen, genDeclMissingComments) + return false + } + return true + }) +} + +var ( + allCapsRE = regexp.MustCompile(`^[A-Z0-9_]+$`) + anyCapsRE = regexp.MustCompile(`[A-Z]`) +) + +// knownNameExceptions is a set of names that are known to be exempt from naming checks. +// This is usually because they are constrained by having to match names in the +// standard library. +var knownNameExceptions = map[string]bool{ + "LastInsertId": true, // must match database/sql + "kWh": true, +} + +func isInTopLevel(f *ast.File, ident *ast.Ident) bool { + path, _ := astutil.PathEnclosingInterval(f, ident.Pos(), ident.End()) + for _, f := range path { + switch f.(type) { + case *ast.File, *ast.GenDecl, *ast.ValueSpec, *ast.Ident: + continue + } + return false + } + return true +} + +// lintNames examines all names in the file. +// It complains if any use underscores or incorrect known initialisms. +func (f *file) lintNames() { + // Package names need slightly different handling than other names. + if strings.Contains(f.f.Name.Name, "_") && !strings.HasSuffix(f.f.Name.Name, "_test") { + f.errorf(f.f, 1, link("http://golang.org/doc/effective_go.html#package-names"), category("naming"), "don't use an underscore in package name") + } + if anyCapsRE.MatchString(f.f.Name.Name) { + f.errorf(f.f, 1, link("http://golang.org/doc/effective_go.html#package-names"), category("mixed-caps"), "don't use MixedCaps in package name; %s should be %s", f.f.Name.Name, strings.ToLower(f.f.Name.Name)) + } + + check := func(id *ast.Ident, thing string) { + if id.Name == "_" { + return + } + if knownNameExceptions[id.Name] { + return + } + + // Handle two common styles from other languages that don't belong in Go. + if len(id.Name) >= 5 && allCapsRE.MatchString(id.Name) && strings.Contains(id.Name, "_") { + capCount := 0 + for _, c := range id.Name { + if 'A' <= c && c <= 'Z' { + capCount++ + } + } + if capCount >= 2 { + f.errorf(id, 0.8, link(styleGuideBase+"#mixed-caps"), category("naming"), "don't use ALL_CAPS in Go names; use CamelCase") + return + } + } + if thing == "const" || (thing == "var" && isInTopLevel(f.f, id)) { + if len(id.Name) > 2 && id.Name[0] == 'k' && id.Name[1] >= 'A' && id.Name[1] <= 'Z' { + should := string(id.Name[1]+'a'-'A') + id.Name[2:] + f.errorf(id, 0.8, link(styleGuideBase+"#mixed-caps"), category("naming"), "don't use leading k in Go names; %s %s should be %s", thing, id.Name, should) + } + } + + should := lintName(id.Name) + if id.Name == should { + return + } + + if len(id.Name) > 2 && strings.Contains(id.Name[1:], "_") { + f.errorf(id, 0.9, link("http://golang.org/doc/effective_go.html#mixed-caps"), category("naming"), "don't use underscores in Go names; %s %s should be %s", thing, id.Name, should) + return + } + f.errorf(id, 0.8, link(styleGuideBase+"#initialisms"), category("naming"), "%s %s should be %s", thing, id.Name, should) + } + checkList := func(fl *ast.FieldList, thing string) { + if fl == nil { + return + } + for _, f := range fl.List { + for _, id := range f.Names { + check(id, thing) + } + } + } + f.walk(func(node ast.Node) bool { + switch v := node.(type) { + case *ast.AssignStmt: + if v.Tok == token.ASSIGN { + return true + } + for _, exp := range v.Lhs { + if id, ok := exp.(*ast.Ident); ok { + check(id, "var") + } + } + case *ast.FuncDecl: + if f.isTest() && (strings.HasPrefix(v.Name.Name, "Example") || strings.HasPrefix(v.Name.Name, "Test") || strings.HasPrefix(v.Name.Name, "Benchmark")) { + return true + } + + thing := "func" + if v.Recv != nil { + thing = "method" + } + + // Exclude naming warnings for functions that are exported to C but + // not exported in the Go API. + // See https://github.com/golang/lint/issues/144. + if ast.IsExported(v.Name.Name) || !isCgoExported(v) { + check(v.Name, thing) + } + + checkList(v.Type.Params, thing+" parameter") + checkList(v.Type.Results, thing+" result") + case *ast.GenDecl: + if v.Tok == token.IMPORT { + return true + } + var thing string + switch v.Tok { + case token.CONST: + thing = "const" + case token.TYPE: + thing = "type" + case token.VAR: + thing = "var" + } + for _, spec := range v.Specs { + switch s := spec.(type) { + case *ast.TypeSpec: + check(s.Name, thing) + case *ast.ValueSpec: + for _, id := range s.Names { + check(id, thing) + } + } + } + case *ast.InterfaceType: + // Do not check interface method names. + // They are often constrainted by the method names of concrete types. + for _, x := range v.Methods.List { + ft, ok := x.Type.(*ast.FuncType) + if !ok { // might be an embedded interface name + continue + } + checkList(ft.Params, "interface method parameter") + checkList(ft.Results, "interface method result") + } + case *ast.RangeStmt: + if v.Tok == token.ASSIGN { + return true + } + if id, ok := v.Key.(*ast.Ident); ok { + check(id, "range var") + } + if id, ok := v.Value.(*ast.Ident); ok { + check(id, "range var") + } + case *ast.StructType: + for _, f := range v.Fields.List { + for _, id := range f.Names { + check(id, "struct field") + } + } + } + return true + }) +} + +// lintName returns a different name if it should be different. +func lintName(name string) (should string) { + // Fast path for simple cases: "_" and all lowercase. + if name == "_" { + return name + } + allLower := true + for _, r := range name { + if !unicode.IsLower(r) { + allLower = false + break + } + } + if allLower { + return name + } + + // Split camelCase at any lower->upper transition, and split on underscores. + // Check each word for common initialisms. + runes := []rune(name) + w, i := 0, 0 // index of start of word, scan + for i+1 <= len(runes) { + eow := false // whether we hit the end of a word + if i+1 == len(runes) { + eow = true + } else if runes[i+1] == '_' { + // underscore; shift the remainder forward over any run of underscores + eow = true + n := 1 + for i+n+1 < len(runes) && runes[i+n+1] == '_' { + n++ + } + + // Leave at most one underscore if the underscore is between two digits + if i+n+1 < len(runes) && unicode.IsDigit(runes[i]) && unicode.IsDigit(runes[i+n+1]) { + n-- + } + + copy(runes[i+1:], runes[i+n+1:]) + runes = runes[:len(runes)-n] + } else if unicode.IsLower(runes[i]) && !unicode.IsLower(runes[i+1]) { + // lower->non-lower + eow = true + } + i++ + if !eow { + continue + } + + // [w,i) is a word. + word := string(runes[w:i]) + if u := strings.ToUpper(word); commonInitialisms[u] { + // Keep consistent case, which is lowercase only at the start. + if w == 0 && unicode.IsLower(runes[w]) { + u = strings.ToLower(u) + } + // All the common initialisms are ASCII, + // so we can replace the bytes exactly. + copy(runes[w:], []rune(u)) + } else if w > 0 && strings.ToLower(word) == word { + // already all lowercase, and not the first word, so uppercase the first character. + runes[w] = unicode.ToUpper(runes[w]) + } + w = i + } + return string(runes) +} + +// commonInitialisms is a set of common initialisms. +// Only add entries that are highly unlikely to be non-initialisms. +// For instance, "ID" is fine (Freudian code is rare), but "AND" is not. +var commonInitialisms = map[string]bool{ + "ACL": true, + "API": true, + "ASCII": true, + "CPU": true, + "CSS": true, + "DNS": true, + "EOF": true, + "GUID": true, + "HTML": true, + "HTTP": true, + "HTTPS": true, + "ID": true, + "IP": true, + "JSON": true, + "LHS": true, + "QPS": true, + "RAM": true, + "RHS": true, + "RPC": true, + "SLA": true, + "SMTP": true, + "SQL": true, + "SSH": true, + "TCP": true, + "TLS": true, + "TTL": true, + "UDP": true, + "UI": true, + "UID": true, + "UUID": true, + "URI": true, + "URL": true, + "UTF8": true, + "VM": true, + "XML": true, + "XMPP": true, + "XSRF": true, + "XSS": true, +} + +// lintTypeDoc examines the doc comment on a type. +// It complains if they are missing from an exported type, +// or if they are not of the standard form. +func (f *file) lintTypeDoc(t *ast.TypeSpec, doc *ast.CommentGroup) { + if !ast.IsExported(t.Name.Name) { + return + } + if doc == nil { + f.errorf(t, 1, link(docCommentsLink), category("comments"), "exported type %v should have comment or be unexported", t.Name) + return + } + + s := doc.Text() + articles := [...]string{"A", "An", "The"} + for _, a := range articles { + if strings.HasPrefix(s, a+" ") { + s = s[len(a)+1:] + break + } + } + if !strings.HasPrefix(s, t.Name.Name+" ") { + f.errorf(doc, 1, link(docCommentsLink), category("comments"), `comment on exported type %v should be of the form "%v ..." (with optional leading article)`, t.Name, t.Name) + } +} + +var commonMethods = map[string]bool{ + "Error": true, + "Read": true, + "ServeHTTP": true, + "String": true, + "Write": true, +} + +// lintFuncDoc examines doc comments on functions and methods. +// It complains if they are missing, or not of the right form. +// It has specific exclusions for well-known methods (see commonMethods above). +func (f *file) lintFuncDoc(fn *ast.FuncDecl) { + if !ast.IsExported(fn.Name.Name) { + // func is unexported + return + } + kind := "function" + name := fn.Name.Name + if fn.Recv != nil && len(fn.Recv.List) > 0 { + // method + kind = "method" + recv := receiverType(fn) + if !ast.IsExported(recv) { + // receiver is unexported + return + } + if commonMethods[name] { + return + } + switch name { + case "Len", "Less", "Swap": + if f.pkg.sortable[recv] { + return + } + } + name = recv + "." + name + } + if fn.Doc == nil { + f.errorf(fn, 1, link(docCommentsLink), category("comments"), "exported %s %s should have comment or be unexported", kind, name) + return + } + s := fn.Doc.Text() + prefix := fn.Name.Name + " " + if !strings.HasPrefix(s, prefix) { + f.errorf(fn.Doc, 1, link(docCommentsLink), category("comments"), `comment on exported %s %s should be of the form "%s..."`, kind, name, prefix) + } +} + +// lintValueSpecDoc examines package-global variables and constants. +// It complains if they are not individually declared, +// or if they are not suitably documented in the right form (unless they are in a block that is commented). +func (f *file) lintValueSpecDoc(vs *ast.ValueSpec, gd *ast.GenDecl, genDeclMissingComments map[*ast.GenDecl]bool) { + kind := "var" + if gd.Tok == token.CONST { + kind = "const" + } + + if len(vs.Names) > 1 { + // Check that none are exported except for the first. + for _, n := range vs.Names[1:] { + if ast.IsExported(n.Name) { + f.errorf(vs, 1, category("comments"), "exported %s %s should have its own declaration", kind, n.Name) + return + } + } + } + + // Only one name. + name := vs.Names[0].Name + if !ast.IsExported(name) { + return + } + + if vs.Doc == nil && gd.Doc == nil { + if genDeclMissingComments[gd] { + return + } + block := "" + if kind == "const" && gd.Lparen.IsValid() { + block = " (or a comment on this block)" + } + f.errorf(vs, 1, link(docCommentsLink), category("comments"), "exported %s %s should have comment%s or be unexported", kind, name, block) + genDeclMissingComments[gd] = true + return + } + // If this GenDecl has parens and a comment, we don't check its comment form. + if gd.Lparen.IsValid() && gd.Doc != nil { + return + } + // The relevant text to check will be on either vs.Doc or gd.Doc. + // Use vs.Doc preferentially. + doc := vs.Doc + if doc == nil { + doc = gd.Doc + } + prefix := name + " " + if !strings.HasPrefix(doc.Text(), prefix) { + f.errorf(doc, 1, link(docCommentsLink), category("comments"), `comment on exported %s %s should be of the form "%s..."`, kind, name, prefix) + } +} + +func (f *file) checkStutter(id *ast.Ident, thing string) { + pkg, name := f.f.Name.Name, id.Name + if !ast.IsExported(name) { + // unexported name + return + } + // A name stutters if the package name is a strict prefix + // and the next character of the name starts a new word. + if len(name) <= len(pkg) { + // name is too short to stutter. + // This permits the name to be the same as the package name. + return + } + if !strings.EqualFold(pkg, name[:len(pkg)]) { + return + } + // We can assume the name is well-formed UTF-8. + // If the next rune after the package name is uppercase or an underscore + // the it's starting a new word and thus this name stutters. + rem := name[len(pkg):] + if next, _ := utf8.DecodeRuneInString(rem); next == '_' || unicode.IsUpper(next) { + f.errorf(id, 0.8, link(styleGuideBase+"#package-names"), category("naming"), "%s name will be used as %s.%s by other packages, and that stutters; consider calling this %s", thing, pkg, name, rem) + } +} + +// zeroLiteral is a set of ast.BasicLit values that are zero values. +// It is not exhaustive. +var zeroLiteral = map[string]bool{ + "false": true, // bool + // runes + `'\x00'`: true, + `'\000'`: true, + // strings + `""`: true, + "``": true, + // numerics + "0": true, + "0.": true, + "0.0": true, + "0i": true, +} + +// lintElses examines else blocks. It complains about any else block whose if block ends in a return. +func (f *file) lintElses() { + // We don't want to flag if { } else if { } else { } constructions. + // They will appear as an IfStmt whose Else field is also an IfStmt. + // Record such a node so we ignore it when we visit it. + ignore := make(map[*ast.IfStmt]bool) + + f.walk(func(node ast.Node) bool { + ifStmt, ok := node.(*ast.IfStmt) + if !ok || ifStmt.Else == nil { + return true + } + if elseif, ok := ifStmt.Else.(*ast.IfStmt); ok { + ignore[elseif] = true + return true + } + if ignore[ifStmt] { + return true + } + if _, ok := ifStmt.Else.(*ast.BlockStmt); !ok { + // only care about elses without conditions + return true + } + if len(ifStmt.Body.List) == 0 { + return true + } + shortDecl := false // does the if statement have a ":=" initialization statement? + if ifStmt.Init != nil { + if as, ok := ifStmt.Init.(*ast.AssignStmt); ok && as.Tok == token.DEFINE { + shortDecl = true + } + } + lastStmt := ifStmt.Body.List[len(ifStmt.Body.List)-1] + if _, ok := lastStmt.(*ast.ReturnStmt); ok { + extra := "" + if shortDecl { + extra = " (move short variable declaration to its own line if necessary)" + } + f.errorf(ifStmt.Else, 1, link(styleGuideBase+"#indent-error-flow"), category("indent"), "if block ends with a return statement, so drop this else and outdent its block"+extra) + } + return true + }) +} + +// lintRanges examines range clauses. It complains about redundant constructions. +func (f *file) lintRanges() { + f.walk(func(node ast.Node) bool { + rs, ok := node.(*ast.RangeStmt) + if !ok { + return true + } + + if isIdent(rs.Key, "_") && (rs.Value == nil || isIdent(rs.Value, "_")) { + p := f.errorf(rs.Key, 1, category("range-loop"), "should omit values from range; this loop is equivalent to `for range ...`") + + newRS := *rs // shallow copy + newRS.Value = nil + newRS.Key = nil + p.ReplacementLine = f.firstLineOf(&newRS, rs) + + return true + } + + if isIdent(rs.Value, "_") { + p := f.errorf(rs.Value, 1, category("range-loop"), "should omit 2nd value from range; this loop is equivalent to `for %s %s range ...`", f.render(rs.Key), rs.Tok) + + newRS := *rs // shallow copy + newRS.Value = nil + p.ReplacementLine = f.firstLineOf(&newRS, rs) + } + + return true + }) +} + +// lintErrorf examines errors.New and testing.Error calls. It complains if its only argument is an fmt.Sprintf invocation. +func (f *file) lintErrorf() { + f.walk(func(node ast.Node) bool { + ce, ok := node.(*ast.CallExpr) + if !ok || len(ce.Args) != 1 { + return true + } + isErrorsNew := isPkgDot(ce.Fun, "errors", "New") + var isTestingError bool + se, ok := ce.Fun.(*ast.SelectorExpr) + if ok && se.Sel.Name == "Error" { + if typ := f.pkg.typeOf(se.X); typ != nil { + isTestingError = typ.String() == "*testing.T" + } + } + if !isErrorsNew && !isTestingError { + return true + } + if !f.imports("errors") { + return true + } + arg := ce.Args[0] + ce, ok = arg.(*ast.CallExpr) + if !ok || !isPkgDot(ce.Fun, "fmt", "Sprintf") { + return true + } + errorfPrefix := "fmt" + if isTestingError { + errorfPrefix = f.render(se.X) + } + p := f.errorf(node, 1, category("errors"), "should replace %s(fmt.Sprintf(...)) with %s.Errorf(...)", f.render(se), errorfPrefix) + + m := f.srcLineWithMatch(ce, `^(.*)`+f.render(se)+`\(fmt\.Sprintf\((.*)\)\)(.*)$`) + if m != nil { + p.ReplacementLine = m[1] + errorfPrefix + ".Errorf(" + m[2] + ")" + m[3] + } + + return true + }) +} + +// lintErrors examines global error vars. It complains if they aren't named in the standard way. +func (f *file) lintErrors() { + for _, decl := range f.f.Decls { + gd, ok := decl.(*ast.GenDecl) + if !ok || gd.Tok != token.VAR { + continue + } + for _, spec := range gd.Specs { + spec := spec.(*ast.ValueSpec) + if len(spec.Names) != 1 || len(spec.Values) != 1 { + continue + } + ce, ok := spec.Values[0].(*ast.CallExpr) + if !ok { + continue + } + if !isPkgDot(ce.Fun, "errors", "New") && !isPkgDot(ce.Fun, "fmt", "Errorf") { + continue + } + + id := spec.Names[0] + prefix := "err" + if id.IsExported() { + prefix = "Err" + } + if !strings.HasPrefix(id.Name, prefix) { + f.errorf(id, 0.9, category("naming"), "error var %s should have name of the form %sFoo", id.Name, prefix) + } + } + } +} + +func lintErrorString(s string) (isClean bool, conf float64) { + const basicConfidence = 0.8 + const capConfidence = basicConfidence - 0.2 + first, firstN := utf8.DecodeRuneInString(s) + last, _ := utf8.DecodeLastRuneInString(s) + if last == '.' || last == ':' || last == '!' || last == '\n' { + return false, basicConfidence + } + if unicode.IsUpper(first) { + // People use proper nouns and exported Go identifiers in error strings, + // so decrease the confidence of warnings for capitalization. + if len(s) <= firstN { + return false, capConfidence + } + // Flag strings starting with something that doesn't look like an initialism. + if second, _ := utf8.DecodeRuneInString(s[firstN:]); !unicode.IsUpper(second) { + return false, capConfidence + } + } + return true, 0 +} + +// lintErrorStrings examines error strings. +// It complains if they are capitalized or end in punctuation or a newline. +func (f *file) lintErrorStrings() { + f.walk(func(node ast.Node) bool { + ce, ok := node.(*ast.CallExpr) + if !ok { + return true + } + if !isPkgDot(ce.Fun, "errors", "New") && !isPkgDot(ce.Fun, "fmt", "Errorf") { + return true + } + if len(ce.Args) < 1 { + return true + } + str, ok := ce.Args[0].(*ast.BasicLit) + if !ok || str.Kind != token.STRING { + return true + } + s, _ := strconv.Unquote(str.Value) // can assume well-formed Go + if s == "" { + return true + } + clean, conf := lintErrorString(s) + if clean { + return true + } + + f.errorf(str, conf, link(styleGuideBase+"#error-strings"), category("errors"), + "error strings should not be capitalized or end with punctuation or a newline") + return true + }) +} + +// lintReceiverNames examines receiver names. It complains about inconsistent +// names used for the same type and names such as "this". +func (f *file) lintReceiverNames() { + typeReceiver := map[string]string{} + f.walk(func(n ast.Node) bool { + fn, ok := n.(*ast.FuncDecl) + if !ok || fn.Recv == nil || len(fn.Recv.List) == 0 { + return true + } + names := fn.Recv.List[0].Names + if len(names) < 1 { + return true + } + name := names[0].Name + const ref = styleGuideBase + "#receiver-names" + if name == "_" { + f.errorf(n, 1, link(ref), category("naming"), `receiver name should not be an underscore, omit the name if it is unused`) + return true + } + if name == "this" || name == "self" { + f.errorf(n, 1, link(ref), category("naming"), `receiver name should be a reflection of its identity; don't use generic names such as "this" or "self"`) + return true + } + recv := receiverType(fn) + if prev, ok := typeReceiver[recv]; ok && prev != name { + f.errorf(n, 1, link(ref), category("naming"), "receiver name %s should be consistent with previous receiver name %s for %s", name, prev, recv) + return true + } + typeReceiver[recv] = name + return true + }) +} + +// lintIncDec examines statements that increment or decrement a variable. +// It complains if they don't use x++ or x--. +func (f *file) lintIncDec() { + f.walk(func(n ast.Node) bool { + as, ok := n.(*ast.AssignStmt) + if !ok { + return true + } + if len(as.Lhs) != 1 { + return true + } + if !isOne(as.Rhs[0]) { + return true + } + var suffix string + switch as.Tok { + case token.ADD_ASSIGN: + suffix = "++" + case token.SUB_ASSIGN: + suffix = "--" + default: + return true + } + f.errorf(as, 0.8, category("unary-op"), "should replace %s with %s%s", f.render(as), f.render(as.Lhs[0]), suffix) + return true + }) +} + +// lintErrorReturn examines function declarations that return an error. +// It complains if the error isn't the last parameter. +func (f *file) lintErrorReturn() { + f.walk(func(n ast.Node) bool { + fn, ok := n.(*ast.FuncDecl) + if !ok || fn.Type.Results == nil { + return true + } + ret := fn.Type.Results.List + if len(ret) <= 1 { + return true + } + if isIdent(ret[len(ret)-1].Type, "error") { + return true + } + // An error return parameter should be the last parameter. + // Flag any error parameters found before the last. + for _, r := range ret[:len(ret)-1] { + if isIdent(r.Type, "error") { + f.errorf(fn, 0.9, category("arg-order"), "error should be the last type when returning multiple items") + break // only flag one + } + } + return true + }) +} + +// lintUnexportedReturn examines exported function declarations. +// It complains if any return an unexported type. +func (f *file) lintUnexportedReturn() { + f.walk(func(n ast.Node) bool { + fn, ok := n.(*ast.FuncDecl) + if !ok { + return true + } + if fn.Type.Results == nil { + return false + } + if !fn.Name.IsExported() { + return false + } + thing := "func" + if fn.Recv != nil && len(fn.Recv.List) > 0 { + thing = "method" + if !ast.IsExported(receiverType(fn)) { + // Don't report exported methods of unexported types, + // such as private implementations of sort.Interface. + return false + } + } + for _, ret := range fn.Type.Results.List { + typ := f.pkg.typeOf(ret.Type) + if exportedType(typ) { + continue + } + f.errorf(ret.Type, 0.8, category("unexported-type-in-api"), + "exported %s %s returns unexported type %s, which can be annoying to use", + thing, fn.Name.Name, typ) + break // only flag one + } + return false + }) +} + +// exportedType reports whether typ is an exported type. +// It is imprecise, and will err on the side of returning true, +// such as for composite types. +func exportedType(typ types.Type) bool { + switch T := typ.(type) { + case *types.Named: + // Builtin types have no package. + return T.Obj().Pkg() == nil || T.Obj().Exported() + case *types.Map: + return exportedType(T.Key()) && exportedType(T.Elem()) + case interface { + Elem() types.Type + }: // array, slice, pointer, chan + return exportedType(T.Elem()) + } + // Be conservative about other types, such as struct, interface, etc. + return true +} + +// timeSuffixes is a list of name suffixes that imply a time unit. +// This is not an exhaustive list. +var timeSuffixes = []string{ + "Sec", "Secs", "Seconds", + "Msec", "Msecs", + "Milli", "Millis", "Milliseconds", + "Usec", "Usecs", "Microseconds", + "MS", "Ms", +} + +func (f *file) lintTimeNames() { + f.walk(func(node ast.Node) bool { + v, ok := node.(*ast.ValueSpec) + if !ok { + return true + } + for _, name := range v.Names { + origTyp := f.pkg.typeOf(name) + // Look for time.Duration or *time.Duration; + // the latter is common when using flag.Duration. + typ := origTyp + if pt, ok := typ.(*types.Pointer); ok { + typ = pt.Elem() + } + if !f.pkg.isNamedType(typ, "time", "Duration") { + continue + } + suffix := "" + for _, suf := range timeSuffixes { + if strings.HasSuffix(name.Name, suf) { + suffix = suf + break + } + } + if suffix == "" { + continue + } + f.errorf(v, 0.9, category("time"), "var %s is of type %v; don't use unit-specific suffix %q", name.Name, origTyp, suffix) + } + return true + }) +} + +// lintContextKeyTypes checks for call expressions to context.WithValue with +// basic types used for the key argument. +// See: https://golang.org/issue/17293 +func (f *file) lintContextKeyTypes() { + f.walk(func(node ast.Node) bool { + switch node := node.(type) { + case *ast.CallExpr: + f.checkContextKeyType(node) + } + + return true + }) +} + +// checkContextKeyType reports an error if the call expression calls +// context.WithValue with a key argument of basic type. +func (f *file) checkContextKeyType(x *ast.CallExpr) { + sel, ok := x.Fun.(*ast.SelectorExpr) + if !ok { + return + } + pkg, ok := sel.X.(*ast.Ident) + if !ok || pkg.Name != "context" { + return + } + if sel.Sel.Name != "WithValue" { + return + } + + // key is second argument to context.WithValue + if len(x.Args) != 3 { + return + } + key := f.pkg.typesInfo.Types[x.Args[1]] + + if ktyp, ok := key.Type.(*types.Basic); ok && ktyp.Kind() != types.Invalid { + f.errorf(x, 1.0, category("context"), fmt.Sprintf("should not use basic type %s as key in context.WithValue", key.Type)) + } +} + +// lintContextArgs examines function declarations that contain an +// argument with a type of context.Context +// It complains if that argument isn't the first parameter. +func (f *file) lintContextArgs() { + f.walk(func(n ast.Node) bool { + fn, ok := n.(*ast.FuncDecl) + if !ok || len(fn.Type.Params.List) <= 1 { + return true + } + // A context.Context should be the first parameter of a function. + // Flag any that show up after the first. + for _, arg := range fn.Type.Params.List[1:] { + if isPkgDot(arg.Type, "context", "Context") { + f.errorf(fn, 0.9, link("https://golang.org/pkg/context/"), category("arg-order"), "context.Context should be the first parameter of a function") + break // only flag one + } + } + return true + }) +} + +// containsComments returns whether the interval [start, end) contains any +// comments without "// MATCH " prefix. +func (f *file) containsComments(start, end token.Pos) bool { + for _, cgroup := range f.f.Comments { + comments := cgroup.List + if comments[0].Slash >= end { + // All comments starting with this group are after end pos. + return false + } + if comments[len(comments)-1].Slash < start { + // Comments group ends before start pos. + continue + } + for _, c := range comments { + if start <= c.Slash && c.Slash < end && !strings.HasPrefix(c.Text, "// MATCH ") { + return true + } + } + } + return false +} + +// receiverType returns the named type of the method receiver, sans "*", +// or "invalid-type" if fn.Recv is ill formed. +func receiverType(fn *ast.FuncDecl) string { + switch e := fn.Recv.List[0].Type.(type) { + case *ast.Ident: + return e.Name + case *ast.StarExpr: + if id, ok := e.X.(*ast.Ident); ok { + return id.Name + } + } + // The parser accepts much more than just the legal forms. + return "invalid-type" +} + +func (f *file) walk(fn func(ast.Node) bool) { + ast.Walk(walker(fn), f.f) +} + +func (f *file) render(x interface{}) string { + var buf bytes.Buffer + if err := printer.Fprint(&buf, f.fset, x); err != nil { + panic(err) + } + return buf.String() +} + +func (f *file) debugRender(x interface{}) string { + var buf bytes.Buffer + if err := ast.Fprint(&buf, f.fset, x, nil); err != nil { + panic(err) + } + return buf.String() +} + +// walker adapts a function to satisfy the ast.Visitor interface. +// The function return whether the walk should proceed into the node's children. +type walker func(ast.Node) bool + +func (w walker) Visit(node ast.Node) ast.Visitor { + if w(node) { + return w + } + return nil +} + +func isIdent(expr ast.Expr, ident string) bool { + id, ok := expr.(*ast.Ident) + return ok && id.Name == ident +} + +// isBlank returns whether id is the blank identifier "_". +// If id == nil, the answer is false. +func isBlank(id *ast.Ident) bool { return id != nil && id.Name == "_" } + +func isPkgDot(expr ast.Expr, pkg, name string) bool { + sel, ok := expr.(*ast.SelectorExpr) + return ok && isIdent(sel.X, pkg) && isIdent(sel.Sel, name) +} + +func isOne(expr ast.Expr) bool { + lit, ok := expr.(*ast.BasicLit) + return ok && lit.Kind == token.INT && lit.Value == "1" +} + +func isCgoExported(f *ast.FuncDecl) bool { + if f.Recv != nil || f.Doc == nil { + return false + } + + cgoExport := regexp.MustCompile(fmt.Sprintf("(?m)^//export %s$", regexp.QuoteMeta(f.Name.Name))) + for _, c := range f.Doc.List { + if cgoExport.MatchString(c.Text) { + return true + } + } + return false +} + +var basicTypeKinds = map[types.BasicKind]string{ + types.UntypedBool: "bool", + types.UntypedInt: "int", + types.UntypedRune: "rune", + types.UntypedFloat: "float64", + types.UntypedComplex: "complex128", + types.UntypedString: "string", +} + +// isUntypedConst reports whether expr is an untyped constant, +// and indicates what its default type is. +// scope may be nil. +func (f *file) isUntypedConst(expr ast.Expr) (defType string, ok bool) { + // Re-evaluate expr outside of its context to see if it's untyped. + // (An expr evaluated within, for example, an assignment context will get the type of the LHS.) + exprStr := f.render(expr) + tv, err := types.Eval(f.fset, f.pkg.typesPkg, expr.Pos(), exprStr) + if err != nil { + return "", false + } + if b, ok := tv.Type.(*types.Basic); ok { + if dt, ok := basicTypeKinds[b.Kind()]; ok { + return dt, true + } + } + + return "", false +} + +// firstLineOf renders the given node and returns its first line. +// It will also match the indentation of another node. +func (f *file) firstLineOf(node, match ast.Node) string { + line := f.render(node) + if i := strings.Index(line, "\n"); i >= 0 { + line = line[:i] + } + return f.indentOf(match) + line +} + +func (f *file) indentOf(node ast.Node) string { + line := srcLine(f.src, f.fset.Position(node.Pos())) + for i, r := range line { + switch r { + case ' ', '\t': + default: + return line[:i] + } + } + return line // unusual or empty line +} + +func (f *file) srcLineWithMatch(node ast.Node, pattern string) (m []string) { + line := srcLine(f.src, f.fset.Position(node.Pos())) + line = strings.TrimSuffix(line, "\n") + rx := regexp.MustCompile(pattern) + return rx.FindStringSubmatch(line) +} + +// imports returns true if the current file imports the specified package path. +func (f *file) imports(importPath string) bool { + all := astutil.Imports(f.fset, f.f) + for _, p := range all { + for _, i := range p { + uq, err := strconv.Unquote(i.Path.Value) + if err == nil && importPath == uq { + return true + } + } + } + return false +} + +// srcLine returns the complete line at p, including the terminating newline. +func srcLine(src []byte, p token.Position) string { + // Run to end of line in both directions if not at line start/end. + lo, hi := p.Offset, p.Offset+1 + for lo > 0 && src[lo-1] != '\n' { + lo-- + } + for hi < len(src) && src[hi-1] != '\n' { + hi++ + } + return string(src[lo:hi]) +} diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index b46791d1da2..514c126c5f8 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -643,7 +643,7 @@ func (f *Framer) WriteData(streamID uint32, endStream bool, data []byte) error { return f.WriteDataPadded(streamID, endStream, data, nil) } -// WriteData writes a DATA frame with optional padding. +// WriteDataPadded writes a DATA frame with optional padding. // // If pad is nil, the padding bit is not sent. // The length of pad must not exceed 255 bytes. diff --git a/vendor/golang.org/x/net/http2/hpack/encode.go b/vendor/golang.org/x/net/http2/hpack/encode.go index 1565cf2702d..97f17831fc5 100644 --- a/vendor/golang.org/x/net/http2/hpack/encode.go +++ b/vendor/golang.org/x/net/http2/hpack/encode.go @@ -150,7 +150,7 @@ func appendIndexed(dst []byte, i uint64) []byte { // extended buffer. // // If f.Sensitive is true, "Never Indexed" representation is used. If -// f.Sensitive is false and indexing is true, "Inremental Indexing" +// f.Sensitive is false and indexing is true, "Incremental Indexing" // representation is used. func appendNewName(dst []byte, f HeaderField, indexing bool) []byte { dst = append(dst, encodeTypeByte(indexing, f.Sensitive)) diff --git a/vendor/golang.org/x/net/http2/pipe.go b/vendor/golang.org/x/net/http2/pipe.go index a6140099cb3..2a5399ec4a0 100644 --- a/vendor/golang.org/x/net/http2/pipe.go +++ b/vendor/golang.org/x/net/http2/pipe.go @@ -17,6 +17,7 @@ type pipe struct { mu sync.Mutex c sync.Cond // c.L lazily initialized to &p.mu b pipeBuffer // nil when done reading + unread int // bytes unread when done err error // read error once empty. non-nil means closed. breakErr error // immediate read error (caller doesn't see rest of b) donec chan struct{} // closed on error @@ -33,7 +34,7 @@ func (p *pipe) Len() int { p.mu.Lock() defer p.mu.Unlock() if p.b == nil { - return 0 + return p.unread } return p.b.Len() } @@ -80,6 +81,7 @@ func (p *pipe) Write(d []byte) (n int, err error) { return 0, errClosedPipeWrite } if p.breakErr != nil { + p.unread += len(d) return len(d), nil // discard when there is no reader } return p.b.Write(d) @@ -117,6 +119,9 @@ func (p *pipe) closeWithError(dst *error, err error, fn func()) { } p.readFn = fn if dst == &p.breakErr { + if p.b != nil { + p.unread += p.b.Len() + } p.b = nil } *dst = err diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 6f8e8b0d98b..d2ba820c70f 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -283,7 +283,20 @@ func ConfigureServer(s *http.Server, conf *Server) error { if testHookOnConn != nil { testHookOnConn() } + // The TLSNextProto interface predates contexts, so + // the net/http package passes down its per-connection + // base context via an exported but unadvertised + // method on the Handler. This is for internal + // net/http<=>http2 use only. + var ctx context.Context + type baseContexter interface { + BaseContext() context.Context + } + if bc, ok := h.(baseContexter); ok { + ctx = bc.BaseContext() + } conf.ServeConn(c, &ServeConnOpts{ + Context: ctx, Handler: h, BaseConfig: hs, }) @@ -294,6 +307,10 @@ func ConfigureServer(s *http.Server, conf *Server) error { // ServeConnOpts are options for the Server.ServeConn method. type ServeConnOpts struct { + // Context is the base context to use. + // If nil, context.Background is used. + Context context.Context + // BaseConfig optionally sets the base configuration // for values. If nil, defaults are used. BaseConfig *http.Server @@ -304,6 +321,13 @@ type ServeConnOpts struct { Handler http.Handler } +func (o *ServeConnOpts) context() context.Context { + if o != nil && o.Context != nil { + return o.Context + } + return context.Background() +} + func (o *ServeConnOpts) baseConfig() *http.Server { if o != nil && o.BaseConfig != nil { return o.BaseConfig @@ -449,7 +473,7 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { } func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) { - ctx, cancel = context.WithCancel(context.Background()) + ctx, cancel = context.WithCancel(opts.context()) ctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr()) if hs := opts.baseConfig(); hs != nil { ctx = context.WithValue(ctx, http.ServerContextKey, hs) @@ -2337,7 +2361,16 @@ type chunkWriter struct{ rws *responseWriterState } func (cw chunkWriter) Write(p []byte) (n int, err error) { return cw.rws.writeChunk(p) } -func (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) != 0 } +func (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) > 0 } + +func (rws *responseWriterState) hasNonemptyTrailers() bool { + for _, trailer := range rws.trailers { + if _, ok := rws.handlerHeader[trailer]; ok { + return true + } + } + return false +} // declareTrailer is called for each Trailer header when the // response header is written. It notes that a header will need to be @@ -2382,7 +2415,11 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { clen = strconv.Itoa(len(p)) } _, hasContentType := rws.snapHeader["Content-Type"] - if !hasContentType && bodyAllowedForStatus(rws.status) && len(p) > 0 { + // If the Content-Encoding is non-blank, we shouldn't + // sniff the body. See Issue golang.org/issue/31753. + ce := rws.snapHeader.Get("Content-Encoding") + hasCE := len(ce) > 0 + if !hasCE && !hasContentType && bodyAllowedForStatus(rws.status) && len(p) > 0 { ctype = http.DetectContentType(p) } var date string @@ -2437,7 +2474,10 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { rws.promoteUndeclaredTrailers() } - endStream := rws.handlerDone && !rws.hasTrailers() + // only send trailers if they have actually been defined by the + // server handler. + hasNonemptyTrailers := rws.hasNonemptyTrailers() + endStream := rws.handlerDone && !hasNonemptyTrailers if len(p) > 0 || endStream { // only send a 0 byte DATA frame if we're ending the stream. if err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil { @@ -2446,7 +2486,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { } } - if rws.handlerDone && rws.hasTrailers() { + if rws.handlerDone && hasNonemptyTrailers { err = rws.conn.writeHeaders(rws.stream, &writeResHeaders{ streamID: rws.stream.id, h: rws.handlerHeader, @@ -2488,7 +2528,7 @@ const TrailerPrefix = "Trailer:" // trailers. That worked for a while, until we found the first major // user of Trailers in the wild: gRPC (using them only over http2), // and gRPC libraries permit setting trailers mid-stream without -// predeclarnig them. So: change of plans. We still permit the old +// predeclaring them. So: change of plans. We still permit the old // way, but we also permit this hack: if a Header() key begins with // "Trailer:", the suffix of that key is a Trailer. Because ':' is an // invalid token byte anyway, there is no ambiguity. (And it's already @@ -2788,7 +2828,7 @@ func (sc *serverConn) startPush(msg *startPushRequest) { // PUSH_PROMISE frames MUST only be sent on a peer-initiated stream that // is in either the "open" or "half-closed (remote)" state. if msg.parent.state != stateOpen && msg.parent.state != stateHalfClosedRemote { - // responseWriter.Push checks that the stream is peer-initiaed. + // responseWriter.Push checks that the stream is peer-initiated. msg.done <- errStreamClosed return } diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index f272e8f9fac..42ad1814487 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -28,6 +28,7 @@ import ( "strconv" "strings" "sync" + "sync/atomic" "time" "golang.org/x/net/http/httpguts" @@ -199,6 +200,7 @@ type ClientConn struct { t *Transport tconn net.Conn // usually *tls.Conn, except specialized impls tlsState *tls.ConnectionState // nil only for specialized impls + reused uint32 // whether conn is being reused; atomic singleUse bool // whether being used for a single http.Request // readLoop goroutine fields: @@ -440,7 +442,8 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err) return nil, err } - traceGotConn(req, cc) + reused := !atomic.CompareAndSwapUint32(&cc.reused, 0, 1) + traceGotConn(req, cc, reused) res, gotErrAfterReqBodyWrite, err := cc.roundTrip(req) if err != nil && retry <= 6 { if req, err = shouldRetryRequest(req, err, gotErrAfterReqBodyWrite); err == nil { @@ -600,7 +603,7 @@ func (t *Transport) expectContinueTimeout() time.Duration { } func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) { - return t.newClientConn(c, false) + return t.newClientConn(c, t.disableKeepAlives()) } func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, error) { @@ -989,7 +992,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf req.Method != "HEAD" { // Request gzip only, not deflate. Deflate is ambiguous and // not as universally supported anyway. - // See: http://www.gzip.org/zlib/zlib_faq.html#faq38 + // See: https://zlib.net/zlib_faq.html#faq39 // // Note that we don't request this for HEAD requests, // due to a bug in nginx: @@ -1213,6 +1216,8 @@ var ( // abort request body write, but send stream reset of cancel. errStopReqBodyWriteAndCancel = errors.New("http2: canceling request") + + errReqBodyTooLong = errors.New("http2: request body larger than specified content length") ) func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) (err error) { @@ -1235,10 +1240,32 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( req := cs.req hasTrailers := req.Trailer != nil + remainLen := actualContentLength(req) + hasContentLen := remainLen != -1 var sawEOF bool for !sawEOF { - n, err := body.Read(buf) + n, err := body.Read(buf[:len(buf)-1]) + if hasContentLen { + remainLen -= int64(n) + if remainLen == 0 && err == nil { + // The request body's Content-Length was predeclared and + // we just finished reading it all, but the underlying io.Reader + // returned the final chunk with a nil error (which is one of + // the two valid things a Reader can do at EOF). Because we'd prefer + // to send the END_STREAM bit early, double-check that we're actually + // at EOF. Subsequent reads should return (0, EOF) at this point. + // If either value is different, we return an error in one of two ways below. + var n1 int + n1, err = body.Read(buf[n:]) + remainLen -= int64(n1) + } + if remainLen < 0 { + err = errReqBodyTooLong + cc.writeStreamReset(cs.ID, ErrCodeCancel, err) + return err + } + } if err == io.EOF { sawEOF = true err = nil @@ -1411,7 +1438,11 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail // followed by the query production (see Sections 3.3 and 3.4 of // [RFC3986]). f(":authority", host) - f(":method", req.Method) + m := req.Method + if m == "" { + m = http.MethodGet + } + f(":method", m) if req.Method != "CONNECT" { f(":path", path) f(":scheme", req.URL.Scheme) @@ -1447,7 +1478,29 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail if vv[0] == "" { continue } - + } else if strings.EqualFold(k, "cookie") { + // Per 8.1.2.5 To allow for better compression efficiency, the + // Cookie header field MAY be split into separate header fields, + // each with one or more cookie-pairs. + for _, v := range vv { + for { + p := strings.IndexByte(v, ';') + if p < 0 { + break + } + f("cookie", v[:p]) + p++ + // strip space after semicolon if any. + for p+1 <= len(v) && v[p] == ' ' { + p++ + } + v = v[p:] + } + if len(v) > 0 { + f("cookie", v) + } + } + continue } for _, v := range vv { @@ -2555,15 +2608,15 @@ func traceGetConn(req *http.Request, hostPort string) { trace.GetConn(hostPort) } -func traceGotConn(req *http.Request, cc *ClientConn) { +func traceGotConn(req *http.Request, cc *ClientConn, reused bool) { trace := httptrace.ContextClientTrace(req.Context()) if trace == nil || trace.GotConn == nil { return } ci := httptrace.GotConnInfo{Conn: cc.tconn} + ci.Reused = reused cc.mu.Lock() - ci.Reused = cc.nextStreamID > 1 - ci.WasIdle = len(cc.streams) == 0 && ci.Reused + ci.WasIdle = len(cc.streams) == 0 && reused if ci.WasIdle && !cc.lastActive.IsZero() { ci.IdleTime = time.Now().Sub(cc.lastActive) } diff --git a/vendor/golang.org/x/net/http2/writesched_priority.go b/vendor/golang.org/x/net/http2/writesched_priority.go index 848fed6ec76..2618b2c11d2 100644 --- a/vendor/golang.org/x/net/http2/writesched_priority.go +++ b/vendor/golang.org/x/net/http2/writesched_priority.go @@ -149,7 +149,7 @@ func (n *priorityNode) addBytes(b int64) { } // walkReadyInOrder iterates over the tree in priority order, calling f for each node -// with a non-empty write queue. When f returns true, this funcion returns true and the +// with a non-empty write queue. When f returns true, this function returns true and the // walk halts. tmp is used as scratch space for sorting. // // f(n, openParent) takes two arguments: the node to visit, n, and a bool that is true diff --git a/vendor/golang.org/x/net/http2/writesched_random.go b/vendor/golang.org/x/net/http2/writesched_random.go index 36d7919f16a..9a7b9e581c1 100644 --- a/vendor/golang.org/x/net/http2/writesched_random.go +++ b/vendor/golang.org/x/net/http2/writesched_random.go @@ -19,7 +19,8 @@ type randomWriteScheduler struct { zero writeQueue // sq contains the stream-specific queues, keyed by stream ID. - // When a stream is idle or closed, it's deleted from the map. + // When a stream is idle, closed, or emptied, it's deleted + // from the map. sq map[uint32]*writeQueue // pool of empty queues for reuse. @@ -63,8 +64,12 @@ func (ws *randomWriteScheduler) Pop() (FrameWriteRequest, bool) { return ws.zero.shift(), true } // Iterate over all non-idle streams until finding one that can be consumed. - for _, q := range ws.sq { + for streamID, q := range ws.sq { if wr, ok := q.consume(math.MaxInt32); ok { + if q.empty() { + delete(ws.sq, streamID) + ws.queuePool.put(q) + } return wr, true } } diff --git a/vendor/golang.org/x/net/idna/idna.go b/vendor/golang.org/x/net/idna/idna10.0.0.go similarity index 99% rename from vendor/golang.org/x/net/idna/idna.go rename to vendor/golang.org/x/net/idna/idna10.0.0.go index 346fe4423ed..a98a31f4038 100644 --- a/vendor/golang.org/x/net/idna/idna.go +++ b/vendor/golang.org/x/net/idna/idna10.0.0.go @@ -4,14 +4,16 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build go1.10 + // Package idna implements IDNA2008 using the compatibility processing // defined by UTS (Unicode Technical Standard) #46, which defines a standard to // deal with the transition from IDNA2003. // // IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC // 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. -// UTS #46 is defined in http://www.unicode.org/reports/tr46. -// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the +// UTS #46 is defined in https://www.unicode.org/reports/tr46. +// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the // differences between these two standards. package idna // import "golang.org/x/net/idna" @@ -297,7 +299,7 @@ func (e runeError) Error() string { } // process implements the algorithm described in section 4 of UTS #46, -// see http://www.unicode.org/reports/tr46. +// see https://www.unicode.org/reports/tr46. func (p *Profile) process(s string, toASCII bool) (string, error) { var err error var isBidi bool diff --git a/vendor/golang.org/x/net/idna/idna9.0.0.go b/vendor/golang.org/x/net/idna/idna9.0.0.go new file mode 100644 index 00000000000..8842146b5d9 --- /dev/null +++ b/vendor/golang.org/x/net/idna/idna9.0.0.go @@ -0,0 +1,682 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.10 + +// Package idna implements IDNA2008 using the compatibility processing +// defined by UTS (Unicode Technical Standard) #46, which defines a standard to +// deal with the transition from IDNA2003. +// +// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC +// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. +// UTS #46 is defined in https://www.unicode.org/reports/tr46. +// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the +// differences between these two standards. +package idna // import "golang.org/x/net/idna" + +import ( + "fmt" + "strings" + "unicode/utf8" + + "golang.org/x/text/secure/bidirule" + "golang.org/x/text/unicode/norm" +) + +// NOTE: Unlike common practice in Go APIs, the functions will return a +// sanitized domain name in case of errors. Browsers sometimes use a partially +// evaluated string as lookup. +// TODO: the current error handling is, in my opinion, the least opinionated. +// Other strategies are also viable, though: +// Option 1) Return an empty string in case of error, but allow the user to +// specify explicitly which errors to ignore. +// Option 2) Return the partially evaluated string if it is itself a valid +// string, otherwise return the empty string in case of error. +// Option 3) Option 1 and 2. +// Option 4) Always return an empty string for now and implement Option 1 as +// needed, and document that the return string may not be empty in case of +// error in the future. +// I think Option 1 is best, but it is quite opinionated. + +// ToASCII is a wrapper for Punycode.ToASCII. +func ToASCII(s string) (string, error) { + return Punycode.process(s, true) +} + +// ToUnicode is a wrapper for Punycode.ToUnicode. +func ToUnicode(s string) (string, error) { + return Punycode.process(s, false) +} + +// An Option configures a Profile at creation time. +type Option func(*options) + +// Transitional sets a Profile to use the Transitional mapping as defined in UTS +// #46. This will cause, for example, "ß" to be mapped to "ss". Using the +// transitional mapping provides a compromise between IDNA2003 and IDNA2008 +// compatibility. It is used by most browsers when resolving domain names. This +// option is only meaningful if combined with MapForLookup. +func Transitional(transitional bool) Option { + return func(o *options) { o.transitional = true } +} + +// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts +// are longer than allowed by the RFC. +func VerifyDNSLength(verify bool) Option { + return func(o *options) { o.verifyDNSLength = verify } +} + +// RemoveLeadingDots removes leading label separators. Leading runes that map to +// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. +// +// This is the behavior suggested by the UTS #46 and is adopted by some +// browsers. +func RemoveLeadingDots(remove bool) Option { + return func(o *options) { o.removeLeadingDots = remove } +} + +// ValidateLabels sets whether to check the mandatory label validation criteria +// as defined in Section 5.4 of RFC 5891. This includes testing for correct use +// of hyphens ('-'), normalization, validity of runes, and the context rules. +func ValidateLabels(enable bool) Option { + return func(o *options) { + // Don't override existing mappings, but set one that at least checks + // normalization if it is not set. + if o.mapping == nil && enable { + o.mapping = normalize + } + o.trie = trie + o.validateLabels = enable + o.fromPuny = validateFromPunycode + } +} + +// StrictDomainName limits the set of permissable ASCII characters to those +// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the +// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// +// This option is useful, for instance, for browsers that allow characters +// outside this range, for example a '_' (U+005F LOW LINE). See +// http://www.rfc-editor.org/std/std3.txt for more details This option +// corresponds to the UseSTD3ASCIIRules option in UTS #46. +func StrictDomainName(use bool) Option { + return func(o *options) { + o.trie = trie + o.useSTD3Rules = use + o.fromPuny = validateFromPunycode + } +} + +// NOTE: the following options pull in tables. The tables should not be linked +// in as long as the options are not used. + +// BidiRule enables the Bidi rule as defined in RFC 5893. Any application +// that relies on proper validation of labels should include this rule. +func BidiRule() Option { + return func(o *options) { o.bidirule = bidirule.ValidString } +} + +// ValidateForRegistration sets validation options to verify that a given IDN is +// properly formatted for registration as defined by Section 4 of RFC 5891. +func ValidateForRegistration() Option { + return func(o *options) { + o.mapping = validateRegistration + StrictDomainName(true)(o) + ValidateLabels(true)(o) + VerifyDNSLength(true)(o) + BidiRule()(o) + } +} + +// MapForLookup sets validation and mapping options such that a given IDN is +// transformed for domain name lookup according to the requirements set out in +// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, +// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option +// to add this check. +// +// The mappings include normalization and mapping case, width and other +// compatibility mappings. +func MapForLookup() Option { + return func(o *options) { + o.mapping = validateAndMap + StrictDomainName(true)(o) + ValidateLabels(true)(o) + RemoveLeadingDots(true)(o) + } +} + +type options struct { + transitional bool + useSTD3Rules bool + validateLabels bool + verifyDNSLength bool + removeLeadingDots bool + + trie *idnaTrie + + // fromPuny calls validation rules when converting A-labels to U-labels. + fromPuny func(p *Profile, s string) error + + // mapping implements a validation and mapping step as defined in RFC 5895 + // or UTS 46, tailored to, for example, domain registration or lookup. + mapping func(p *Profile, s string) (string, error) + + // bidirule, if specified, checks whether s conforms to the Bidi Rule + // defined in RFC 5893. + bidirule func(s string) bool +} + +// A Profile defines the configuration of a IDNA mapper. +type Profile struct { + options +} + +func apply(o *options, opts []Option) { + for _, f := range opts { + f(o) + } +} + +// New creates a new Profile. +// +// With no options, the returned Profile is the most permissive and equals the +// Punycode Profile. Options can be passed to further restrict the Profile. The +// MapForLookup and ValidateForRegistration options set a collection of options, +// for lookup and registration purposes respectively, which can be tailored by +// adding more fine-grained options, where later options override earlier +// options. +func New(o ...Option) *Profile { + p := &Profile{} + apply(&p.options, o) + return p +} + +// ToASCII converts a domain or domain label to its ASCII form. For example, +// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and +// ToASCII("golang") is "golang". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToASCII(s string) (string, error) { + return p.process(s, true) +} + +// ToUnicode converts a domain or domain label to its Unicode form. For example, +// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and +// ToUnicode("golang") is "golang". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToUnicode(s string) (string, error) { + pp := *p + pp.transitional = false + return pp.process(s, false) +} + +// String reports a string with a description of the profile for debugging +// purposes. The string format may change with different versions. +func (p *Profile) String() string { + s := "" + if p.transitional { + s = "Transitional" + } else { + s = "NonTransitional" + } + if p.useSTD3Rules { + s += ":UseSTD3Rules" + } + if p.validateLabels { + s += ":ValidateLabels" + } + if p.verifyDNSLength { + s += ":VerifyDNSLength" + } + return s +} + +var ( + // Punycode is a Profile that does raw punycode processing with a minimum + // of validation. + Punycode *Profile = punycode + + // Lookup is the recommended profile for looking up domain names, according + // to Section 5 of RFC 5891. The exact configuration of this profile may + // change over time. + Lookup *Profile = lookup + + // Display is the recommended profile for displaying domain names. + // The configuration of this profile may change over time. + Display *Profile = display + + // Registration is the recommended profile for checking whether a given + // IDN is valid for registration, according to Section 4 of RFC 5891. + Registration *Profile = registration + + punycode = &Profile{} + lookup = &Profile{options{ + transitional: true, + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + display = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + registration = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + verifyDNSLength: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateRegistration, + bidirule: bidirule.ValidString, + }} + + // TODO: profiles + // Register: recommended for approving domain names: don't do any mappings + // but rather reject on invalid input. Bundle or block deviation characters. +) + +type labelError struct{ label, code_ string } + +func (e labelError) code() string { return e.code_ } +func (e labelError) Error() string { + return fmt.Sprintf("idna: invalid label %q", e.label) +} + +type runeError rune + +func (e runeError) code() string { return "P1" } +func (e runeError) Error() string { + return fmt.Sprintf("idna: disallowed rune %U", e) +} + +// process implements the algorithm described in section 4 of UTS #46, +// see https://www.unicode.org/reports/tr46. +func (p *Profile) process(s string, toASCII bool) (string, error) { + var err error + if p.mapping != nil { + s, err = p.mapping(p, s) + } + // Remove leading empty labels. + if p.removeLeadingDots { + for ; len(s) > 0 && s[0] == '.'; s = s[1:] { + } + } + // It seems like we should only create this error on ToASCII, but the + // UTS 46 conformance tests suggests we should always check this. + if err == nil && p.verifyDNSLength && s == "" { + err = &labelError{s, "A4"} + } + labels := labelIter{orig: s} + for ; !labels.done(); labels.next() { + label := labels.label() + if label == "" { + // Empty labels are not okay. The label iterator skips the last + // label if it is empty. + if err == nil && p.verifyDNSLength { + err = &labelError{s, "A4"} + } + continue + } + if strings.HasPrefix(label, acePrefix) { + u, err2 := decode(label[len(acePrefix):]) + if err2 != nil { + if err == nil { + err = err2 + } + // Spec says keep the old label. + continue + } + labels.set(u) + if err == nil && p.validateLabels { + err = p.fromPuny(p, u) + } + if err == nil { + // This should be called on NonTransitional, according to the + // spec, but that currently does not have any effect. Use the + // original profile to preserve options. + err = p.validateLabel(u) + } + } else if err == nil { + err = p.validateLabel(label) + } + } + if toASCII { + for labels.reset(); !labels.done(); labels.next() { + label := labels.label() + if !ascii(label) { + a, err2 := encode(acePrefix, label) + if err == nil { + err = err2 + } + label = a + labels.set(a) + } + n := len(label) + if p.verifyDNSLength && err == nil && (n == 0 || n > 63) { + err = &labelError{label, "A4"} + } + } + } + s = labels.result() + if toASCII && p.verifyDNSLength && err == nil { + // Compute the length of the domain name minus the root label and its dot. + n := len(s) + if n > 0 && s[n-1] == '.' { + n-- + } + if len(s) < 1 || n > 253 { + err = &labelError{s, "A4"} + } + } + return s, err +} + +func normalize(p *Profile, s string) (string, error) { + return norm.NFC.String(s), nil +} + +func validateRegistration(p *Profile, s string) (string, error) { + if !norm.NFC.IsNormalString(s) { + return s, &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + // TODO: handle the NV8 defined in the Unicode idna data set to allow + // for strict conformance to IDNA2008. + case valid, deviation: + case disallowed, mapped, unknown, ignored: + r, _ := utf8.DecodeRuneInString(s[i:]) + return s, runeError(r) + } + i += sz + } + return s, nil +} + +func validateAndMap(p *Profile, s string) (string, error) { + var ( + err error + b []byte + k int + ) + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + start := i + i += sz + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + case valid: + continue + case disallowed: + if err == nil { + r, _ := utf8.DecodeRuneInString(s[start:]) + err = runeError(r) + } + continue + case mapped, deviation: + b = append(b, s[k:start]...) + b = info(v).appendMapping(b, s[start:i]) + case ignored: + b = append(b, s[k:start]...) + // drop the rune + case unknown: + b = append(b, s[k:start]...) + b = append(b, "\ufffd"...) + } + k = i + } + if k == 0 { + // No changes so far. + s = norm.NFC.String(s) + } else { + b = append(b, s[k:]...) + if norm.NFC.QuickSpan(b) != len(b) { + b = norm.NFC.Bytes(b) + } + // TODO: the punycode converters require strings as input. + s = string(b) + } + return s, err +} + +// A labelIter allows iterating over domain name labels. +type labelIter struct { + orig string + slice []string + curStart int + curEnd int + i int +} + +func (l *labelIter) reset() { + l.curStart = 0 + l.curEnd = 0 + l.i = 0 +} + +func (l *labelIter) done() bool { + return l.curStart >= len(l.orig) +} + +func (l *labelIter) result() string { + if l.slice != nil { + return strings.Join(l.slice, ".") + } + return l.orig +} + +func (l *labelIter) label() string { + if l.slice != nil { + return l.slice[l.i] + } + p := strings.IndexByte(l.orig[l.curStart:], '.') + l.curEnd = l.curStart + p + if p == -1 { + l.curEnd = len(l.orig) + } + return l.orig[l.curStart:l.curEnd] +} + +// next sets the value to the next label. It skips the last label if it is empty. +func (l *labelIter) next() { + l.i++ + if l.slice != nil { + if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" { + l.curStart = len(l.orig) + } + } else { + l.curStart = l.curEnd + 1 + if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' { + l.curStart = len(l.orig) + } + } +} + +func (l *labelIter) set(s string) { + if l.slice == nil { + l.slice = strings.Split(l.orig, ".") + } + l.slice[l.i] = s +} + +// acePrefix is the ASCII Compatible Encoding prefix. +const acePrefix = "xn--" + +func (p *Profile) simplify(cat category) category { + switch cat { + case disallowedSTD3Mapped: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = mapped + } + case disallowedSTD3Valid: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = valid + } + case deviation: + if !p.transitional { + cat = valid + } + case validNV8, validXV8: + // TODO: handle V2008 + cat = valid + } + return cat +} + +func validateFromPunycode(p *Profile, s string) error { + if !norm.NFC.IsNormalString(s) { + return &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + if c := p.simplify(info(v).category()); c != valid && c != deviation { + return &labelError{s, "V6"} + } + i += sz + } + return nil +} + +const ( + zwnj = "\u200c" + zwj = "\u200d" +) + +type joinState int8 + +const ( + stateStart joinState = iota + stateVirama + stateBefore + stateBeforeVirama + stateAfter + stateFAIL +) + +var joinStates = [][numJoinTypes]joinState{ + stateStart: { + joiningL: stateBefore, + joiningD: stateBefore, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateVirama, + }, + stateVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + }, + stateBefore: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + joinZWNJ: stateAfter, + joinZWJ: stateFAIL, + joinVirama: stateBeforeVirama, + }, + stateBeforeVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + }, + stateAfter: { + joiningL: stateFAIL, + joiningD: stateBefore, + joiningT: stateAfter, + joiningR: stateStart, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateAfter, // no-op as we can't accept joiners here + }, + stateFAIL: { + 0: stateFAIL, + joiningL: stateFAIL, + joiningD: stateFAIL, + joiningT: stateFAIL, + joiningR: stateFAIL, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateFAIL, + }, +} + +// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are +// already implicitly satisfied by the overall implementation. +func (p *Profile) validateLabel(s string) error { + if s == "" { + if p.verifyDNSLength { + return &labelError{s, "A4"} + } + return nil + } + if p.bidirule != nil && !p.bidirule(s) { + return &labelError{s, "B"} + } + if !p.validateLabels { + return nil + } + trie := p.trie // p.validateLabels is only set if trie is set. + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + // TODO: merge the use of this in the trie. + v, sz := trie.lookupString(s) + x := info(v) + if x.isModifier() { + return &labelError{s, "V5"} + } + // Quickly return in the absence of zero-width (non) joiners. + if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 { + return nil + } + st := stateStart + for i := 0; ; { + jt := x.joinType() + if s[i:i+sz] == zwj { + jt = joinZWJ + } else if s[i:i+sz] == zwnj { + jt = joinZWNJ + } + st = joinStates[st][jt] + if x.isViramaModifier() { + st = joinStates[st][joinVirama] + } + if i += sz; i == len(s) { + break + } + v, sz = trie.lookupString(s[i:]) + x = info(v) + } + if st == stateFAIL || st == stateAfter { + return &labelError{s, "C"} + } + return nil +} + +func ascii(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/net/idna/tables.go b/vendor/golang.org/x/net/idna/tables10.0.0.go similarity index 99% rename from vendor/golang.org/x/net/idna/tables.go rename to vendor/golang.org/x/net/idna/tables10.0.0.go index f910b269144..54fddb4b16c 100644 --- a/vendor/golang.org/x/net/idna/tables.go +++ b/vendor/golang.org/x/net/idna/tables10.0.0.go @@ -1,11 +1,13 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +// +build go1.10,!go1.13 + package idna // UnicodeVersion is the Unicode version from which the tables in this package are derived. const UnicodeVersion = "10.0.0" -var mappings string = "" + // Size: 8176 bytes +var mappings string = "" + // Size: 8175 bytes "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + @@ -4554,4 +4556,4 @@ var idnaSparseValues = [1915]valueRange{ {value: 0x0040, lo: 0xb0, hi: 0xbf}, } -// Total table size 42115 bytes (41KiB); checksum: F4A1FA4E +// Total table size 42114 bytes (41KiB); checksum: 355A58A4 diff --git a/vendor/golang.org/x/net/idna/tables11.0.0.go b/vendor/golang.org/x/net/idna/tables11.0.0.go new file mode 100644 index 00000000000..c515d7ad2a2 --- /dev/null +++ b/vendor/golang.org/x/net/idna/tables11.0.0.go @@ -0,0 +1,4653 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build go1.13 + +package idna + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "11.0.0" + +var mappings string = "" + // Size: 8175 bytes + "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + + "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + + "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + + "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + + "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + + "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + + "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + + "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + + "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + + "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + + "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + + "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + + "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + + "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + + "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + + "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + + "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + + "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + + "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + + "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + + "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + + "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + + "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + + "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + + ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + + "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + + "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + + "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + + "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + + "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + + "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + + "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + + "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + + "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + + "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + + "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + + "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + + "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + + "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + + "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + + "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + + "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + + "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + + "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + + "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + + "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + + "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + + "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + + "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + + "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + + "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + + "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + + "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + + "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + + "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + + "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + + "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + + "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + + "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + + "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + + "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + + "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + + "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + + "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + + "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + + "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + + "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + + "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + + "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + + "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + + "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + + " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + + "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + + "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + + "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + + "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + + "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + + "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + + "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + + "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + + "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + + "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + + "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + + "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + + "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + + "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + + "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + + "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + + "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + + "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + + "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + + "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + + "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + + "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + + "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + + "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + + "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + + "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + + "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + + "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + + "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + + "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + + "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + + "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + + "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + + "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + + "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + + "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + + "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + + "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + + "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + + "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + + "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + + "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + + "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + + "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + + "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + + "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + + "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + + "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + + "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + + "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + + "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + + "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + + "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + + "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + + "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + + "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + + "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + + "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + + "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + + "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + + "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + + "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + + "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" + +var xorData string = "" + // Size: 4855 bytes + "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + + "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + + "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + + "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + + "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + + "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + + "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + + "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + + "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + + "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + + "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + + "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + + "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + + "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + + "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + + "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + + "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + + "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + + "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + + "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + + "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + + "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + + "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + + "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + + "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + + "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + + "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + + "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + + "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + + "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + + "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + + "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + + "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + + "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + + "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + + "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + + "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + + "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + + "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + + "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + + "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + + "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + + ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + + "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + + "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + + "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + + "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + + "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + + "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + + "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + + "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + + "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + + "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + + "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + + "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + + "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + + "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + + "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + + "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + + "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + + "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + + "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + + "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + + "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + + "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + + "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + + "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + + "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + + "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + + "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + + "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + + "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + + "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + + "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + + "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + + "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + + "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + + "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + + "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + + "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + + "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + + "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + + "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + + "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + + "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + + "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + + "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + + "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + + "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + + "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + + "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + + "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + + "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + + ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + + "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + + "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + + "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + + "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + + "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + + "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + + "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + + "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + + "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + + "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + + "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + + "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + + "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + + "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + + "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + + "\x08\x1a\x0a\x03\x07\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + + "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + + "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + + "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + + "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + + "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + + "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + + "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + + "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + + "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + + "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + + "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + + "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + + "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + + "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + + "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + + "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + + "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + + "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + + "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + + "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + + "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + + "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + + "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + + "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + + "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + + "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + + "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + + "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + + "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + + "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + + "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + + "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + + "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + + "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + + "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + + "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + + "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + + "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + + "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + + "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + + "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + + "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + + "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + + "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + + "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + + "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + + "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + + "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + + "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + + "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + + "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + + "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + + "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + + "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + + "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + + "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + + "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + + "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + + "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + + "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + + "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + + "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + + "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + + "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + + "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + + "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + + "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + + "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + + "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + + "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + + "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + + "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + + "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + + "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + + "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + + "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + + "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + + "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + + "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + + "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + + "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + + "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + + "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + + "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + + "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + + "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + + "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + + "\x04\x03\x0c?\x05\x03\x0c" + + "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + + "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + + "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + + "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + + "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + + "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + + "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + + "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + + "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + + "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + + "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + + "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + + "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + + "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + + "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + + "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + + "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + + "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + + "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + + "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + + "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + + "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + + "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + + "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + + "\x05\x22\x05\x03\x050\x1d" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// idnaTrie. Total size: 29404 bytes (28.71 KiB). Checksum: 848c45acb5f7991c. +type idnaTrie struct{} + +func newIdnaTrie(i int) *idnaTrie { + return &idnaTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 125: + return uint16(idnaValues[n<<6+uint32(b)]) + default: + n -= 125 + return uint16(idnaSparse.lookup(n, b)) + } +} + +// idnaValues: 127 blocks, 8128 entries, 16256 bytes +// The third block is the zero block. +var idnaValues = [8128]uint16{ + // Block 0x0, offset 0x0 + 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, + 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, + 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, + 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, + 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, + 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, + 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, + 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, + 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, + 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, + 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, + // Block 0x1, offset 0x40 + 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, + 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, + 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, + 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, + 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, + 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, + 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, + 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, + 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, + 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, + 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, + 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, + 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, + 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, + 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, + 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, + 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, + 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, + 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, + 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, + 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, + // Block 0x4, offset 0x100 + 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, + 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, + 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, + 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, + 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, + 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, + 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, + 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, + 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, + 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, + 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, + // Block 0x5, offset 0x140 + 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, + 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, + 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, + 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, + 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, + 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, + 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, + 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, + 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, + 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, + 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, + // Block 0x6, offset 0x180 + 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, + 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, + 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, + 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, + 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, + 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, + 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, + 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, + 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, + 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, + 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, + 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, + 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, + 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, + 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, + 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, + 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, + 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, + 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, + 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, + 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, + // Block 0x8, offset 0x200 + 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, + 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, + 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, + 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, + 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, + 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, + 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, + 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, + 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, + 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, + 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, + // Block 0x9, offset 0x240 + 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, + 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, + 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, + 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, + 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, + 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, + 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, + 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, + 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, + 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, + 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, + // Block 0xa, offset 0x280 + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, + 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, + 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, + 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, + 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, + 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, + 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, + 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, + 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, + 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, + 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, + 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, + 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, + 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, + 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, + 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, + 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, + 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, + 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, + 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, + // Block 0xc, offset 0x300 + 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, + 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, + 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, + 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, + 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, + 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, + 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, + 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, + 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, + 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, + 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, + // Block 0xd, offset 0x340 + 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, + 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, + 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, + 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, + 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, + 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, + 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, + 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, + 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, + 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, + 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, + // Block 0xe, offset 0x380 + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, + 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, + 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, + 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, + 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, + 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, + 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, + 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, + 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, + 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, + 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, + 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, + 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, + 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, + 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, + 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, + 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, + 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, + 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, + 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, + // Block 0x10, offset 0x400 + 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, + 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, + 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, + 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, + 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, + 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, + 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, + 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, + 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, + 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, + 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, + // Block 0x11, offset 0x440 + 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, + 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, + 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, + 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, + 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, + 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, + 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, + 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, + 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, + 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, + // Block 0x12, offset 0x480 + 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, + 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, + 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, + 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, + 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, + 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, + 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, + 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, + 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, + 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, + 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, + 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, + 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, + 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, + 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, + 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, + 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, + 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, + 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, + 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, + 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, + // Block 0x14, offset 0x500 + 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, + 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, + 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, + 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, + 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, + 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, + 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, + 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, + 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, + 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, + 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, + // Block 0x15, offset 0x540 + 0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08, + 0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08, + 0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08, + 0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808, + 0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040, + 0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08, + 0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08, + 0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040, + 0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, + 0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040, + 0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040, + // Block 0x16, offset 0x580 + 0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308, + 0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008, + 0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308, + 0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308, + 0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1, + 0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308, + 0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, + 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, + 0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008, + 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008, + 0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008, + 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008, + 0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, + 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, + 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, + 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, + 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, + 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, + 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040, + 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, + 0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008, + // Block 0x18, offset 0x600 + 0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040, + 0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008, + 0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040, + 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008, + 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1, + 0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308, + 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, + 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, + 0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018, + 0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018, + 0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040, + // Block 0x19, offset 0x640 + 0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008, + 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040, + 0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040, + 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, + 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, + 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, + 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, + 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, + 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008, + 0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008, + // Block 0x1a, offset 0x680 + 0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040, + 0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308, + 0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308, + 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, + 0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040, + 0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040, + 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, + 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, + 0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308, + 0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008, + 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, + 0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008, + 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, + 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, + 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, + 0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040, + 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, + 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, + 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, + 0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008, + // Block 0x1c, offset 0x700 + 0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308, + 0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008, + 0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040, + 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040, + 0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308, + 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, + 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, + 0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040, + 0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308, + 0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308, + // Block 0x1d, offset 0x740 + 0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008, + 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008, + 0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, + 0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008, + 0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008, + 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008, + 0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040, + 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008, + 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, + 0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308, + // Block 0x1e, offset 0x780 + 0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040, + 0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008, + 0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, + 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008, + 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9, + 0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308, + 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, + 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, + 0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018, + 0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040, + 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008, + 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040, + 0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, + 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040, + 0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040, + 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008, + 0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008, + 0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008, + 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, + 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008, + // Block 0x20, offset 0x800 + 0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040, + 0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308, + 0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, + 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040, + 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, + 0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308, + 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, + 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, + 0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, + 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018, + 0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018, + // Block 0x21, offset 0x840 + 0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008, + 0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008, + 0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040, + 0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008, + 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008, + 0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008, + 0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040, + 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, + 0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008, + 0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040, + 0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308, + // Block 0x22, offset 0x880 + 0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040, + 0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, + 0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040, + 0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040, + 0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, + 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040, + 0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040, + 0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040, + 0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008, + 0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040, + 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008, + 0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018, + 0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308, + 0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, + 0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018, + 0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008, + 0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008, + // Block 0x24, offset 0x900 + 0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040, + 0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040, + 0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040, + 0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008, + 0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008, + 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, + 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040, + 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, + 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308, + 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308, + 0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040, + // Block 0x25, offset 0x940 + 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008, + 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, + 0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79, + 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008, + 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, + 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9, + 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040, + 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59, + 0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308, + 0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008, + // Block 0x26, offset 0x980 + 0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018, + 0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, + 0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308, + 0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308, + 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11, + 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308, + 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308, + 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308, + 0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308, + 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308, + 0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, + 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, + 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, + 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, + 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008, + 0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008, + 0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008, + 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008, + 0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41, + 0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008, + 0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269, + // Block 0x28, offset 0xa00 + 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1, + 0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011, + 0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041, + 0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9, + 0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099, + 0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269, + 0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1, + 0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008, + 0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008, + 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008, + 0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008, + // Block 0x29, offset 0xa40 + 0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008, + 0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008, + 0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008, + 0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, + 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169, + 0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9, + 0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251, + 0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9, + 0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359, + 0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1, + 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429, + // Block 0x2a, offset 0xa80 + 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, + 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, + 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, + 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008, + 0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008, + 0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, + 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, + 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, + 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, + 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, + 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, + // Block 0x2b, offset 0xac0 + 0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008, + 0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008, + 0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008, + 0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, + 0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008, + 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008, + 0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008, + 0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008, + 0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008, + 0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008, + 0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008, + // Block 0x2c, offset 0xb00 + 0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008, + 0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045, + 0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008, + 0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008, + 0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045, + 0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008, + 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, + 0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045, + 0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489, + 0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1, + 0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040, + // Block 0x2d, offset 0xb40 + 0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1, + 0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591, + 0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1, + 0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1, + 0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771, + 0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891, + 0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831, + 0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951, + 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040, + 0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459, + 0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686, + // Block 0x2e, offset 0xb80 + 0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040, + 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489, + 0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008, + 0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008, + 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2, + 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61, + 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045, + 0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa, + 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040, + 0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9, + 0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a, + 0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0, + 0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d, + 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e, + 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, + 0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, + 0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040, + 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a, + 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018, + 0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, + 0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018, + // Block 0x30, offset 0xc00 + 0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018, + 0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018, + 0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018, + 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9, + 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018, + 0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340, + 0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040, + 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340, + 0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61, + 0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd, + 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71, + // Block 0x31, offset 0xc40 + 0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61, + 0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5, + 0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09, + 0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359, + 0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040, + 0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018, + 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018, + 0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018, + 0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018, + 0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018, + 0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018, + // Block 0x32, offset 0xc80 + 0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e, + 0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249, + 0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41, + 0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018, + 0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269, + 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018, + 0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018, + 0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09, + 0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9, + 0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd, + 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9, + 0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018, + 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151, + 0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279, + 0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399, + 0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439, + 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369, + 0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61, + 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451, + 0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5, + 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61, + // Block 0x34, offset 0xd00 + 0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018, + 0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040, + 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, + 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, + 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040, + 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51, + 0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601, + 0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691, + 0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26, + 0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6, + 0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a, + // Block 0x35, offset 0xd40 + 0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a, + 0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040, + 0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040, + 0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040, + 0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46, + 0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06, + 0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6, + 0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86, + 0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46, + 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199, + 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259, + // Block 0x36, offset 0xd80 + 0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99, + 0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089, + 0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9, + 0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249, + 0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71, + 0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9, + 0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1, + 0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018, + 0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018, + 0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, + 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008, + 0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008, + 0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008, + 0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008, + 0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008, + 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd, + 0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d, + 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9, + 0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d, + 0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008, + 0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9, + // Block 0x38, offset 0xe00 + 0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008, + 0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008, + 0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008, + 0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008, + 0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008, + 0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008, + 0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, + 0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308, + 0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040, + 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018, + 0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, + // Block 0x39, offset 0xe40 + 0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d, + 0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d, + 0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d, + 0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040, + 0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040, + 0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040, + 0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040, + 0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040, + 0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040, + 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040, + 0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040, + // Block 0x3a, offset 0xe80 + 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008, + 0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018, + 0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018, + 0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018, + 0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018, + 0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018, + 0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018, + 0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018, + 0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018, + 0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018, + 0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018, + // Block 0x3b, offset 0xec0 + 0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd, + 0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd, + 0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d, + 0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d, + 0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d, + 0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd, + 0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d, + 0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd, + 0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d, + 0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd, + 0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d, + // Block 0x3c, offset 0xf00 + 0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd, + 0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d, + 0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018, + 0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd, + 0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d, + 0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008, + 0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008, + 0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008, + 0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008, + 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040, + 0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040, + // Block 0x3d, offset 0xf40 + 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd, + 0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018, + 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761, + 0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1, + 0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881, + 0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd, + 0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d, + 0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d, + 0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd, + 0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d, + 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018, + // Block 0x3e, offset 0xf80 + 0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d, + 0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d, + 0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd, + 0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd, + 0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d, + 0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d, + 0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd, + 0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d, + 0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999, + 0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29, + 0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69, + 0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69, + 0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15, + 0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75, + 0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded, + 0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d, + 0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5, + 0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d, + 0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d, + 0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd, + 0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040, + // Block 0x40, offset 0x1000 + 0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9, + 0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1, + 0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9, + 0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549, + 0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1, + 0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11, + 0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91, + 0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9, + 0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011, + 0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209, + 0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361, + // Block 0x41, offset 0x1040 + 0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541, + 0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781, + 0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979, + 0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89, + 0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1, + 0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99, + 0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9, + 0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9, + 0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069, + 0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9, + 0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9, + // Block 0x42, offset 0x1080 + 0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271, + 0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9, + 0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed, + 0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371, + 0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9, + 0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d, + 0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211, + 0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1, + 0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599, + 0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9, + 0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611, + // Block 0x43, offset 0x10c0 + 0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671, + 0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709, + 0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781, + 0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1, + 0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811, + 0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901, + 0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1, + 0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11, + 0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31, + 0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51, + 0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d, + // Block 0x44, offset 0x1100 + 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, + 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, + 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, + 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, + 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008, + 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008, + 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, + 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308, + 0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308, + 0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308, + 0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008, + // Block 0x45, offset 0x1140 + 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, + 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, + 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, + 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, + 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11, + 0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008, + 0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008, + 0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008, + 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, + 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008, + 0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008, + // Block 0x46, offset 0x1180 + 0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018, + 0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018, + 0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018, + 0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008, + 0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008, + 0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, + 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, + 0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008, + 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008, + 0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008, + // Block 0x47, offset 0x11c0 + 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, + 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008, + 0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, + 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, + 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, + 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, + 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, + 0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008, + 0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008, + 0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d, + 0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008, + // Block 0x48, offset 0x1200 + 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008, + 0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d, + 0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008, + 0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008, + 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008, + 0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008, + 0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008, + 0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0008, + 0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008, + 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0008, 0x123a: 0x0040, 0x123b: 0x0040, + 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, + // Block 0x49, offset 0x1240 + 0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575, + 0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635, + 0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008, + 0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715, + 0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5, + 0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008, + 0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, + 0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935, + 0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5, + 0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5, + 0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35, + // Block 0x4a, offset 0x1280 + 0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35, + 0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5, + 0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19, + 0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91, + 0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040, + 0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040, + 0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040, + 0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040, + 0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040, + 0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040, + 0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001, + 0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040, + 0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040, + 0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9, + 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1, + 0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149, + 0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2, + 0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1, + 0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1, + 0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479, + 0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040, + // Block 0x4c, offset 0x1300 + 0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040, + 0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659, + 0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721, + 0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751, + 0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769, + 0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799, + 0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1, + 0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1, + 0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9, + 0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829, + 0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841, + // Block 0x4d, offset 0x1340 + 0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871, + 0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9, + 0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9, + 0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919, + 0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931, + 0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961, + 0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991, + 0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1, + 0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818, + 0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818, + 0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818, + // Block 0x4e, offset 0x1380 + 0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040, + 0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040, + 0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040, + 0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09, + 0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479, + 0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81, + 0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1, + 0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19, + 0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91, + 0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1, + 0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1, + 0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1, + 0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1, + 0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991, + 0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81, + 0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a, + 0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99, + 0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89, + 0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79, + 0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19, + 0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469, + // Block 0x50, offset 0x1400 + 0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649, + 0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9, + 0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49, + 0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21, + 0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9, + 0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01, + 0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91, + 0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9, + 0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171, + 0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289, + 0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329, + // Block 0x51, offset 0x1440 + 0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1, + 0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621, + 0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739, + 0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1, + 0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9, + 0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29, + 0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079, + 0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1, + 0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171, + 0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261, + 0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301, + // Block 0x52, offset 0x1480 + 0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1, + 0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1, + 0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171, + 0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261, + 0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351, + 0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441, + 0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509, + 0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1, + 0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081, + 0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239, + 0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040, + 0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, + 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609, + 0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721, + 0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839, + 0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919, + 0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9, + 0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9, + 0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9, + 0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1, + 0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79, + // Block 0x54, offset 0x1500 + 0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989, + 0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040, + 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040, + 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040, + 0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, + 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040, + 0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040, + 0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, + 0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9, + 0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12, + 0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040, + // Block 0x55, offset 0x1540 + 0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0, + 0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0, + 0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55, + 0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75, + 0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040, + 0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308, + 0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308, + 0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308, + 0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2, + 0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35, + 0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55, + // Block 0x56, offset 0x1580 + 0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018, + 0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56, + 0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95, + 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa, + 0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95, + 0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99, + 0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda, + 0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, + 0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040, + 0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081, + 0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1, + // Block 0x57, offset 0x15c0 + 0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141, + 0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171, + 0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1, + 0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1, + 0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201, + 0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219, + 0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249, + 0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291, + 0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1, + 0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9, + 0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1, + // Block 0x58, offset 0x1600 + 0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321, + 0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339, + 0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369, + 0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381, + 0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1, + 0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9, + 0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9, + 0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1, + 0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441, + 0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9, + 0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, + // Block 0x59, offset 0x1640 + 0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea, + 0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2, + 0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9, + 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81, + 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2, + 0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159, + 0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41, + 0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9, + 0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9, + 0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a, + 0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a, + // Block 0x5a, offset 0x1680 + 0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09, + 0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51, + 0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039, + 0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279, + 0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a, + 0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115, + 0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5, + 0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295, + 0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355, + 0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415, + 0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515, + 0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595, + 0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5, + 0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655, + 0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115, + 0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735, + 0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5, + 0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5, + 0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5, + 0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5, + 0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040, + // Block 0x5c, offset 0x1700 + 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5, + 0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715, + 0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040, + 0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935, + 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040, + 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6, + 0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35, + 0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040, + 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, + 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340, + 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, + // Block 0x5d, offset 0x1740 + 0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08, + 0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808, + 0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08, + 0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908, + 0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08, + 0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808, + 0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040, + 0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18, + 0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818, + 0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, + // Block 0x5e, offset 0x1780 + 0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08, + 0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08, + 0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08, + 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040, + 0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040, + 0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040, + 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18, + 0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818, + 0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040, + 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, + 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008, + 0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008, + 0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040, + 0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008, + 0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008, + 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008, + 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040, + 0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008, + 0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008, + 0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308, + 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008, + // Block 0x60, offset 0x1800 + 0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040, + 0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008, + 0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040, + 0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008, + 0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008, + 0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008, + 0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308, + 0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040, + 0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040, + 0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040, + 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040, + // Block 0x61, offset 0x1840 + 0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199, + 0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359, + 0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269, + 0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369, + 0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9, + 0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259, + 0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99, + 0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089, + 0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9, + 0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249, + 0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359, + // Block 0x62, offset 0x1880 + 0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269, + 0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369, + 0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9, + 0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259, + 0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99, + 0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089, + 0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9, + 0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249, + 0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71, + 0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9, + 0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9, + 0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259, + 0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99, + 0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089, + 0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040, + 0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040, + 0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71, + 0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9, + 0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1, + 0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199, + 0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259, + // Block 0x64, offset 0x1900 + 0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99, + 0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089, + 0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9, + 0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249, + 0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71, + 0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9, + 0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1, + 0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199, + 0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359, + 0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269, + 0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089, + // Block 0x65, offset 0x1940 + 0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9, + 0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040, + 0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71, + 0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9, + 0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040, + 0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199, + 0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359, + 0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269, + 0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369, + 0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9, + 0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040, + // Block 0x66, offset 0x1980 + 0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040, + 0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9, + 0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040, + 0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199, + 0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359, + 0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269, + 0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369, + 0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9, + 0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259, + 0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99, + 0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1, + 0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199, + 0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359, + 0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269, + 0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369, + 0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9, + 0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259, + 0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99, + 0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089, + 0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9, + 0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359, + 0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269, + 0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369, + 0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9, + 0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259, + 0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99, + 0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089, + 0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9, + 0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249, + 0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71, + 0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369, + 0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9, + 0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259, + 0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99, + 0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089, + 0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9, + 0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249, + 0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71, + 0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9, + 0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1, + 0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259, + 0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99, + 0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089, + 0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9, + 0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249, + 0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71, + 0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9, + 0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1, + 0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199, + 0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359, + 0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089, + 0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9, + 0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249, + 0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71, + 0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9, + 0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1, + 0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099, + 0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429, + 0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71, + 0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9, + 0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9, + 0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11, + 0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109, + 0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1, + 0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429, + 0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099, + 0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429, + 0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71, + 0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9, + 0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01, + 0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11, + 0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109, + 0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1, + 0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429, + 0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099, + 0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429, + 0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71, + 0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9, + 0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01, + 0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1, + 0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109, + 0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1, + 0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429, + 0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099, + 0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429, + 0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71, + 0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9, + 0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01, + 0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1, + 0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41, + 0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1, + 0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429, + 0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099, + 0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429, + 0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71, + 0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9, + 0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01, + 0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1, + 0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41, + 0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1, + 0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1, + // Block 0x70, offset 0x1c00 + 0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429, + 0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41, + 0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079, + 0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1, + 0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61, + 0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9, + 0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81, + 0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079, + 0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1, + 0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61, + 0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1, + // Block 0x71, offset 0x1c40 + 0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115, + 0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135, + 0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115, + 0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175, + 0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115, + 0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08, + 0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08, + 0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08, + 0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08, + 0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08, + 0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08, + // Block 0x72, offset 0x1c80 + 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411, + 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1, + 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, + 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, + 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949, + 0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, + 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429, + 0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351, + 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040, + 0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, + 0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9, + 0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231, + 0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949, + 0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040, + 0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, + 0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, + 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, + 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, + 0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040, + // Block 0x74, offset 0x1d00 + 0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411, + 0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1, + 0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9, + 0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231, + 0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040, + 0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249, + 0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429, + 0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339, + 0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1, + 0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351, + 0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040, + // Block 0x75, offset 0x1d40 + 0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02, + 0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018, + 0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2, + 0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72, + 0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32, + 0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2, + 0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2, + 0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0018, + 0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199, + 0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359, + 0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99, + // Block 0x76, offset 0x1d80 + 0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089, + 0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1, + 0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018, + 0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018, + 0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018, + 0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018, + 0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018, + 0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040, + 0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018, + 0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018, + 0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040, + 0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040, + 0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289, + 0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349, + 0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409, + 0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9, + 0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589, + 0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649, + 0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709, + 0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9, + 0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040, + // Block 0x78, offset 0x1e00 + 0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79, + 0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39, + 0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9, + 0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39, + 0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9, + 0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79, + 0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39, + 0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9, + 0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059, + 0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9, + 0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179, + // Block 0x79, offset 0x1e40 + 0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239, + 0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9, + 0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399, + 0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459, + 0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309, + 0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559, + 0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9, + 0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679, + 0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9, + 0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d, + 0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9, + 0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959, + 0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d, + 0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d, + 0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9, + 0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99, + 0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9, + 0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9, + 0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99, + 0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39, + 0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639, + 0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9, + 0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d, + 0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9, + 0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d, + 0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd, + 0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979, + 0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19, + 0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d, + 0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d, + 0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99, + 0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39, + 0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9, + 0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39, + 0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd, + 0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19, + 0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9, + 0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59, + 0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd, + 0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d, + 0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d, + 0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d, + 0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879, + 0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919, + 0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd, + 0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9, + 0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99, + 0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39, + 0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9, + 0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d, + 0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79, + // Block 0x7e, offset 0x1f80 + 0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19, + 0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9, + 0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59, + 0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9, + 0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d, + 0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040, + 0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040, + 0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040, + 0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040, + 0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040, + 0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040, +} + +// idnaIndex: 36 blocks, 2304 entries, 4608 bytes +// Block 0 is the zero block. +var idnaIndex = [2304]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84, + 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, + 0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21, + // Block 0x4, offset 0x100 + 0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16, + 0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96, + // Block 0x5, offset 0x140 + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, + 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, + 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, + 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, + 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, + 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, + 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3, + 0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c, + // Block 0x6, offset 0x180 + 0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b, + 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b, + 0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, + 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, + 0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0, + 0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5, + 0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1, + 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41, + 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, + 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, + 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, + 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, + 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, + 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, + // Block 0x8, offset 0x200 + 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, + 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, + 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, + 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, + 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, + 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, + 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, + 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, + // Block 0x9, offset 0x240 + 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, + 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, + 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, + 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, + 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, + 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, + 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, + 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, + // Block 0xa, offset 0x280 + 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, + 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, + 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, + 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, + 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, + 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, + 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, + 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, + 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, + 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, + 0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8, + 0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0, + 0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8, + 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, + 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, + // Block 0xc, offset 0x300 + 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, + 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, + 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, + 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa, + // Block 0xd, offset 0x340 + 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, + 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, + 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, + 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, + 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, + 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, + 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, + 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, + // Block 0xe, offset 0x380 + 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, + 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, + 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, + 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, + 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe, + 0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c, + 0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52, + 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108, + 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e, + 0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba, + 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba, + 0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c, + 0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba, + 0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0x126, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, + 0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0x128, 0x3fd: 0x129, 0x3fe: 0xba, 0x3ff: 0xba, + // Block 0x10, offset 0x400 + 0x400: 0x12a, 0x401: 0x12b, 0x402: 0x12c, 0x403: 0x12d, 0x404: 0x12e, 0x405: 0x12f, 0x406: 0x130, 0x407: 0x131, + 0x408: 0x132, 0x409: 0xba, 0x40a: 0x133, 0x40b: 0x134, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba, + 0x410: 0x135, 0x411: 0x136, 0x412: 0x137, 0x413: 0x138, 0x414: 0xba, 0x415: 0xba, 0x416: 0x139, 0x417: 0x13a, + 0x418: 0x13b, 0x419: 0x13c, 0x41a: 0x13d, 0x41b: 0x13e, 0x41c: 0x13f, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, + 0x420: 0x140, 0x421: 0xba, 0x422: 0x141, 0x423: 0x142, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, + 0x428: 0x143, 0x429: 0x144, 0x42a: 0x145, 0x42b: 0x146, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, + 0x430: 0x147, 0x431: 0x148, 0x432: 0x149, 0x433: 0xba, 0x434: 0x14a, 0x435: 0x14b, 0x436: 0x14c, 0x437: 0xba, + 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0x14d, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, + // Block 0x11, offset 0x440 + 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, + 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x14e, 0x44f: 0xba, + 0x450: 0x9b, 0x451: 0x14f, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x150, 0x456: 0xba, 0x457: 0xba, + 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, + 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, + 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, + 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, + 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, + // Block 0x12, offset 0x480 + 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, + 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, + 0x490: 0x151, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, + 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, + 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, + 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, + 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, + 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, + // Block 0x13, offset 0x4c0 + 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, + 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, + 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, + 0x4d8: 0x9f, 0x4d9: 0x152, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, + 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, + 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, + 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, + 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, + // Block 0x14, offset 0x500 + 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, + 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, + 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, + 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, + 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, + 0x528: 0x146, 0x529: 0x153, 0x52a: 0xba, 0x52b: 0x154, 0x52c: 0x155, 0x52d: 0x156, 0x52e: 0x157, 0x52f: 0xba, + 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, + 0x538: 0xba, 0x539: 0x158, 0x53a: 0x159, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x15a, 0x53e: 0x15b, 0x53f: 0x15c, + // Block 0x15, offset 0x540 + 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, + 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, + 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, + 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x15d, + 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, + 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x15e, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, + 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, + 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, + // Block 0x16, offset 0x580 + 0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x15f, 0x585: 0x160, 0x586: 0x9f, 0x587: 0x9f, + 0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x161, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, + 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, + 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, + 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, + 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, + 0x5b0: 0x9f, 0x5b1: 0x162, 0x5b2: 0x163, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, + 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x164, 0x5c4: 0x165, 0x5c5: 0x166, 0x5c6: 0x167, 0x5c7: 0x168, + 0x5c8: 0x9b, 0x5c9: 0x169, 0x5ca: 0xba, 0x5cb: 0x16a, 0x5cc: 0x9b, 0x5cd: 0x16b, 0x5ce: 0xba, 0x5cf: 0xba, + 0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66, + 0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e, + 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, + 0x5e8: 0x16c, 0x5e9: 0x16d, 0x5ea: 0x16e, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, + 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, + 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, + // Block 0x18, offset 0x600 + 0x600: 0x16f, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, + 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, + 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, + 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, + 0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x170, 0x624: 0x6f, 0x625: 0x171, 0x626: 0xba, 0x627: 0xba, + 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, + 0x630: 0xba, 0x631: 0x172, 0x632: 0x173, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, + 0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x174, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, + // Block 0x19, offset 0x640 + 0x640: 0x175, 0x641: 0x9b, 0x642: 0x176, 0x643: 0x177, 0x644: 0x73, 0x645: 0x74, 0x646: 0x178, 0x647: 0x179, + 0x648: 0x75, 0x649: 0x17a, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x17b, 0x65c: 0x9b, 0x65d: 0x17c, 0x65e: 0x9b, 0x65f: 0x17d, + 0x660: 0x17e, 0x661: 0x17f, 0x662: 0x180, 0x663: 0xba, 0x664: 0x181, 0x665: 0x182, 0x666: 0x183, 0x667: 0x184, + 0x668: 0xba, 0x669: 0x185, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, + 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, + 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, + // Block 0x1a, offset 0x680 + 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, + 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, + 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, + 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x186, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, + 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, + 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, + 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, + 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, + 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, + 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, + 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x187, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, + 0x6e0: 0x188, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, + 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, + 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, + 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, + // Block 0x1c, offset 0x700 + 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, + 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, + 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, + 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, + 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, + 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, + 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, + 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x189, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f, + // Block 0x1d, offset 0x740 + 0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f, + 0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f, + 0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f, + 0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f, + 0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f, + 0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x18a, + 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, + 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, + // Block 0x1e, offset 0x780 + 0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba, + 0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba, + 0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba, + 0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba, + 0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x18b, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x18c, 0x7a7: 0x7b, + 0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba, + 0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba, + 0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba, + // Block 0x1f, offset 0x7c0 + 0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07, + 0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17, + 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, + 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c, + 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, + 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, + // Block 0x20, offset 0x800 + 0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b, + 0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b, + 0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b, + 0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b, + 0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b, + 0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b, + 0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b, + 0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b, + // Block 0x21, offset 0x840 + 0x840: 0x18d, 0x841: 0x18e, 0x842: 0xba, 0x843: 0xba, 0x844: 0x18f, 0x845: 0x18f, 0x846: 0x18f, 0x847: 0x190, + 0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba, + 0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba, + 0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba, + 0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba, + 0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba, + 0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba, + 0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba, + // Block 0x22, offset 0x880 + 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, + 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, + 0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b, + 0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b, + 0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b, + 0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b, + 0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b, + 0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b, + 0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b, +} + +// idnaSparseOffset: 276 entries, 552 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x86, 0x8b, 0x94, 0xa4, 0xb2, 0xbe, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x224, 0x22e, 0x23a, 0x246, 0x252, 0x25a, 0x25f, 0x269, 0x27a, 0x27e, 0x289, 0x28d, 0x296, 0x29e, 0x2a4, 0x2a9, 0x2ac, 0x2b0, 0x2b6, 0x2ba, 0x2be, 0x2c2, 0x2c7, 0x2cd, 0x2d5, 0x2dc, 0x2e7, 0x2f1, 0x2f5, 0x2f8, 0x2fe, 0x302, 0x304, 0x307, 0x309, 0x30c, 0x316, 0x319, 0x328, 0x32c, 0x331, 0x334, 0x338, 0x33d, 0x342, 0x348, 0x34e, 0x35d, 0x363, 0x367, 0x376, 0x37b, 0x383, 0x38d, 0x398, 0x3a0, 0x3b1, 0x3ba, 0x3ca, 0x3d7, 0x3e1, 0x3e6, 0x3f3, 0x3f7, 0x3fc, 0x3fe, 0x402, 0x404, 0x408, 0x411, 0x417, 0x41b, 0x42b, 0x435, 0x43a, 0x43d, 0x443, 0x44a, 0x44f, 0x453, 0x459, 0x45e, 0x467, 0x46c, 0x472, 0x479, 0x480, 0x487, 0x48b, 0x490, 0x493, 0x498, 0x4a4, 0x4aa, 0x4af, 0x4b6, 0x4be, 0x4c3, 0x4c7, 0x4d7, 0x4de, 0x4e2, 0x4e6, 0x4ed, 0x4ef, 0x4f2, 0x4f5, 0x4f9, 0x502, 0x506, 0x50e, 0x516, 0x51c, 0x525, 0x531, 0x538, 0x541, 0x54b, 0x552, 0x560, 0x56d, 0x57a, 0x583, 0x587, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5eb, 0x5ee, 0x5f3, 0x5fe, 0x607, 0x613, 0x616, 0x620, 0x629, 0x635, 0x642, 0x64f, 0x65d, 0x664, 0x667, 0x66c, 0x66f, 0x672, 0x675, 0x67c, 0x683, 0x687, 0x692, 0x695, 0x698, 0x69b, 0x6a1, 0x6a6, 0x6aa, 0x6ad, 0x6b0, 0x6b3, 0x6b6, 0x6b9, 0x6be, 0x6c8, 0x6cb, 0x6cf, 0x6de, 0x6ea, 0x6ee, 0x6f3, 0x6f7, 0x6fc, 0x700, 0x705, 0x70e, 0x719, 0x71f, 0x727, 0x72a, 0x72d, 0x731, 0x735, 0x73b, 0x741, 0x746, 0x749, 0x759, 0x760, 0x763, 0x766, 0x76a, 0x770, 0x775, 0x77a, 0x782, 0x787, 0x78b, 0x78f, 0x792, 0x795, 0x799, 0x79d, 0x7a0, 0x7b0, 0x7c1, 0x7c6, 0x7c8, 0x7ca} + +// idnaSparseValues: 1997 entries, 7988 bytes +var idnaSparseValues = [1997]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x07}, + {value: 0xe105, lo: 0x80, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x97}, + {value: 0xe105, lo: 0x98, hi: 0x9e}, + {value: 0x001f, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbf}, + // Block 0x1, offset 0x8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0xe01d, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0335, lo: 0x83, hi: 0x83}, + {value: 0x034d, lo: 0x84, hi: 0x84}, + {value: 0x0365, lo: 0x85, hi: 0x85}, + {value: 0xe00d, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0xe00d, lo: 0x88, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x89}, + {value: 0xe00d, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe00d, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0x8d}, + {value: 0xe00d, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0xbf}, + // Block 0x2, offset 0x19 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0249, lo: 0xb0, hi: 0xb0}, + {value: 0x037d, lo: 0xb1, hi: 0xb1}, + {value: 0x0259, lo: 0xb2, hi: 0xb2}, + {value: 0x0269, lo: 0xb3, hi: 0xb3}, + {value: 0x034d, lo: 0xb4, hi: 0xb4}, + {value: 0x0395, lo: 0xb5, hi: 0xb5}, + {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, + {value: 0x0279, lo: 0xb7, hi: 0xb7}, + {value: 0x0289, lo: 0xb8, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbf}, + // Block 0x3, offset 0x25 + {value: 0x0000, lo: 0x01}, + {value: 0x3308, lo: 0x80, hi: 0xbf}, + // Block 0x4, offset 0x27 + {value: 0x0000, lo: 0x04}, + {value: 0x03f5, lo: 0x80, hi: 0x8f}, + {value: 0xe105, lo: 0x90, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x5, offset 0x2c + {value: 0x0000, lo: 0x06}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x0545, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x6, offset 0x33 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0401, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0018, lo: 0x89, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x7, offset 0x3e + {value: 0x0000, lo: 0x0b}, + {value: 0x0818, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x82}, + {value: 0x0818, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x85}, + {value: 0x0818, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xae}, + {value: 0x0808, lo: 0xaf, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x8, offset 0x4a + {value: 0x0000, lo: 0x03}, + {value: 0x0a08, lo: 0x80, hi: 0x87}, + {value: 0x0c08, lo: 0x88, hi: 0x99}, + {value: 0x0a08, lo: 0x9a, hi: 0xbf}, + // Block 0x9, offset 0x4e + {value: 0x0000, lo: 0x0e}, + {value: 0x3308, lo: 0x80, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0c08, lo: 0x8d, hi: 0x8d}, + {value: 0x0a08, lo: 0x8e, hi: 0x98}, + {value: 0x0c08, lo: 0x99, hi: 0x9b}, + {value: 0x0a08, lo: 0x9c, hi: 0xaa}, + {value: 0x0c08, lo: 0xab, hi: 0xac}, + {value: 0x0a08, lo: 0xad, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb1}, + {value: 0x0a08, lo: 0xb2, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xb5, hi: 0xb7}, + {value: 0x0c08, lo: 0xb8, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbf}, + // Block 0xa, offset 0x5d + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xb0}, + {value: 0x0808, lo: 0xb1, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xb, offset 0x62 + {value: 0x0000, lo: 0x09}, + {value: 0x0808, lo: 0x80, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbf}, + // Block 0xc, offset 0x6c + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x99}, + {value: 0x0808, lo: 0x9a, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa3}, + {value: 0x0808, lo: 0xa4, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa7}, + {value: 0x0808, lo: 0xa8, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0818, lo: 0xb0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd, offset 0x78 + {value: 0x0000, lo: 0x0d}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0a08, lo: 0xa0, hi: 0xa9}, + {value: 0x0c08, lo: 0xaa, hi: 0xac}, + {value: 0x0808, lo: 0xad, hi: 0xad}, + {value: 0x0c08, lo: 0xae, hi: 0xae}, + {value: 0x0a08, lo: 0xaf, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb2}, + {value: 0x0a08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0a08, lo: 0xb6, hi: 0xb8}, + {value: 0x0c08, lo: 0xb9, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0xe, offset 0x86 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0xa1}, + {value: 0x0840, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xbf}, + // Block 0xf, offset 0x8b + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x10, offset 0x94 + {value: 0x0000, lo: 0x0f}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x85}, + {value: 0x3008, lo: 0x86, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x3008, lo: 0x8a, hi: 0x8c}, + {value: 0x3b08, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x11, offset 0xa4 + {value: 0x0000, lo: 0x0d}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x12, offset 0xb2 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xba}, + {value: 0x3b08, lo: 0xbb, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x13, offset 0xbe + {value: 0x0000, lo: 0x0b}, + {value: 0x0040, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x14, offset 0xca + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x89}, + {value: 0x3b08, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x3008, lo: 0x98, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x15, offset 0xdb + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb2}, + {value: 0x08f1, lo: 0xb3, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb9}, + {value: 0x3b08, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x16, offset 0xe5 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x8e}, + {value: 0x0018, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0xbf}, + // Block 0x17, offset 0xec + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0961, lo: 0x9c, hi: 0x9c}, + {value: 0x0999, lo: 0x9d, hi: 0x9d}, + {value: 0x0008, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x18, offset 0xf9 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe03d, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x19, offset 0x10a + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0x1a, offset 0x111 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x1b, offset 0x11c + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x3008, lo: 0x96, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x3308, lo: 0x9e, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xa1}, + {value: 0x3008, lo: 0xa2, hi: 0xa4}, + {value: 0x0008, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xbf}, + // Block 0x1c, offset 0x12b + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x8c}, + {value: 0x3308, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x3008, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1d, offset 0x139 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x86}, + {value: 0x055d, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8c}, + {value: 0x055d, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0xe105, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0x1e, offset 0x143 + {value: 0x0000, lo: 0x01}, + {value: 0x0018, lo: 0x80, hi: 0xbf}, + // Block 0x1f, offset 0x145 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa0}, + {value: 0x2018, lo: 0xa1, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x20, offset 0x14a + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa7}, + {value: 0x2018, lo: 0xa8, hi: 0xbf}, + // Block 0x21, offset 0x14d + {value: 0x0000, lo: 0x02}, + {value: 0x2018, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0xbf}, + // Block 0x22, offset 0x150 + {value: 0x0000, lo: 0x01}, + {value: 0x0008, lo: 0x80, hi: 0xbf}, + // Block 0x23, offset 0x152 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x24, offset 0x15e + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x25, offset 0x169 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x26, offset 0x171 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x27, offset 0x177 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x28, offset 0x17d + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x29, offset 0x182 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x2a, offset 0x187 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x2b, offset 0x18a + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xbf}, + // Block 0x2c, offset 0x18e + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2d, offset 0x194 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x2e, offset 0x199 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x3b08, lo: 0x94, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x2f, offset 0x1a5 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x30, offset 0x1af + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xb3}, + {value: 0x3340, lo: 0xb4, hi: 0xb5}, + {value: 0x3008, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x31, offset 0x1b5 + {value: 0x0000, lo: 0x10}, + {value: 0x3008, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x91}, + {value: 0x3b08, lo: 0x92, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0x93}, + {value: 0x0018, lo: 0x94, hi: 0x96}, + {value: 0x0008, lo: 0x97, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x32, offset 0x1c6 + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x86}, + {value: 0x0218, lo: 0x87, hi: 0x87}, + {value: 0x0018, lo: 0x88, hi: 0x8a}, + {value: 0x33c0, lo: 0x8b, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xbf}, + // Block 0x33, offset 0x1d0 + {value: 0x0000, lo: 0x02}, + {value: 0x0208, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x34, offset 0x1d3 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0208, lo: 0x87, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xa9}, + {value: 0x0208, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x35, offset 0x1db + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0x36, offset 0x1de + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x37, offset 0x1eb + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x38, offset 0x1f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x39, offset 0x1f7 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0028, lo: 0x9a, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xbf}, + // Block 0x3a, offset 0x1fe + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x3308, lo: 0x97, hi: 0x98}, + {value: 0x3008, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x3b, offset 0x206 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x94}, + {value: 0x3008, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3b08, lo: 0xa0, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xac}, + {value: 0x3008, lo: 0xad, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x216 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xbd}, + {value: 0x3318, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x222 + {value: 0x0000, lo: 0x01}, + {value: 0x0040, lo: 0x80, hi: 0xbf}, + // Block 0x3e, offset 0x224 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3008, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x3f, offset 0x22e + {value: 0x0000, lo: 0x0b}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x3808, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x40, offset 0x23a + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3808, lo: 0xaa, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xbf}, + // Block 0x41, offset 0x246 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3008, lo: 0xaa, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3808, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x42, offset 0x252 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x3008, lo: 0xa4, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x43, offset 0x25a + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x44, offset 0x25f + {value: 0x0000, lo: 0x09}, + {value: 0x0e29, lo: 0x80, hi: 0x80}, + {value: 0x0e41, lo: 0x81, hi: 0x81}, + {value: 0x0e59, lo: 0x82, hi: 0x82}, + {value: 0x0e71, lo: 0x83, hi: 0x83}, + {value: 0x0e89, lo: 0x84, hi: 0x85}, + {value: 0x0ea1, lo: 0x86, hi: 0x86}, + {value: 0x0eb9, lo: 0x87, hi: 0x87}, + {value: 0x057d, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0x45, offset 0x269 + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x92}, + {value: 0x0018, lo: 0x93, hi: 0x93}, + {value: 0x3308, lo: 0x94, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa8}, + {value: 0x0008, lo: 0xa9, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x46, offset 0x27a + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0x47, offset 0x27e + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x87}, + {value: 0xe045, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0xe045, lo: 0x98, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0xe045, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbf}, + // Block 0x48, offset 0x289 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x3318, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbf}, + // Block 0x49, offset 0x28d + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x24c1, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x4a, offset 0x296 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x24f1, lo: 0xac, hi: 0xac}, + {value: 0x2529, lo: 0xad, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xae}, + {value: 0x2579, lo: 0xaf, hi: 0xaf}, + {value: 0x25b1, lo: 0xb0, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0x4b, offset 0x29e + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x9f}, + {value: 0x0080, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xad}, + {value: 0x0080, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x4c, offset 0x2a4 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa8}, + {value: 0x09c5, lo: 0xa9, hi: 0xa9}, + {value: 0x09e5, lo: 0xaa, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xbf}, + // Block 0x4d, offset 0x2a9 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0x4e, offset 0x2ac + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x28c1, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0xbf}, + // Block 0x4f, offset 0x2b0 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0e66, lo: 0xb4, hi: 0xb4}, + {value: 0x292a, lo: 0xb5, hi: 0xb5}, + {value: 0x0e86, lo: 0xb6, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x50, offset 0x2b6 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9b}, + {value: 0x2941, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0xbf}, + // Block 0x51, offset 0x2ba + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x52, offset 0x2be + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0xbf}, + // Block 0x53, offset 0x2c2 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x54, offset 0x2c7 + {value: 0x0000, lo: 0x05}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x03f5, lo: 0x90, hi: 0x9f}, + {value: 0x0ea5, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x55, offset 0x2cd + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x56, offset 0x2d5 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xae}, + {value: 0xe075, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0x57, offset 0x2dc + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x58, offset 0x2e7 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xbf}, + // Block 0x59, offset 0x2f1 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x5a, offset 0x2f5 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0xbf}, + // Block 0x5b, offset 0x2f8 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9e}, + {value: 0x0edd, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x5c, offset 0x2fe + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb2}, + {value: 0x0efd, lo: 0xb3, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x5d, offset 0x302 + {value: 0x0020, lo: 0x01}, + {value: 0x0f1d, lo: 0x80, hi: 0xbf}, + // Block 0x5e, offset 0x304 + {value: 0x0020, lo: 0x02}, + {value: 0x171d, lo: 0x80, hi: 0x8f}, + {value: 0x18fd, lo: 0x90, hi: 0xbf}, + // Block 0x5f, offset 0x307 + {value: 0x0020, lo: 0x01}, + {value: 0x1efd, lo: 0x80, hi: 0xbf}, + // Block 0x60, offset 0x309 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x61, offset 0x30c + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9a}, + {value: 0x29e2, lo: 0x9b, hi: 0x9b}, + {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9e}, + {value: 0x2a31, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x62, offset 0x316 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbe}, + {value: 0x2a69, lo: 0xbf, hi: 0xbf}, + // Block 0x63, offset 0x319 + {value: 0x0000, lo: 0x0e}, + {value: 0x0040, lo: 0x80, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb0}, + {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, + {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, + {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, + {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, + {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, + {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, + {value: 0x2abd, lo: 0xb7, hi: 0xb7}, + {value: 0x2add, lo: 0xb8, hi: 0xb9}, + {value: 0x2afd, lo: 0xba, hi: 0xbb}, + {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, + {value: 0x2afd, lo: 0xbe, hi: 0xbf}, + // Block 0x64, offset 0x328 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x65, offset 0x32c + {value: 0x0030, lo: 0x04}, + {value: 0x2aa2, lo: 0x80, hi: 0x9d}, + {value: 0x305a, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x30a2, lo: 0xa0, hi: 0xbf}, + // Block 0x66, offset 0x331 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x67, offset 0x334 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x68, offset 0x338 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x69, offset 0x33d + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0x6a, offset 0x342 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb1}, + {value: 0x0018, lo: 0xb2, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6b, offset 0x348 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb7}, + {value: 0x2009, lo: 0xb8, hi: 0xb8}, + {value: 0x6e89, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xbf}, + // Block 0x6c, offset 0x34e + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x3308, lo: 0x8b, hi: 0x8b}, + {value: 0x0008, lo: 0x8c, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x6d, offset 0x35d + {value: 0x0000, lo: 0x05}, + {value: 0x0208, lo: 0x80, hi: 0xb1}, + {value: 0x0108, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6e, offset 0x363 + {value: 0x0000, lo: 0x03}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xbf}, + // Block 0x6f, offset 0x367 + {value: 0x0000, lo: 0x0e}, + {value: 0x3008, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xba}, + {value: 0x0008, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x70, offset 0x376 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x71, offset 0x37b + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x91}, + {value: 0x3008, lo: 0x92, hi: 0x92}, + {value: 0x3808, lo: 0x93, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x72, offset 0x383 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb9}, + {value: 0x3008, lo: 0xba, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x73, offset 0x38d + {value: 0x0000, lo: 0x0a}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x74, offset 0x398 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x75, offset 0x3a0 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8c}, + {value: 0x3008, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0x76, offset 0x3b1 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x77, offset 0x3ba + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x9a}, + {value: 0x0008, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3b08, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x78, offset 0x3ca + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x90}, + {value: 0x0008, lo: 0x91, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x79, offset 0x3d7 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x4465, lo: 0x9c, hi: 0x9c}, + {value: 0x447d, lo: 0x9d, hi: 0x9d}, + {value: 0x2971, lo: 0x9e, hi: 0x9e}, + {value: 0xe06d, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xaf}, + {value: 0x4495, lo: 0xb0, hi: 0xbf}, + // Block 0x7a, offset 0x3e1 + {value: 0x0000, lo: 0x04}, + {value: 0x44b5, lo: 0x80, hi: 0x8f}, + {value: 0x44d5, lo: 0x90, hi: 0x9f}, + {value: 0x44f5, lo: 0xa0, hi: 0xaf}, + {value: 0x44d5, lo: 0xb0, hi: 0xbf}, + // Block 0x7b, offset 0x3e6 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3b08, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x7c, offset 0x3f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x7d, offset 0x3f7 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x7e, offset 0x3fc + {value: 0x0020, lo: 0x01}, + {value: 0x4515, lo: 0x80, hi: 0xbf}, + // Block 0x7f, offset 0x3fe + {value: 0x0020, lo: 0x03}, + {value: 0x4d15, lo: 0x80, hi: 0x94}, + {value: 0x4ad5, lo: 0x95, hi: 0x95}, + {value: 0x4fb5, lo: 0x96, hi: 0xbf}, + // Block 0x80, offset 0x402 + {value: 0x0020, lo: 0x01}, + {value: 0x54f5, lo: 0x80, hi: 0xbf}, + // Block 0x81, offset 0x404 + {value: 0x0020, lo: 0x03}, + {value: 0x5cf5, lo: 0x80, hi: 0x84}, + {value: 0x5655, lo: 0x85, hi: 0x85}, + {value: 0x5d95, lo: 0x86, hi: 0xbf}, + // Block 0x82, offset 0x408 + {value: 0x0020, lo: 0x08}, + {value: 0x6b55, lo: 0x80, hi: 0x8f}, + {value: 0x6d15, lo: 0x90, hi: 0x90}, + {value: 0x6d55, lo: 0x91, hi: 0xab}, + {value: 0x6ea1, lo: 0xac, hi: 0xac}, + {value: 0x70b5, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x70d5, lo: 0xb0, hi: 0xbf}, + // Block 0x83, offset 0x411 + {value: 0x0020, lo: 0x05}, + {value: 0x72d5, lo: 0x80, hi: 0xad}, + {value: 0x6535, lo: 0xae, hi: 0xae}, + {value: 0x7895, lo: 0xaf, hi: 0xb5}, + {value: 0x6f55, lo: 0xb6, hi: 0xb6}, + {value: 0x7975, lo: 0xb7, hi: 0xbf}, + // Block 0x84, offset 0x417 + {value: 0x0028, lo: 0x03}, + {value: 0x7c21, lo: 0x80, hi: 0x82}, + {value: 0x7be1, lo: 0x83, hi: 0x83}, + {value: 0x7c99, lo: 0x84, hi: 0xbf}, + // Block 0x85, offset 0x41b + {value: 0x0038, lo: 0x0f}, + {value: 0x9db1, lo: 0x80, hi: 0x83}, + {value: 0x9e59, lo: 0x84, hi: 0x85}, + {value: 0x9e91, lo: 0x86, hi: 0x87}, + {value: 0x9ec9, lo: 0x88, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0xa089, lo: 0x92, hi: 0x97}, + {value: 0xa1a1, lo: 0x98, hi: 0x9c}, + {value: 0xa281, lo: 0x9d, hi: 0xb3}, + {value: 0x9d41, lo: 0xb4, hi: 0xb4}, + {value: 0x9db1, lo: 0xb5, hi: 0xb5}, + {value: 0xa789, lo: 0xb6, hi: 0xbb}, + {value: 0xa869, lo: 0xbc, hi: 0xbc}, + {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, + {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, + // Block 0x86, offset 0x42b + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x87, offset 0x435 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0x88, offset 0x43a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x89, offset 0x43d + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x8a, offset 0x443 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x8b, offset 0x44a + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x8c, offset 0x44f + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x8d, offset 0x453 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x8e, offset 0x459 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xbf}, + // Block 0x8f, offset 0x45e + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x90, offset 0x467 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x91, offset 0x46c + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x92, offset 0x472 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x97}, + {value: 0x8ad5, lo: 0x98, hi: 0x9f}, + {value: 0x8aed, lo: 0xa0, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xbf}, + // Block 0x93, offset 0x479 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x8aed, lo: 0xb0, hi: 0xb7}, + {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, + // Block 0x94, offset 0x480 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x95, offset 0x487 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x96, offset 0x48b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xae}, + {value: 0x0018, lo: 0xaf, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x97, offset 0x490 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x98, offset 0x493 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xbf}, + // Block 0x99, offset 0x498 + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0808, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0808, lo: 0x8a, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb6}, + {value: 0x0808, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbb}, + {value: 0x0808, lo: 0xbc, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x0808, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x4a4 + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x96}, + {value: 0x0818, lo: 0x97, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb6}, + {value: 0x0818, lo: 0xb7, hi: 0xbf}, + // Block 0x9b, offset 0x4aa + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa6}, + {value: 0x0818, lo: 0xa7, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x9c, offset 0x4af + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x0818, lo: 0xbb, hi: 0xbf}, + // Block 0x9d, offset 0x4b6 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0818, lo: 0x96, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbe}, + {value: 0x0818, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x4be + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbb}, + {value: 0x0818, lo: 0xbc, hi: 0xbd}, + {value: 0x0808, lo: 0xbe, hi: 0xbf}, + // Block 0x9f, offset 0x4c3 + {value: 0x0000, lo: 0x03}, + {value: 0x0818, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x0818, lo: 0x92, hi: 0xbf}, + // Block 0xa0, offset 0x4c7 + {value: 0x0000, lo: 0x0f}, + {value: 0x0808, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x94}, + {value: 0x0808, lo: 0x95, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0x98}, + {value: 0x0808, lo: 0x99, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa1, offset 0x4d7 + {value: 0x0000, lo: 0x06}, + {value: 0x0818, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0818, lo: 0x90, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xbc}, + {value: 0x0818, lo: 0xbd, hi: 0xbf}, + // Block 0xa2, offset 0x4de + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xa3, offset 0x4e2 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb8}, + {value: 0x0018, lo: 0xb9, hi: 0xbf}, + // Block 0xa4, offset 0x4e6 + {value: 0x0000, lo: 0x06}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0818, lo: 0x98, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb7}, + {value: 0x0818, lo: 0xb8, hi: 0xbf}, + // Block 0xa5, offset 0x4ed + {value: 0x0000, lo: 0x01}, + {value: 0x0808, lo: 0x80, hi: 0xbf}, + // Block 0xa6, offset 0x4ef + {value: 0x0000, lo: 0x02}, + {value: 0x0808, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0xa7, offset 0x4f2 + {value: 0x0000, lo: 0x02}, + {value: 0x03dd, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xa8, offset 0x4f5 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xbf}, + // Block 0xa9, offset 0x4f9 + {value: 0x0000, lo: 0x08}, + {value: 0x0908, lo: 0x80, hi: 0x80}, + {value: 0x0a08, lo: 0x81, hi: 0xa1}, + {value: 0x0c08, lo: 0xa2, hi: 0xa2}, + {value: 0x0a08, lo: 0xa3, hi: 0xa3}, + {value: 0x3308, lo: 0xa4, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0808, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xaa, offset 0x502 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0818, lo: 0xa0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xab, offset 0x506 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0xa6}, + {value: 0x0808, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0a08, lo: 0xb0, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb3}, + {value: 0x0a08, lo: 0xb4, hi: 0xbf}, + // Block 0xac, offset 0x50e + {value: 0x0000, lo: 0x07}, + {value: 0x0a08, lo: 0x80, hi: 0x84}, + {value: 0x0808, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x90}, + {value: 0x0a18, lo: 0x91, hi: 0x93}, + {value: 0x0c18, lo: 0x94, hi: 0x94}, + {value: 0x0818, lo: 0x95, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xad, offset 0x516 + {value: 0x0000, lo: 0x05}, + {value: 0x3008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xae, offset 0x51c + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xaf, offset 0x525 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0xb0, offset 0x531 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb1, offset 0x538 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb2}, + {value: 0x3b08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xbf}, + // Block 0xb2, offset 0x541 + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xb3, offset 0x54b + {value: 0x0000, lo: 0x06}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xbe}, + {value: 0x3008, lo: 0xbf, hi: 0xbf}, + // Block 0xb4, offset 0x552 + {value: 0x0000, lo: 0x0d}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xb5, offset 0x560 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3808, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xb6, offset 0x56d + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0008, lo: 0x9f, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xb7, offset 0x57a + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x3308, lo: 0x9f, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa9}, + {value: 0x3b08, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb8, offset 0x583 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xb9, offset 0x587 + {value: 0x0000, lo: 0x0e}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9d}, + {value: 0x3308, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xba, offset 0x596 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xbb, offset 0x59e + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xbc, offset 0x5a9 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbd, offset 0x5b2 + {value: 0x0000, lo: 0x05}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9b}, + {value: 0x3308, lo: 0x9c, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xbe, offset 0x5b8 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbf, offset 0x5c0 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xc0, offset 0x5c9 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb5}, + {value: 0x3808, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0xc1, offset 0x5d3 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0xc2, offset 0x5d6 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xc3, offset 0x5e2 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0xc4, offset 0x5eb + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xbf}, + // Block 0xc5, offset 0x5ee + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0xc6, offset 0x5f3 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0xc7, offset 0x5fe + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x3b08, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0xbf}, + // Block 0xc8, offset 0x607 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x89}, + {value: 0x3308, lo: 0x8a, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x98}, + {value: 0x3b08, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xa2}, + {value: 0x0040, lo: 0xa3, hi: 0xbf}, + // Block 0xc9, offset 0x613 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xca, offset 0x616 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xcb, offset 0x620 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xbf}, + // Block 0xcc, offset 0x629 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xaa, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xcd, offset 0x635 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xce, offset 0x642 + {value: 0x0000, lo: 0x0c}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xbf}, + // Block 0xcf, offset 0x64f + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x3008, lo: 0x8a, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x3008, lo: 0x93, hi: 0x94}, + {value: 0x3308, lo: 0x95, hi: 0x95}, + {value: 0x3008, lo: 0x96, hi: 0x96}, + {value: 0x3b08, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xbf}, + // Block 0xd0, offset 0x65d + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xd1, offset 0x664 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xd2, offset 0x667 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xd3, offset 0x66c + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0xbf}, + // Block 0xd4, offset 0x66f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xbf}, + // Block 0xd5, offset 0x672 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0xbf}, + // Block 0xd6, offset 0x675 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xd7, offset 0x67c + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xd8, offset 0x683 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0xd9, offset 0x687 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x0008, lo: 0xa3, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0xda, offset 0x692 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0xbf}, + // Block 0xdb, offset 0x695 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0xdc, offset 0x698 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0xdd, offset 0x69b + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3008, lo: 0x91, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xde, offset 0x6a1 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8e}, + {value: 0x3308, lo: 0x8f, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xdf, offset 0x6a6 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xe0, offset 0x6aa + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe1, offset 0x6ad + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xe2, offset 0x6b0 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xe3, offset 0x6b3 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xe4, offset 0x6b6 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0xe5, offset 0x6b9 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0xe6, offset 0x6be + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x03c0, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xbf}, + // Block 0xe7, offset 0x6c8 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xe8, offset 0x6cb + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xbf}, + // Block 0xe9, offset 0x6cf + {value: 0x0000, lo: 0x0e}, + {value: 0x0018, lo: 0x80, hi: 0x9d}, + {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, + {value: 0xb601, lo: 0x9f, hi: 0x9f}, + {value: 0xb649, lo: 0xa0, hi: 0xa0}, + {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, + {value: 0xb719, lo: 0xa2, hi: 0xa2}, + {value: 0xb781, lo: 0xa3, hi: 0xa3}, + {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, + {value: 0x3018, lo: 0xa5, hi: 0xa6}, + {value: 0x3318, lo: 0xa7, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xac}, + {value: 0x3018, lo: 0xad, hi: 0xb2}, + {value: 0x0340, lo: 0xb3, hi: 0xba}, + {value: 0x3318, lo: 0xbb, hi: 0xbf}, + // Block 0xea, offset 0x6de + {value: 0x0000, lo: 0x0b}, + {value: 0x3318, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x84}, + {value: 0x3318, lo: 0x85, hi: 0x8b}, + {value: 0x0018, lo: 0x8c, hi: 0xa9}, + {value: 0x3318, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xba}, + {value: 0xb851, lo: 0xbb, hi: 0xbb}, + {value: 0xb899, lo: 0xbc, hi: 0xbc}, + {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, + {value: 0xb949, lo: 0xbe, hi: 0xbe}, + {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, + // Block 0xeb, offset 0x6ea + {value: 0x0000, lo: 0x03}, + {value: 0xba19, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xbf}, + // Block 0xec, offset 0x6ee + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x3318, lo: 0x82, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0xbf}, + // Block 0xed, offset 0x6f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0xee, offset 0x6f7 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xef, offset 0x6fc + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0xf0, offset 0x700 + {value: 0x0000, lo: 0x04}, + {value: 0x3308, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0xf1, offset 0x705 + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x3308, lo: 0xa1, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xf2, offset 0x70e + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa4}, + {value: 0x0040, lo: 0xa5, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0xf3, offset 0x719 + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x86}, + {value: 0x0818, lo: 0x87, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xf4, offset 0x71f + {value: 0x0000, lo: 0x07}, + {value: 0x0a08, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0818, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xf5, offset 0x727 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xb0}, + {value: 0x0818, lo: 0xb1, hi: 0xbf}, + // Block 0xf6, offset 0x72a + {value: 0x0000, lo: 0x02}, + {value: 0x0818, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xf7, offset 0x72d + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xf8, offset 0x731 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0xf9, offset 0x735 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0xfa, offset 0x73b + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xfb, offset 0x741 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0xc1c1, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xfc, offset 0x746 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xbf}, + // Block 0xfd, offset 0x749 + {value: 0x0000, lo: 0x0f}, + {value: 0xc7e9, lo: 0x80, hi: 0x80}, + {value: 0xc839, lo: 0x81, hi: 0x81}, + {value: 0xc889, lo: 0x82, hi: 0x82}, + {value: 0xc8d9, lo: 0x83, hi: 0x83}, + {value: 0xc929, lo: 0x84, hi: 0x84}, + {value: 0xc979, lo: 0x85, hi: 0x85}, + {value: 0xc9c9, lo: 0x86, hi: 0x86}, + {value: 0xca19, lo: 0x87, hi: 0x87}, + {value: 0xca69, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0xcab9, lo: 0x90, hi: 0x90}, + {value: 0xcad9, lo: 0x91, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xbf}, + // Block 0xfe, offset 0x759 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xff, offset 0x760 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x100, offset 0x763 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0xbf}, + // Block 0x101, offset 0x766 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x102, offset 0x76a + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x103, offset 0x770 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0x104, offset 0x775 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x105, offset 0x77a + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb2}, + {value: 0x0018, lo: 0xb3, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x106, offset 0x782 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa2}, + {value: 0x0040, lo: 0xa3, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x107, offset 0x787 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x108, offset 0x78b + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0x109, offset 0x78f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0x10a, offset 0x792 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x10b, offset 0x795 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x10c, offset 0x799 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x10d, offset 0x79d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x10e, offset 0x7a0 + {value: 0x0020, lo: 0x0f}, + {value: 0xdeb9, lo: 0x80, hi: 0x89}, + {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, + {value: 0xdff9, lo: 0x8b, hi: 0x9c}, + {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, + {value: 0xe239, lo: 0x9e, hi: 0xa2}, + {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, + {value: 0xe2d9, lo: 0xa4, hi: 0xab}, + {value: 0x7ed5, lo: 0xac, hi: 0xac}, + {value: 0xe3d9, lo: 0xad, hi: 0xaf}, + {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, + {value: 0xe439, lo: 0xb1, hi: 0xb6}, + {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, + {value: 0xe4f9, lo: 0xba, hi: 0xba}, + {value: 0x8edd, lo: 0xbb, hi: 0xbb}, + {value: 0xe519, lo: 0xbc, hi: 0xbf}, + // Block 0x10f, offset 0x7b0 + {value: 0x0020, lo: 0x10}, + {value: 0x937d, lo: 0x80, hi: 0x80}, + {value: 0xf099, lo: 0x81, hi: 0x86}, + {value: 0x939d, lo: 0x87, hi: 0x8a}, + {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, + {value: 0xf159, lo: 0x8c, hi: 0x96}, + {value: 0x941d, lo: 0x97, hi: 0x97}, + {value: 0xf2b9, lo: 0x98, hi: 0xa3}, + {value: 0x943d, lo: 0xa4, hi: 0xa6}, + {value: 0xf439, lo: 0xa7, hi: 0xaa}, + {value: 0x949d, lo: 0xab, hi: 0xab}, + {value: 0xf4b9, lo: 0xac, hi: 0xac}, + {value: 0x94bd, lo: 0xad, hi: 0xad}, + {value: 0xf4d9, lo: 0xae, hi: 0xaf}, + {value: 0x94dd, lo: 0xb0, hi: 0xb1}, + {value: 0xf519, lo: 0xb2, hi: 0xbe}, + {value: 0x2040, lo: 0xbf, hi: 0xbf}, + // Block 0x110, offset 0x7c1 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0340, lo: 0x81, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x9f}, + {value: 0x0340, lo: 0xa0, hi: 0xbf}, + // Block 0x111, offset 0x7c6 + {value: 0x0000, lo: 0x01}, + {value: 0x0340, lo: 0x80, hi: 0xbf}, + // Block 0x112, offset 0x7c8 + {value: 0x0000, lo: 0x01}, + {value: 0x33c0, lo: 0x80, hi: 0xbf}, + // Block 0x113, offset 0x7ca + {value: 0x0000, lo: 0x02}, + {value: 0x33c0, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, +} + +// Total table size 42466 bytes (41KiB); checksum: 355A58A4 diff --git a/vendor/golang.org/x/net/idna/tables9.0.0.go b/vendor/golang.org/x/net/idna/tables9.0.0.go new file mode 100644 index 00000000000..8b65fa16783 --- /dev/null +++ b/vendor/golang.org/x/net/idna/tables9.0.0.go @@ -0,0 +1,4486 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build !go1.10 + +package idna + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +var mappings string = "" + // Size: 8175 bytes + "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + + "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + + "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + + "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + + "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + + "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + + "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + + "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + + "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + + "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + + "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + + "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + + "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + + "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + + "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + + "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + + "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + + "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + + "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + + "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + + "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + + "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + + "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + + "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + + ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + + "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + + "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + + "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + + "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + + "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + + "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + + "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + + "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + + "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + + "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + + "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + + "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + + "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + + "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + + "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + + "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + + "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + + "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + + "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + + "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + + "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + + "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + + "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + + "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + + "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + + "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + + "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + + "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + + "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + + "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + + "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + + "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + + "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + + "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + + "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + + "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + + "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + + "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + + "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + + "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + + "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + + "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + + "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + + "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + + "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + + "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + + " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + + "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + + "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + + "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + + "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + + "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + + "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + + "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + + "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + + "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + + "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + + "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + + "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + + "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + + "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + + "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + + "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + + "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + + "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + + "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + + "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + + "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + + "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + + "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + + "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + + "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + + "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + + "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + + "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + + "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + + "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + + "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + + "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + + "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + + "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + + "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + + "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + + "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + + "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + + "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + + "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + + "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + + "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + + "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + + "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + + "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + + "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + + "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + + "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + + "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + + "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + + "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + + "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + + "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + + "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + + "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + + "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + + "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + + "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + + "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + + "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + + "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + + "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + + "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" + +var xorData string = "" + // Size: 4855 bytes + "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + + "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + + "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + + "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + + "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + + "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + + "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + + "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + + "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + + "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + + "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + + "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + + "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + + "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + + "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + + "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + + "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + + "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + + "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + + "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + + "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + + "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + + "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + + "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + + "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + + "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + + "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + + "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + + "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + + "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + + "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + + "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + + "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + + "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + + "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + + "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + + "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + + "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + + "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + + "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + + "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + + "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + + ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + + "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + + "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + + "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + + "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + + "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + + "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + + "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + + "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + + "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + + "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + + "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + + "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + + "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + + "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + + "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + + "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + + "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + + "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + + "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + + "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + + "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + + "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + + "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + + "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + + "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + + "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + + "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + + "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + + "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + + "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + + "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + + "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + + "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + + "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + + "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + + "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + + "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + + "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + + "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + + "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + + "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + + "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + + "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + + "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + + "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + + "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + + "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + + "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + + "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + + "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + + ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + + "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + + "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + + "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + + "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + + "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + + "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + + "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + + "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + + "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + + "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + + "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + + "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + + "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + + "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + + "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + + "\x08\x1a\x0a\x03\x07\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + + "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + + "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + + "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + + "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + + "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + + "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + + "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + + "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + + "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + + "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + + "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + + "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + + "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + + "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + + "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + + "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + + "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + + "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + + "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + + "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + + "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + + "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + + "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + + "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + + "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + + "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + + "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + + "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + + "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + + "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + + "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + + "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + + "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + + "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + + "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + + "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + + "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + + "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + + "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + + "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + + "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + + "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + + "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + + "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + + "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + + "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + + "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + + "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + + "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + + "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + + "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + + "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + + "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + + "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + + "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + + "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + + "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + + "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + + "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + + "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + + "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + + "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + + "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + + "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + + "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + + "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + + "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + + "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + + "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + + "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + + "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + + "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + + "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + + "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + + "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + + "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + + "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + + "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + + "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + + "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + + "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + + "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + + "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + + "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + + "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + + "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + + "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + + "\x04\x03\x0c?\x05\x03\x0c" + + "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + + "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + + "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + + "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + + "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + + "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + + "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + + "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + + "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + + "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + + "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + + "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + + "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + + "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + + "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + + "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + + "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + + "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + + "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + + "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + + "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + + "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + + "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + + "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + + "\x05\x22\x05\x03\x050\x1d" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// idnaTrie. Total size: 28600 bytes (27.93 KiB). Checksum: 95575047b5d8fff. +type idnaTrie struct{} + +func newIdnaTrie(i int) *idnaTrie { + return &idnaTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 124: + return uint16(idnaValues[n<<6+uint32(b)]) + default: + n -= 124 + return uint16(idnaSparse.lookup(n, b)) + } +} + +// idnaValues: 126 blocks, 8064 entries, 16128 bytes +// The third block is the zero block. +var idnaValues = [8064]uint16{ + // Block 0x0, offset 0x0 + 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, + 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, + 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, + 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, + 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, + 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, + 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, + 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, + 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, + 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, + 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, + // Block 0x1, offset 0x40 + 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, + 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, + 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, + 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, + 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, + 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, + 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, + 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, + 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, + 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, + 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, + 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, + 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, + 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, + 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, + 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, + 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, + 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, + 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, + 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, + 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, + // Block 0x4, offset 0x100 + 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, + 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, + 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, + 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, + 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, + 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, + 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, + 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, + 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, + 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, + 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, + // Block 0x5, offset 0x140 + 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, + 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, + 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, + 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, + 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, + 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, + 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, + 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, + 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, + 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, + 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, + // Block 0x6, offset 0x180 + 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, + 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, + 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, + 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, + 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, + 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, + 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, + 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, + 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, + 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, + 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, + 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, + 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, + 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, + 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, + 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, + 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, + 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, + 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, + 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, + 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, + // Block 0x8, offset 0x200 + 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, + 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, + 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, + 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, + 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, + 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, + 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, + 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, + 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, + 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, + 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, + // Block 0x9, offset 0x240 + 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, + 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, + 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, + 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, + 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, + 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, + 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, + 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, + 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, + 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, + 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, + // Block 0xa, offset 0x280 + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, + 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, + 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, + 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, + 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, + 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, + 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, + 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, + 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, + 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, + 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, + 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, + 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, + 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, + 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, + 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, + 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, + 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, + 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, + 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, + // Block 0xc, offset 0x300 + 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, + 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, + 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, + 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, + 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, + 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, + 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, + 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, + 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, + 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, + 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, + // Block 0xd, offset 0x340 + 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, + 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, + 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, + 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, + 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, + 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, + 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, + 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, + 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, + 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, + 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, + // Block 0xe, offset 0x380 + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, + 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, + 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, + 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, + 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, + 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, + 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, + 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, + 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, + 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, + 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, + 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, + 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, + 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, + 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, + 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, + 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, + 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, + 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, + 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, + // Block 0x10, offset 0x400 + 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, + 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, + 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, + 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, + 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, + 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, + 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, + 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, + 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, + 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, + 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, + // Block 0x11, offset 0x440 + 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, + 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, + 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, + 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, + 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, + 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, + 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, + 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, + 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, + 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, + // Block 0x12, offset 0x480 + 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, + 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, + 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, + 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, + 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, + 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, + 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, + 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, + 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, + 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, + 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, + 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, + 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, + 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, + 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, + 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, + 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, + 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, + 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, + 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, + 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, + // Block 0x14, offset 0x500 + 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, + 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, + 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, + 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, + 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, + 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, + 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, + 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, + 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, + 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, + 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, + // Block 0x15, offset 0x540 + 0x540: 0x3008, 0x541: 0x3308, 0x542: 0x3308, 0x543: 0x3308, 0x544: 0x3308, 0x545: 0x3308, + 0x546: 0x3308, 0x547: 0x3308, 0x548: 0x3308, 0x549: 0x3008, 0x54a: 0x3008, 0x54b: 0x3008, + 0x54c: 0x3008, 0x54d: 0x3b08, 0x54e: 0x3008, 0x54f: 0x3008, 0x550: 0x0008, 0x551: 0x3308, + 0x552: 0x3308, 0x553: 0x3308, 0x554: 0x3308, 0x555: 0x3308, 0x556: 0x3308, 0x557: 0x3308, + 0x558: 0x04c9, 0x559: 0x0501, 0x55a: 0x0539, 0x55b: 0x0571, 0x55c: 0x05a9, 0x55d: 0x05e1, + 0x55e: 0x0619, 0x55f: 0x0651, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x3308, 0x563: 0x3308, + 0x564: 0x0018, 0x565: 0x0018, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0008, + 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, + 0x570: 0x0018, 0x571: 0x0008, 0x572: 0x0008, 0x573: 0x0008, 0x574: 0x0008, 0x575: 0x0008, + 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0008, 0x57b: 0x0008, + 0x57c: 0x0008, 0x57d: 0x0008, 0x57e: 0x0008, 0x57f: 0x0008, + // Block 0x16, offset 0x580 + 0x580: 0x0008, 0x581: 0x3308, 0x582: 0x3008, 0x583: 0x3008, 0x584: 0x0040, 0x585: 0x0008, + 0x586: 0x0008, 0x587: 0x0008, 0x588: 0x0008, 0x589: 0x0008, 0x58a: 0x0008, 0x58b: 0x0008, + 0x58c: 0x0008, 0x58d: 0x0040, 0x58e: 0x0040, 0x58f: 0x0008, 0x590: 0x0008, 0x591: 0x0040, + 0x592: 0x0040, 0x593: 0x0008, 0x594: 0x0008, 0x595: 0x0008, 0x596: 0x0008, 0x597: 0x0008, + 0x598: 0x0008, 0x599: 0x0008, 0x59a: 0x0008, 0x59b: 0x0008, 0x59c: 0x0008, 0x59d: 0x0008, + 0x59e: 0x0008, 0x59f: 0x0008, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x0008, 0x5a3: 0x0008, + 0x5a4: 0x0008, 0x5a5: 0x0008, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0040, + 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, + 0x5b0: 0x0008, 0x5b1: 0x0040, 0x5b2: 0x0008, 0x5b3: 0x0040, 0x5b4: 0x0040, 0x5b5: 0x0040, + 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0040, 0x5bb: 0x0040, + 0x5bc: 0x3308, 0x5bd: 0x0008, 0x5be: 0x3008, 0x5bf: 0x3008, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x0040, + 0x5c6: 0x0040, 0x5c7: 0x3008, 0x5c8: 0x3008, 0x5c9: 0x0040, 0x5ca: 0x0040, 0x5cb: 0x3008, + 0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x0008, 0x5cf: 0x0040, 0x5d0: 0x0040, 0x5d1: 0x0040, + 0x5d2: 0x0040, 0x5d3: 0x0040, 0x5d4: 0x0040, 0x5d5: 0x0040, 0x5d6: 0x0040, 0x5d7: 0x3008, + 0x5d8: 0x0040, 0x5d9: 0x0040, 0x5da: 0x0040, 0x5db: 0x0040, 0x5dc: 0x0689, 0x5dd: 0x06c1, + 0x5de: 0x0040, 0x5df: 0x06f9, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308, + 0x5e4: 0x0040, 0x5e5: 0x0040, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008, + 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, + 0x5f0: 0x0008, 0x5f1: 0x0008, 0x5f2: 0x0018, 0x5f3: 0x0018, 0x5f4: 0x0018, 0x5f5: 0x0018, + 0x5f6: 0x0018, 0x5f7: 0x0018, 0x5f8: 0x0018, 0x5f9: 0x0018, 0x5fa: 0x0018, 0x5fb: 0x0018, + 0x5fc: 0x0040, 0x5fd: 0x0040, 0x5fe: 0x0040, 0x5ff: 0x0040, + // Block 0x18, offset 0x600 + 0x600: 0x0040, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008, + 0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0040, + 0x60c: 0x0040, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040, + 0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008, + 0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008, + 0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008, + 0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040, + 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, + 0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0731, 0x634: 0x0040, 0x635: 0x0008, + 0x636: 0x0769, 0x637: 0x0040, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040, + 0x63c: 0x3308, 0x63d: 0x0040, 0x63e: 0x3008, 0x63f: 0x3008, + // Block 0x19, offset 0x640 + 0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x0040, 0x644: 0x0040, 0x645: 0x0040, + 0x646: 0x0040, 0x647: 0x3308, 0x648: 0x3308, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3308, + 0x64c: 0x3308, 0x64d: 0x3b08, 0x64e: 0x0040, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x3308, + 0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x0040, + 0x658: 0x0040, 0x659: 0x07a1, 0x65a: 0x07d9, 0x65b: 0x0811, 0x65c: 0x0008, 0x65d: 0x0040, + 0x65e: 0x0849, 0x65f: 0x0040, 0x660: 0x0040, 0x661: 0x0040, 0x662: 0x0040, 0x663: 0x0040, + 0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008, + 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, + 0x670: 0x3308, 0x671: 0x3308, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0008, 0x675: 0x3308, + 0x676: 0x0040, 0x677: 0x0040, 0x678: 0x0040, 0x679: 0x0040, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x0040, 0x67d: 0x0040, 0x67e: 0x0040, 0x67f: 0x0040, + // Block 0x1a, offset 0x680 + 0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008, + 0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0008, + 0x68c: 0x0008, 0x68d: 0x0008, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0008, + 0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008, + 0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008, + 0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008, + 0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040, + 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, + 0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0040, 0x6b5: 0x0008, + 0x6b6: 0x0008, 0x6b7: 0x0008, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6bc: 0x3308, 0x6bd: 0x0008, 0x6be: 0x3008, 0x6bf: 0x3008, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3308, 0x6c4: 0x3308, 0x6c5: 0x3308, + 0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x3008, 0x6ca: 0x0040, 0x6cb: 0x3008, + 0x6cc: 0x3008, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0008, 0x6d1: 0x0040, + 0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040, + 0x6d8: 0x0040, 0x6d9: 0x0040, 0x6da: 0x0040, 0x6db: 0x0040, 0x6dc: 0x0040, 0x6dd: 0x0040, + 0x6de: 0x0040, 0x6df: 0x0040, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x3308, 0x6e3: 0x3308, + 0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008, + 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, + 0x6f0: 0x0018, 0x6f1: 0x0018, 0x6f2: 0x0040, 0x6f3: 0x0040, 0x6f4: 0x0040, 0x6f5: 0x0040, + 0x6f6: 0x0040, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, + 0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040, + // Block 0x1c, offset 0x700 + 0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3008, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008, + 0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008, + 0x70c: 0x0008, 0x70d: 0x0040, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008, + 0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008, + 0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008, + 0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040, + 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, + 0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008, + 0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040, + 0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3308, + // Block 0x1d, offset 0x740 + 0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x0040, + 0x746: 0x0040, 0x747: 0x3008, 0x748: 0x3008, 0x749: 0x0040, 0x74a: 0x0040, 0x74b: 0x3008, + 0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0040, 0x751: 0x0040, + 0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x3308, 0x757: 0x3008, + 0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0881, 0x75d: 0x08b9, + 0x75e: 0x0040, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308, + 0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008, + 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0018, 0x771: 0x0008, 0x772: 0x0018, 0x773: 0x0018, 0x774: 0x0018, 0x775: 0x0018, + 0x776: 0x0018, 0x777: 0x0018, 0x778: 0x0040, 0x779: 0x0040, 0x77a: 0x0040, 0x77b: 0x0040, + 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x0040, 0x77f: 0x0040, + // Block 0x1e, offset 0x780 + 0x780: 0x0040, 0x781: 0x0040, 0x782: 0x3308, 0x783: 0x0008, 0x784: 0x0040, 0x785: 0x0008, + 0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0040, + 0x78c: 0x0040, 0x78d: 0x0040, 0x78e: 0x0008, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040, + 0x792: 0x0008, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0040, 0x797: 0x0040, + 0x798: 0x0040, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0008, 0x79d: 0x0040, + 0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0040, 0x7a1: 0x0040, 0x7a2: 0x0040, 0x7a3: 0x0008, + 0x7a4: 0x0008, 0x7a5: 0x0040, 0x7a6: 0x0040, 0x7a7: 0x0040, 0x7a8: 0x0008, 0x7a9: 0x0008, + 0x7aa: 0x0008, 0x7ab: 0x0040, 0x7ac: 0x0040, 0x7ad: 0x0040, 0x7ae: 0x0008, 0x7af: 0x0008, + 0x7b0: 0x0008, 0x7b1: 0x0008, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0008, 0x7b5: 0x0008, + 0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040, + 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x3008, 0x7bf: 0x3008, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x3308, 0x7c1: 0x3008, 0x7c2: 0x3008, 0x7c3: 0x3008, 0x7c4: 0x3008, 0x7c5: 0x0040, + 0x7c6: 0x3308, 0x7c7: 0x3308, 0x7c8: 0x3308, 0x7c9: 0x0040, 0x7ca: 0x3308, 0x7cb: 0x3308, + 0x7cc: 0x3308, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040, + 0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x0040, + 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0040, 0x7dd: 0x0040, + 0x7de: 0x0040, 0x7df: 0x0040, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308, + 0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008, + 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0040, 0x7f1: 0x0040, 0x7f2: 0x0040, 0x7f3: 0x0040, 0x7f4: 0x0040, 0x7f5: 0x0040, + 0x7f6: 0x0040, 0x7f7: 0x0040, 0x7f8: 0x0018, 0x7f9: 0x0018, 0x7fa: 0x0018, 0x7fb: 0x0018, + 0x7fc: 0x0018, 0x7fd: 0x0018, 0x7fe: 0x0018, 0x7ff: 0x0018, + // Block 0x20, offset 0x800 + 0x800: 0x0008, 0x801: 0x3308, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x0040, 0x805: 0x0008, + 0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0008, + 0x80c: 0x0008, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040, + 0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0008, 0x817: 0x0008, + 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0008, 0x81c: 0x0008, 0x81d: 0x0008, + 0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x0008, 0x823: 0x0008, + 0x824: 0x0008, 0x825: 0x0008, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0040, + 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, + 0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0040, 0x835: 0x0008, + 0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040, + 0x83c: 0x3308, 0x83d: 0x0008, 0x83e: 0x3008, 0x83f: 0x3308, + // Block 0x21, offset 0x840 + 0x840: 0x3008, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040, + 0x846: 0x3308, 0x847: 0x3008, 0x848: 0x3008, 0x849: 0x0040, 0x84a: 0x3008, 0x84b: 0x3008, + 0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040, + 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3008, 0x856: 0x3008, 0x857: 0x0040, + 0x858: 0x0040, 0x859: 0x0040, 0x85a: 0x0040, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0040, + 0x85e: 0x0008, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308, + 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, + 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, + 0x870: 0x0040, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040, + 0x876: 0x0040, 0x877: 0x0040, 0x878: 0x0040, 0x879: 0x0040, 0x87a: 0x0040, 0x87b: 0x0040, + 0x87c: 0x0040, 0x87d: 0x0040, 0x87e: 0x0040, 0x87f: 0x0040, + // Block 0x22, offset 0x880 + 0x880: 0x3008, 0x881: 0x3308, 0x882: 0x3308, 0x883: 0x3308, 0x884: 0x3308, 0x885: 0x0040, + 0x886: 0x3008, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, + 0x88c: 0x3008, 0x88d: 0x3b08, 0x88e: 0x0008, 0x88f: 0x0018, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x3008, + 0x898: 0x0018, 0x899: 0x0018, 0x89a: 0x0018, 0x89b: 0x0018, 0x89c: 0x0018, 0x89d: 0x0018, + 0x89e: 0x0018, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, + 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0018, 0x8b1: 0x0018, 0x8b2: 0x0018, 0x8b3: 0x0018, 0x8b4: 0x0018, 0x8b5: 0x0018, + 0x8b6: 0x0018, 0x8b7: 0x0018, 0x8b8: 0x0018, 0x8b9: 0x0018, 0x8ba: 0x0008, 0x8bb: 0x0008, + 0x8bc: 0x0008, 0x8bd: 0x0008, 0x8be: 0x0008, 0x8bf: 0x0008, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0040, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x0040, 0x8c4: 0x0008, 0x8c5: 0x0040, + 0x8c6: 0x0040, 0x8c7: 0x0008, 0x8c8: 0x0008, 0x8c9: 0x0040, 0x8ca: 0x0008, 0x8cb: 0x0040, + 0x8cc: 0x0040, 0x8cd: 0x0008, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040, + 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0008, + 0x8d8: 0x0040, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0008, 0x8dd: 0x0008, + 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0040, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, + 0x8e4: 0x0040, 0x8e5: 0x0008, 0x8e6: 0x0040, 0x8e7: 0x0008, 0x8e8: 0x0040, 0x8e9: 0x0040, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0040, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, + 0x8f0: 0x0008, 0x8f1: 0x3308, 0x8f2: 0x0008, 0x8f3: 0x0929, 0x8f4: 0x3308, 0x8f5: 0x3308, + 0x8f6: 0x3308, 0x8f7: 0x3308, 0x8f8: 0x3308, 0x8f9: 0x3308, 0x8fa: 0x0040, 0x8fb: 0x3308, + 0x8fc: 0x3308, 0x8fd: 0x0008, 0x8fe: 0x0040, 0x8ff: 0x0040, + // Block 0x24, offset 0x900 + 0x900: 0x0008, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x09d1, 0x904: 0x0008, 0x905: 0x0008, + 0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0040, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, + 0x90c: 0x0008, 0x90d: 0x0a09, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008, + 0x912: 0x0a41, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0a79, + 0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0ab1, 0x91d: 0x0008, + 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, + 0x924: 0x0008, 0x925: 0x0008, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0ae9, + 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0040, 0x92e: 0x0040, 0x92f: 0x0040, + 0x930: 0x0040, 0x931: 0x3308, 0x932: 0x3308, 0x933: 0x0b21, 0x934: 0x3308, 0x935: 0x0b59, + 0x936: 0x0b91, 0x937: 0x0bc9, 0x938: 0x0c19, 0x939: 0x0c51, 0x93a: 0x3308, 0x93b: 0x3308, + 0x93c: 0x3308, 0x93d: 0x3308, 0x93e: 0x3308, 0x93f: 0x3008, + // Block 0x25, offset 0x940 + 0x940: 0x3308, 0x941: 0x0ca1, 0x942: 0x3308, 0x943: 0x3308, 0x944: 0x3b08, 0x945: 0x0018, + 0x946: 0x3308, 0x947: 0x3308, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x3308, 0x94e: 0x3308, 0x94f: 0x3308, 0x950: 0x3308, 0x951: 0x3308, + 0x952: 0x3308, 0x953: 0x0cd9, 0x954: 0x3308, 0x955: 0x3308, 0x956: 0x3308, 0x957: 0x3308, + 0x958: 0x0040, 0x959: 0x3308, 0x95a: 0x3308, 0x95b: 0x3308, 0x95c: 0x3308, 0x95d: 0x0d11, + 0x95e: 0x3308, 0x95f: 0x3308, 0x960: 0x3308, 0x961: 0x3308, 0x962: 0x0d49, 0x963: 0x3308, + 0x964: 0x3308, 0x965: 0x3308, 0x966: 0x3308, 0x967: 0x0d81, 0x968: 0x3308, 0x969: 0x3308, + 0x96a: 0x3308, 0x96b: 0x3308, 0x96c: 0x0db9, 0x96d: 0x3308, 0x96e: 0x3308, 0x96f: 0x3308, + 0x970: 0x3308, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x3308, 0x974: 0x3308, 0x975: 0x3308, + 0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x0df1, 0x97a: 0x3308, 0x97b: 0x3308, + 0x97c: 0x3308, 0x97d: 0x0040, 0x97e: 0x0018, 0x97f: 0x0018, + // Block 0x26, offset 0x980 + 0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0008, 0x984: 0x0008, 0x985: 0x0008, + 0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, + 0x98c: 0x0008, 0x98d: 0x0008, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008, + 0x992: 0x0008, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0008, + 0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0008, 0x99d: 0x0008, + 0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008, + 0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0008, + 0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0039, 0x9ad: 0x0ed1, 0x9ae: 0x0ee9, 0x9af: 0x0008, + 0x9b0: 0x0ef9, 0x9b1: 0x0f09, 0x9b2: 0x0f19, 0x9b3: 0x0f31, 0x9b4: 0x0249, 0x9b5: 0x0f41, + 0x9b6: 0x0259, 0x9b7: 0x0f51, 0x9b8: 0x0359, 0x9b9: 0x0f61, 0x9ba: 0x0f71, 0x9bb: 0x0008, + 0x9bc: 0x00d9, 0x9bd: 0x0f81, 0x9be: 0x0f99, 0x9bf: 0x0269, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0fa9, 0x9c1: 0x0fb9, 0x9c2: 0x0279, 0x9c3: 0x0039, 0x9c4: 0x0fc9, 0x9c5: 0x0fe1, + 0x9c6: 0x059d, 0x9c7: 0x0ee9, 0x9c8: 0x0ef9, 0x9c9: 0x0f09, 0x9ca: 0x0ff9, 0x9cb: 0x1011, + 0x9cc: 0x1029, 0x9cd: 0x0f31, 0x9ce: 0x0008, 0x9cf: 0x0f51, 0x9d0: 0x0f61, 0x9d1: 0x1041, + 0x9d2: 0x00d9, 0x9d3: 0x1059, 0x9d4: 0x05b5, 0x9d5: 0x05b5, 0x9d6: 0x0f99, 0x9d7: 0x0fa9, + 0x9d8: 0x0fb9, 0x9d9: 0x059d, 0x9da: 0x1071, 0x9db: 0x1089, 0x9dc: 0x05cd, 0x9dd: 0x1099, + 0x9de: 0x10b1, 0x9df: 0x10c9, 0x9e0: 0x10e1, 0x9e1: 0x10f9, 0x9e2: 0x0f41, 0x9e3: 0x0269, + 0x9e4: 0x0fb9, 0x9e5: 0x1089, 0x9e6: 0x1099, 0x9e7: 0x10b1, 0x9e8: 0x1111, 0x9e9: 0x10e1, + 0x9ea: 0x10f9, 0x9eb: 0x0008, 0x9ec: 0x0008, 0x9ed: 0x0008, 0x9ee: 0x0008, 0x9ef: 0x0008, + 0x9f0: 0x0008, 0x9f1: 0x0008, 0x9f2: 0x0008, 0x9f3: 0x0008, 0x9f4: 0x0008, 0x9f5: 0x0008, + 0x9f6: 0x0008, 0x9f7: 0x0008, 0x9f8: 0x1129, 0x9f9: 0x0008, 0x9fa: 0x0008, 0x9fb: 0x0008, + 0x9fc: 0x0008, 0x9fd: 0x0008, 0x9fe: 0x0008, 0x9ff: 0x0008, + // Block 0x28, offset 0xa00 + 0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008, + 0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008, + 0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008, + 0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008, + 0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x1141, 0xa1c: 0x1159, 0xa1d: 0x1169, + 0xa1e: 0x1181, 0xa1f: 0x1029, 0xa20: 0x1199, 0xa21: 0x11a9, 0xa22: 0x11c1, 0xa23: 0x11d9, + 0xa24: 0x11f1, 0xa25: 0x1209, 0xa26: 0x1221, 0xa27: 0x05e5, 0xa28: 0x1239, 0xa29: 0x1251, + 0xa2a: 0xe17d, 0xa2b: 0x1269, 0xa2c: 0x1281, 0xa2d: 0x1299, 0xa2e: 0x12b1, 0xa2f: 0x12c9, + 0xa30: 0x12e1, 0xa31: 0x12f9, 0xa32: 0x1311, 0xa33: 0x1329, 0xa34: 0x1341, 0xa35: 0x1359, + 0xa36: 0x1371, 0xa37: 0x1389, 0xa38: 0x05fd, 0xa39: 0x13a1, 0xa3a: 0x13b9, 0xa3b: 0x13d1, + 0xa3c: 0x13e1, 0xa3d: 0x13f9, 0xa3e: 0x1411, 0xa3f: 0x1429, + // Block 0x29, offset 0xa40 + 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, + 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, + 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, + 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0xe00d, 0xa57: 0x0008, + 0xa58: 0xe00d, 0xa59: 0x0008, 0xa5a: 0xe00d, 0xa5b: 0x0008, 0xa5c: 0xe00d, 0xa5d: 0x0008, + 0xa5e: 0xe00d, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, + 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, + 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, + 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, + 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, + 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, + // Block 0x2a, offset 0xa80 + 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, + 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, + 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, + 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, + 0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0615, 0xa9b: 0x0635, 0xa9c: 0x0008, 0xa9d: 0x0008, + 0xa9e: 0x1441, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, + 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, + 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, + 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, + 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, + 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, + // Block 0x2b, offset 0xac0 + 0xac0: 0x0008, 0xac1: 0x0008, 0xac2: 0x0008, 0xac3: 0x0008, 0xac4: 0x0008, 0xac5: 0x0008, + 0xac6: 0x0040, 0xac7: 0x0040, 0xac8: 0xe045, 0xac9: 0xe045, 0xaca: 0xe045, 0xacb: 0xe045, + 0xacc: 0xe045, 0xacd: 0xe045, 0xace: 0x0040, 0xacf: 0x0040, 0xad0: 0x0008, 0xad1: 0x0008, + 0xad2: 0x0008, 0xad3: 0x0008, 0xad4: 0x0008, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, + 0xad8: 0x0040, 0xad9: 0xe045, 0xada: 0x0040, 0xadb: 0xe045, 0xadc: 0x0040, 0xadd: 0xe045, + 0xade: 0x0040, 0xadf: 0xe045, 0xae0: 0x0008, 0xae1: 0x0008, 0xae2: 0x0008, 0xae3: 0x0008, + 0xae4: 0x0008, 0xae5: 0x0008, 0xae6: 0x0008, 0xae7: 0x0008, 0xae8: 0xe045, 0xae9: 0xe045, + 0xaea: 0xe045, 0xaeb: 0xe045, 0xaec: 0xe045, 0xaed: 0xe045, 0xaee: 0xe045, 0xaef: 0xe045, + 0xaf0: 0x0008, 0xaf1: 0x1459, 0xaf2: 0x0008, 0xaf3: 0x1471, 0xaf4: 0x0008, 0xaf5: 0x1489, + 0xaf6: 0x0008, 0xaf7: 0x14a1, 0xaf8: 0x0008, 0xaf9: 0x14b9, 0xafa: 0x0008, 0xafb: 0x14d1, + 0xafc: 0x0008, 0xafd: 0x14e9, 0xafe: 0x0040, 0xaff: 0x0040, + // Block 0x2c, offset 0xb00 + 0xb00: 0x1501, 0xb01: 0x1531, 0xb02: 0x1561, 0xb03: 0x1591, 0xb04: 0x15c1, 0xb05: 0x15f1, + 0xb06: 0x1621, 0xb07: 0x1651, 0xb08: 0x1501, 0xb09: 0x1531, 0xb0a: 0x1561, 0xb0b: 0x1591, + 0xb0c: 0x15c1, 0xb0d: 0x15f1, 0xb0e: 0x1621, 0xb0f: 0x1651, 0xb10: 0x1681, 0xb11: 0x16b1, + 0xb12: 0x16e1, 0xb13: 0x1711, 0xb14: 0x1741, 0xb15: 0x1771, 0xb16: 0x17a1, 0xb17: 0x17d1, + 0xb18: 0x1681, 0xb19: 0x16b1, 0xb1a: 0x16e1, 0xb1b: 0x1711, 0xb1c: 0x1741, 0xb1d: 0x1771, + 0xb1e: 0x17a1, 0xb1f: 0x17d1, 0xb20: 0x1801, 0xb21: 0x1831, 0xb22: 0x1861, 0xb23: 0x1891, + 0xb24: 0x18c1, 0xb25: 0x18f1, 0xb26: 0x1921, 0xb27: 0x1951, 0xb28: 0x1801, 0xb29: 0x1831, + 0xb2a: 0x1861, 0xb2b: 0x1891, 0xb2c: 0x18c1, 0xb2d: 0x18f1, 0xb2e: 0x1921, 0xb2f: 0x1951, + 0xb30: 0x0008, 0xb31: 0x0008, 0xb32: 0x1981, 0xb33: 0x19b1, 0xb34: 0x19d9, 0xb35: 0x0040, + 0xb36: 0x0008, 0xb37: 0x1a01, 0xb38: 0xe045, 0xb39: 0xe045, 0xb3a: 0x064d, 0xb3b: 0x1459, + 0xb3c: 0x19b1, 0xb3d: 0x0666, 0xb3e: 0x1a31, 0xb3f: 0x0686, + // Block 0x2d, offset 0xb40 + 0xb40: 0x06a6, 0xb41: 0x1a4a, 0xb42: 0x1a79, 0xb43: 0x1aa9, 0xb44: 0x1ad1, 0xb45: 0x0040, + 0xb46: 0x0008, 0xb47: 0x1af9, 0xb48: 0x06c5, 0xb49: 0x1471, 0xb4a: 0x06dd, 0xb4b: 0x1489, + 0xb4c: 0x1aa9, 0xb4d: 0x1b2a, 0xb4e: 0x1b5a, 0xb4f: 0x1b8a, 0xb50: 0x0008, 0xb51: 0x0008, + 0xb52: 0x0008, 0xb53: 0x1bb9, 0xb54: 0x0040, 0xb55: 0x0040, 0xb56: 0x0008, 0xb57: 0x0008, + 0xb58: 0xe045, 0xb59: 0xe045, 0xb5a: 0x06f5, 0xb5b: 0x14a1, 0xb5c: 0x0040, 0xb5d: 0x1bd2, + 0xb5e: 0x1c02, 0xb5f: 0x1c32, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x1c61, + 0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045, + 0xb6a: 0x070d, 0xb6b: 0x14d1, 0xb6c: 0xe04d, 0xb6d: 0x1c7a, 0xb6e: 0x03d2, 0xb6f: 0x1caa, + 0xb70: 0x0040, 0xb71: 0x0040, 0xb72: 0x1cb9, 0xb73: 0x1ce9, 0xb74: 0x1d11, 0xb75: 0x0040, + 0xb76: 0x0008, 0xb77: 0x1d39, 0xb78: 0x0725, 0xb79: 0x14b9, 0xb7a: 0x0515, 0xb7b: 0x14e9, + 0xb7c: 0x1ce9, 0xb7d: 0x073e, 0xb7e: 0x075e, 0xb7f: 0x0040, + // Block 0x2e, offset 0xb80 + 0xb80: 0x000a, 0xb81: 0x000a, 0xb82: 0x000a, 0xb83: 0x000a, 0xb84: 0x000a, 0xb85: 0x000a, + 0xb86: 0x000a, 0xb87: 0x000a, 0xb88: 0x000a, 0xb89: 0x000a, 0xb8a: 0x000a, 0xb8b: 0x03c0, + 0xb8c: 0x0003, 0xb8d: 0x0003, 0xb8e: 0x0340, 0xb8f: 0x0b40, 0xb90: 0x0018, 0xb91: 0xe00d, + 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x077e, + 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, + 0xb9e: 0x0018, 0xb9f: 0x0018, 0xba0: 0x0018, 0xba1: 0x0018, 0xba2: 0x0018, 0xba3: 0x0018, + 0xba4: 0x0040, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0018, 0xba8: 0x0040, 0xba9: 0x0040, + 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x000a, + 0xbb0: 0x0018, 0xbb1: 0x0018, 0xbb2: 0x0018, 0xbb3: 0x1d69, 0xbb4: 0x1da1, 0xbb5: 0x0018, + 0xbb6: 0x1df1, 0xbb7: 0x1e29, 0xbb8: 0x0018, 0xbb9: 0x0018, 0xbba: 0x0018, 0xbbb: 0x0018, + 0xbbc: 0x1e7a, 0xbbd: 0x0018, 0xbbe: 0x079e, 0xbbf: 0x0018, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x0018, 0xbc1: 0x0018, 0xbc2: 0x0018, 0xbc3: 0x0018, 0xbc4: 0x0018, 0xbc5: 0x0018, + 0xbc6: 0x0018, 0xbc7: 0x1e92, 0xbc8: 0x1eaa, 0xbc9: 0x1ec2, 0xbca: 0x0018, 0xbcb: 0x0018, + 0xbcc: 0x0018, 0xbcd: 0x0018, 0xbce: 0x0018, 0xbcf: 0x0018, 0xbd0: 0x0018, 0xbd1: 0x0018, + 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x1ed9, + 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, + 0xbde: 0x0018, 0xbdf: 0x000a, 0xbe0: 0x03c0, 0xbe1: 0x0340, 0xbe2: 0x0340, 0xbe3: 0x0340, + 0xbe4: 0x03c0, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0040, 0xbe8: 0x0040, 0xbe9: 0x0040, + 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x0340, + 0xbf0: 0x1f41, 0xbf1: 0x0f41, 0xbf2: 0x0040, 0xbf3: 0x0040, 0xbf4: 0x1f51, 0xbf5: 0x1f61, + 0xbf6: 0x1f71, 0xbf7: 0x1f81, 0xbf8: 0x1f91, 0xbf9: 0x1fa1, 0xbfa: 0x1fb2, 0xbfb: 0x07bd, + 0xbfc: 0x1fc2, 0xbfd: 0x1fd2, 0xbfe: 0x1fe2, 0xbff: 0x0f71, + // Block 0x30, offset 0xc00 + 0xc00: 0x1f41, 0xc01: 0x00c9, 0xc02: 0x0069, 0xc03: 0x0079, 0xc04: 0x1f51, 0xc05: 0x1f61, + 0xc06: 0x1f71, 0xc07: 0x1f81, 0xc08: 0x1f91, 0xc09: 0x1fa1, 0xc0a: 0x1fb2, 0xc0b: 0x07d5, + 0xc0c: 0x1fc2, 0xc0d: 0x1fd2, 0xc0e: 0x1fe2, 0xc0f: 0x0040, 0xc10: 0x0039, 0xc11: 0x0f09, + 0xc12: 0x00d9, 0xc13: 0x0369, 0xc14: 0x0ff9, 0xc15: 0x0249, 0xc16: 0x0f51, 0xc17: 0x0359, + 0xc18: 0x0f61, 0xc19: 0x0f71, 0xc1a: 0x0f99, 0xc1b: 0x01d9, 0xc1c: 0x0fa9, 0xc1d: 0x0040, + 0xc1e: 0x0040, 0xc1f: 0x0040, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018, + 0xc24: 0x0018, 0xc25: 0x0018, 0xc26: 0x0018, 0xc27: 0x0018, 0xc28: 0x1ff1, 0xc29: 0x0018, + 0xc2a: 0x0018, 0xc2b: 0x0018, 0xc2c: 0x0018, 0xc2d: 0x0018, 0xc2e: 0x0018, 0xc2f: 0x0018, + 0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0018, 0xc34: 0x0018, 0xc35: 0x0018, + 0xc36: 0x0018, 0xc37: 0x0018, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018, + 0xc3c: 0x0018, 0xc3d: 0x0018, 0xc3e: 0x0018, 0xc3f: 0x0040, + // Block 0x31, offset 0xc40 + 0xc40: 0x07ee, 0xc41: 0x080e, 0xc42: 0x1159, 0xc43: 0x082d, 0xc44: 0x0018, 0xc45: 0x084e, + 0xc46: 0x086e, 0xc47: 0x1011, 0xc48: 0x0018, 0xc49: 0x088d, 0xc4a: 0x0f31, 0xc4b: 0x0249, + 0xc4c: 0x0249, 0xc4d: 0x0249, 0xc4e: 0x0249, 0xc4f: 0x2009, 0xc50: 0x0f41, 0xc51: 0x0f41, + 0xc52: 0x0359, 0xc53: 0x0359, 0xc54: 0x0018, 0xc55: 0x0f71, 0xc56: 0x2021, 0xc57: 0x0018, + 0xc58: 0x0018, 0xc59: 0x0f99, 0xc5a: 0x2039, 0xc5b: 0x0269, 0xc5c: 0x0269, 0xc5d: 0x0269, + 0xc5e: 0x0018, 0xc5f: 0x0018, 0xc60: 0x2049, 0xc61: 0x08ad, 0xc62: 0x2061, 0xc63: 0x0018, + 0xc64: 0x13d1, 0xc65: 0x0018, 0xc66: 0x2079, 0xc67: 0x0018, 0xc68: 0x13d1, 0xc69: 0x0018, + 0xc6a: 0x0f51, 0xc6b: 0x2091, 0xc6c: 0x0ee9, 0xc6d: 0x1159, 0xc6e: 0x0018, 0xc6f: 0x0f09, + 0xc70: 0x0f09, 0xc71: 0x1199, 0xc72: 0x0040, 0xc73: 0x0f61, 0xc74: 0x00d9, 0xc75: 0x20a9, + 0xc76: 0x20c1, 0xc77: 0x20d9, 0xc78: 0x20f1, 0xc79: 0x0f41, 0xc7a: 0x0018, 0xc7b: 0x08cd, + 0xc7c: 0x2109, 0xc7d: 0x10b1, 0xc7e: 0x10b1, 0xc7f: 0x2109, + // Block 0x32, offset 0xc80 + 0xc80: 0x08ed, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0ef9, + 0xc86: 0x0ef9, 0xc87: 0x0f09, 0xc88: 0x0f41, 0xc89: 0x0259, 0xc8a: 0x0018, 0xc8b: 0x0018, + 0xc8c: 0x0018, 0xc8d: 0x0018, 0xc8e: 0x0008, 0xc8f: 0x0018, 0xc90: 0x2121, 0xc91: 0x2151, + 0xc92: 0x2181, 0xc93: 0x21b9, 0xc94: 0x21e9, 0xc95: 0x2219, 0xc96: 0x2249, 0xc97: 0x2279, + 0xc98: 0x22a9, 0xc99: 0x22d9, 0xc9a: 0x2309, 0xc9b: 0x2339, 0xc9c: 0x2369, 0xc9d: 0x2399, + 0xc9e: 0x23c9, 0xc9f: 0x23f9, 0xca0: 0x0f41, 0xca1: 0x2421, 0xca2: 0x0905, 0xca3: 0x2439, + 0xca4: 0x1089, 0xca5: 0x2451, 0xca6: 0x0925, 0xca7: 0x2469, 0xca8: 0x2491, 0xca9: 0x0369, + 0xcaa: 0x24a9, 0xcab: 0x0945, 0xcac: 0x0359, 0xcad: 0x1159, 0xcae: 0x0ef9, 0xcaf: 0x0f61, + 0xcb0: 0x0f41, 0xcb1: 0x2421, 0xcb2: 0x0965, 0xcb3: 0x2439, 0xcb4: 0x1089, 0xcb5: 0x2451, + 0xcb6: 0x0985, 0xcb7: 0x2469, 0xcb8: 0x2491, 0xcb9: 0x0369, 0xcba: 0x24a9, 0xcbb: 0x09a5, + 0xcbc: 0x0359, 0xcbd: 0x1159, 0xcbe: 0x0ef9, 0xcbf: 0x0f61, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x0018, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0018, + 0xcc6: 0x0018, 0xcc7: 0x0018, 0xcc8: 0x0018, 0xcc9: 0x0018, 0xcca: 0x0018, 0xccb: 0x0040, + 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, + 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, + 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0040, 0xcdd: 0x0040, + 0xcde: 0x0040, 0xcdf: 0x0040, 0xce0: 0x00c9, 0xce1: 0x0069, 0xce2: 0x0079, 0xce3: 0x1f51, + 0xce4: 0x1f61, 0xce5: 0x1f71, 0xce6: 0x1f81, 0xce7: 0x1f91, 0xce8: 0x1fa1, 0xce9: 0x2601, + 0xcea: 0x2619, 0xceb: 0x2631, 0xcec: 0x2649, 0xced: 0x2661, 0xcee: 0x2679, 0xcef: 0x2691, + 0xcf0: 0x26a9, 0xcf1: 0x26c1, 0xcf2: 0x26d9, 0xcf3: 0x26f1, 0xcf4: 0x0a06, 0xcf5: 0x0a26, + 0xcf6: 0x0a46, 0xcf7: 0x0a66, 0xcf8: 0x0a86, 0xcf9: 0x0aa6, 0xcfa: 0x0ac6, 0xcfb: 0x0ae6, + 0xcfc: 0x0b06, 0xcfd: 0x270a, 0xcfe: 0x2732, 0xcff: 0x275a, + // Block 0x34, offset 0xd00 + 0xd00: 0x2782, 0xd01: 0x27aa, 0xd02: 0x27d2, 0xd03: 0x27fa, 0xd04: 0x2822, 0xd05: 0x284a, + 0xd06: 0x2872, 0xd07: 0x289a, 0xd08: 0x0040, 0xd09: 0x0040, 0xd0a: 0x0040, 0xd0b: 0x0040, + 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, + 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, + 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0b26, 0xd1d: 0x0b46, + 0xd1e: 0x0b66, 0xd1f: 0x0b86, 0xd20: 0x0ba6, 0xd21: 0x0bc6, 0xd22: 0x0be6, 0xd23: 0x0c06, + 0xd24: 0x0c26, 0xd25: 0x0c46, 0xd26: 0x0c66, 0xd27: 0x0c86, 0xd28: 0x0ca6, 0xd29: 0x0cc6, + 0xd2a: 0x0ce6, 0xd2b: 0x0d06, 0xd2c: 0x0d26, 0xd2d: 0x0d46, 0xd2e: 0x0d66, 0xd2f: 0x0d86, + 0xd30: 0x0da6, 0xd31: 0x0dc6, 0xd32: 0x0de6, 0xd33: 0x0e06, 0xd34: 0x0e26, 0xd35: 0x0e46, + 0xd36: 0x0039, 0xd37: 0x0ee9, 0xd38: 0x1159, 0xd39: 0x0ef9, 0xd3a: 0x0f09, 0xd3b: 0x1199, + 0xd3c: 0x0f31, 0xd3d: 0x0249, 0xd3e: 0x0f41, 0xd3f: 0x0259, + // Block 0x35, offset 0xd40 + 0xd40: 0x0f51, 0xd41: 0x0359, 0xd42: 0x0f61, 0xd43: 0x0f71, 0xd44: 0x00d9, 0xd45: 0x0f99, + 0xd46: 0x2039, 0xd47: 0x0269, 0xd48: 0x01d9, 0xd49: 0x0fa9, 0xd4a: 0x0fb9, 0xd4b: 0x1089, + 0xd4c: 0x0279, 0xd4d: 0x0369, 0xd4e: 0x0289, 0xd4f: 0x13d1, 0xd50: 0x0039, 0xd51: 0x0ee9, + 0xd52: 0x1159, 0xd53: 0x0ef9, 0xd54: 0x0f09, 0xd55: 0x1199, 0xd56: 0x0f31, 0xd57: 0x0249, + 0xd58: 0x0f41, 0xd59: 0x0259, 0xd5a: 0x0f51, 0xd5b: 0x0359, 0xd5c: 0x0f61, 0xd5d: 0x0f71, + 0xd5e: 0x00d9, 0xd5f: 0x0f99, 0xd60: 0x2039, 0xd61: 0x0269, 0xd62: 0x01d9, 0xd63: 0x0fa9, + 0xd64: 0x0fb9, 0xd65: 0x1089, 0xd66: 0x0279, 0xd67: 0x0369, 0xd68: 0x0289, 0xd69: 0x13d1, + 0xd6a: 0x1f41, 0xd6b: 0x0018, 0xd6c: 0x0018, 0xd6d: 0x0018, 0xd6e: 0x0018, 0xd6f: 0x0018, + 0xd70: 0x0018, 0xd71: 0x0018, 0xd72: 0x0018, 0xd73: 0x0018, 0xd74: 0x0018, 0xd75: 0x0018, + 0xd76: 0x0018, 0xd77: 0x0018, 0xd78: 0x0018, 0xd79: 0x0018, 0xd7a: 0x0018, 0xd7b: 0x0018, + 0xd7c: 0x0018, 0xd7d: 0x0018, 0xd7e: 0x0018, 0xd7f: 0x0018, + // Block 0x36, offset 0xd80 + 0xd80: 0x0008, 0xd81: 0x0008, 0xd82: 0x0008, 0xd83: 0x0008, 0xd84: 0x0008, 0xd85: 0x0008, + 0xd86: 0x0008, 0xd87: 0x0008, 0xd88: 0x0008, 0xd89: 0x0008, 0xd8a: 0x0008, 0xd8b: 0x0008, + 0xd8c: 0x0008, 0xd8d: 0x0008, 0xd8e: 0x0008, 0xd8f: 0x0008, 0xd90: 0x0008, 0xd91: 0x0008, + 0xd92: 0x0008, 0xd93: 0x0008, 0xd94: 0x0008, 0xd95: 0x0008, 0xd96: 0x0008, 0xd97: 0x0008, + 0xd98: 0x0008, 0xd99: 0x0008, 0xd9a: 0x0008, 0xd9b: 0x0008, 0xd9c: 0x0008, 0xd9d: 0x0008, + 0xd9e: 0x0008, 0xd9f: 0x0040, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0x2971, 0xda3: 0x0ebd, + 0xda4: 0x2989, 0xda5: 0x0008, 0xda6: 0x0008, 0xda7: 0xe07d, 0xda8: 0x0008, 0xda9: 0xe01d, + 0xdaa: 0x0008, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0x0fe1, 0xdae: 0x1281, 0xdaf: 0x0fc9, + 0xdb0: 0x1141, 0xdb1: 0x0008, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0008, 0xdb5: 0xe01d, + 0xdb6: 0x0008, 0xdb7: 0x0008, 0xdb8: 0x0008, 0xdb9: 0x0008, 0xdba: 0x0008, 0xdbb: 0x0008, + 0xdbc: 0x0259, 0xdbd: 0x1089, 0xdbe: 0x29a1, 0xdbf: 0x29b9, + // Block 0x37, offset 0xdc0 + 0xdc0: 0xe00d, 0xdc1: 0x0008, 0xdc2: 0xe00d, 0xdc3: 0x0008, 0xdc4: 0xe00d, 0xdc5: 0x0008, + 0xdc6: 0xe00d, 0xdc7: 0x0008, 0xdc8: 0xe00d, 0xdc9: 0x0008, 0xdca: 0xe00d, 0xdcb: 0x0008, + 0xdcc: 0xe00d, 0xdcd: 0x0008, 0xdce: 0xe00d, 0xdcf: 0x0008, 0xdd0: 0xe00d, 0xdd1: 0x0008, + 0xdd2: 0xe00d, 0xdd3: 0x0008, 0xdd4: 0xe00d, 0xdd5: 0x0008, 0xdd6: 0xe00d, 0xdd7: 0x0008, + 0xdd8: 0xe00d, 0xdd9: 0x0008, 0xdda: 0xe00d, 0xddb: 0x0008, 0xddc: 0xe00d, 0xddd: 0x0008, + 0xdde: 0xe00d, 0xddf: 0x0008, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0xe00d, 0xde3: 0x0008, + 0xde4: 0x0008, 0xde5: 0x0018, 0xde6: 0x0018, 0xde7: 0x0018, 0xde8: 0x0018, 0xde9: 0x0018, + 0xdea: 0x0018, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0xe01d, 0xdee: 0x0008, 0xdef: 0x3308, + 0xdf0: 0x3308, 0xdf1: 0x3308, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0040, 0xdf5: 0x0040, + 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018, + 0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018, + // Block 0x38, offset 0xe00 + 0xe00: 0x26fd, 0xe01: 0x271d, 0xe02: 0x273d, 0xe03: 0x275d, 0xe04: 0x277d, 0xe05: 0x279d, + 0xe06: 0x27bd, 0xe07: 0x27dd, 0xe08: 0x27fd, 0xe09: 0x281d, 0xe0a: 0x283d, 0xe0b: 0x285d, + 0xe0c: 0x287d, 0xe0d: 0x289d, 0xe0e: 0x28bd, 0xe0f: 0x28dd, 0xe10: 0x28fd, 0xe11: 0x291d, + 0xe12: 0x293d, 0xe13: 0x295d, 0xe14: 0x297d, 0xe15: 0x299d, 0xe16: 0x0040, 0xe17: 0x0040, + 0xe18: 0x0040, 0xe19: 0x0040, 0xe1a: 0x0040, 0xe1b: 0x0040, 0xe1c: 0x0040, 0xe1d: 0x0040, + 0xe1e: 0x0040, 0xe1f: 0x0040, 0xe20: 0x0040, 0xe21: 0x0040, 0xe22: 0x0040, 0xe23: 0x0040, + 0xe24: 0x0040, 0xe25: 0x0040, 0xe26: 0x0040, 0xe27: 0x0040, 0xe28: 0x0040, 0xe29: 0x0040, + 0xe2a: 0x0040, 0xe2b: 0x0040, 0xe2c: 0x0040, 0xe2d: 0x0040, 0xe2e: 0x0040, 0xe2f: 0x0040, + 0xe30: 0x0040, 0xe31: 0x0040, 0xe32: 0x0040, 0xe33: 0x0040, 0xe34: 0x0040, 0xe35: 0x0040, + 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0040, 0xe3a: 0x0040, 0xe3b: 0x0040, + 0xe3c: 0x0040, 0xe3d: 0x0040, 0xe3e: 0x0040, 0xe3f: 0x0040, + // Block 0x39, offset 0xe40 + 0xe40: 0x000a, 0xe41: 0x0018, 0xe42: 0x29d1, 0xe43: 0x0018, 0xe44: 0x0018, 0xe45: 0x0008, + 0xe46: 0x0008, 0xe47: 0x0008, 0xe48: 0x0018, 0xe49: 0x0018, 0xe4a: 0x0018, 0xe4b: 0x0018, + 0xe4c: 0x0018, 0xe4d: 0x0018, 0xe4e: 0x0018, 0xe4f: 0x0018, 0xe50: 0x0018, 0xe51: 0x0018, + 0xe52: 0x0018, 0xe53: 0x0018, 0xe54: 0x0018, 0xe55: 0x0018, 0xe56: 0x0018, 0xe57: 0x0018, + 0xe58: 0x0018, 0xe59: 0x0018, 0xe5a: 0x0018, 0xe5b: 0x0018, 0xe5c: 0x0018, 0xe5d: 0x0018, + 0xe5e: 0x0018, 0xe5f: 0x0018, 0xe60: 0x0018, 0xe61: 0x0018, 0xe62: 0x0018, 0xe63: 0x0018, + 0xe64: 0x0018, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018, + 0xe6a: 0x3308, 0xe6b: 0x3308, 0xe6c: 0x3308, 0xe6d: 0x3308, 0xe6e: 0x3018, 0xe6f: 0x3018, + 0xe70: 0x0018, 0xe71: 0x0018, 0xe72: 0x0018, 0xe73: 0x0018, 0xe74: 0x0018, 0xe75: 0x0018, + 0xe76: 0xe125, 0xe77: 0x0018, 0xe78: 0x29bd, 0xe79: 0x29dd, 0xe7a: 0x29fd, 0xe7b: 0x0018, + 0xe7c: 0x0008, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018, + // Block 0x3a, offset 0xe80 + 0xe80: 0x2b3d, 0xe81: 0x2b5d, 0xe82: 0x2b7d, 0xe83: 0x2b9d, 0xe84: 0x2bbd, 0xe85: 0x2bdd, + 0xe86: 0x2bdd, 0xe87: 0x2bdd, 0xe88: 0x2bfd, 0xe89: 0x2bfd, 0xe8a: 0x2bfd, 0xe8b: 0x2bfd, + 0xe8c: 0x2c1d, 0xe8d: 0x2c1d, 0xe8e: 0x2c1d, 0xe8f: 0x2c3d, 0xe90: 0x2c5d, 0xe91: 0x2c5d, + 0xe92: 0x2a7d, 0xe93: 0x2a7d, 0xe94: 0x2c5d, 0xe95: 0x2c5d, 0xe96: 0x2c7d, 0xe97: 0x2c7d, + 0xe98: 0x2c5d, 0xe99: 0x2c5d, 0xe9a: 0x2a7d, 0xe9b: 0x2a7d, 0xe9c: 0x2c5d, 0xe9d: 0x2c5d, + 0xe9e: 0x2c3d, 0xe9f: 0x2c3d, 0xea0: 0x2c9d, 0xea1: 0x2c9d, 0xea2: 0x2cbd, 0xea3: 0x2cbd, + 0xea4: 0x0040, 0xea5: 0x2cdd, 0xea6: 0x2cfd, 0xea7: 0x2d1d, 0xea8: 0x2d1d, 0xea9: 0x2d3d, + 0xeaa: 0x2d5d, 0xeab: 0x2d7d, 0xeac: 0x2d9d, 0xead: 0x2dbd, 0xeae: 0x2ddd, 0xeaf: 0x2dfd, + 0xeb0: 0x2e1d, 0xeb1: 0x2e3d, 0xeb2: 0x2e3d, 0xeb3: 0x2e5d, 0xeb4: 0x2e7d, 0xeb5: 0x2e7d, + 0xeb6: 0x2e9d, 0xeb7: 0x2ebd, 0xeb8: 0x2e5d, 0xeb9: 0x2edd, 0xeba: 0x2efd, 0xebb: 0x2edd, + 0xebc: 0x2e5d, 0xebd: 0x2f1d, 0xebe: 0x2f3d, 0xebf: 0x2f5d, + // Block 0x3b, offset 0xec0 + 0xec0: 0x2f7d, 0xec1: 0x2f9d, 0xec2: 0x2cfd, 0xec3: 0x2cdd, 0xec4: 0x2fbd, 0xec5: 0x2fdd, + 0xec6: 0x2ffd, 0xec7: 0x301d, 0xec8: 0x303d, 0xec9: 0x305d, 0xeca: 0x307d, 0xecb: 0x309d, + 0xecc: 0x30bd, 0xecd: 0x30dd, 0xece: 0x30fd, 0xecf: 0x0040, 0xed0: 0x0018, 0xed1: 0x0018, + 0xed2: 0x311d, 0xed3: 0x313d, 0xed4: 0x315d, 0xed5: 0x317d, 0xed6: 0x319d, 0xed7: 0x31bd, + 0xed8: 0x31dd, 0xed9: 0x31fd, 0xeda: 0x321d, 0xedb: 0x323d, 0xedc: 0x315d, 0xedd: 0x325d, + 0xede: 0x327d, 0xedf: 0x329d, 0xee0: 0x0008, 0xee1: 0x0008, 0xee2: 0x0008, 0xee3: 0x0008, + 0xee4: 0x0008, 0xee5: 0x0008, 0xee6: 0x0008, 0xee7: 0x0008, 0xee8: 0x0008, 0xee9: 0x0008, + 0xeea: 0x0008, 0xeeb: 0x0008, 0xeec: 0x0008, 0xeed: 0x0008, 0xeee: 0x0008, 0xeef: 0x0008, + 0xef0: 0x0008, 0xef1: 0x0008, 0xef2: 0x0008, 0xef3: 0x0008, 0xef4: 0x0008, 0xef5: 0x0008, + 0xef6: 0x0008, 0xef7: 0x0008, 0xef8: 0x0008, 0xef9: 0x0008, 0xefa: 0x0008, 0xefb: 0x0040, + 0xefc: 0x0040, 0xefd: 0x0040, 0xefe: 0x0040, 0xeff: 0x0040, + // Block 0x3c, offset 0xf00 + 0xf00: 0x36a2, 0xf01: 0x36d2, 0xf02: 0x3702, 0xf03: 0x3732, 0xf04: 0x32bd, 0xf05: 0x32dd, + 0xf06: 0x32fd, 0xf07: 0x331d, 0xf08: 0x0018, 0xf09: 0x0018, 0xf0a: 0x0018, 0xf0b: 0x0018, + 0xf0c: 0x0018, 0xf0d: 0x0018, 0xf0e: 0x0018, 0xf0f: 0x0018, 0xf10: 0x333d, 0xf11: 0x3761, + 0xf12: 0x3779, 0xf13: 0x3791, 0xf14: 0x37a9, 0xf15: 0x37c1, 0xf16: 0x37d9, 0xf17: 0x37f1, + 0xf18: 0x3809, 0xf19: 0x3821, 0xf1a: 0x3839, 0xf1b: 0x3851, 0xf1c: 0x3869, 0xf1d: 0x3881, + 0xf1e: 0x3899, 0xf1f: 0x38b1, 0xf20: 0x335d, 0xf21: 0x337d, 0xf22: 0x339d, 0xf23: 0x33bd, + 0xf24: 0x33dd, 0xf25: 0x33dd, 0xf26: 0x33fd, 0xf27: 0x341d, 0xf28: 0x343d, 0xf29: 0x345d, + 0xf2a: 0x347d, 0xf2b: 0x349d, 0xf2c: 0x34bd, 0xf2d: 0x34dd, 0xf2e: 0x34fd, 0xf2f: 0x351d, + 0xf30: 0x353d, 0xf31: 0x355d, 0xf32: 0x357d, 0xf33: 0x359d, 0xf34: 0x35bd, 0xf35: 0x35dd, + 0xf36: 0x35fd, 0xf37: 0x361d, 0xf38: 0x363d, 0xf39: 0x365d, 0xf3a: 0x367d, 0xf3b: 0x369d, + 0xf3c: 0x38c9, 0xf3d: 0x3901, 0xf3e: 0x36bd, 0xf3f: 0x0018, + // Block 0x3d, offset 0xf40 + 0xf40: 0x36dd, 0xf41: 0x36fd, 0xf42: 0x371d, 0xf43: 0x373d, 0xf44: 0x375d, 0xf45: 0x377d, + 0xf46: 0x379d, 0xf47: 0x37bd, 0xf48: 0x37dd, 0xf49: 0x37fd, 0xf4a: 0x381d, 0xf4b: 0x383d, + 0xf4c: 0x385d, 0xf4d: 0x387d, 0xf4e: 0x389d, 0xf4f: 0x38bd, 0xf50: 0x38dd, 0xf51: 0x38fd, + 0xf52: 0x391d, 0xf53: 0x393d, 0xf54: 0x395d, 0xf55: 0x397d, 0xf56: 0x399d, 0xf57: 0x39bd, + 0xf58: 0x39dd, 0xf59: 0x39fd, 0xf5a: 0x3a1d, 0xf5b: 0x3a3d, 0xf5c: 0x3a5d, 0xf5d: 0x3a7d, + 0xf5e: 0x3a9d, 0xf5f: 0x3abd, 0xf60: 0x3add, 0xf61: 0x3afd, 0xf62: 0x3b1d, 0xf63: 0x3b3d, + 0xf64: 0x3b5d, 0xf65: 0x3b7d, 0xf66: 0x127d, 0xf67: 0x3b9d, 0xf68: 0x3bbd, 0xf69: 0x3bdd, + 0xf6a: 0x3bfd, 0xf6b: 0x3c1d, 0xf6c: 0x3c3d, 0xf6d: 0x3c5d, 0xf6e: 0x239d, 0xf6f: 0x3c7d, + 0xf70: 0x3c9d, 0xf71: 0x3939, 0xf72: 0x3951, 0xf73: 0x3969, 0xf74: 0x3981, 0xf75: 0x3999, + 0xf76: 0x39b1, 0xf77: 0x39c9, 0xf78: 0x39e1, 0xf79: 0x39f9, 0xf7a: 0x3a11, 0xf7b: 0x3a29, + 0xf7c: 0x3a41, 0xf7d: 0x3a59, 0xf7e: 0x3a71, 0xf7f: 0x3a89, + // Block 0x3e, offset 0xf80 + 0xf80: 0x3aa1, 0xf81: 0x3ac9, 0xf82: 0x3af1, 0xf83: 0x3b19, 0xf84: 0x3b41, 0xf85: 0x3b69, + 0xf86: 0x3b91, 0xf87: 0x3bb9, 0xf88: 0x3be1, 0xf89: 0x3c09, 0xf8a: 0x3c39, 0xf8b: 0x3c69, + 0xf8c: 0x3c99, 0xf8d: 0x3cbd, 0xf8e: 0x3cb1, 0xf8f: 0x3cdd, 0xf90: 0x3cfd, 0xf91: 0x3d15, + 0xf92: 0x3d2d, 0xf93: 0x3d45, 0xf94: 0x3d5d, 0xf95: 0x3d5d, 0xf96: 0x3d45, 0xf97: 0x3d75, + 0xf98: 0x07bd, 0xf99: 0x3d8d, 0xf9a: 0x3da5, 0xf9b: 0x3dbd, 0xf9c: 0x3dd5, 0xf9d: 0x3ded, + 0xf9e: 0x3e05, 0xf9f: 0x3e1d, 0xfa0: 0x3e35, 0xfa1: 0x3e4d, 0xfa2: 0x3e65, 0xfa3: 0x3e7d, + 0xfa4: 0x3e95, 0xfa5: 0x3e95, 0xfa6: 0x3ead, 0xfa7: 0x3ead, 0xfa8: 0x3ec5, 0xfa9: 0x3ec5, + 0xfaa: 0x3edd, 0xfab: 0x3ef5, 0xfac: 0x3f0d, 0xfad: 0x3f25, 0xfae: 0x3f3d, 0xfaf: 0x3f3d, + 0xfb0: 0x3f55, 0xfb1: 0x3f55, 0xfb2: 0x3f55, 0xfb3: 0x3f6d, 0xfb4: 0x3f85, 0xfb5: 0x3f9d, + 0xfb6: 0x3fb5, 0xfb7: 0x3f9d, 0xfb8: 0x3fcd, 0xfb9: 0x3fe5, 0xfba: 0x3f6d, 0xfbb: 0x3ffd, + 0xfbc: 0x4015, 0xfbd: 0x4015, 0xfbe: 0x4015, 0xfbf: 0x0040, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x3cc9, 0xfc1: 0x3d31, 0xfc2: 0x3d99, 0xfc3: 0x3e01, 0xfc4: 0x3e51, 0xfc5: 0x3eb9, + 0xfc6: 0x3f09, 0xfc7: 0x3f59, 0xfc8: 0x3fd9, 0xfc9: 0x4041, 0xfca: 0x4091, 0xfcb: 0x40e1, + 0xfcc: 0x4131, 0xfcd: 0x4199, 0xfce: 0x4201, 0xfcf: 0x4251, 0xfd0: 0x42a1, 0xfd1: 0x42d9, + 0xfd2: 0x4329, 0xfd3: 0x4391, 0xfd4: 0x43f9, 0xfd5: 0x4431, 0xfd6: 0x44b1, 0xfd7: 0x4549, + 0xfd8: 0x45c9, 0xfd9: 0x4619, 0xfda: 0x4699, 0xfdb: 0x4719, 0xfdc: 0x4781, 0xfdd: 0x47d1, + 0xfde: 0x4821, 0xfdf: 0x4871, 0xfe0: 0x48d9, 0xfe1: 0x4959, 0xfe2: 0x49c1, 0xfe3: 0x4a11, + 0xfe4: 0x4a61, 0xfe5: 0x4ab1, 0xfe6: 0x4ae9, 0xfe7: 0x4b21, 0xfe8: 0x4b59, 0xfe9: 0x4b91, + 0xfea: 0x4be1, 0xfeb: 0x4c31, 0xfec: 0x4cb1, 0xfed: 0x4d01, 0xfee: 0x4d69, 0xfef: 0x4de9, + 0xff0: 0x4e39, 0xff1: 0x4e71, 0xff2: 0x4ea9, 0xff3: 0x4f29, 0xff4: 0x4f91, 0xff5: 0x5011, + 0xff6: 0x5061, 0xff7: 0x50e1, 0xff8: 0x5119, 0xff9: 0x5169, 0xffa: 0x51b9, 0xffb: 0x5209, + 0xffc: 0x5259, 0xffd: 0x52a9, 0xffe: 0x5311, 0xfff: 0x5361, + // Block 0x40, offset 0x1000 + 0x1000: 0x5399, 0x1001: 0x53e9, 0x1002: 0x5439, 0x1003: 0x5489, 0x1004: 0x54f1, 0x1005: 0x5541, + 0x1006: 0x5591, 0x1007: 0x55e1, 0x1008: 0x5661, 0x1009: 0x56c9, 0x100a: 0x5701, 0x100b: 0x5781, + 0x100c: 0x57b9, 0x100d: 0x5821, 0x100e: 0x5889, 0x100f: 0x58d9, 0x1010: 0x5929, 0x1011: 0x5979, + 0x1012: 0x59e1, 0x1013: 0x5a19, 0x1014: 0x5a69, 0x1015: 0x5ad1, 0x1016: 0x5b09, 0x1017: 0x5b89, + 0x1018: 0x5bd9, 0x1019: 0x5c01, 0x101a: 0x5c29, 0x101b: 0x5c51, 0x101c: 0x5c79, 0x101d: 0x5ca1, + 0x101e: 0x5cc9, 0x101f: 0x5cf1, 0x1020: 0x5d19, 0x1021: 0x5d41, 0x1022: 0x5d69, 0x1023: 0x5d99, + 0x1024: 0x5dc9, 0x1025: 0x5df9, 0x1026: 0x5e29, 0x1027: 0x5e59, 0x1028: 0x5e89, 0x1029: 0x5eb9, + 0x102a: 0x5ee9, 0x102b: 0x5f19, 0x102c: 0x5f49, 0x102d: 0x5f79, 0x102e: 0x5fa9, 0x102f: 0x5fd9, + 0x1030: 0x6009, 0x1031: 0x402d, 0x1032: 0x6039, 0x1033: 0x6051, 0x1034: 0x404d, 0x1035: 0x6069, + 0x1036: 0x6081, 0x1037: 0x6099, 0x1038: 0x406d, 0x1039: 0x406d, 0x103a: 0x60b1, 0x103b: 0x60c9, + 0x103c: 0x6101, 0x103d: 0x6139, 0x103e: 0x6171, 0x103f: 0x61a9, + // Block 0x41, offset 0x1040 + 0x1040: 0x6211, 0x1041: 0x6229, 0x1042: 0x408d, 0x1043: 0x6241, 0x1044: 0x6259, 0x1045: 0x6271, + 0x1046: 0x6289, 0x1047: 0x62a1, 0x1048: 0x40ad, 0x1049: 0x62b9, 0x104a: 0x62e1, 0x104b: 0x62f9, + 0x104c: 0x40cd, 0x104d: 0x40cd, 0x104e: 0x6311, 0x104f: 0x6329, 0x1050: 0x6341, 0x1051: 0x40ed, + 0x1052: 0x410d, 0x1053: 0x412d, 0x1054: 0x414d, 0x1055: 0x416d, 0x1056: 0x6359, 0x1057: 0x6371, + 0x1058: 0x6389, 0x1059: 0x63a1, 0x105a: 0x63b9, 0x105b: 0x418d, 0x105c: 0x63d1, 0x105d: 0x63e9, + 0x105e: 0x6401, 0x105f: 0x41ad, 0x1060: 0x41cd, 0x1061: 0x6419, 0x1062: 0x41ed, 0x1063: 0x420d, + 0x1064: 0x422d, 0x1065: 0x6431, 0x1066: 0x424d, 0x1067: 0x6449, 0x1068: 0x6479, 0x1069: 0x6211, + 0x106a: 0x426d, 0x106b: 0x428d, 0x106c: 0x42ad, 0x106d: 0x42cd, 0x106e: 0x64b1, 0x106f: 0x64f1, + 0x1070: 0x6539, 0x1071: 0x6551, 0x1072: 0x42ed, 0x1073: 0x6569, 0x1074: 0x6581, 0x1075: 0x6599, + 0x1076: 0x430d, 0x1077: 0x65b1, 0x1078: 0x65c9, 0x1079: 0x65b1, 0x107a: 0x65e1, 0x107b: 0x65f9, + 0x107c: 0x432d, 0x107d: 0x6611, 0x107e: 0x6629, 0x107f: 0x6611, + // Block 0x42, offset 0x1080 + 0x1080: 0x434d, 0x1081: 0x436d, 0x1082: 0x0040, 0x1083: 0x6641, 0x1084: 0x6659, 0x1085: 0x6671, + 0x1086: 0x6689, 0x1087: 0x0040, 0x1088: 0x66c1, 0x1089: 0x66d9, 0x108a: 0x66f1, 0x108b: 0x6709, + 0x108c: 0x6721, 0x108d: 0x6739, 0x108e: 0x6401, 0x108f: 0x6751, 0x1090: 0x6769, 0x1091: 0x6781, + 0x1092: 0x438d, 0x1093: 0x6799, 0x1094: 0x6289, 0x1095: 0x43ad, 0x1096: 0x43cd, 0x1097: 0x67b1, + 0x1098: 0x0040, 0x1099: 0x43ed, 0x109a: 0x67c9, 0x109b: 0x67e1, 0x109c: 0x67f9, 0x109d: 0x6811, + 0x109e: 0x6829, 0x109f: 0x6859, 0x10a0: 0x6889, 0x10a1: 0x68b1, 0x10a2: 0x68d9, 0x10a3: 0x6901, + 0x10a4: 0x6929, 0x10a5: 0x6951, 0x10a6: 0x6979, 0x10a7: 0x69a1, 0x10a8: 0x69c9, 0x10a9: 0x69f1, + 0x10aa: 0x6a21, 0x10ab: 0x6a51, 0x10ac: 0x6a81, 0x10ad: 0x6ab1, 0x10ae: 0x6ae1, 0x10af: 0x6b11, + 0x10b0: 0x6b41, 0x10b1: 0x6b71, 0x10b2: 0x6ba1, 0x10b3: 0x6bd1, 0x10b4: 0x6c01, 0x10b5: 0x6c31, + 0x10b6: 0x6c61, 0x10b7: 0x6c91, 0x10b8: 0x6cc1, 0x10b9: 0x6cf1, 0x10ba: 0x6d21, 0x10bb: 0x6d51, + 0x10bc: 0x6d81, 0x10bd: 0x6db1, 0x10be: 0x6de1, 0x10bf: 0x440d, + // Block 0x43, offset 0x10c0 + 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, + 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, + 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, + 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, + 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008, + 0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008, + 0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008, + 0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308, + 0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308, + 0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308, + 0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008, + // Block 0x44, offset 0x1100 + 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, + 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, + 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, + 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, + 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x0ea1, 0x111d: 0x6e11, + 0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008, + 0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008, + 0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008, + 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008, + 0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008, + 0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008, + // Block 0x45, offset 0x1140 + 0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018, + 0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018, + 0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018, + 0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008, + 0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008, + 0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008, + 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, + 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, + 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008, + 0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008, + 0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008, + // Block 0x46, offset 0x1180 + 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, + 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008, + 0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, + 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, + 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, + 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, + 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, + 0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008, + 0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d, + 0x11bc: 0x0008, 0x11bd: 0x442d, 0x11be: 0xe00d, 0x11bf: 0x0008, + // Block 0x47, offset 0x11c0 + 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, + 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d, + 0x11cc: 0x0008, 0x11cd: 0x11d9, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, + 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, + 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, + 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, + 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, + 0x11ea: 0x6e29, 0x11eb: 0x1029, 0x11ec: 0x11c1, 0x11ed: 0x6e41, 0x11ee: 0x1221, 0x11ef: 0x0040, + 0x11f0: 0x6e59, 0x11f1: 0x6e71, 0x11f2: 0x1239, 0x11f3: 0x444d, 0x11f4: 0xe00d, 0x11f5: 0x0008, + 0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0x0040, 0x11f9: 0x0040, 0x11fa: 0x0040, 0x11fb: 0x0040, + 0x11fc: 0x0040, 0x11fd: 0x0040, 0x11fe: 0x0040, 0x11ff: 0x0040, + // Block 0x48, offset 0x1200 + 0x1200: 0x64d5, 0x1201: 0x64f5, 0x1202: 0x6515, 0x1203: 0x6535, 0x1204: 0x6555, 0x1205: 0x6575, + 0x1206: 0x6595, 0x1207: 0x65b5, 0x1208: 0x65d5, 0x1209: 0x65f5, 0x120a: 0x6615, 0x120b: 0x6635, + 0x120c: 0x6655, 0x120d: 0x6675, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0x6695, 0x1211: 0x0008, + 0x1212: 0x66b5, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x66d5, 0x1216: 0x66f5, 0x1217: 0x6715, + 0x1218: 0x6735, 0x1219: 0x6755, 0x121a: 0x6775, 0x121b: 0x6795, 0x121c: 0x67b5, 0x121d: 0x67d5, + 0x121e: 0x67f5, 0x121f: 0x0008, 0x1220: 0x6815, 0x1221: 0x0008, 0x1222: 0x6835, 0x1223: 0x0008, + 0x1224: 0x0008, 0x1225: 0x6855, 0x1226: 0x6875, 0x1227: 0x0008, 0x1228: 0x0008, 0x1229: 0x0008, + 0x122a: 0x6895, 0x122b: 0x68b5, 0x122c: 0x68d5, 0x122d: 0x68f5, 0x122e: 0x6915, 0x122f: 0x6935, + 0x1230: 0x6955, 0x1231: 0x6975, 0x1232: 0x6995, 0x1233: 0x69b5, 0x1234: 0x69d5, 0x1235: 0x69f5, + 0x1236: 0x6a15, 0x1237: 0x6a35, 0x1238: 0x6a55, 0x1239: 0x6a75, 0x123a: 0x6a95, 0x123b: 0x6ab5, + 0x123c: 0x6ad5, 0x123d: 0x6af5, 0x123e: 0x6b15, 0x123f: 0x6b35, + // Block 0x49, offset 0x1240 + 0x1240: 0x7a95, 0x1241: 0x7ab5, 0x1242: 0x7ad5, 0x1243: 0x7af5, 0x1244: 0x7b15, 0x1245: 0x7b35, + 0x1246: 0x7b55, 0x1247: 0x7b75, 0x1248: 0x7b95, 0x1249: 0x7bb5, 0x124a: 0x7bd5, 0x124b: 0x7bf5, + 0x124c: 0x7c15, 0x124d: 0x7c35, 0x124e: 0x7c55, 0x124f: 0x6ec9, 0x1250: 0x6ef1, 0x1251: 0x6f19, + 0x1252: 0x7c75, 0x1253: 0x7c95, 0x1254: 0x7cb5, 0x1255: 0x6f41, 0x1256: 0x6f69, 0x1257: 0x6f91, + 0x1258: 0x7cd5, 0x1259: 0x7cf5, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x0040, + 0x125e: 0x0040, 0x125f: 0x0040, 0x1260: 0x0040, 0x1261: 0x0040, 0x1262: 0x0040, 0x1263: 0x0040, + 0x1264: 0x0040, 0x1265: 0x0040, 0x1266: 0x0040, 0x1267: 0x0040, 0x1268: 0x0040, 0x1269: 0x0040, + 0x126a: 0x0040, 0x126b: 0x0040, 0x126c: 0x0040, 0x126d: 0x0040, 0x126e: 0x0040, 0x126f: 0x0040, + 0x1270: 0x0040, 0x1271: 0x0040, 0x1272: 0x0040, 0x1273: 0x0040, 0x1274: 0x0040, 0x1275: 0x0040, + 0x1276: 0x0040, 0x1277: 0x0040, 0x1278: 0x0040, 0x1279: 0x0040, 0x127a: 0x0040, 0x127b: 0x0040, + 0x127c: 0x0040, 0x127d: 0x0040, 0x127e: 0x0040, 0x127f: 0x0040, + // Block 0x4a, offset 0x1280 + 0x1280: 0x6fb9, 0x1281: 0x6fd1, 0x1282: 0x6fe9, 0x1283: 0x7d15, 0x1284: 0x7d35, 0x1285: 0x7001, + 0x1286: 0x7001, 0x1287: 0x0040, 0x1288: 0x0040, 0x1289: 0x0040, 0x128a: 0x0040, 0x128b: 0x0040, + 0x128c: 0x0040, 0x128d: 0x0040, 0x128e: 0x0040, 0x128f: 0x0040, 0x1290: 0x0040, 0x1291: 0x0040, + 0x1292: 0x0040, 0x1293: 0x7019, 0x1294: 0x7041, 0x1295: 0x7069, 0x1296: 0x7091, 0x1297: 0x70b9, + 0x1298: 0x0040, 0x1299: 0x0040, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x70e1, + 0x129e: 0x3308, 0x129f: 0x7109, 0x12a0: 0x7131, 0x12a1: 0x20a9, 0x12a2: 0x20f1, 0x12a3: 0x7149, + 0x12a4: 0x7161, 0x12a5: 0x7179, 0x12a6: 0x7191, 0x12a7: 0x71a9, 0x12a8: 0x71c1, 0x12a9: 0x1fb2, + 0x12aa: 0x71d9, 0x12ab: 0x7201, 0x12ac: 0x7229, 0x12ad: 0x7261, 0x12ae: 0x7299, 0x12af: 0x72c1, + 0x12b0: 0x72e9, 0x12b1: 0x7311, 0x12b2: 0x7339, 0x12b3: 0x7361, 0x12b4: 0x7389, 0x12b5: 0x73b1, + 0x12b6: 0x73d9, 0x12b7: 0x0040, 0x12b8: 0x7401, 0x12b9: 0x7429, 0x12ba: 0x7451, 0x12bb: 0x7479, + 0x12bc: 0x74a1, 0x12bd: 0x0040, 0x12be: 0x74c9, 0x12bf: 0x0040, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x74f1, 0x12c1: 0x7519, 0x12c2: 0x0040, 0x12c3: 0x7541, 0x12c4: 0x7569, 0x12c5: 0x0040, + 0x12c6: 0x7591, 0x12c7: 0x75b9, 0x12c8: 0x75e1, 0x12c9: 0x7609, 0x12ca: 0x7631, 0x12cb: 0x7659, + 0x12cc: 0x7681, 0x12cd: 0x76a9, 0x12ce: 0x76d1, 0x12cf: 0x76f9, 0x12d0: 0x7721, 0x12d1: 0x7721, + 0x12d2: 0x7739, 0x12d3: 0x7739, 0x12d4: 0x7739, 0x12d5: 0x7739, 0x12d6: 0x7751, 0x12d7: 0x7751, + 0x12d8: 0x7751, 0x12d9: 0x7751, 0x12da: 0x7769, 0x12db: 0x7769, 0x12dc: 0x7769, 0x12dd: 0x7769, + 0x12de: 0x7781, 0x12df: 0x7781, 0x12e0: 0x7781, 0x12e1: 0x7781, 0x12e2: 0x7799, 0x12e3: 0x7799, + 0x12e4: 0x7799, 0x12e5: 0x7799, 0x12e6: 0x77b1, 0x12e7: 0x77b1, 0x12e8: 0x77b1, 0x12e9: 0x77b1, + 0x12ea: 0x77c9, 0x12eb: 0x77c9, 0x12ec: 0x77c9, 0x12ed: 0x77c9, 0x12ee: 0x77e1, 0x12ef: 0x77e1, + 0x12f0: 0x77e1, 0x12f1: 0x77e1, 0x12f2: 0x77f9, 0x12f3: 0x77f9, 0x12f4: 0x77f9, 0x12f5: 0x77f9, + 0x12f6: 0x7811, 0x12f7: 0x7811, 0x12f8: 0x7811, 0x12f9: 0x7811, 0x12fa: 0x7829, 0x12fb: 0x7829, + 0x12fc: 0x7829, 0x12fd: 0x7829, 0x12fe: 0x7841, 0x12ff: 0x7841, + // Block 0x4c, offset 0x1300 + 0x1300: 0x7841, 0x1301: 0x7841, 0x1302: 0x7859, 0x1303: 0x7859, 0x1304: 0x7871, 0x1305: 0x7871, + 0x1306: 0x7889, 0x1307: 0x7889, 0x1308: 0x78a1, 0x1309: 0x78a1, 0x130a: 0x78b9, 0x130b: 0x78b9, + 0x130c: 0x78d1, 0x130d: 0x78d1, 0x130e: 0x78e9, 0x130f: 0x78e9, 0x1310: 0x78e9, 0x1311: 0x78e9, + 0x1312: 0x7901, 0x1313: 0x7901, 0x1314: 0x7901, 0x1315: 0x7901, 0x1316: 0x7919, 0x1317: 0x7919, + 0x1318: 0x7919, 0x1319: 0x7919, 0x131a: 0x7931, 0x131b: 0x7931, 0x131c: 0x7931, 0x131d: 0x7931, + 0x131e: 0x7949, 0x131f: 0x7949, 0x1320: 0x7961, 0x1321: 0x7961, 0x1322: 0x7961, 0x1323: 0x7961, + 0x1324: 0x7979, 0x1325: 0x7979, 0x1326: 0x7991, 0x1327: 0x7991, 0x1328: 0x7991, 0x1329: 0x7991, + 0x132a: 0x79a9, 0x132b: 0x79a9, 0x132c: 0x79a9, 0x132d: 0x79a9, 0x132e: 0x79c1, 0x132f: 0x79c1, + 0x1330: 0x79d9, 0x1331: 0x79d9, 0x1332: 0x0818, 0x1333: 0x0818, 0x1334: 0x0818, 0x1335: 0x0818, + 0x1336: 0x0818, 0x1337: 0x0818, 0x1338: 0x0818, 0x1339: 0x0818, 0x133a: 0x0818, 0x133b: 0x0818, + 0x133c: 0x0818, 0x133d: 0x0818, 0x133e: 0x0818, 0x133f: 0x0818, + // Block 0x4d, offset 0x1340 + 0x1340: 0x0818, 0x1341: 0x0818, 0x1342: 0x0040, 0x1343: 0x0040, 0x1344: 0x0040, 0x1345: 0x0040, + 0x1346: 0x0040, 0x1347: 0x0040, 0x1348: 0x0040, 0x1349: 0x0040, 0x134a: 0x0040, 0x134b: 0x0040, + 0x134c: 0x0040, 0x134d: 0x0040, 0x134e: 0x0040, 0x134f: 0x0040, 0x1350: 0x0040, 0x1351: 0x0040, + 0x1352: 0x0040, 0x1353: 0x79f1, 0x1354: 0x79f1, 0x1355: 0x79f1, 0x1356: 0x79f1, 0x1357: 0x7a09, + 0x1358: 0x7a09, 0x1359: 0x7a21, 0x135a: 0x7a21, 0x135b: 0x7a39, 0x135c: 0x7a39, 0x135d: 0x0479, + 0x135e: 0x7a51, 0x135f: 0x7a51, 0x1360: 0x7a69, 0x1361: 0x7a69, 0x1362: 0x7a81, 0x1363: 0x7a81, + 0x1364: 0x7a99, 0x1365: 0x7a99, 0x1366: 0x7a99, 0x1367: 0x7a99, 0x1368: 0x7ab1, 0x1369: 0x7ab1, + 0x136a: 0x7ac9, 0x136b: 0x7ac9, 0x136c: 0x7af1, 0x136d: 0x7af1, 0x136e: 0x7b19, 0x136f: 0x7b19, + 0x1370: 0x7b41, 0x1371: 0x7b41, 0x1372: 0x7b69, 0x1373: 0x7b69, 0x1374: 0x7b91, 0x1375: 0x7b91, + 0x1376: 0x7bb9, 0x1377: 0x7bb9, 0x1378: 0x7bb9, 0x1379: 0x7be1, 0x137a: 0x7be1, 0x137b: 0x7be1, + 0x137c: 0x7c09, 0x137d: 0x7c09, 0x137e: 0x7c09, 0x137f: 0x7c09, + // Block 0x4e, offset 0x1380 + 0x1380: 0x85f9, 0x1381: 0x8621, 0x1382: 0x8649, 0x1383: 0x8671, 0x1384: 0x8699, 0x1385: 0x86c1, + 0x1386: 0x86e9, 0x1387: 0x8711, 0x1388: 0x8739, 0x1389: 0x8761, 0x138a: 0x8789, 0x138b: 0x87b1, + 0x138c: 0x87d9, 0x138d: 0x8801, 0x138e: 0x8829, 0x138f: 0x8851, 0x1390: 0x8879, 0x1391: 0x88a1, + 0x1392: 0x88c9, 0x1393: 0x88f1, 0x1394: 0x8919, 0x1395: 0x8941, 0x1396: 0x8969, 0x1397: 0x8991, + 0x1398: 0x89b9, 0x1399: 0x89e1, 0x139a: 0x8a09, 0x139b: 0x8a31, 0x139c: 0x8a59, 0x139d: 0x8a81, + 0x139e: 0x8aaa, 0x139f: 0x8ada, 0x13a0: 0x8b0a, 0x13a1: 0x8b3a, 0x13a2: 0x8b6a, 0x13a3: 0x8b9a, + 0x13a4: 0x8bc9, 0x13a5: 0x8bf1, 0x13a6: 0x7c71, 0x13a7: 0x8c19, 0x13a8: 0x7be1, 0x13a9: 0x7c99, + 0x13aa: 0x8c41, 0x13ab: 0x8c69, 0x13ac: 0x7d39, 0x13ad: 0x8c91, 0x13ae: 0x7d61, 0x13af: 0x7d89, + 0x13b0: 0x8cb9, 0x13b1: 0x8ce1, 0x13b2: 0x7e29, 0x13b3: 0x8d09, 0x13b4: 0x7e51, 0x13b5: 0x7e79, + 0x13b6: 0x8d31, 0x13b7: 0x8d59, 0x13b8: 0x7ec9, 0x13b9: 0x8d81, 0x13ba: 0x7ef1, 0x13bb: 0x7f19, + 0x13bc: 0x83a1, 0x13bd: 0x83c9, 0x13be: 0x8441, 0x13bf: 0x8469, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x8491, 0x13c1: 0x8531, 0x13c2: 0x8559, 0x13c3: 0x8581, 0x13c4: 0x85a9, 0x13c5: 0x8649, + 0x13c6: 0x8671, 0x13c7: 0x8699, 0x13c8: 0x8da9, 0x13c9: 0x8739, 0x13ca: 0x8dd1, 0x13cb: 0x8df9, + 0x13cc: 0x8829, 0x13cd: 0x8e21, 0x13ce: 0x8851, 0x13cf: 0x8879, 0x13d0: 0x8a81, 0x13d1: 0x8e49, + 0x13d2: 0x8e71, 0x13d3: 0x89b9, 0x13d4: 0x8e99, 0x13d5: 0x89e1, 0x13d6: 0x8a09, 0x13d7: 0x7c21, + 0x13d8: 0x7c49, 0x13d9: 0x8ec1, 0x13da: 0x7c71, 0x13db: 0x8ee9, 0x13dc: 0x7cc1, 0x13dd: 0x7ce9, + 0x13de: 0x7d11, 0x13df: 0x7d39, 0x13e0: 0x8f11, 0x13e1: 0x7db1, 0x13e2: 0x7dd9, 0x13e3: 0x7e01, + 0x13e4: 0x7e29, 0x13e5: 0x8f39, 0x13e6: 0x7ec9, 0x13e7: 0x7f41, 0x13e8: 0x7f69, 0x13e9: 0x7f91, + 0x13ea: 0x7fb9, 0x13eb: 0x7fe1, 0x13ec: 0x8031, 0x13ed: 0x8059, 0x13ee: 0x8081, 0x13ef: 0x80a9, + 0x13f0: 0x80d1, 0x13f1: 0x80f9, 0x13f2: 0x8f61, 0x13f3: 0x8121, 0x13f4: 0x8149, 0x13f5: 0x8171, + 0x13f6: 0x8199, 0x13f7: 0x81c1, 0x13f8: 0x81e9, 0x13f9: 0x8239, 0x13fa: 0x8261, 0x13fb: 0x8289, + 0x13fc: 0x82b1, 0x13fd: 0x82d9, 0x13fe: 0x8301, 0x13ff: 0x8329, + // Block 0x50, offset 0x1400 + 0x1400: 0x8351, 0x1401: 0x8379, 0x1402: 0x83f1, 0x1403: 0x8419, 0x1404: 0x84b9, 0x1405: 0x84e1, + 0x1406: 0x8509, 0x1407: 0x8531, 0x1408: 0x8559, 0x1409: 0x85d1, 0x140a: 0x85f9, 0x140b: 0x8621, + 0x140c: 0x8649, 0x140d: 0x8f89, 0x140e: 0x86c1, 0x140f: 0x86e9, 0x1410: 0x8711, 0x1411: 0x8739, + 0x1412: 0x87b1, 0x1413: 0x87d9, 0x1414: 0x8801, 0x1415: 0x8829, 0x1416: 0x8fb1, 0x1417: 0x88a1, + 0x1418: 0x88c9, 0x1419: 0x8fd9, 0x141a: 0x8941, 0x141b: 0x8969, 0x141c: 0x8991, 0x141d: 0x89b9, + 0x141e: 0x9001, 0x141f: 0x7c71, 0x1420: 0x8ee9, 0x1421: 0x7d39, 0x1422: 0x8f11, 0x1423: 0x7e29, + 0x1424: 0x8f39, 0x1425: 0x7ec9, 0x1426: 0x9029, 0x1427: 0x80d1, 0x1428: 0x9051, 0x1429: 0x9079, + 0x142a: 0x90a1, 0x142b: 0x8531, 0x142c: 0x8559, 0x142d: 0x8649, 0x142e: 0x8829, 0x142f: 0x8fb1, + 0x1430: 0x89b9, 0x1431: 0x9001, 0x1432: 0x90c9, 0x1433: 0x9101, 0x1434: 0x9139, 0x1435: 0x9171, + 0x1436: 0x9199, 0x1437: 0x91c1, 0x1438: 0x91e9, 0x1439: 0x9211, 0x143a: 0x9239, 0x143b: 0x9261, + 0x143c: 0x9289, 0x143d: 0x92b1, 0x143e: 0x92d9, 0x143f: 0x9301, + // Block 0x51, offset 0x1440 + 0x1440: 0x9329, 0x1441: 0x9351, 0x1442: 0x9379, 0x1443: 0x93a1, 0x1444: 0x93c9, 0x1445: 0x93f1, + 0x1446: 0x9419, 0x1447: 0x9441, 0x1448: 0x9469, 0x1449: 0x9491, 0x144a: 0x94b9, 0x144b: 0x94e1, + 0x144c: 0x9079, 0x144d: 0x9509, 0x144e: 0x9531, 0x144f: 0x9559, 0x1450: 0x9581, 0x1451: 0x9171, + 0x1452: 0x9199, 0x1453: 0x91c1, 0x1454: 0x91e9, 0x1455: 0x9211, 0x1456: 0x9239, 0x1457: 0x9261, + 0x1458: 0x9289, 0x1459: 0x92b1, 0x145a: 0x92d9, 0x145b: 0x9301, 0x145c: 0x9329, 0x145d: 0x9351, + 0x145e: 0x9379, 0x145f: 0x93a1, 0x1460: 0x93c9, 0x1461: 0x93f1, 0x1462: 0x9419, 0x1463: 0x9441, + 0x1464: 0x9469, 0x1465: 0x9491, 0x1466: 0x94b9, 0x1467: 0x94e1, 0x1468: 0x9079, 0x1469: 0x9509, + 0x146a: 0x9531, 0x146b: 0x9559, 0x146c: 0x9581, 0x146d: 0x9491, 0x146e: 0x94b9, 0x146f: 0x94e1, + 0x1470: 0x9079, 0x1471: 0x9051, 0x1472: 0x90a1, 0x1473: 0x8211, 0x1474: 0x8059, 0x1475: 0x8081, + 0x1476: 0x80a9, 0x1477: 0x9491, 0x1478: 0x94b9, 0x1479: 0x94e1, 0x147a: 0x8211, 0x147b: 0x8239, + 0x147c: 0x95a9, 0x147d: 0x95a9, 0x147e: 0x0018, 0x147f: 0x0018, + // Block 0x52, offset 0x1480 + 0x1480: 0x0040, 0x1481: 0x0040, 0x1482: 0x0040, 0x1483: 0x0040, 0x1484: 0x0040, 0x1485: 0x0040, + 0x1486: 0x0040, 0x1487: 0x0040, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, + 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x95d1, 0x1491: 0x9609, + 0x1492: 0x9609, 0x1493: 0x9641, 0x1494: 0x9679, 0x1495: 0x96b1, 0x1496: 0x96e9, 0x1497: 0x9721, + 0x1498: 0x9759, 0x1499: 0x9759, 0x149a: 0x9791, 0x149b: 0x97c9, 0x149c: 0x9801, 0x149d: 0x9839, + 0x149e: 0x9871, 0x149f: 0x98a9, 0x14a0: 0x98a9, 0x14a1: 0x98e1, 0x14a2: 0x9919, 0x14a3: 0x9919, + 0x14a4: 0x9951, 0x14a5: 0x9951, 0x14a6: 0x9989, 0x14a7: 0x99c1, 0x14a8: 0x99c1, 0x14a9: 0x99f9, + 0x14aa: 0x9a31, 0x14ab: 0x9a31, 0x14ac: 0x9a69, 0x14ad: 0x9a69, 0x14ae: 0x9aa1, 0x14af: 0x9ad9, + 0x14b0: 0x9ad9, 0x14b1: 0x9b11, 0x14b2: 0x9b11, 0x14b3: 0x9b49, 0x14b4: 0x9b81, 0x14b5: 0x9bb9, + 0x14b6: 0x9bf1, 0x14b7: 0x9bf1, 0x14b8: 0x9c29, 0x14b9: 0x9c61, 0x14ba: 0x9c99, 0x14bb: 0x9cd1, + 0x14bc: 0x9d09, 0x14bd: 0x9d09, 0x14be: 0x9d41, 0x14bf: 0x9d79, + // Block 0x53, offset 0x14c0 + 0x14c0: 0xa949, 0x14c1: 0xa981, 0x14c2: 0xa9b9, 0x14c3: 0xa8a1, 0x14c4: 0x9bb9, 0x14c5: 0x9989, + 0x14c6: 0xa9f1, 0x14c7: 0xaa29, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, + 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x0040, 0x14d1: 0x0040, + 0x14d2: 0x0040, 0x14d3: 0x0040, 0x14d4: 0x0040, 0x14d5: 0x0040, 0x14d6: 0x0040, 0x14d7: 0x0040, + 0x14d8: 0x0040, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, + 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x0040, 0x14e1: 0x0040, 0x14e2: 0x0040, 0x14e3: 0x0040, + 0x14e4: 0x0040, 0x14e5: 0x0040, 0x14e6: 0x0040, 0x14e7: 0x0040, 0x14e8: 0x0040, 0x14e9: 0x0040, + 0x14ea: 0x0040, 0x14eb: 0x0040, 0x14ec: 0x0040, 0x14ed: 0x0040, 0x14ee: 0x0040, 0x14ef: 0x0040, + 0x14f0: 0xaa61, 0x14f1: 0xaa99, 0x14f2: 0xaad1, 0x14f3: 0xab19, 0x14f4: 0xab61, 0x14f5: 0xaba9, + 0x14f6: 0xabf1, 0x14f7: 0xac39, 0x14f8: 0xac81, 0x14f9: 0xacc9, 0x14fa: 0xad02, 0x14fb: 0xae12, + 0x14fc: 0xae91, 0x14fd: 0x0018, 0x14fe: 0x0040, 0x14ff: 0x0040, + // Block 0x54, offset 0x1500 + 0x1500: 0x33c0, 0x1501: 0x33c0, 0x1502: 0x33c0, 0x1503: 0x33c0, 0x1504: 0x33c0, 0x1505: 0x33c0, + 0x1506: 0x33c0, 0x1507: 0x33c0, 0x1508: 0x33c0, 0x1509: 0x33c0, 0x150a: 0x33c0, 0x150b: 0x33c0, + 0x150c: 0x33c0, 0x150d: 0x33c0, 0x150e: 0x33c0, 0x150f: 0x33c0, 0x1510: 0xaeda, 0x1511: 0x7d55, + 0x1512: 0x0040, 0x1513: 0xaeea, 0x1514: 0x03c2, 0x1515: 0xaefa, 0x1516: 0xaf0a, 0x1517: 0x7d75, + 0x1518: 0x7d95, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, + 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x3308, 0x1521: 0x3308, 0x1522: 0x3308, 0x1523: 0x3308, + 0x1524: 0x3308, 0x1525: 0x3308, 0x1526: 0x3308, 0x1527: 0x3308, 0x1528: 0x3308, 0x1529: 0x3308, + 0x152a: 0x3308, 0x152b: 0x3308, 0x152c: 0x3308, 0x152d: 0x3308, 0x152e: 0x3308, 0x152f: 0x3308, + 0x1530: 0x0040, 0x1531: 0x7db5, 0x1532: 0x7dd5, 0x1533: 0xaf1a, 0x1534: 0xaf1a, 0x1535: 0x1fd2, + 0x1536: 0x1fe2, 0x1537: 0xaf2a, 0x1538: 0xaf3a, 0x1539: 0x7df5, 0x153a: 0x7e15, 0x153b: 0x7e35, + 0x153c: 0x7df5, 0x153d: 0x7e55, 0x153e: 0x7e75, 0x153f: 0x7e55, + // Block 0x55, offset 0x1540 + 0x1540: 0x7e95, 0x1541: 0x7eb5, 0x1542: 0x7ed5, 0x1543: 0x7eb5, 0x1544: 0x7ef5, 0x1545: 0x0018, + 0x1546: 0x0018, 0x1547: 0xaf4a, 0x1548: 0xaf5a, 0x1549: 0x7f16, 0x154a: 0x7f36, 0x154b: 0x7f56, + 0x154c: 0x7f76, 0x154d: 0xaf1a, 0x154e: 0xaf1a, 0x154f: 0xaf1a, 0x1550: 0xaeda, 0x1551: 0x7f95, + 0x1552: 0x0040, 0x1553: 0x0040, 0x1554: 0x03c2, 0x1555: 0xaeea, 0x1556: 0xaf0a, 0x1557: 0xaefa, + 0x1558: 0x7fb5, 0x1559: 0x1fd2, 0x155a: 0x1fe2, 0x155b: 0xaf2a, 0x155c: 0xaf3a, 0x155d: 0x7e95, + 0x155e: 0x7ef5, 0x155f: 0xaf6a, 0x1560: 0xaf7a, 0x1561: 0xaf8a, 0x1562: 0x1fb2, 0x1563: 0xaf99, + 0x1564: 0xafaa, 0x1565: 0xafba, 0x1566: 0x1fc2, 0x1567: 0x0040, 0x1568: 0xafca, 0x1569: 0xafda, + 0x156a: 0xafea, 0x156b: 0xaffa, 0x156c: 0x0040, 0x156d: 0x0040, 0x156e: 0x0040, 0x156f: 0x0040, + 0x1570: 0x7fd6, 0x1571: 0xb009, 0x1572: 0x7ff6, 0x1573: 0x0808, 0x1574: 0x8016, 0x1575: 0x0040, + 0x1576: 0x8036, 0x1577: 0xb031, 0x1578: 0x8056, 0x1579: 0xb059, 0x157a: 0x8076, 0x157b: 0xb081, + 0x157c: 0x8096, 0x157d: 0xb0a9, 0x157e: 0x80b6, 0x157f: 0xb0d1, + // Block 0x56, offset 0x1580 + 0x1580: 0xb0f9, 0x1581: 0xb111, 0x1582: 0xb111, 0x1583: 0xb129, 0x1584: 0xb129, 0x1585: 0xb141, + 0x1586: 0xb141, 0x1587: 0xb159, 0x1588: 0xb159, 0x1589: 0xb171, 0x158a: 0xb171, 0x158b: 0xb171, + 0x158c: 0xb171, 0x158d: 0xb189, 0x158e: 0xb189, 0x158f: 0xb1a1, 0x1590: 0xb1a1, 0x1591: 0xb1a1, + 0x1592: 0xb1a1, 0x1593: 0xb1b9, 0x1594: 0xb1b9, 0x1595: 0xb1d1, 0x1596: 0xb1d1, 0x1597: 0xb1d1, + 0x1598: 0xb1d1, 0x1599: 0xb1e9, 0x159a: 0xb1e9, 0x159b: 0xb1e9, 0x159c: 0xb1e9, 0x159d: 0xb201, + 0x159e: 0xb201, 0x159f: 0xb201, 0x15a0: 0xb201, 0x15a1: 0xb219, 0x15a2: 0xb219, 0x15a3: 0xb219, + 0x15a4: 0xb219, 0x15a5: 0xb231, 0x15a6: 0xb231, 0x15a7: 0xb231, 0x15a8: 0xb231, 0x15a9: 0xb249, + 0x15aa: 0xb249, 0x15ab: 0xb261, 0x15ac: 0xb261, 0x15ad: 0xb279, 0x15ae: 0xb279, 0x15af: 0xb291, + 0x15b0: 0xb291, 0x15b1: 0xb2a9, 0x15b2: 0xb2a9, 0x15b3: 0xb2a9, 0x15b4: 0xb2a9, 0x15b5: 0xb2c1, + 0x15b6: 0xb2c1, 0x15b7: 0xb2c1, 0x15b8: 0xb2c1, 0x15b9: 0xb2d9, 0x15ba: 0xb2d9, 0x15bb: 0xb2d9, + 0x15bc: 0xb2d9, 0x15bd: 0xb2f1, 0x15be: 0xb2f1, 0x15bf: 0xb2f1, + // Block 0x57, offset 0x15c0 + 0x15c0: 0xb2f1, 0x15c1: 0xb309, 0x15c2: 0xb309, 0x15c3: 0xb309, 0x15c4: 0xb309, 0x15c5: 0xb321, + 0x15c6: 0xb321, 0x15c7: 0xb321, 0x15c8: 0xb321, 0x15c9: 0xb339, 0x15ca: 0xb339, 0x15cb: 0xb339, + 0x15cc: 0xb339, 0x15cd: 0xb351, 0x15ce: 0xb351, 0x15cf: 0xb351, 0x15d0: 0xb351, 0x15d1: 0xb369, + 0x15d2: 0xb369, 0x15d3: 0xb369, 0x15d4: 0xb369, 0x15d5: 0xb381, 0x15d6: 0xb381, 0x15d7: 0xb381, + 0x15d8: 0xb381, 0x15d9: 0xb399, 0x15da: 0xb399, 0x15db: 0xb399, 0x15dc: 0xb399, 0x15dd: 0xb3b1, + 0x15de: 0xb3b1, 0x15df: 0xb3b1, 0x15e0: 0xb3b1, 0x15e1: 0xb3c9, 0x15e2: 0xb3c9, 0x15e3: 0xb3c9, + 0x15e4: 0xb3c9, 0x15e5: 0xb3e1, 0x15e6: 0xb3e1, 0x15e7: 0xb3e1, 0x15e8: 0xb3e1, 0x15e9: 0xb3f9, + 0x15ea: 0xb3f9, 0x15eb: 0xb3f9, 0x15ec: 0xb3f9, 0x15ed: 0xb411, 0x15ee: 0xb411, 0x15ef: 0x7ab1, + 0x15f0: 0x7ab1, 0x15f1: 0xb429, 0x15f2: 0xb429, 0x15f3: 0xb429, 0x15f4: 0xb429, 0x15f5: 0xb441, + 0x15f6: 0xb441, 0x15f7: 0xb469, 0x15f8: 0xb469, 0x15f9: 0xb491, 0x15fa: 0xb491, 0x15fb: 0xb4b9, + 0x15fc: 0xb4b9, 0x15fd: 0x0040, 0x15fe: 0x0040, 0x15ff: 0x03c0, + // Block 0x58, offset 0x1600 + 0x1600: 0x0040, 0x1601: 0xaefa, 0x1602: 0xb4e2, 0x1603: 0xaf6a, 0x1604: 0xafda, 0x1605: 0xafea, + 0x1606: 0xaf7a, 0x1607: 0xb4f2, 0x1608: 0x1fd2, 0x1609: 0x1fe2, 0x160a: 0xaf8a, 0x160b: 0x1fb2, + 0x160c: 0xaeda, 0x160d: 0xaf99, 0x160e: 0x29d1, 0x160f: 0xb502, 0x1610: 0x1f41, 0x1611: 0x00c9, + 0x1612: 0x0069, 0x1613: 0x0079, 0x1614: 0x1f51, 0x1615: 0x1f61, 0x1616: 0x1f71, 0x1617: 0x1f81, + 0x1618: 0x1f91, 0x1619: 0x1fa1, 0x161a: 0xaeea, 0x161b: 0x03c2, 0x161c: 0xafaa, 0x161d: 0x1fc2, + 0x161e: 0xafba, 0x161f: 0xaf0a, 0x1620: 0xaffa, 0x1621: 0x0039, 0x1622: 0x0ee9, 0x1623: 0x1159, + 0x1624: 0x0ef9, 0x1625: 0x0f09, 0x1626: 0x1199, 0x1627: 0x0f31, 0x1628: 0x0249, 0x1629: 0x0f41, + 0x162a: 0x0259, 0x162b: 0x0f51, 0x162c: 0x0359, 0x162d: 0x0f61, 0x162e: 0x0f71, 0x162f: 0x00d9, + 0x1630: 0x0f99, 0x1631: 0x2039, 0x1632: 0x0269, 0x1633: 0x01d9, 0x1634: 0x0fa9, 0x1635: 0x0fb9, + 0x1636: 0x1089, 0x1637: 0x0279, 0x1638: 0x0369, 0x1639: 0x0289, 0x163a: 0x13d1, 0x163b: 0xaf4a, + 0x163c: 0xafca, 0x163d: 0xaf5a, 0x163e: 0xb512, 0x163f: 0xaf1a, + // Block 0x59, offset 0x1640 + 0x1640: 0x1caa, 0x1641: 0x0039, 0x1642: 0x0ee9, 0x1643: 0x1159, 0x1644: 0x0ef9, 0x1645: 0x0f09, + 0x1646: 0x1199, 0x1647: 0x0f31, 0x1648: 0x0249, 0x1649: 0x0f41, 0x164a: 0x0259, 0x164b: 0x0f51, + 0x164c: 0x0359, 0x164d: 0x0f61, 0x164e: 0x0f71, 0x164f: 0x00d9, 0x1650: 0x0f99, 0x1651: 0x2039, + 0x1652: 0x0269, 0x1653: 0x01d9, 0x1654: 0x0fa9, 0x1655: 0x0fb9, 0x1656: 0x1089, 0x1657: 0x0279, + 0x1658: 0x0369, 0x1659: 0x0289, 0x165a: 0x13d1, 0x165b: 0xaf2a, 0x165c: 0xb522, 0x165d: 0xaf3a, + 0x165e: 0xb532, 0x165f: 0x80d5, 0x1660: 0x80f5, 0x1661: 0x29d1, 0x1662: 0x8115, 0x1663: 0x8115, + 0x1664: 0x8135, 0x1665: 0x8155, 0x1666: 0x8175, 0x1667: 0x8195, 0x1668: 0x81b5, 0x1669: 0x81d5, + 0x166a: 0x81f5, 0x166b: 0x8215, 0x166c: 0x8235, 0x166d: 0x8255, 0x166e: 0x8275, 0x166f: 0x8295, + 0x1670: 0x82b5, 0x1671: 0x82d5, 0x1672: 0x82f5, 0x1673: 0x8315, 0x1674: 0x8335, 0x1675: 0x8355, + 0x1676: 0x8375, 0x1677: 0x8395, 0x1678: 0x83b5, 0x1679: 0x83d5, 0x167a: 0x83f5, 0x167b: 0x8415, + 0x167c: 0x81b5, 0x167d: 0x8435, 0x167e: 0x8455, 0x167f: 0x8215, + // Block 0x5a, offset 0x1680 + 0x1680: 0x8475, 0x1681: 0x8495, 0x1682: 0x84b5, 0x1683: 0x84d5, 0x1684: 0x84f5, 0x1685: 0x8515, + 0x1686: 0x8535, 0x1687: 0x8555, 0x1688: 0x84d5, 0x1689: 0x8575, 0x168a: 0x84d5, 0x168b: 0x8595, + 0x168c: 0x8595, 0x168d: 0x85b5, 0x168e: 0x85b5, 0x168f: 0x85d5, 0x1690: 0x8515, 0x1691: 0x85f5, + 0x1692: 0x8615, 0x1693: 0x85f5, 0x1694: 0x8635, 0x1695: 0x8615, 0x1696: 0x8655, 0x1697: 0x8655, + 0x1698: 0x8675, 0x1699: 0x8675, 0x169a: 0x8695, 0x169b: 0x8695, 0x169c: 0x8615, 0x169d: 0x8115, + 0x169e: 0x86b5, 0x169f: 0x86d5, 0x16a0: 0x0040, 0x16a1: 0x86f5, 0x16a2: 0x8715, 0x16a3: 0x8735, + 0x16a4: 0x8755, 0x16a5: 0x8735, 0x16a6: 0x8775, 0x16a7: 0x8795, 0x16a8: 0x87b5, 0x16a9: 0x87b5, + 0x16aa: 0x87d5, 0x16ab: 0x87d5, 0x16ac: 0x87f5, 0x16ad: 0x87f5, 0x16ae: 0x87d5, 0x16af: 0x87d5, + 0x16b0: 0x8815, 0x16b1: 0x8835, 0x16b2: 0x8855, 0x16b3: 0x8875, 0x16b4: 0x8895, 0x16b5: 0x88b5, + 0x16b6: 0x88b5, 0x16b7: 0x88b5, 0x16b8: 0x88d5, 0x16b9: 0x88d5, 0x16ba: 0x88d5, 0x16bb: 0x88d5, + 0x16bc: 0x87b5, 0x16bd: 0x87b5, 0x16be: 0x87b5, 0x16bf: 0x0040, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x0040, 0x16c1: 0x0040, 0x16c2: 0x8715, 0x16c3: 0x86f5, 0x16c4: 0x88f5, 0x16c5: 0x86f5, + 0x16c6: 0x8715, 0x16c7: 0x86f5, 0x16c8: 0x0040, 0x16c9: 0x0040, 0x16ca: 0x8915, 0x16cb: 0x8715, + 0x16cc: 0x8935, 0x16cd: 0x88f5, 0x16ce: 0x8935, 0x16cf: 0x8715, 0x16d0: 0x0040, 0x16d1: 0x0040, + 0x16d2: 0x8955, 0x16d3: 0x8975, 0x16d4: 0x8875, 0x16d5: 0x8935, 0x16d6: 0x88f5, 0x16d7: 0x8935, + 0x16d8: 0x0040, 0x16d9: 0x0040, 0x16da: 0x8995, 0x16db: 0x89b5, 0x16dc: 0x8995, 0x16dd: 0x0040, + 0x16de: 0x0040, 0x16df: 0x0040, 0x16e0: 0xb541, 0x16e1: 0xb559, 0x16e2: 0xb571, 0x16e3: 0x89d6, + 0x16e4: 0xb589, 0x16e5: 0xb5a1, 0x16e6: 0x89f5, 0x16e7: 0x0040, 0x16e8: 0x8a15, 0x16e9: 0x8a35, + 0x16ea: 0x8a55, 0x16eb: 0x8a35, 0x16ec: 0x8a75, 0x16ed: 0x8a95, 0x16ee: 0x8ab5, 0x16ef: 0x0040, + 0x16f0: 0x0040, 0x16f1: 0x0040, 0x16f2: 0x0040, 0x16f3: 0x0040, 0x16f4: 0x0040, 0x16f5: 0x0040, + 0x16f6: 0x0040, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0340, 0x16fa: 0x0340, 0x16fb: 0x0340, + 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, + // Block 0x5c, offset 0x1700 + 0x1700: 0x0a08, 0x1701: 0x0a08, 0x1702: 0x0a08, 0x1703: 0x0a08, 0x1704: 0x0a08, 0x1705: 0x0c08, + 0x1706: 0x0808, 0x1707: 0x0c08, 0x1708: 0x0818, 0x1709: 0x0c08, 0x170a: 0x0c08, 0x170b: 0x0808, + 0x170c: 0x0808, 0x170d: 0x0908, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0c08, 0x1711: 0x0c08, + 0x1712: 0x0c08, 0x1713: 0x0a08, 0x1714: 0x0a08, 0x1715: 0x0a08, 0x1716: 0x0a08, 0x1717: 0x0908, + 0x1718: 0x0a08, 0x1719: 0x0a08, 0x171a: 0x0a08, 0x171b: 0x0a08, 0x171c: 0x0a08, 0x171d: 0x0c08, + 0x171e: 0x0a08, 0x171f: 0x0a08, 0x1720: 0x0a08, 0x1721: 0x0c08, 0x1722: 0x0808, 0x1723: 0x0808, + 0x1724: 0x0c08, 0x1725: 0x3308, 0x1726: 0x3308, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0040, + 0x172a: 0x0040, 0x172b: 0x0a18, 0x172c: 0x0a18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0c18, + 0x1730: 0x0818, 0x1731: 0x0818, 0x1732: 0x0818, 0x1733: 0x0818, 0x1734: 0x0818, 0x1735: 0x0818, + 0x1736: 0x0818, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, + 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, + // Block 0x5d, offset 0x1740 + 0x1740: 0x0a08, 0x1741: 0x0c08, 0x1742: 0x0a08, 0x1743: 0x0c08, 0x1744: 0x0c08, 0x1745: 0x0c08, + 0x1746: 0x0a08, 0x1747: 0x0a08, 0x1748: 0x0a08, 0x1749: 0x0c08, 0x174a: 0x0a08, 0x174b: 0x0a08, + 0x174c: 0x0c08, 0x174d: 0x0a08, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0a08, 0x1751: 0x0c08, + 0x1752: 0x0040, 0x1753: 0x0040, 0x1754: 0x0040, 0x1755: 0x0040, 0x1756: 0x0040, 0x1757: 0x0040, + 0x1758: 0x0040, 0x1759: 0x0818, 0x175a: 0x0818, 0x175b: 0x0818, 0x175c: 0x0818, 0x175d: 0x0040, + 0x175e: 0x0040, 0x175f: 0x0040, 0x1760: 0x0040, 0x1761: 0x0040, 0x1762: 0x0040, 0x1763: 0x0040, + 0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0c18, + 0x176a: 0x0c18, 0x176b: 0x0c18, 0x176c: 0x0c18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0818, + 0x1770: 0x0040, 0x1771: 0x0040, 0x1772: 0x0040, 0x1773: 0x0040, 0x1774: 0x0040, 0x1775: 0x0040, + 0x1776: 0x0040, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, + // Block 0x5e, offset 0x1780 + 0x1780: 0x3308, 0x1781: 0x3308, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x0040, 0x1785: 0x0008, + 0x1786: 0x0008, 0x1787: 0x0008, 0x1788: 0x0008, 0x1789: 0x0008, 0x178a: 0x0008, 0x178b: 0x0008, + 0x178c: 0x0008, 0x178d: 0x0040, 0x178e: 0x0040, 0x178f: 0x0008, 0x1790: 0x0008, 0x1791: 0x0040, + 0x1792: 0x0040, 0x1793: 0x0008, 0x1794: 0x0008, 0x1795: 0x0008, 0x1796: 0x0008, 0x1797: 0x0008, + 0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008, + 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0008, 0x17a3: 0x0008, + 0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0040, + 0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008, + 0x17b0: 0x0008, 0x17b1: 0x0040, 0x17b2: 0x0008, 0x17b3: 0x0008, 0x17b4: 0x0040, 0x17b5: 0x0008, + 0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0040, + 0x17bc: 0x3308, 0x17bd: 0x0008, 0x17be: 0x3008, 0x17bf: 0x3008, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x3308, 0x17c1: 0x3008, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x3008, 0x17c5: 0x0040, + 0x17c6: 0x0040, 0x17c7: 0x3008, 0x17c8: 0x3008, 0x17c9: 0x0040, 0x17ca: 0x0040, 0x17cb: 0x3008, + 0x17cc: 0x3008, 0x17cd: 0x3808, 0x17ce: 0x0040, 0x17cf: 0x0040, 0x17d0: 0x0008, 0x17d1: 0x0040, + 0x17d2: 0x0040, 0x17d3: 0x0040, 0x17d4: 0x0040, 0x17d5: 0x0040, 0x17d6: 0x0040, 0x17d7: 0x3008, + 0x17d8: 0x0040, 0x17d9: 0x0040, 0x17da: 0x0040, 0x17db: 0x0040, 0x17dc: 0x0040, 0x17dd: 0x0008, + 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x3008, 0x17e3: 0x3008, + 0x17e4: 0x0040, 0x17e5: 0x0040, 0x17e6: 0x3308, 0x17e7: 0x3308, 0x17e8: 0x3308, 0x17e9: 0x3308, + 0x17ea: 0x3308, 0x17eb: 0x3308, 0x17ec: 0x3308, 0x17ed: 0x0040, 0x17ee: 0x0040, 0x17ef: 0x0040, + 0x17f0: 0x3308, 0x17f1: 0x3308, 0x17f2: 0x3308, 0x17f3: 0x3308, 0x17f4: 0x3308, 0x17f5: 0x0040, + 0x17f6: 0x0040, 0x17f7: 0x0040, 0x17f8: 0x0040, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x0040, + 0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040, + // Block 0x60, offset 0x1800 + 0x1800: 0x0039, 0x1801: 0x0ee9, 0x1802: 0x1159, 0x1803: 0x0ef9, 0x1804: 0x0f09, 0x1805: 0x1199, + 0x1806: 0x0f31, 0x1807: 0x0249, 0x1808: 0x0f41, 0x1809: 0x0259, 0x180a: 0x0f51, 0x180b: 0x0359, + 0x180c: 0x0f61, 0x180d: 0x0f71, 0x180e: 0x00d9, 0x180f: 0x0f99, 0x1810: 0x2039, 0x1811: 0x0269, + 0x1812: 0x01d9, 0x1813: 0x0fa9, 0x1814: 0x0fb9, 0x1815: 0x1089, 0x1816: 0x0279, 0x1817: 0x0369, + 0x1818: 0x0289, 0x1819: 0x13d1, 0x181a: 0x0039, 0x181b: 0x0ee9, 0x181c: 0x1159, 0x181d: 0x0ef9, + 0x181e: 0x0f09, 0x181f: 0x1199, 0x1820: 0x0f31, 0x1821: 0x0249, 0x1822: 0x0f41, 0x1823: 0x0259, + 0x1824: 0x0f51, 0x1825: 0x0359, 0x1826: 0x0f61, 0x1827: 0x0f71, 0x1828: 0x00d9, 0x1829: 0x0f99, + 0x182a: 0x2039, 0x182b: 0x0269, 0x182c: 0x01d9, 0x182d: 0x0fa9, 0x182e: 0x0fb9, 0x182f: 0x1089, + 0x1830: 0x0279, 0x1831: 0x0369, 0x1832: 0x0289, 0x1833: 0x13d1, 0x1834: 0x0039, 0x1835: 0x0ee9, + 0x1836: 0x1159, 0x1837: 0x0ef9, 0x1838: 0x0f09, 0x1839: 0x1199, 0x183a: 0x0f31, 0x183b: 0x0249, + 0x183c: 0x0f41, 0x183d: 0x0259, 0x183e: 0x0f51, 0x183f: 0x0359, + // Block 0x61, offset 0x1840 + 0x1840: 0x0f61, 0x1841: 0x0f71, 0x1842: 0x00d9, 0x1843: 0x0f99, 0x1844: 0x2039, 0x1845: 0x0269, + 0x1846: 0x01d9, 0x1847: 0x0fa9, 0x1848: 0x0fb9, 0x1849: 0x1089, 0x184a: 0x0279, 0x184b: 0x0369, + 0x184c: 0x0289, 0x184d: 0x13d1, 0x184e: 0x0039, 0x184f: 0x0ee9, 0x1850: 0x1159, 0x1851: 0x0ef9, + 0x1852: 0x0f09, 0x1853: 0x1199, 0x1854: 0x0f31, 0x1855: 0x0040, 0x1856: 0x0f41, 0x1857: 0x0259, + 0x1858: 0x0f51, 0x1859: 0x0359, 0x185a: 0x0f61, 0x185b: 0x0f71, 0x185c: 0x00d9, 0x185d: 0x0f99, + 0x185e: 0x2039, 0x185f: 0x0269, 0x1860: 0x01d9, 0x1861: 0x0fa9, 0x1862: 0x0fb9, 0x1863: 0x1089, + 0x1864: 0x0279, 0x1865: 0x0369, 0x1866: 0x0289, 0x1867: 0x13d1, 0x1868: 0x0039, 0x1869: 0x0ee9, + 0x186a: 0x1159, 0x186b: 0x0ef9, 0x186c: 0x0f09, 0x186d: 0x1199, 0x186e: 0x0f31, 0x186f: 0x0249, + 0x1870: 0x0f41, 0x1871: 0x0259, 0x1872: 0x0f51, 0x1873: 0x0359, 0x1874: 0x0f61, 0x1875: 0x0f71, + 0x1876: 0x00d9, 0x1877: 0x0f99, 0x1878: 0x2039, 0x1879: 0x0269, 0x187a: 0x01d9, 0x187b: 0x0fa9, + 0x187c: 0x0fb9, 0x187d: 0x1089, 0x187e: 0x0279, 0x187f: 0x0369, + // Block 0x62, offset 0x1880 + 0x1880: 0x0289, 0x1881: 0x13d1, 0x1882: 0x0039, 0x1883: 0x0ee9, 0x1884: 0x1159, 0x1885: 0x0ef9, + 0x1886: 0x0f09, 0x1887: 0x1199, 0x1888: 0x0f31, 0x1889: 0x0249, 0x188a: 0x0f41, 0x188b: 0x0259, + 0x188c: 0x0f51, 0x188d: 0x0359, 0x188e: 0x0f61, 0x188f: 0x0f71, 0x1890: 0x00d9, 0x1891: 0x0f99, + 0x1892: 0x2039, 0x1893: 0x0269, 0x1894: 0x01d9, 0x1895: 0x0fa9, 0x1896: 0x0fb9, 0x1897: 0x1089, + 0x1898: 0x0279, 0x1899: 0x0369, 0x189a: 0x0289, 0x189b: 0x13d1, 0x189c: 0x0039, 0x189d: 0x0040, + 0x189e: 0x1159, 0x189f: 0x0ef9, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0f31, 0x18a3: 0x0040, + 0x18a4: 0x0040, 0x18a5: 0x0259, 0x18a6: 0x0f51, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0f71, + 0x18aa: 0x00d9, 0x18ab: 0x0f99, 0x18ac: 0x2039, 0x18ad: 0x0040, 0x18ae: 0x01d9, 0x18af: 0x0fa9, + 0x18b0: 0x0fb9, 0x18b1: 0x1089, 0x18b2: 0x0279, 0x18b3: 0x0369, 0x18b4: 0x0289, 0x18b5: 0x13d1, + 0x18b6: 0x0039, 0x18b7: 0x0ee9, 0x18b8: 0x1159, 0x18b9: 0x0ef9, 0x18ba: 0x0040, 0x18bb: 0x1199, + 0x18bc: 0x0040, 0x18bd: 0x0249, 0x18be: 0x0f41, 0x18bf: 0x0259, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x0f51, 0x18c1: 0x0359, 0x18c2: 0x0f61, 0x18c3: 0x0f71, 0x18c4: 0x0040, 0x18c5: 0x0f99, + 0x18c6: 0x2039, 0x18c7: 0x0269, 0x18c8: 0x01d9, 0x18c9: 0x0fa9, 0x18ca: 0x0fb9, 0x18cb: 0x1089, + 0x18cc: 0x0279, 0x18cd: 0x0369, 0x18ce: 0x0289, 0x18cf: 0x13d1, 0x18d0: 0x0039, 0x18d1: 0x0ee9, + 0x18d2: 0x1159, 0x18d3: 0x0ef9, 0x18d4: 0x0f09, 0x18d5: 0x1199, 0x18d6: 0x0f31, 0x18d7: 0x0249, + 0x18d8: 0x0f41, 0x18d9: 0x0259, 0x18da: 0x0f51, 0x18db: 0x0359, 0x18dc: 0x0f61, 0x18dd: 0x0f71, + 0x18de: 0x00d9, 0x18df: 0x0f99, 0x18e0: 0x2039, 0x18e1: 0x0269, 0x18e2: 0x01d9, 0x18e3: 0x0fa9, + 0x18e4: 0x0fb9, 0x18e5: 0x1089, 0x18e6: 0x0279, 0x18e7: 0x0369, 0x18e8: 0x0289, 0x18e9: 0x13d1, + 0x18ea: 0x0039, 0x18eb: 0x0ee9, 0x18ec: 0x1159, 0x18ed: 0x0ef9, 0x18ee: 0x0f09, 0x18ef: 0x1199, + 0x18f0: 0x0f31, 0x18f1: 0x0249, 0x18f2: 0x0f41, 0x18f3: 0x0259, 0x18f4: 0x0f51, 0x18f5: 0x0359, + 0x18f6: 0x0f61, 0x18f7: 0x0f71, 0x18f8: 0x00d9, 0x18f9: 0x0f99, 0x18fa: 0x2039, 0x18fb: 0x0269, + 0x18fc: 0x01d9, 0x18fd: 0x0fa9, 0x18fe: 0x0fb9, 0x18ff: 0x1089, + // Block 0x64, offset 0x1900 + 0x1900: 0x0279, 0x1901: 0x0369, 0x1902: 0x0289, 0x1903: 0x13d1, 0x1904: 0x0039, 0x1905: 0x0ee9, + 0x1906: 0x0040, 0x1907: 0x0ef9, 0x1908: 0x0f09, 0x1909: 0x1199, 0x190a: 0x0f31, 0x190b: 0x0040, + 0x190c: 0x0040, 0x190d: 0x0259, 0x190e: 0x0f51, 0x190f: 0x0359, 0x1910: 0x0f61, 0x1911: 0x0f71, + 0x1912: 0x00d9, 0x1913: 0x0f99, 0x1914: 0x2039, 0x1915: 0x0040, 0x1916: 0x01d9, 0x1917: 0x0fa9, + 0x1918: 0x0fb9, 0x1919: 0x1089, 0x191a: 0x0279, 0x191b: 0x0369, 0x191c: 0x0289, 0x191d: 0x0040, + 0x191e: 0x0039, 0x191f: 0x0ee9, 0x1920: 0x1159, 0x1921: 0x0ef9, 0x1922: 0x0f09, 0x1923: 0x1199, + 0x1924: 0x0f31, 0x1925: 0x0249, 0x1926: 0x0f41, 0x1927: 0x0259, 0x1928: 0x0f51, 0x1929: 0x0359, + 0x192a: 0x0f61, 0x192b: 0x0f71, 0x192c: 0x00d9, 0x192d: 0x0f99, 0x192e: 0x2039, 0x192f: 0x0269, + 0x1930: 0x01d9, 0x1931: 0x0fa9, 0x1932: 0x0fb9, 0x1933: 0x1089, 0x1934: 0x0279, 0x1935: 0x0369, + 0x1936: 0x0289, 0x1937: 0x13d1, 0x1938: 0x0039, 0x1939: 0x0ee9, 0x193a: 0x0040, 0x193b: 0x0ef9, + 0x193c: 0x0f09, 0x193d: 0x1199, 0x193e: 0x0f31, 0x193f: 0x0040, + // Block 0x65, offset 0x1940 + 0x1940: 0x0f41, 0x1941: 0x0259, 0x1942: 0x0f51, 0x1943: 0x0359, 0x1944: 0x0f61, 0x1945: 0x0040, + 0x1946: 0x00d9, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x01d9, 0x194b: 0x0fa9, + 0x194c: 0x0fb9, 0x194d: 0x1089, 0x194e: 0x0279, 0x194f: 0x0369, 0x1950: 0x0289, 0x1951: 0x0040, + 0x1952: 0x0039, 0x1953: 0x0ee9, 0x1954: 0x1159, 0x1955: 0x0ef9, 0x1956: 0x0f09, 0x1957: 0x1199, + 0x1958: 0x0f31, 0x1959: 0x0249, 0x195a: 0x0f41, 0x195b: 0x0259, 0x195c: 0x0f51, 0x195d: 0x0359, + 0x195e: 0x0f61, 0x195f: 0x0f71, 0x1960: 0x00d9, 0x1961: 0x0f99, 0x1962: 0x2039, 0x1963: 0x0269, + 0x1964: 0x01d9, 0x1965: 0x0fa9, 0x1966: 0x0fb9, 0x1967: 0x1089, 0x1968: 0x0279, 0x1969: 0x0369, + 0x196a: 0x0289, 0x196b: 0x13d1, 0x196c: 0x0039, 0x196d: 0x0ee9, 0x196e: 0x1159, 0x196f: 0x0ef9, + 0x1970: 0x0f09, 0x1971: 0x1199, 0x1972: 0x0f31, 0x1973: 0x0249, 0x1974: 0x0f41, 0x1975: 0x0259, + 0x1976: 0x0f51, 0x1977: 0x0359, 0x1978: 0x0f61, 0x1979: 0x0f71, 0x197a: 0x00d9, 0x197b: 0x0f99, + 0x197c: 0x2039, 0x197d: 0x0269, 0x197e: 0x01d9, 0x197f: 0x0fa9, + // Block 0x66, offset 0x1980 + 0x1980: 0x0fb9, 0x1981: 0x1089, 0x1982: 0x0279, 0x1983: 0x0369, 0x1984: 0x0289, 0x1985: 0x13d1, + 0x1986: 0x0039, 0x1987: 0x0ee9, 0x1988: 0x1159, 0x1989: 0x0ef9, 0x198a: 0x0f09, 0x198b: 0x1199, + 0x198c: 0x0f31, 0x198d: 0x0249, 0x198e: 0x0f41, 0x198f: 0x0259, 0x1990: 0x0f51, 0x1991: 0x0359, + 0x1992: 0x0f61, 0x1993: 0x0f71, 0x1994: 0x00d9, 0x1995: 0x0f99, 0x1996: 0x2039, 0x1997: 0x0269, + 0x1998: 0x01d9, 0x1999: 0x0fa9, 0x199a: 0x0fb9, 0x199b: 0x1089, 0x199c: 0x0279, 0x199d: 0x0369, + 0x199e: 0x0289, 0x199f: 0x13d1, 0x19a0: 0x0039, 0x19a1: 0x0ee9, 0x19a2: 0x1159, 0x19a3: 0x0ef9, + 0x19a4: 0x0f09, 0x19a5: 0x1199, 0x19a6: 0x0f31, 0x19a7: 0x0249, 0x19a8: 0x0f41, 0x19a9: 0x0259, + 0x19aa: 0x0f51, 0x19ab: 0x0359, 0x19ac: 0x0f61, 0x19ad: 0x0f71, 0x19ae: 0x00d9, 0x19af: 0x0f99, + 0x19b0: 0x2039, 0x19b1: 0x0269, 0x19b2: 0x01d9, 0x19b3: 0x0fa9, 0x19b4: 0x0fb9, 0x19b5: 0x1089, + 0x19b6: 0x0279, 0x19b7: 0x0369, 0x19b8: 0x0289, 0x19b9: 0x13d1, 0x19ba: 0x0039, 0x19bb: 0x0ee9, + 0x19bc: 0x1159, 0x19bd: 0x0ef9, 0x19be: 0x0f09, 0x19bf: 0x1199, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x0f31, 0x19c1: 0x0249, 0x19c2: 0x0f41, 0x19c3: 0x0259, 0x19c4: 0x0f51, 0x19c5: 0x0359, + 0x19c6: 0x0f61, 0x19c7: 0x0f71, 0x19c8: 0x00d9, 0x19c9: 0x0f99, 0x19ca: 0x2039, 0x19cb: 0x0269, + 0x19cc: 0x01d9, 0x19cd: 0x0fa9, 0x19ce: 0x0fb9, 0x19cf: 0x1089, 0x19d0: 0x0279, 0x19d1: 0x0369, + 0x19d2: 0x0289, 0x19d3: 0x13d1, 0x19d4: 0x0039, 0x19d5: 0x0ee9, 0x19d6: 0x1159, 0x19d7: 0x0ef9, + 0x19d8: 0x0f09, 0x19d9: 0x1199, 0x19da: 0x0f31, 0x19db: 0x0249, 0x19dc: 0x0f41, 0x19dd: 0x0259, + 0x19de: 0x0f51, 0x19df: 0x0359, 0x19e0: 0x0f61, 0x19e1: 0x0f71, 0x19e2: 0x00d9, 0x19e3: 0x0f99, + 0x19e4: 0x2039, 0x19e5: 0x0269, 0x19e6: 0x01d9, 0x19e7: 0x0fa9, 0x19e8: 0x0fb9, 0x19e9: 0x1089, + 0x19ea: 0x0279, 0x19eb: 0x0369, 0x19ec: 0x0289, 0x19ed: 0x13d1, 0x19ee: 0x0039, 0x19ef: 0x0ee9, + 0x19f0: 0x1159, 0x19f1: 0x0ef9, 0x19f2: 0x0f09, 0x19f3: 0x1199, 0x19f4: 0x0f31, 0x19f5: 0x0249, + 0x19f6: 0x0f41, 0x19f7: 0x0259, 0x19f8: 0x0f51, 0x19f9: 0x0359, 0x19fa: 0x0f61, 0x19fb: 0x0f71, + 0x19fc: 0x00d9, 0x19fd: 0x0f99, 0x19fe: 0x2039, 0x19ff: 0x0269, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x01d9, 0x1a01: 0x0fa9, 0x1a02: 0x0fb9, 0x1a03: 0x1089, 0x1a04: 0x0279, 0x1a05: 0x0369, + 0x1a06: 0x0289, 0x1a07: 0x13d1, 0x1a08: 0x0039, 0x1a09: 0x0ee9, 0x1a0a: 0x1159, 0x1a0b: 0x0ef9, + 0x1a0c: 0x0f09, 0x1a0d: 0x1199, 0x1a0e: 0x0f31, 0x1a0f: 0x0249, 0x1a10: 0x0f41, 0x1a11: 0x0259, + 0x1a12: 0x0f51, 0x1a13: 0x0359, 0x1a14: 0x0f61, 0x1a15: 0x0f71, 0x1a16: 0x00d9, 0x1a17: 0x0f99, + 0x1a18: 0x2039, 0x1a19: 0x0269, 0x1a1a: 0x01d9, 0x1a1b: 0x0fa9, 0x1a1c: 0x0fb9, 0x1a1d: 0x1089, + 0x1a1e: 0x0279, 0x1a1f: 0x0369, 0x1a20: 0x0289, 0x1a21: 0x13d1, 0x1a22: 0x0039, 0x1a23: 0x0ee9, + 0x1a24: 0x1159, 0x1a25: 0x0ef9, 0x1a26: 0x0f09, 0x1a27: 0x1199, 0x1a28: 0x0f31, 0x1a29: 0x0249, + 0x1a2a: 0x0f41, 0x1a2b: 0x0259, 0x1a2c: 0x0f51, 0x1a2d: 0x0359, 0x1a2e: 0x0f61, 0x1a2f: 0x0f71, + 0x1a30: 0x00d9, 0x1a31: 0x0f99, 0x1a32: 0x2039, 0x1a33: 0x0269, 0x1a34: 0x01d9, 0x1a35: 0x0fa9, + 0x1a36: 0x0fb9, 0x1a37: 0x1089, 0x1a38: 0x0279, 0x1a39: 0x0369, 0x1a3a: 0x0289, 0x1a3b: 0x13d1, + 0x1a3c: 0x0039, 0x1a3d: 0x0ee9, 0x1a3e: 0x1159, 0x1a3f: 0x0ef9, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x0f09, 0x1a41: 0x1199, 0x1a42: 0x0f31, 0x1a43: 0x0249, 0x1a44: 0x0f41, 0x1a45: 0x0259, + 0x1a46: 0x0f51, 0x1a47: 0x0359, 0x1a48: 0x0f61, 0x1a49: 0x0f71, 0x1a4a: 0x00d9, 0x1a4b: 0x0f99, + 0x1a4c: 0x2039, 0x1a4d: 0x0269, 0x1a4e: 0x01d9, 0x1a4f: 0x0fa9, 0x1a50: 0x0fb9, 0x1a51: 0x1089, + 0x1a52: 0x0279, 0x1a53: 0x0369, 0x1a54: 0x0289, 0x1a55: 0x13d1, 0x1a56: 0x0039, 0x1a57: 0x0ee9, + 0x1a58: 0x1159, 0x1a59: 0x0ef9, 0x1a5a: 0x0f09, 0x1a5b: 0x1199, 0x1a5c: 0x0f31, 0x1a5d: 0x0249, + 0x1a5e: 0x0f41, 0x1a5f: 0x0259, 0x1a60: 0x0f51, 0x1a61: 0x0359, 0x1a62: 0x0f61, 0x1a63: 0x0f71, + 0x1a64: 0x00d9, 0x1a65: 0x0f99, 0x1a66: 0x2039, 0x1a67: 0x0269, 0x1a68: 0x01d9, 0x1a69: 0x0fa9, + 0x1a6a: 0x0fb9, 0x1a6b: 0x1089, 0x1a6c: 0x0279, 0x1a6d: 0x0369, 0x1a6e: 0x0289, 0x1a6f: 0x13d1, + 0x1a70: 0x0039, 0x1a71: 0x0ee9, 0x1a72: 0x1159, 0x1a73: 0x0ef9, 0x1a74: 0x0f09, 0x1a75: 0x1199, + 0x1a76: 0x0f31, 0x1a77: 0x0249, 0x1a78: 0x0f41, 0x1a79: 0x0259, 0x1a7a: 0x0f51, 0x1a7b: 0x0359, + 0x1a7c: 0x0f61, 0x1a7d: 0x0f71, 0x1a7e: 0x00d9, 0x1a7f: 0x0f99, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x2039, 0x1a81: 0x0269, 0x1a82: 0x01d9, 0x1a83: 0x0fa9, 0x1a84: 0x0fb9, 0x1a85: 0x1089, + 0x1a86: 0x0279, 0x1a87: 0x0369, 0x1a88: 0x0289, 0x1a89: 0x13d1, 0x1a8a: 0x0039, 0x1a8b: 0x0ee9, + 0x1a8c: 0x1159, 0x1a8d: 0x0ef9, 0x1a8e: 0x0f09, 0x1a8f: 0x1199, 0x1a90: 0x0f31, 0x1a91: 0x0249, + 0x1a92: 0x0f41, 0x1a93: 0x0259, 0x1a94: 0x0f51, 0x1a95: 0x0359, 0x1a96: 0x0f61, 0x1a97: 0x0f71, + 0x1a98: 0x00d9, 0x1a99: 0x0f99, 0x1a9a: 0x2039, 0x1a9b: 0x0269, 0x1a9c: 0x01d9, 0x1a9d: 0x0fa9, + 0x1a9e: 0x0fb9, 0x1a9f: 0x1089, 0x1aa0: 0x0279, 0x1aa1: 0x0369, 0x1aa2: 0x0289, 0x1aa3: 0x13d1, + 0x1aa4: 0xba81, 0x1aa5: 0xba99, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0xbab1, 0x1aa9: 0x1099, + 0x1aaa: 0x10b1, 0x1aab: 0x10c9, 0x1aac: 0xbac9, 0x1aad: 0xbae1, 0x1aae: 0xbaf9, 0x1aaf: 0x1429, + 0x1ab0: 0x1a31, 0x1ab1: 0xbb11, 0x1ab2: 0xbb29, 0x1ab3: 0xbb41, 0x1ab4: 0xbb59, 0x1ab5: 0xbb71, + 0x1ab6: 0xbb89, 0x1ab7: 0x2109, 0x1ab8: 0x1111, 0x1ab9: 0x1429, 0x1aba: 0xbba1, 0x1abb: 0xbbb9, + 0x1abc: 0xbbd1, 0x1abd: 0x10e1, 0x1abe: 0x10f9, 0x1abf: 0xbbe9, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x2079, 0x1ac1: 0xbc01, 0x1ac2: 0xbab1, 0x1ac3: 0x1099, 0x1ac4: 0x10b1, 0x1ac5: 0x10c9, + 0x1ac6: 0xbac9, 0x1ac7: 0xbae1, 0x1ac8: 0xbaf9, 0x1ac9: 0x1429, 0x1aca: 0x1a31, 0x1acb: 0xbb11, + 0x1acc: 0xbb29, 0x1acd: 0xbb41, 0x1ace: 0xbb59, 0x1acf: 0xbb71, 0x1ad0: 0xbb89, 0x1ad1: 0x2109, + 0x1ad2: 0x1111, 0x1ad3: 0xbba1, 0x1ad4: 0xbba1, 0x1ad5: 0xbbb9, 0x1ad6: 0xbbd1, 0x1ad7: 0x10e1, + 0x1ad8: 0x10f9, 0x1ad9: 0xbbe9, 0x1ada: 0x2079, 0x1adb: 0xbc21, 0x1adc: 0xbac9, 0x1add: 0x1429, + 0x1ade: 0xbb11, 0x1adf: 0x10e1, 0x1ae0: 0x1111, 0x1ae1: 0x2109, 0x1ae2: 0xbab1, 0x1ae3: 0x1099, + 0x1ae4: 0x10b1, 0x1ae5: 0x10c9, 0x1ae6: 0xbac9, 0x1ae7: 0xbae1, 0x1ae8: 0xbaf9, 0x1ae9: 0x1429, + 0x1aea: 0x1a31, 0x1aeb: 0xbb11, 0x1aec: 0xbb29, 0x1aed: 0xbb41, 0x1aee: 0xbb59, 0x1aef: 0xbb71, + 0x1af0: 0xbb89, 0x1af1: 0x2109, 0x1af2: 0x1111, 0x1af3: 0x1429, 0x1af4: 0xbba1, 0x1af5: 0xbbb9, + 0x1af6: 0xbbd1, 0x1af7: 0x10e1, 0x1af8: 0x10f9, 0x1af9: 0xbbe9, 0x1afa: 0x2079, 0x1afb: 0xbc01, + 0x1afc: 0xbab1, 0x1afd: 0x1099, 0x1afe: 0x10b1, 0x1aff: 0x10c9, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0xbac9, 0x1b01: 0xbae1, 0x1b02: 0xbaf9, 0x1b03: 0x1429, 0x1b04: 0x1a31, 0x1b05: 0xbb11, + 0x1b06: 0xbb29, 0x1b07: 0xbb41, 0x1b08: 0xbb59, 0x1b09: 0xbb71, 0x1b0a: 0xbb89, 0x1b0b: 0x2109, + 0x1b0c: 0x1111, 0x1b0d: 0xbba1, 0x1b0e: 0xbba1, 0x1b0f: 0xbbb9, 0x1b10: 0xbbd1, 0x1b11: 0x10e1, + 0x1b12: 0x10f9, 0x1b13: 0xbbe9, 0x1b14: 0x2079, 0x1b15: 0xbc21, 0x1b16: 0xbac9, 0x1b17: 0x1429, + 0x1b18: 0xbb11, 0x1b19: 0x10e1, 0x1b1a: 0x1111, 0x1b1b: 0x2109, 0x1b1c: 0xbab1, 0x1b1d: 0x1099, + 0x1b1e: 0x10b1, 0x1b1f: 0x10c9, 0x1b20: 0xbac9, 0x1b21: 0xbae1, 0x1b22: 0xbaf9, 0x1b23: 0x1429, + 0x1b24: 0x1a31, 0x1b25: 0xbb11, 0x1b26: 0xbb29, 0x1b27: 0xbb41, 0x1b28: 0xbb59, 0x1b29: 0xbb71, + 0x1b2a: 0xbb89, 0x1b2b: 0x2109, 0x1b2c: 0x1111, 0x1b2d: 0x1429, 0x1b2e: 0xbba1, 0x1b2f: 0xbbb9, + 0x1b30: 0xbbd1, 0x1b31: 0x10e1, 0x1b32: 0x10f9, 0x1b33: 0xbbe9, 0x1b34: 0x2079, 0x1b35: 0xbc01, + 0x1b36: 0xbab1, 0x1b37: 0x1099, 0x1b38: 0x10b1, 0x1b39: 0x10c9, 0x1b3a: 0xbac9, 0x1b3b: 0xbae1, + 0x1b3c: 0xbaf9, 0x1b3d: 0x1429, 0x1b3e: 0x1a31, 0x1b3f: 0xbb11, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0xbb29, 0x1b41: 0xbb41, 0x1b42: 0xbb59, 0x1b43: 0xbb71, 0x1b44: 0xbb89, 0x1b45: 0x2109, + 0x1b46: 0x1111, 0x1b47: 0xbba1, 0x1b48: 0xbba1, 0x1b49: 0xbbb9, 0x1b4a: 0xbbd1, 0x1b4b: 0x10e1, + 0x1b4c: 0x10f9, 0x1b4d: 0xbbe9, 0x1b4e: 0x2079, 0x1b4f: 0xbc21, 0x1b50: 0xbac9, 0x1b51: 0x1429, + 0x1b52: 0xbb11, 0x1b53: 0x10e1, 0x1b54: 0x1111, 0x1b55: 0x2109, 0x1b56: 0xbab1, 0x1b57: 0x1099, + 0x1b58: 0x10b1, 0x1b59: 0x10c9, 0x1b5a: 0xbac9, 0x1b5b: 0xbae1, 0x1b5c: 0xbaf9, 0x1b5d: 0x1429, + 0x1b5e: 0x1a31, 0x1b5f: 0xbb11, 0x1b60: 0xbb29, 0x1b61: 0xbb41, 0x1b62: 0xbb59, 0x1b63: 0xbb71, + 0x1b64: 0xbb89, 0x1b65: 0x2109, 0x1b66: 0x1111, 0x1b67: 0x1429, 0x1b68: 0xbba1, 0x1b69: 0xbbb9, + 0x1b6a: 0xbbd1, 0x1b6b: 0x10e1, 0x1b6c: 0x10f9, 0x1b6d: 0xbbe9, 0x1b6e: 0x2079, 0x1b6f: 0xbc01, + 0x1b70: 0xbab1, 0x1b71: 0x1099, 0x1b72: 0x10b1, 0x1b73: 0x10c9, 0x1b74: 0xbac9, 0x1b75: 0xbae1, + 0x1b76: 0xbaf9, 0x1b77: 0x1429, 0x1b78: 0x1a31, 0x1b79: 0xbb11, 0x1b7a: 0xbb29, 0x1b7b: 0xbb41, + 0x1b7c: 0xbb59, 0x1b7d: 0xbb71, 0x1b7e: 0xbb89, 0x1b7f: 0x2109, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x1111, 0x1b81: 0xbba1, 0x1b82: 0xbba1, 0x1b83: 0xbbb9, 0x1b84: 0xbbd1, 0x1b85: 0x10e1, + 0x1b86: 0x10f9, 0x1b87: 0xbbe9, 0x1b88: 0x2079, 0x1b89: 0xbc21, 0x1b8a: 0xbac9, 0x1b8b: 0x1429, + 0x1b8c: 0xbb11, 0x1b8d: 0x10e1, 0x1b8e: 0x1111, 0x1b8f: 0x2109, 0x1b90: 0xbab1, 0x1b91: 0x1099, + 0x1b92: 0x10b1, 0x1b93: 0x10c9, 0x1b94: 0xbac9, 0x1b95: 0xbae1, 0x1b96: 0xbaf9, 0x1b97: 0x1429, + 0x1b98: 0x1a31, 0x1b99: 0xbb11, 0x1b9a: 0xbb29, 0x1b9b: 0xbb41, 0x1b9c: 0xbb59, 0x1b9d: 0xbb71, + 0x1b9e: 0xbb89, 0x1b9f: 0x2109, 0x1ba0: 0x1111, 0x1ba1: 0x1429, 0x1ba2: 0xbba1, 0x1ba3: 0xbbb9, + 0x1ba4: 0xbbd1, 0x1ba5: 0x10e1, 0x1ba6: 0x10f9, 0x1ba7: 0xbbe9, 0x1ba8: 0x2079, 0x1ba9: 0xbc01, + 0x1baa: 0xbab1, 0x1bab: 0x1099, 0x1bac: 0x10b1, 0x1bad: 0x10c9, 0x1bae: 0xbac9, 0x1baf: 0xbae1, + 0x1bb0: 0xbaf9, 0x1bb1: 0x1429, 0x1bb2: 0x1a31, 0x1bb3: 0xbb11, 0x1bb4: 0xbb29, 0x1bb5: 0xbb41, + 0x1bb6: 0xbb59, 0x1bb7: 0xbb71, 0x1bb8: 0xbb89, 0x1bb9: 0x2109, 0x1bba: 0x1111, 0x1bbb: 0xbba1, + 0x1bbc: 0xbba1, 0x1bbd: 0xbbb9, 0x1bbe: 0xbbd1, 0x1bbf: 0x10e1, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x10f9, 0x1bc1: 0xbbe9, 0x1bc2: 0x2079, 0x1bc3: 0xbc21, 0x1bc4: 0xbac9, 0x1bc5: 0x1429, + 0x1bc6: 0xbb11, 0x1bc7: 0x10e1, 0x1bc8: 0x1111, 0x1bc9: 0x2109, 0x1bca: 0xbc41, 0x1bcb: 0xbc41, + 0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x1f41, 0x1bcf: 0x00c9, 0x1bd0: 0x0069, 0x1bd1: 0x0079, + 0x1bd2: 0x1f51, 0x1bd3: 0x1f61, 0x1bd4: 0x1f71, 0x1bd5: 0x1f81, 0x1bd6: 0x1f91, 0x1bd7: 0x1fa1, + 0x1bd8: 0x1f41, 0x1bd9: 0x00c9, 0x1bda: 0x0069, 0x1bdb: 0x0079, 0x1bdc: 0x1f51, 0x1bdd: 0x1f61, + 0x1bde: 0x1f71, 0x1bdf: 0x1f81, 0x1be0: 0x1f91, 0x1be1: 0x1fa1, 0x1be2: 0x1f41, 0x1be3: 0x00c9, + 0x1be4: 0x0069, 0x1be5: 0x0079, 0x1be6: 0x1f51, 0x1be7: 0x1f61, 0x1be8: 0x1f71, 0x1be9: 0x1f81, + 0x1bea: 0x1f91, 0x1beb: 0x1fa1, 0x1bec: 0x1f41, 0x1bed: 0x00c9, 0x1bee: 0x0069, 0x1bef: 0x0079, + 0x1bf0: 0x1f51, 0x1bf1: 0x1f61, 0x1bf2: 0x1f71, 0x1bf3: 0x1f81, 0x1bf4: 0x1f91, 0x1bf5: 0x1fa1, + 0x1bf6: 0x1f41, 0x1bf7: 0x00c9, 0x1bf8: 0x0069, 0x1bf9: 0x0079, 0x1bfa: 0x1f51, 0x1bfb: 0x1f61, + 0x1bfc: 0x1f71, 0x1bfd: 0x1f81, 0x1bfe: 0x1f91, 0x1bff: 0x1fa1, + // Block 0x70, offset 0x1c00 + 0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115, + 0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135, + 0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115, + 0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175, + 0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115, + 0x1c1e: 0x8b05, 0x1c1f: 0x8b05, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08, + 0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08, + 0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08, + 0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08, + 0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08, + 0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08, + // Block 0x71, offset 0x1c40 + 0x1c40: 0xb189, 0x1c41: 0xb1a1, 0x1c42: 0xb201, 0x1c43: 0xb249, 0x1c44: 0x0040, 0x1c45: 0xb411, + 0x1c46: 0xb291, 0x1c47: 0xb219, 0x1c48: 0xb309, 0x1c49: 0xb429, 0x1c4a: 0xb399, 0x1c4b: 0xb3b1, + 0x1c4c: 0xb3c9, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0xb369, 0x1c51: 0xb2d9, + 0x1c52: 0xb381, 0x1c53: 0xb279, 0x1c54: 0xb2c1, 0x1c55: 0xb1d1, 0x1c56: 0xb1e9, 0x1c57: 0xb231, + 0x1c58: 0xb261, 0x1c59: 0xb2f1, 0x1c5a: 0xb321, 0x1c5b: 0xb351, 0x1c5c: 0xbc59, 0x1c5d: 0x7949, + 0x1c5e: 0xbc71, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, + 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0x0040, 0x1c69: 0xb429, + 0x1c6a: 0xb399, 0x1c6b: 0xb3b1, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, + 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, + 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0x0040, 0x1c7b: 0xb351, + 0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040, + // Block 0x72, offset 0x1c80 + 0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0xb201, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040, + 0x1c86: 0x0040, 0x1c87: 0xb219, 0x1c88: 0x0040, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, + 0x1c8c: 0x0040, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0x0040, 0x1c91: 0xb2d9, + 0x1c92: 0xb381, 0x1c93: 0x0040, 0x1c94: 0xb2c1, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0xb231, + 0x1c98: 0x0040, 0x1c99: 0xb2f1, 0x1c9a: 0x0040, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x7949, + 0x1c9e: 0x0040, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, + 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, + 0x1caa: 0xb399, 0x1cab: 0x0040, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, + 0x1cbc: 0xbc59, 0x1cbd: 0x0040, 0x1cbe: 0xbc71, 0x1cbf: 0x0040, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0xb189, 0x1cc1: 0xb1a1, 0x1cc2: 0xb201, 0x1cc3: 0xb249, 0x1cc4: 0xb3f9, 0x1cc5: 0xb411, + 0x1cc6: 0xb291, 0x1cc7: 0xb219, 0x1cc8: 0xb309, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, + 0x1ccc: 0xb3c9, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0xb369, 0x1cd1: 0xb2d9, + 0x1cd2: 0xb381, 0x1cd3: 0xb279, 0x1cd4: 0xb2c1, 0x1cd5: 0xb1d1, 0x1cd6: 0xb1e9, 0x1cd7: 0xb231, + 0x1cd8: 0xb261, 0x1cd9: 0xb2f1, 0x1cda: 0xb321, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x0040, + 0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0xb249, + 0x1ce4: 0x0040, 0x1ce5: 0xb411, 0x1ce6: 0xb291, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, + 0x1cea: 0x0040, 0x1ceb: 0xb3b1, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, + 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0xb279, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, + 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0xb261, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, + 0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040, + // Block 0x74, offset 0x1d00 + 0x1d00: 0x0040, 0x1d01: 0xbca2, 0x1d02: 0xbcba, 0x1d03: 0xbcd2, 0x1d04: 0xbcea, 0x1d05: 0xbd02, + 0x1d06: 0xbd1a, 0x1d07: 0xbd32, 0x1d08: 0xbd4a, 0x1d09: 0xbd62, 0x1d0a: 0xbd7a, 0x1d0b: 0x0018, + 0x1d0c: 0x0018, 0x1d0d: 0x0040, 0x1d0e: 0x0040, 0x1d0f: 0x0040, 0x1d10: 0xbd92, 0x1d11: 0xbdb2, + 0x1d12: 0xbdd2, 0x1d13: 0xbdf2, 0x1d14: 0xbe12, 0x1d15: 0xbe32, 0x1d16: 0xbe52, 0x1d17: 0xbe72, + 0x1d18: 0xbe92, 0x1d19: 0xbeb2, 0x1d1a: 0xbed2, 0x1d1b: 0xbef2, 0x1d1c: 0xbf12, 0x1d1d: 0xbf32, + 0x1d1e: 0xbf52, 0x1d1f: 0xbf72, 0x1d20: 0xbf92, 0x1d21: 0xbfb2, 0x1d22: 0xbfd2, 0x1d23: 0xbff2, + 0x1d24: 0xc012, 0x1d25: 0xc032, 0x1d26: 0xc052, 0x1d27: 0xc072, 0x1d28: 0xc092, 0x1d29: 0xc0b2, + 0x1d2a: 0xc0d1, 0x1d2b: 0x1159, 0x1d2c: 0x0269, 0x1d2d: 0x6671, 0x1d2e: 0xc111, 0x1d2f: 0x0040, + 0x1d30: 0x0039, 0x1d31: 0x0ee9, 0x1d32: 0x1159, 0x1d33: 0x0ef9, 0x1d34: 0x0f09, 0x1d35: 0x1199, + 0x1d36: 0x0f31, 0x1d37: 0x0249, 0x1d38: 0x0f41, 0x1d39: 0x0259, 0x1d3a: 0x0f51, 0x1d3b: 0x0359, + 0x1d3c: 0x0f61, 0x1d3d: 0x0f71, 0x1d3e: 0x00d9, 0x1d3f: 0x0f99, + // Block 0x75, offset 0x1d40 + 0x1d40: 0x2039, 0x1d41: 0x0269, 0x1d42: 0x01d9, 0x1d43: 0x0fa9, 0x1d44: 0x0fb9, 0x1d45: 0x1089, + 0x1d46: 0x0279, 0x1d47: 0x0369, 0x1d48: 0x0289, 0x1d49: 0x13d1, 0x1d4a: 0xc129, 0x1d4b: 0x65b1, + 0x1d4c: 0xc141, 0x1d4d: 0x1441, 0x1d4e: 0xc159, 0x1d4f: 0xc179, 0x1d50: 0x0018, 0x1d51: 0x0018, + 0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018, + 0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018, + 0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018, + 0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018, + 0x1d6a: 0xc191, 0x1d6b: 0xc1a9, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040, + 0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018, + 0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018, + 0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018, + // Block 0x76, offset 0x1d80 + 0x1d80: 0xc1d9, 0x1d81: 0xc211, 0x1d82: 0xc249, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040, + 0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040, + 0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0xc269, 0x1d91: 0xc289, + 0x1d92: 0xc2a9, 0x1d93: 0xc2c9, 0x1d94: 0xc2e9, 0x1d95: 0xc309, 0x1d96: 0xc329, 0x1d97: 0xc349, + 0x1d98: 0xc369, 0x1d99: 0xc389, 0x1d9a: 0xc3a9, 0x1d9b: 0xc3c9, 0x1d9c: 0xc3e9, 0x1d9d: 0xc409, + 0x1d9e: 0xc429, 0x1d9f: 0xc449, 0x1da0: 0xc469, 0x1da1: 0xc489, 0x1da2: 0xc4a9, 0x1da3: 0xc4c9, + 0x1da4: 0xc4e9, 0x1da5: 0xc509, 0x1da6: 0xc529, 0x1da7: 0xc549, 0x1da8: 0xc569, 0x1da9: 0xc589, + 0x1daa: 0xc5a9, 0x1dab: 0xc5c9, 0x1dac: 0xc5e9, 0x1dad: 0xc609, 0x1dae: 0xc629, 0x1daf: 0xc649, + 0x1db0: 0xc669, 0x1db1: 0xc689, 0x1db2: 0xc6a9, 0x1db3: 0xc6c9, 0x1db4: 0xc6e9, 0x1db5: 0xc709, + 0x1db6: 0xc729, 0x1db7: 0xc749, 0x1db8: 0xc769, 0x1db9: 0xc789, 0x1dba: 0xc7a9, 0x1dbb: 0xc7c9, + 0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0xcaf9, 0x1dc1: 0xcb19, 0x1dc2: 0xcb39, 0x1dc3: 0x8b1d, 0x1dc4: 0xcb59, 0x1dc5: 0xcb79, + 0x1dc6: 0xcb99, 0x1dc7: 0xcbb9, 0x1dc8: 0xcbd9, 0x1dc9: 0xcbf9, 0x1dca: 0xcc19, 0x1dcb: 0xcc39, + 0x1dcc: 0xcc59, 0x1dcd: 0x8b3d, 0x1dce: 0xcc79, 0x1dcf: 0xcc99, 0x1dd0: 0xccb9, 0x1dd1: 0xccd9, + 0x1dd2: 0x8b5d, 0x1dd3: 0xccf9, 0x1dd4: 0xcd19, 0x1dd5: 0xc429, 0x1dd6: 0x8b7d, 0x1dd7: 0xcd39, + 0x1dd8: 0xcd59, 0x1dd9: 0xcd79, 0x1dda: 0xcd99, 0x1ddb: 0xcdb9, 0x1ddc: 0x8b9d, 0x1ddd: 0xcdd9, + 0x1dde: 0xcdf9, 0x1ddf: 0xce19, 0x1de0: 0xce39, 0x1de1: 0xce59, 0x1de2: 0xc789, 0x1de3: 0xce79, + 0x1de4: 0xce99, 0x1de5: 0xceb9, 0x1de6: 0xced9, 0x1de7: 0xcef9, 0x1de8: 0xcf19, 0x1de9: 0xcf39, + 0x1dea: 0xcf59, 0x1deb: 0xcf79, 0x1dec: 0xcf99, 0x1ded: 0xcfb9, 0x1dee: 0xcfd9, 0x1def: 0xcff9, + 0x1df0: 0xd019, 0x1df1: 0xd039, 0x1df2: 0xd039, 0x1df3: 0xd039, 0x1df4: 0x8bbd, 0x1df5: 0xd059, + 0x1df6: 0xd079, 0x1df7: 0xd099, 0x1df8: 0x8bdd, 0x1df9: 0xd0b9, 0x1dfa: 0xd0d9, 0x1dfb: 0xd0f9, + 0x1dfc: 0xd119, 0x1dfd: 0xd139, 0x1dfe: 0xd159, 0x1dff: 0xd179, + // Block 0x78, offset 0x1e00 + 0x1e00: 0xd199, 0x1e01: 0xd1b9, 0x1e02: 0xd1d9, 0x1e03: 0xd1f9, 0x1e04: 0xd219, 0x1e05: 0xd239, + 0x1e06: 0xd239, 0x1e07: 0xd259, 0x1e08: 0xd279, 0x1e09: 0xd299, 0x1e0a: 0xd2b9, 0x1e0b: 0xd2d9, + 0x1e0c: 0xd2f9, 0x1e0d: 0xd319, 0x1e0e: 0xd339, 0x1e0f: 0xd359, 0x1e10: 0xd379, 0x1e11: 0xd399, + 0x1e12: 0xd3b9, 0x1e13: 0xd3d9, 0x1e14: 0xd3f9, 0x1e15: 0xd419, 0x1e16: 0xd439, 0x1e17: 0xd459, + 0x1e18: 0xd479, 0x1e19: 0x8bfd, 0x1e1a: 0xd499, 0x1e1b: 0xd4b9, 0x1e1c: 0xd4d9, 0x1e1d: 0xc309, + 0x1e1e: 0xd4f9, 0x1e1f: 0xd519, 0x1e20: 0x8c1d, 0x1e21: 0x8c3d, 0x1e22: 0xd539, 0x1e23: 0xd559, + 0x1e24: 0xd579, 0x1e25: 0xd599, 0x1e26: 0xd5b9, 0x1e27: 0xd5d9, 0x1e28: 0x2040, 0x1e29: 0xd5f9, + 0x1e2a: 0xd619, 0x1e2b: 0xd619, 0x1e2c: 0x8c5d, 0x1e2d: 0xd639, 0x1e2e: 0xd659, 0x1e2f: 0xd679, + 0x1e30: 0xd699, 0x1e31: 0x8c7d, 0x1e32: 0xd6b9, 0x1e33: 0xd6d9, 0x1e34: 0x2040, 0x1e35: 0xd6f9, + 0x1e36: 0xd719, 0x1e37: 0xd739, 0x1e38: 0xd759, 0x1e39: 0xd779, 0x1e3a: 0xd799, 0x1e3b: 0x8c9d, + 0x1e3c: 0xd7b9, 0x1e3d: 0x8cbd, 0x1e3e: 0xd7d9, 0x1e3f: 0xd7f9, + // Block 0x79, offset 0x1e40 + 0x1e40: 0xd819, 0x1e41: 0xd839, 0x1e42: 0xd859, 0x1e43: 0xd879, 0x1e44: 0xd899, 0x1e45: 0xd8b9, + 0x1e46: 0xd8d9, 0x1e47: 0xd8f9, 0x1e48: 0xd919, 0x1e49: 0x8cdd, 0x1e4a: 0xd939, 0x1e4b: 0xd959, + 0x1e4c: 0xd979, 0x1e4d: 0xd999, 0x1e4e: 0xd9b9, 0x1e4f: 0x8cfd, 0x1e50: 0xd9d9, 0x1e51: 0x8d1d, + 0x1e52: 0x8d3d, 0x1e53: 0xd9f9, 0x1e54: 0xda19, 0x1e55: 0xda19, 0x1e56: 0xda39, 0x1e57: 0x8d5d, + 0x1e58: 0x8d7d, 0x1e59: 0xda59, 0x1e5a: 0xda79, 0x1e5b: 0xda99, 0x1e5c: 0xdab9, 0x1e5d: 0xdad9, + 0x1e5e: 0xdaf9, 0x1e5f: 0xdb19, 0x1e60: 0xdb39, 0x1e61: 0xdb59, 0x1e62: 0xdb79, 0x1e63: 0xdb99, + 0x1e64: 0x8d9d, 0x1e65: 0xdbb9, 0x1e66: 0xdbd9, 0x1e67: 0xdbf9, 0x1e68: 0xdc19, 0x1e69: 0xdbf9, + 0x1e6a: 0xdc39, 0x1e6b: 0xdc59, 0x1e6c: 0xdc79, 0x1e6d: 0xdc99, 0x1e6e: 0xdcb9, 0x1e6f: 0xdcd9, + 0x1e70: 0xdcf9, 0x1e71: 0xdd19, 0x1e72: 0xdd39, 0x1e73: 0xdd59, 0x1e74: 0xdd79, 0x1e75: 0xdd99, + 0x1e76: 0xddb9, 0x1e77: 0xddd9, 0x1e78: 0x8dbd, 0x1e79: 0xddf9, 0x1e7a: 0xde19, 0x1e7b: 0xde39, + 0x1e7c: 0xde59, 0x1e7d: 0xde79, 0x1e7e: 0x8ddd, 0x1e7f: 0xde99, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0xe599, 0x1e81: 0xe5b9, 0x1e82: 0xe5d9, 0x1e83: 0xe5f9, 0x1e84: 0xe619, 0x1e85: 0xe639, + 0x1e86: 0x8efd, 0x1e87: 0xe659, 0x1e88: 0xe679, 0x1e89: 0xe699, 0x1e8a: 0xe6b9, 0x1e8b: 0xe6d9, + 0x1e8c: 0xe6f9, 0x1e8d: 0x8f1d, 0x1e8e: 0xe719, 0x1e8f: 0xe739, 0x1e90: 0x8f3d, 0x1e91: 0x8f5d, + 0x1e92: 0xe759, 0x1e93: 0xe779, 0x1e94: 0xe799, 0x1e95: 0xe7b9, 0x1e96: 0xe7d9, 0x1e97: 0xe7f9, + 0x1e98: 0xe819, 0x1e99: 0xe839, 0x1e9a: 0xe859, 0x1e9b: 0x8f7d, 0x1e9c: 0xe879, 0x1e9d: 0x8f9d, + 0x1e9e: 0xe899, 0x1e9f: 0x2040, 0x1ea0: 0xe8b9, 0x1ea1: 0xe8d9, 0x1ea2: 0xe8f9, 0x1ea3: 0x8fbd, + 0x1ea4: 0xe919, 0x1ea5: 0xe939, 0x1ea6: 0x8fdd, 0x1ea7: 0x8ffd, 0x1ea8: 0xe959, 0x1ea9: 0xe979, + 0x1eaa: 0xe999, 0x1eab: 0xe9b9, 0x1eac: 0xe9d9, 0x1ead: 0xe9d9, 0x1eae: 0xe9f9, 0x1eaf: 0xea19, + 0x1eb0: 0xea39, 0x1eb1: 0xea59, 0x1eb2: 0xea79, 0x1eb3: 0xea99, 0x1eb4: 0xeab9, 0x1eb5: 0x901d, + 0x1eb6: 0xead9, 0x1eb7: 0x903d, 0x1eb8: 0xeaf9, 0x1eb9: 0x905d, 0x1eba: 0xeb19, 0x1ebb: 0x907d, + 0x1ebc: 0x909d, 0x1ebd: 0x90bd, 0x1ebe: 0xeb39, 0x1ebf: 0xeb59, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0xeb79, 0x1ec1: 0x90dd, 0x1ec2: 0x90fd, 0x1ec3: 0x911d, 0x1ec4: 0x913d, 0x1ec5: 0xeb99, + 0x1ec6: 0xebb9, 0x1ec7: 0xebb9, 0x1ec8: 0xebd9, 0x1ec9: 0xebf9, 0x1eca: 0xec19, 0x1ecb: 0xec39, + 0x1ecc: 0xec59, 0x1ecd: 0x915d, 0x1ece: 0xec79, 0x1ecf: 0xec99, 0x1ed0: 0xecb9, 0x1ed1: 0xecd9, + 0x1ed2: 0x917d, 0x1ed3: 0xecf9, 0x1ed4: 0x919d, 0x1ed5: 0x91bd, 0x1ed6: 0xed19, 0x1ed7: 0xed39, + 0x1ed8: 0xed59, 0x1ed9: 0xed79, 0x1eda: 0xed99, 0x1edb: 0xedb9, 0x1edc: 0x91dd, 0x1edd: 0x91fd, + 0x1ede: 0x921d, 0x1edf: 0x2040, 0x1ee0: 0xedd9, 0x1ee1: 0x923d, 0x1ee2: 0xedf9, 0x1ee3: 0xee19, + 0x1ee4: 0xee39, 0x1ee5: 0x925d, 0x1ee6: 0xee59, 0x1ee7: 0xee79, 0x1ee8: 0xee99, 0x1ee9: 0xeeb9, + 0x1eea: 0xeed9, 0x1eeb: 0x927d, 0x1eec: 0xeef9, 0x1eed: 0xef19, 0x1eee: 0xef39, 0x1eef: 0xef59, + 0x1ef0: 0xef79, 0x1ef1: 0xef99, 0x1ef2: 0x929d, 0x1ef3: 0x92bd, 0x1ef4: 0xefb9, 0x1ef5: 0x92dd, + 0x1ef6: 0xefd9, 0x1ef7: 0x92fd, 0x1ef8: 0xeff9, 0x1ef9: 0xf019, 0x1efa: 0xf039, 0x1efb: 0x931d, + 0x1efc: 0x933d, 0x1efd: 0xf059, 0x1efe: 0x935d, 0x1eff: 0xf079, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0xf6b9, 0x1f01: 0xf6d9, 0x1f02: 0xf6f9, 0x1f03: 0xf719, 0x1f04: 0xf739, 0x1f05: 0x951d, + 0x1f06: 0xf759, 0x1f07: 0xf779, 0x1f08: 0xf799, 0x1f09: 0xf7b9, 0x1f0a: 0xf7d9, 0x1f0b: 0x953d, + 0x1f0c: 0x955d, 0x1f0d: 0xf7f9, 0x1f0e: 0xf819, 0x1f0f: 0xf839, 0x1f10: 0xf859, 0x1f11: 0xf879, + 0x1f12: 0xf899, 0x1f13: 0x957d, 0x1f14: 0xf8b9, 0x1f15: 0xf8d9, 0x1f16: 0xf8f9, 0x1f17: 0xf919, + 0x1f18: 0x959d, 0x1f19: 0x95bd, 0x1f1a: 0xf939, 0x1f1b: 0xf959, 0x1f1c: 0xf979, 0x1f1d: 0x95dd, + 0x1f1e: 0xf999, 0x1f1f: 0xf9b9, 0x1f20: 0x6815, 0x1f21: 0x95fd, 0x1f22: 0xf9d9, 0x1f23: 0xf9f9, + 0x1f24: 0xfa19, 0x1f25: 0x961d, 0x1f26: 0xfa39, 0x1f27: 0xfa59, 0x1f28: 0xfa79, 0x1f29: 0xfa99, + 0x1f2a: 0xfab9, 0x1f2b: 0xfad9, 0x1f2c: 0xfaf9, 0x1f2d: 0x963d, 0x1f2e: 0xfb19, 0x1f2f: 0xfb39, + 0x1f30: 0xfb59, 0x1f31: 0x965d, 0x1f32: 0xfb79, 0x1f33: 0xfb99, 0x1f34: 0xfbb9, 0x1f35: 0xfbd9, + 0x1f36: 0x7b35, 0x1f37: 0x967d, 0x1f38: 0xfbf9, 0x1f39: 0xfc19, 0x1f3a: 0xfc39, 0x1f3b: 0x969d, + 0x1f3c: 0xfc59, 0x1f3d: 0x96bd, 0x1f3e: 0xfc79, 0x1f3f: 0xfc79, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0xfc99, 0x1f41: 0x96dd, 0x1f42: 0xfcb9, 0x1f43: 0xfcd9, 0x1f44: 0xfcf9, 0x1f45: 0xfd19, + 0x1f46: 0xfd39, 0x1f47: 0xfd59, 0x1f48: 0xfd79, 0x1f49: 0x96fd, 0x1f4a: 0xfd99, 0x1f4b: 0xfdb9, + 0x1f4c: 0xfdd9, 0x1f4d: 0xfdf9, 0x1f4e: 0xfe19, 0x1f4f: 0xfe39, 0x1f50: 0x971d, 0x1f51: 0xfe59, + 0x1f52: 0x973d, 0x1f53: 0x975d, 0x1f54: 0x977d, 0x1f55: 0xfe79, 0x1f56: 0xfe99, 0x1f57: 0xfeb9, + 0x1f58: 0xfed9, 0x1f59: 0xfef9, 0x1f5a: 0xff19, 0x1f5b: 0xff39, 0x1f5c: 0xff59, 0x1f5d: 0x979d, + 0x1f5e: 0x0040, 0x1f5f: 0x0040, 0x1f60: 0x0040, 0x1f61: 0x0040, 0x1f62: 0x0040, 0x1f63: 0x0040, + 0x1f64: 0x0040, 0x1f65: 0x0040, 0x1f66: 0x0040, 0x1f67: 0x0040, 0x1f68: 0x0040, 0x1f69: 0x0040, + 0x1f6a: 0x0040, 0x1f6b: 0x0040, 0x1f6c: 0x0040, 0x1f6d: 0x0040, 0x1f6e: 0x0040, 0x1f6f: 0x0040, + 0x1f70: 0x0040, 0x1f71: 0x0040, 0x1f72: 0x0040, 0x1f73: 0x0040, 0x1f74: 0x0040, 0x1f75: 0x0040, + 0x1f76: 0x0040, 0x1f77: 0x0040, 0x1f78: 0x0040, 0x1f79: 0x0040, 0x1f7a: 0x0040, 0x1f7b: 0x0040, + 0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040, +} + +// idnaIndex: 35 blocks, 2240 entries, 4480 bytes +// Block 0 is the zero block. +var idnaIndex = [2240]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x7c, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7d, 0xca: 0x7e, 0xcb: 0x07, 0xcc: 0x7f, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x80, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x81, 0xd6: 0x82, 0xd7: 0x83, + 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x84, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, + 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, + // Block 0x4, offset 0x100 + 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x13, 0x126: 0x14, 0x127: 0x15, + 0x128: 0x16, 0x129: 0x17, 0x12a: 0x18, 0x12b: 0x19, 0x12c: 0x1a, 0x12d: 0x1b, 0x12e: 0x1c, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1d, 0x132: 0x1e, 0x133: 0x1f, 0x134: 0x8f, 0x135: 0x20, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x21, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x22, 0x13e: 0x23, 0x13f: 0x96, + // Block 0x5, offset 0x140 + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, + 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, + 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, + 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, + 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, + 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, + 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x24, 0x175: 0x25, 0x176: 0x26, 0x177: 0xc3, + 0x178: 0x27, 0x179: 0x27, 0x17a: 0x28, 0x17b: 0x27, 0x17c: 0xc4, 0x17d: 0x29, 0x17e: 0x2a, 0x17f: 0x2b, + // Block 0x6, offset 0x180 + 0x180: 0x2c, 0x181: 0x2d, 0x182: 0x2e, 0x183: 0xc5, 0x184: 0x2f, 0x185: 0x30, 0x186: 0xc6, 0x187: 0x9b, + 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xca, + 0x190: 0xcb, 0x191: 0x31, 0x192: 0x32, 0x193: 0x33, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, + 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, + 0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9b, 0x1ab: 0xce, 0x1ac: 0x9b, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0xd1, + 0x1b0: 0xd2, 0x1b1: 0x34, 0x1b2: 0x27, 0x1b3: 0x35, 0x1b4: 0xd3, 0x1b5: 0xd4, 0x1b6: 0xd5, 0x1b7: 0xd6, + 0x1b8: 0xd7, 0x1b9: 0xd8, 0x1ba: 0xd9, 0x1bb: 0xda, 0x1bc: 0xdb, 0x1bd: 0xdc, 0x1be: 0xdd, 0x1bf: 0x36, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x37, 0x1c1: 0xde, 0x1c2: 0xdf, 0x1c3: 0xe0, 0x1c4: 0xe1, 0x1c5: 0x38, 0x1c6: 0x39, 0x1c7: 0xe2, + 0x1c8: 0xe3, 0x1c9: 0x3a, 0x1ca: 0x3b, 0x1cb: 0x3c, 0x1cc: 0x3d, 0x1cd: 0x3e, 0x1ce: 0x3f, 0x1cf: 0x40, + 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, + 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, + 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, + 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, + 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, + 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, + // Block 0x8, offset 0x200 + 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, + 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, + 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, + 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, + 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, + 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, + 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, + 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, + // Block 0x9, offset 0x240 + 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, + 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, + 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, + 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, + 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, + 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, + 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, + 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, + // Block 0xa, offset 0x280 + 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, + 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, + 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, + 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, + 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, + 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, + 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, + 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe4, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, + 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, + 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe5, 0x2d3: 0xe6, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, + 0x2d8: 0xe7, 0x2d9: 0x41, 0x2da: 0x42, 0x2db: 0xe8, 0x2dc: 0x43, 0x2dd: 0x44, 0x2de: 0x45, 0x2df: 0xe9, + 0x2e0: 0xea, 0x2e1: 0xeb, 0x2e2: 0xec, 0x2e3: 0xed, 0x2e4: 0xee, 0x2e5: 0xef, 0x2e6: 0xf0, 0x2e7: 0xf1, + 0x2e8: 0xf2, 0x2e9: 0xf3, 0x2ea: 0xf4, 0x2eb: 0xf5, 0x2ec: 0xf6, 0x2ed: 0xf7, 0x2ee: 0xf8, 0x2ef: 0xf9, + 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, + 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, + // Block 0xc, offset 0x300 + 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, + 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, + 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, + 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xfa, 0x31f: 0xfb, + // Block 0xd, offset 0x340 + 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, + 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, + 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, + 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, + 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, + 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, + 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, + 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, + // Block 0xe, offset 0x380 + 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, + 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, + 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, + 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, + 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff, + 0x3a8: 0x46, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x47, 0x3ac: 0x48, 0x3ad: 0x49, 0x3ae: 0x4a, 0x3af: 0x4b, + 0x3b0: 0x102, 0x3b1: 0x4c, 0x3b2: 0x4d, 0x3b3: 0x4e, 0x3b4: 0x4f, 0x3b5: 0x50, 0x3b6: 0x103, 0x3b7: 0x51, + 0x3b8: 0x52, 0x3b9: 0x53, 0x3ba: 0x54, 0x3bb: 0x55, 0x3bc: 0x56, 0x3bd: 0x57, 0x3be: 0x58, 0x3bf: 0x59, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0x9f, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9b, 0x3c6: 0x108, 0x3c7: 0x109, + 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f, + 0x3d0: 0x110, 0x3d1: 0x9f, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xba, 0x3d7: 0xba, + 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xba, 0x3df: 0xba, + 0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xba, 0x3e6: 0x11c, 0x3e7: 0x11d, + 0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5a, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5b, 0x3ef: 0xba, + 0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, + 0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba, + // Block 0x10, offset 0x400 + 0x400: 0x128, 0x401: 0x129, 0x402: 0x12a, 0x403: 0x12b, 0x404: 0x12c, 0x405: 0x12d, 0x406: 0x12e, 0x407: 0x12f, + 0x408: 0x130, 0x409: 0xba, 0x40a: 0x131, 0x40b: 0x132, 0x40c: 0x5c, 0x40d: 0x5d, 0x40e: 0xba, 0x40f: 0xba, + 0x410: 0x133, 0x411: 0x134, 0x412: 0x135, 0x413: 0x136, 0x414: 0xba, 0x415: 0xba, 0x416: 0x137, 0x417: 0x138, + 0x418: 0x139, 0x419: 0x13a, 0x41a: 0x13b, 0x41b: 0x13c, 0x41c: 0x13d, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, + 0x420: 0xba, 0x421: 0xba, 0x422: 0x13e, 0x423: 0x13f, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, + 0x428: 0xba, 0x429: 0xba, 0x42a: 0xba, 0x42b: 0x140, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, + 0x430: 0x141, 0x431: 0x142, 0x432: 0x143, 0x433: 0xba, 0x434: 0xba, 0x435: 0xba, 0x436: 0xba, 0x437: 0xba, + 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, + // Block 0x11, offset 0x440 + 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, + 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x144, 0x44f: 0xba, + 0x450: 0x9b, 0x451: 0x145, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x146, 0x456: 0xba, 0x457: 0xba, + 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, + 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, + 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, + 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, + 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, + // Block 0x12, offset 0x480 + 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, + 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, + 0x490: 0x147, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, + 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, + 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, + 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, + 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, + 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, + // Block 0x13, offset 0x4c0 + 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, + 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, + 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, + 0x4d8: 0x9f, 0x4d9: 0x148, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, + 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, + 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, + 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, + 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, + // Block 0x14, offset 0x500 + 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, + 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, + 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, + 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, + 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, + 0x528: 0x140, 0x529: 0x149, 0x52a: 0xba, 0x52b: 0x14a, 0x52c: 0x14b, 0x52d: 0x14c, 0x52e: 0x14d, 0x52f: 0xba, + 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, + 0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x14e, 0x53e: 0x14f, 0x53f: 0x150, + // Block 0x15, offset 0x540 + 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, + 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, + 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, + 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x151, + 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, + 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x152, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, + 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, + 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, + // Block 0x16, offset 0x580 + 0x580: 0x153, 0x581: 0xba, 0x582: 0xba, 0x583: 0xba, 0x584: 0xba, 0x585: 0xba, 0x586: 0xba, 0x587: 0xba, + 0x588: 0xba, 0x589: 0xba, 0x58a: 0xba, 0x58b: 0xba, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, + 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, + 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, + 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, + 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, + 0x5b0: 0x9f, 0x5b1: 0x154, 0x5b2: 0x155, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, + 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x156, 0x5c4: 0x157, 0x5c5: 0x158, 0x5c6: 0x159, 0x5c7: 0x15a, + 0x5c8: 0x9b, 0x5c9: 0x15b, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x15c, 0x5ce: 0xba, 0x5cf: 0xba, + 0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65, + 0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d, + 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, + 0x5e8: 0x15d, 0x5e9: 0x15e, 0x5ea: 0x15f, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, + 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, + 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, + // Block 0x18, offset 0x600 + 0x600: 0x160, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, + 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, + 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, + 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, + 0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x161, 0x624: 0x6e, 0x625: 0x162, 0x626: 0xba, 0x627: 0xba, + 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, + 0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, + 0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x163, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, + // Block 0x19, offset 0x640 + 0x640: 0x164, 0x641: 0x9b, 0x642: 0x165, 0x643: 0x166, 0x644: 0x72, 0x645: 0x73, 0x646: 0x167, 0x647: 0x168, + 0x648: 0x74, 0x649: 0x169, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x16a, 0x65c: 0x9b, 0x65d: 0x16b, 0x65e: 0x9b, 0x65f: 0x16c, + 0x660: 0x16d, 0x661: 0x16e, 0x662: 0x16f, 0x663: 0xba, 0x664: 0x170, 0x665: 0x171, 0x666: 0x172, 0x667: 0x173, + 0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, + 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, + 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, + // Block 0x1a, offset 0x680 + 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, + 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, + 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, + 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x174, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, + 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, + 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, + 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, + 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, + 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, + 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, + 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x175, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, + 0x6e0: 0x176, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, + 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, + 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, + 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, + // Block 0x1c, offset 0x700 + 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, + 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, + 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, + 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, + 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, + 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, + 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, + 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x177, 0x73b: 0xba, 0x73c: 0xba, 0x73d: 0xba, 0x73e: 0xba, 0x73f: 0xba, + // Block 0x1d, offset 0x740 + 0x740: 0xba, 0x741: 0xba, 0x742: 0xba, 0x743: 0xba, 0x744: 0xba, 0x745: 0xba, 0x746: 0xba, 0x747: 0xba, + 0x748: 0xba, 0x749: 0xba, 0x74a: 0xba, 0x74b: 0xba, 0x74c: 0xba, 0x74d: 0xba, 0x74e: 0xba, 0x74f: 0xba, + 0x750: 0xba, 0x751: 0xba, 0x752: 0xba, 0x753: 0xba, 0x754: 0xba, 0x755: 0xba, 0x756: 0xba, 0x757: 0xba, + 0x758: 0xba, 0x759: 0xba, 0x75a: 0xba, 0x75b: 0xba, 0x75c: 0xba, 0x75d: 0xba, 0x75e: 0xba, 0x75f: 0xba, + 0x760: 0x75, 0x761: 0x76, 0x762: 0x77, 0x763: 0x178, 0x764: 0x78, 0x765: 0x79, 0x766: 0x179, 0x767: 0x7a, + 0x768: 0x7b, 0x769: 0xba, 0x76a: 0xba, 0x76b: 0xba, 0x76c: 0xba, 0x76d: 0xba, 0x76e: 0xba, 0x76f: 0xba, + 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, + 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, + // Block 0x1e, offset 0x780 + 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, + 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, + 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, + 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, + 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, + 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, + 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, + 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, + 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, + 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, + 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, + 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, + 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, + // Block 0x20, offset 0x800 + 0x800: 0x17a, 0x801: 0x17b, 0x802: 0xba, 0x803: 0xba, 0x804: 0x17c, 0x805: 0x17c, 0x806: 0x17c, 0x807: 0x17d, + 0x808: 0xba, 0x809: 0xba, 0x80a: 0xba, 0x80b: 0xba, 0x80c: 0xba, 0x80d: 0xba, 0x80e: 0xba, 0x80f: 0xba, + 0x810: 0xba, 0x811: 0xba, 0x812: 0xba, 0x813: 0xba, 0x814: 0xba, 0x815: 0xba, 0x816: 0xba, 0x817: 0xba, + 0x818: 0xba, 0x819: 0xba, 0x81a: 0xba, 0x81b: 0xba, 0x81c: 0xba, 0x81d: 0xba, 0x81e: 0xba, 0x81f: 0xba, + 0x820: 0xba, 0x821: 0xba, 0x822: 0xba, 0x823: 0xba, 0x824: 0xba, 0x825: 0xba, 0x826: 0xba, 0x827: 0xba, + 0x828: 0xba, 0x829: 0xba, 0x82a: 0xba, 0x82b: 0xba, 0x82c: 0xba, 0x82d: 0xba, 0x82e: 0xba, 0x82f: 0xba, + 0x830: 0xba, 0x831: 0xba, 0x832: 0xba, 0x833: 0xba, 0x834: 0xba, 0x835: 0xba, 0x836: 0xba, 0x837: 0xba, + 0x838: 0xba, 0x839: 0xba, 0x83a: 0xba, 0x83b: 0xba, 0x83c: 0xba, 0x83d: 0xba, 0x83e: 0xba, 0x83f: 0xba, + // Block 0x21, offset 0x840 + 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, + 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, + 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, + 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, + 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, + 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, + 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, + 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, + // Block 0x22, offset 0x880 + 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, + 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, +} + +// idnaSparseOffset: 258 entries, 516 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x93, 0x98, 0xa1, 0xb1, 0xbf, 0xcc, 0xd8, 0xe9, 0xf3, 0xfa, 0x107, 0x118, 0x11f, 0x12a, 0x139, 0x147, 0x151, 0x153, 0x158, 0x15b, 0x15e, 0x160, 0x16c, 0x177, 0x17f, 0x185, 0x18b, 0x190, 0x195, 0x198, 0x19c, 0x1a2, 0x1a7, 0x1b3, 0x1bd, 0x1c3, 0x1d4, 0x1de, 0x1e1, 0x1e9, 0x1ec, 0x1f9, 0x201, 0x205, 0x20c, 0x214, 0x224, 0x230, 0x232, 0x23c, 0x248, 0x254, 0x260, 0x268, 0x26d, 0x277, 0x288, 0x28c, 0x297, 0x29b, 0x2a4, 0x2ac, 0x2b2, 0x2b7, 0x2ba, 0x2bd, 0x2c1, 0x2c7, 0x2cb, 0x2cf, 0x2d5, 0x2dc, 0x2e2, 0x2ea, 0x2f1, 0x2fc, 0x306, 0x30a, 0x30d, 0x313, 0x317, 0x319, 0x31c, 0x31e, 0x321, 0x32b, 0x32e, 0x33d, 0x341, 0x346, 0x349, 0x34d, 0x352, 0x357, 0x35d, 0x363, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f6, 0x3fb, 0x408, 0x40c, 0x411, 0x413, 0x417, 0x419, 0x41d, 0x426, 0x42c, 0x430, 0x440, 0x44a, 0x44f, 0x452, 0x458, 0x45f, 0x464, 0x468, 0x46e, 0x473, 0x47c, 0x481, 0x487, 0x48e, 0x495, 0x49c, 0x4a0, 0x4a5, 0x4a8, 0x4ad, 0x4b9, 0x4bf, 0x4c4, 0x4cb, 0x4d3, 0x4d8, 0x4dc, 0x4ec, 0x4f3, 0x4f7, 0x4fb, 0x502, 0x504, 0x507, 0x50a, 0x50e, 0x512, 0x518, 0x521, 0x52d, 0x534, 0x53d, 0x545, 0x54c, 0x55a, 0x567, 0x574, 0x57d, 0x581, 0x58f, 0x597, 0x5a2, 0x5ab, 0x5b1, 0x5b9, 0x5c2, 0x5cc, 0x5cf, 0x5db, 0x5de, 0x5e3, 0x5e6, 0x5f0, 0x5f9, 0x605, 0x608, 0x60d, 0x610, 0x613, 0x616, 0x61d, 0x624, 0x628, 0x633, 0x636, 0x63c, 0x641, 0x645, 0x648, 0x64b, 0x64e, 0x653, 0x65d, 0x660, 0x664, 0x673, 0x67f, 0x683, 0x688, 0x68d, 0x691, 0x696, 0x69f, 0x6aa, 0x6b0, 0x6b8, 0x6bc, 0x6c0, 0x6c6, 0x6cc, 0x6d1, 0x6d4, 0x6e2, 0x6e9, 0x6ec, 0x6ef, 0x6f3, 0x6f9, 0x6fe, 0x708, 0x70d, 0x710, 0x713, 0x716, 0x719, 0x71d, 0x720, 0x730, 0x741, 0x746, 0x748, 0x74a} + +// idnaSparseValues: 1869 entries, 7476 bytes +var idnaSparseValues = [1869]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x07}, + {value: 0xe105, lo: 0x80, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x97}, + {value: 0xe105, lo: 0x98, hi: 0x9e}, + {value: 0x001f, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbf}, + // Block 0x1, offset 0x8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0xe01d, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0335, lo: 0x83, hi: 0x83}, + {value: 0x034d, lo: 0x84, hi: 0x84}, + {value: 0x0365, lo: 0x85, hi: 0x85}, + {value: 0xe00d, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0xe00d, lo: 0x88, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x89}, + {value: 0xe00d, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe00d, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0x8d}, + {value: 0xe00d, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0xbf}, + // Block 0x2, offset 0x19 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0249, lo: 0xb0, hi: 0xb0}, + {value: 0x037d, lo: 0xb1, hi: 0xb1}, + {value: 0x0259, lo: 0xb2, hi: 0xb2}, + {value: 0x0269, lo: 0xb3, hi: 0xb3}, + {value: 0x034d, lo: 0xb4, hi: 0xb4}, + {value: 0x0395, lo: 0xb5, hi: 0xb5}, + {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, + {value: 0x0279, lo: 0xb7, hi: 0xb7}, + {value: 0x0289, lo: 0xb8, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbf}, + // Block 0x3, offset 0x25 + {value: 0x0000, lo: 0x01}, + {value: 0x3308, lo: 0x80, hi: 0xbf}, + // Block 0x4, offset 0x27 + {value: 0x0000, lo: 0x04}, + {value: 0x03f5, lo: 0x80, hi: 0x8f}, + {value: 0xe105, lo: 0x90, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x5, offset 0x2c + {value: 0x0000, lo: 0x07}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x0545, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x6, offset 0x34 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0401, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x88}, + {value: 0x0018, lo: 0x89, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x7, offset 0x3f + {value: 0x0000, lo: 0x0b}, + {value: 0x0818, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x82}, + {value: 0x0818, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x85}, + {value: 0x0818, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0808, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x8, offset 0x4b + {value: 0x0000, lo: 0x03}, + {value: 0x0a08, lo: 0x80, hi: 0x87}, + {value: 0x0c08, lo: 0x88, hi: 0x99}, + {value: 0x0a08, lo: 0x9a, hi: 0xbf}, + // Block 0x9, offset 0x4f + {value: 0x0000, lo: 0x0e}, + {value: 0x3308, lo: 0x80, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0c08, lo: 0x8d, hi: 0x8d}, + {value: 0x0a08, lo: 0x8e, hi: 0x98}, + {value: 0x0c08, lo: 0x99, hi: 0x9b}, + {value: 0x0a08, lo: 0x9c, hi: 0xaa}, + {value: 0x0c08, lo: 0xab, hi: 0xac}, + {value: 0x0a08, lo: 0xad, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb1}, + {value: 0x0a08, lo: 0xb2, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xb5, hi: 0xb7}, + {value: 0x0c08, lo: 0xb8, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbf}, + // Block 0xa, offset 0x5e + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xb0}, + {value: 0x0808, lo: 0xb1, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xb, offset 0x63 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0xc, offset 0x6b + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x99}, + {value: 0x0808, lo: 0x9a, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa3}, + {value: 0x0808, lo: 0xa4, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa7}, + {value: 0x0808, lo: 0xa8, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0818, lo: 0xb0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd, offset 0x77 + {value: 0x0000, lo: 0x0d}, + {value: 0x0c08, lo: 0x80, hi: 0x80}, + {value: 0x0a08, lo: 0x81, hi: 0x85}, + {value: 0x0c08, lo: 0x86, hi: 0x87}, + {value: 0x0a08, lo: 0x88, hi: 0x88}, + {value: 0x0c08, lo: 0x89, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0x93}, + {value: 0x0c08, lo: 0x94, hi: 0x94}, + {value: 0x0a08, lo: 0x95, hi: 0x95}, + {value: 0x0808, lo: 0x96, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0818, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xe, offset 0x85 + {value: 0x0000, lo: 0x0d}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0a08, lo: 0xa0, hi: 0xa9}, + {value: 0x0c08, lo: 0xaa, hi: 0xac}, + {value: 0x0808, lo: 0xad, hi: 0xad}, + {value: 0x0c08, lo: 0xae, hi: 0xae}, + {value: 0x0a08, lo: 0xaf, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb2}, + {value: 0x0a08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0a08, lo: 0xb6, hi: 0xb8}, + {value: 0x0c08, lo: 0xb9, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0xf, offset 0x93 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x93}, + {value: 0x3308, lo: 0x94, hi: 0xa1}, + {value: 0x0840, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xbf}, + // Block 0x10, offset 0x98 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x11, offset 0xa1 + {value: 0x0000, lo: 0x0f}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x85}, + {value: 0x3008, lo: 0x86, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x3008, lo: 0x8a, hi: 0x8c}, + {value: 0x3b08, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x12, offset 0xb1 + {value: 0x0000, lo: 0x0d}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x13, offset 0xbf + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x14, offset 0xcc + {value: 0x0000, lo: 0x0b}, + {value: 0x0040, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x15, offset 0xd8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x89}, + {value: 0x3b08, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x3008, lo: 0x98, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x16, offset 0xe9 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb2}, + {value: 0x08f1, lo: 0xb3, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb9}, + {value: 0x3b08, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x17, offset 0xf3 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x8e}, + {value: 0x0018, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0xbf}, + // Block 0x18, offset 0xfa + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0961, lo: 0x9c, hi: 0x9c}, + {value: 0x0999, lo: 0x9d, hi: 0x9d}, + {value: 0x0008, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x19, offset 0x107 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe03d, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x1a, offset 0x118 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0x1b, offset 0x11f + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x1c, offset 0x12a + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x3008, lo: 0x96, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x3308, lo: 0x9e, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xa1}, + {value: 0x3008, lo: 0xa2, hi: 0xa4}, + {value: 0x0008, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xbf}, + // Block 0x1d, offset 0x139 + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x8c}, + {value: 0x3308, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x3008, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1e, offset 0x147 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x86}, + {value: 0x055d, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8c}, + {value: 0x055d, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0xe105, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0x1f, offset 0x151 + {value: 0x0000, lo: 0x01}, + {value: 0x0018, lo: 0x80, hi: 0xbf}, + // Block 0x20, offset 0x153 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa0}, + {value: 0x2018, lo: 0xa1, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x21, offset 0x158 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa7}, + {value: 0x2018, lo: 0xa8, hi: 0xbf}, + // Block 0x22, offset 0x15b + {value: 0x0000, lo: 0x02}, + {value: 0x2018, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0xbf}, + // Block 0x23, offset 0x15e + {value: 0x0000, lo: 0x01}, + {value: 0x0008, lo: 0x80, hi: 0xbf}, + // Block 0x24, offset 0x160 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x25, offset 0x16c + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x26, offset 0x177 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x27, offset 0x17f + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x28, offset 0x185 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x29, offset 0x18b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2a, offset 0x190 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x2b, offset 0x195 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x2c, offset 0x198 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xbf}, + // Block 0x2d, offset 0x19c + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2e, offset 0x1a2 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x2f, offset 0x1a7 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x3b08, lo: 0x94, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x30, offset 0x1b3 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x31, offset 0x1bd + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xb3}, + {value: 0x3340, lo: 0xb4, hi: 0xb5}, + {value: 0x3008, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x32, offset 0x1c3 + {value: 0x0000, lo: 0x10}, + {value: 0x3008, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x91}, + {value: 0x3b08, lo: 0x92, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0x93}, + {value: 0x0018, lo: 0x94, hi: 0x96}, + {value: 0x0008, lo: 0x97, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x33, offset 0x1d4 + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x86}, + {value: 0x0218, lo: 0x87, hi: 0x87}, + {value: 0x0018, lo: 0x88, hi: 0x8a}, + {value: 0x33c0, lo: 0x8b, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xbf}, + // Block 0x34, offset 0x1de + {value: 0x0000, lo: 0x02}, + {value: 0x0208, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x35, offset 0x1e1 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0208, lo: 0x87, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xa9}, + {value: 0x0208, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x36, offset 0x1e9 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0x37, offset 0x1ec + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x38, offset 0x1f9 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x39, offset 0x201 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x3a, offset 0x205 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0028, lo: 0x9a, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xbf}, + // Block 0x3b, offset 0x20c + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x3308, lo: 0x97, hi: 0x98}, + {value: 0x3008, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x3c, offset 0x214 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x94}, + {value: 0x3008, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3b08, lo: 0xa0, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xac}, + {value: 0x3008, lo: 0xad, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x224 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xbd}, + {value: 0x3318, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x3e, offset 0x230 + {value: 0x0000, lo: 0x01}, + {value: 0x0040, lo: 0x80, hi: 0xbf}, + // Block 0x3f, offset 0x232 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3008, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x40, offset 0x23c + {value: 0x0000, lo: 0x0b}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x3808, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x41, offset 0x248 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3808, lo: 0xaa, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xbf}, + // Block 0x42, offset 0x254 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3008, lo: 0xaa, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3808, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x43, offset 0x260 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x3008, lo: 0xa4, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x44, offset 0x268 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x45, offset 0x26d + {value: 0x0000, lo: 0x09}, + {value: 0x0e29, lo: 0x80, hi: 0x80}, + {value: 0x0e41, lo: 0x81, hi: 0x81}, + {value: 0x0e59, lo: 0x82, hi: 0x82}, + {value: 0x0e71, lo: 0x83, hi: 0x83}, + {value: 0x0e89, lo: 0x84, hi: 0x85}, + {value: 0x0ea1, lo: 0x86, hi: 0x86}, + {value: 0x0eb9, lo: 0x87, hi: 0x87}, + {value: 0x057d, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0x46, offset 0x277 + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x92}, + {value: 0x0018, lo: 0x93, hi: 0x93}, + {value: 0x3308, lo: 0x94, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa8}, + {value: 0x0008, lo: 0xa9, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x47, offset 0x288 + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0x48, offset 0x28c + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x87}, + {value: 0xe045, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0xe045, lo: 0x98, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0xe045, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbf}, + // Block 0x49, offset 0x297 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x3318, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbf}, + // Block 0x4a, offset 0x29b + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x24c1, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x4b, offset 0x2a4 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x24f1, lo: 0xac, hi: 0xac}, + {value: 0x2529, lo: 0xad, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xae}, + {value: 0x2579, lo: 0xaf, hi: 0xaf}, + {value: 0x25b1, lo: 0xb0, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0x4c, offset 0x2ac + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x9f}, + {value: 0x0080, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xad}, + {value: 0x0080, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x4d, offset 0x2b2 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa8}, + {value: 0x09c5, lo: 0xa9, hi: 0xa9}, + {value: 0x09e5, lo: 0xaa, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xbf}, + // Block 0x4e, offset 0x2b7 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x4f, offset 0x2ba + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0x50, offset 0x2bd + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x28c1, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0xbf}, + // Block 0x51, offset 0x2c1 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0e66, lo: 0xb4, hi: 0xb4}, + {value: 0x292a, lo: 0xb5, hi: 0xb5}, + {value: 0x0e86, lo: 0xb6, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x52, offset 0x2c7 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9b}, + {value: 0x2941, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0xbf}, + // Block 0x53, offset 0x2cb + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x54, offset 0x2cf + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0018, lo: 0xbd, hi: 0xbf}, + // Block 0x55, offset 0x2d5 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xab}, + {value: 0x0018, lo: 0xac, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x56, offset 0x2dc + {value: 0x0000, lo: 0x05}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x03f5, lo: 0x90, hi: 0x9f}, + {value: 0x0ea5, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x57, offset 0x2e2 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x58, offset 0x2ea + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xae}, + {value: 0xe075, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0x59, offset 0x2f1 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x5a, offset 0x2fc + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xbf}, + // Block 0x5b, offset 0x306 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x5c, offset 0x30a + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0xbf}, + // Block 0x5d, offset 0x30d + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9e}, + {value: 0x0edd, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x5e, offset 0x313 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb2}, + {value: 0x0efd, lo: 0xb3, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x5f, offset 0x317 + {value: 0x0020, lo: 0x01}, + {value: 0x0f1d, lo: 0x80, hi: 0xbf}, + // Block 0x60, offset 0x319 + {value: 0x0020, lo: 0x02}, + {value: 0x171d, lo: 0x80, hi: 0x8f}, + {value: 0x18fd, lo: 0x90, hi: 0xbf}, + // Block 0x61, offset 0x31c + {value: 0x0020, lo: 0x01}, + {value: 0x1efd, lo: 0x80, hi: 0xbf}, + // Block 0x62, offset 0x31e + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x63, offset 0x321 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9a}, + {value: 0x29e2, lo: 0x9b, hi: 0x9b}, + {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9e}, + {value: 0x2a31, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x64, offset 0x32b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbe}, + {value: 0x2a69, lo: 0xbf, hi: 0xbf}, + // Block 0x65, offset 0x32e + {value: 0x0000, lo: 0x0e}, + {value: 0x0040, lo: 0x80, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xb0}, + {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, + {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, + {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, + {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, + {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, + {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, + {value: 0x2abd, lo: 0xb7, hi: 0xb7}, + {value: 0x2add, lo: 0xb8, hi: 0xb9}, + {value: 0x2afd, lo: 0xba, hi: 0xbb}, + {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, + {value: 0x2afd, lo: 0xbe, hi: 0xbf}, + // Block 0x66, offset 0x33d + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x67, offset 0x341 + {value: 0x0030, lo: 0x04}, + {value: 0x2aa2, lo: 0x80, hi: 0x9d}, + {value: 0x305a, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x30a2, lo: 0xa0, hi: 0xbf}, + // Block 0x68, offset 0x346 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x69, offset 0x349 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x6a, offset 0x34d + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x6b, offset 0x352 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0x6c, offset 0x357 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb1}, + {value: 0x0018, lo: 0xb2, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6d, offset 0x35d + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb7}, + {value: 0x2009, lo: 0xb8, hi: 0xb8}, + {value: 0x6e89, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xbf}, + // Block 0x6e, offset 0x363 + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x3308, lo: 0x8b, hi: 0x8b}, + {value: 0x0008, lo: 0x8c, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x6f, offset 0x372 + {value: 0x0000, lo: 0x05}, + {value: 0x0208, lo: 0x80, hi: 0xb1}, + {value: 0x0108, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x70, offset 0x378 + {value: 0x0000, lo: 0x03}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xbf}, + // Block 0x71, offset 0x37c + {value: 0x0000, lo: 0x0e}, + {value: 0x3008, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xba}, + {value: 0x0008, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x72, offset 0x38b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x73, offset 0x390 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x91}, + {value: 0x3008, lo: 0x92, hi: 0x92}, + {value: 0x3808, lo: 0x93, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x74, offset 0x398 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb9}, + {value: 0x3008, lo: 0xba, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x75, offset 0x3a2 + {value: 0x0000, lo: 0x0a}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x76, offset 0x3ad + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x77, offset 0x3b5 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8c}, + {value: 0x3008, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0x78, offset 0x3c6 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x79, offset 0x3cf + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x9a}, + {value: 0x0008, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3b08, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x7a, offset 0x3df + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x90}, + {value: 0x0008, lo: 0x91, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x7b, offset 0x3ec + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x4465, lo: 0x9c, hi: 0x9c}, + {value: 0x447d, lo: 0x9d, hi: 0x9d}, + {value: 0x2971, lo: 0x9e, hi: 0x9e}, + {value: 0xe06d, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xaf}, + {value: 0x4495, lo: 0xb0, hi: 0xbf}, + // Block 0x7c, offset 0x3f6 + {value: 0x0000, lo: 0x04}, + {value: 0x44b5, lo: 0x80, hi: 0x8f}, + {value: 0x44d5, lo: 0x90, hi: 0x9f}, + {value: 0x44f5, lo: 0xa0, hi: 0xaf}, + {value: 0x44d5, lo: 0xb0, hi: 0xbf}, + // Block 0x7d, offset 0x3fb + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3b08, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x7e, offset 0x408 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x7f, offset 0x40c + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x80, offset 0x411 + {value: 0x0020, lo: 0x01}, + {value: 0x4515, lo: 0x80, hi: 0xbf}, + // Block 0x81, offset 0x413 + {value: 0x0020, lo: 0x03}, + {value: 0x4d15, lo: 0x80, hi: 0x94}, + {value: 0x4ad5, lo: 0x95, hi: 0x95}, + {value: 0x4fb5, lo: 0x96, hi: 0xbf}, + // Block 0x82, offset 0x417 + {value: 0x0020, lo: 0x01}, + {value: 0x54f5, lo: 0x80, hi: 0xbf}, + // Block 0x83, offset 0x419 + {value: 0x0020, lo: 0x03}, + {value: 0x5cf5, lo: 0x80, hi: 0x84}, + {value: 0x5655, lo: 0x85, hi: 0x85}, + {value: 0x5d95, lo: 0x86, hi: 0xbf}, + // Block 0x84, offset 0x41d + {value: 0x0020, lo: 0x08}, + {value: 0x6b55, lo: 0x80, hi: 0x8f}, + {value: 0x6d15, lo: 0x90, hi: 0x90}, + {value: 0x6d55, lo: 0x91, hi: 0xab}, + {value: 0x6ea1, lo: 0xac, hi: 0xac}, + {value: 0x70b5, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x70d5, lo: 0xb0, hi: 0xbf}, + // Block 0x85, offset 0x426 + {value: 0x0020, lo: 0x05}, + {value: 0x72d5, lo: 0x80, hi: 0xad}, + {value: 0x6535, lo: 0xae, hi: 0xae}, + {value: 0x7895, lo: 0xaf, hi: 0xb5}, + {value: 0x6f55, lo: 0xb6, hi: 0xb6}, + {value: 0x7975, lo: 0xb7, hi: 0xbf}, + // Block 0x86, offset 0x42c + {value: 0x0028, lo: 0x03}, + {value: 0x7c21, lo: 0x80, hi: 0x82}, + {value: 0x7be1, lo: 0x83, hi: 0x83}, + {value: 0x7c99, lo: 0x84, hi: 0xbf}, + // Block 0x87, offset 0x430 + {value: 0x0038, lo: 0x0f}, + {value: 0x9db1, lo: 0x80, hi: 0x83}, + {value: 0x9e59, lo: 0x84, hi: 0x85}, + {value: 0x9e91, lo: 0x86, hi: 0x87}, + {value: 0x9ec9, lo: 0x88, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0xa089, lo: 0x92, hi: 0x97}, + {value: 0xa1a1, lo: 0x98, hi: 0x9c}, + {value: 0xa281, lo: 0x9d, hi: 0xb3}, + {value: 0x9d41, lo: 0xb4, hi: 0xb4}, + {value: 0x9db1, lo: 0xb5, hi: 0xb5}, + {value: 0xa789, lo: 0xb6, hi: 0xbb}, + {value: 0xa869, lo: 0xbc, hi: 0xbc}, + {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, + {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, + // Block 0x88, offset 0x440 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x89, offset 0x44a + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0x8a, offset 0x44f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x8b, offset 0x452 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x8c, offset 0x458 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x8d, offset 0x45f + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x8e, offset 0x464 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x8f, offset 0x468 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x90, offset 0x46e + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x91, offset 0x473 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x92, offset 0x47c + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x93, offset 0x481 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x94, offset 0x487 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x97}, + {value: 0x8ad5, lo: 0x98, hi: 0x9f}, + {value: 0x8aed, lo: 0xa0, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xbf}, + // Block 0x95, offset 0x48e + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x8aed, lo: 0xb0, hi: 0xb7}, + {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, + // Block 0x96, offset 0x495 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x97, offset 0x49c + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x98, offset 0x4a0 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xae}, + {value: 0x0018, lo: 0xaf, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x99, offset 0x4a5 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x9a, offset 0x4a8 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xbf}, + // Block 0x9b, offset 0x4ad + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0808, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0808, lo: 0x8a, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb6}, + {value: 0x0808, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbb}, + {value: 0x0808, lo: 0xbc, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x0808, lo: 0xbf, hi: 0xbf}, + // Block 0x9c, offset 0x4b9 + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x96}, + {value: 0x0818, lo: 0x97, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb6}, + {value: 0x0818, lo: 0xb7, hi: 0xbf}, + // Block 0x9d, offset 0x4bf + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa6}, + {value: 0x0818, lo: 0xa7, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x9e, offset 0x4c4 + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x0818, lo: 0xbb, hi: 0xbf}, + // Block 0x9f, offset 0x4cb + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0818, lo: 0x96, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbe}, + {value: 0x0818, lo: 0xbf, hi: 0xbf}, + // Block 0xa0, offset 0x4d3 + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbb}, + {value: 0x0818, lo: 0xbc, hi: 0xbd}, + {value: 0x0808, lo: 0xbe, hi: 0xbf}, + // Block 0xa1, offset 0x4d8 + {value: 0x0000, lo: 0x03}, + {value: 0x0818, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x0818, lo: 0x92, hi: 0xbf}, + // Block 0xa2, offset 0x4dc + {value: 0x0000, lo: 0x0f}, + {value: 0x0808, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x94}, + {value: 0x0808, lo: 0x95, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0x98}, + {value: 0x0808, lo: 0x99, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa3, offset 0x4ec + {value: 0x0000, lo: 0x06}, + {value: 0x0818, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0818, lo: 0x90, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xbc}, + {value: 0x0818, lo: 0xbd, hi: 0xbf}, + // Block 0xa4, offset 0x4f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xa5, offset 0x4f7 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb8}, + {value: 0x0018, lo: 0xb9, hi: 0xbf}, + // Block 0xa6, offset 0x4fb + {value: 0x0000, lo: 0x06}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0818, lo: 0x98, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb7}, + {value: 0x0818, lo: 0xb8, hi: 0xbf}, + // Block 0xa7, offset 0x502 + {value: 0x0000, lo: 0x01}, + {value: 0x0808, lo: 0x80, hi: 0xbf}, + // Block 0xa8, offset 0x504 + {value: 0x0000, lo: 0x02}, + {value: 0x0808, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0xa9, offset 0x507 + {value: 0x0000, lo: 0x02}, + {value: 0x03dd, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xaa, offset 0x50a + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xbf}, + // Block 0xab, offset 0x50e + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0818, lo: 0xa0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xac, offset 0x512 + {value: 0x0000, lo: 0x05}, + {value: 0x3008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xad, offset 0x518 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xae, offset 0x521 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbc}, + {value: 0x0340, lo: 0xbd, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0xaf, offset 0x52d + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb0, offset 0x534 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb2}, + {value: 0x3b08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xbf}, + // Block 0xb1, offset 0x53d + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xb2, offset 0x545 + {value: 0x0000, lo: 0x06}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xbe}, + {value: 0x3008, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x54c + {value: 0x0000, lo: 0x0d}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x89}, + {value: 0x3308, lo: 0x8a, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xb4, offset 0x55a + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3808, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xb5, offset 0x567 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0008, lo: 0x9f, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xb6, offset 0x574 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x3308, lo: 0x9f, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa9}, + {value: 0x3b08, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb7, offset 0x57d + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xb8, offset 0x581 + {value: 0x0000, lo: 0x0d}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xb9, offset 0x58f + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xba, offset 0x597 + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xbb, offset 0x5a2 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbc, offset 0x5ab + {value: 0x0000, lo: 0x05}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9b}, + {value: 0x3308, lo: 0x9c, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xbd, offset 0x5b1 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbe, offset 0x5b9 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xbf, offset 0x5c2 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb5}, + {value: 0x3808, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0xc0, offset 0x5cc + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0xc1, offset 0x5cf + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xc2, offset 0x5db + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xbf}, + // Block 0xc3, offset 0x5de + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0xc4, offset 0x5e3 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xc5, offset 0x5e6 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xc6, offset 0x5f0 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xbf}, + // Block 0xc7, offset 0x5f9 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xaa, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xc8, offset 0x605 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xc9, offset 0x608 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xca, offset 0x60d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0xbf}, + // Block 0xcb, offset 0x610 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xbf}, + // Block 0xcc, offset 0x613 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0xbf}, + // Block 0xcd, offset 0x616 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xce, offset 0x61d + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xcf, offset 0x624 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0xd0, offset 0x628 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x0008, lo: 0xa3, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0xd1, offset 0x633 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0xbf}, + // Block 0xd2, offset 0x636 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3008, lo: 0x91, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd3, offset 0x63c + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8e}, + {value: 0x3308, lo: 0x8f, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xd4, offset 0x641 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0xd5, offset 0x645 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xd6, offset 0x648 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xd7, offset 0x64b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0xbf}, + // Block 0xd8, offset 0x64e + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0xd9, offset 0x653 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x03c0, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xbf}, + // Block 0xda, offset 0x65d + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xdb, offset 0x660 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xbf}, + // Block 0xdc, offset 0x664 + {value: 0x0000, lo: 0x0e}, + {value: 0x0018, lo: 0x80, hi: 0x9d}, + {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, + {value: 0xb601, lo: 0x9f, hi: 0x9f}, + {value: 0xb649, lo: 0xa0, hi: 0xa0}, + {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, + {value: 0xb719, lo: 0xa2, hi: 0xa2}, + {value: 0xb781, lo: 0xa3, hi: 0xa3}, + {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, + {value: 0x3018, lo: 0xa5, hi: 0xa6}, + {value: 0x3318, lo: 0xa7, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xac}, + {value: 0x3018, lo: 0xad, hi: 0xb2}, + {value: 0x0340, lo: 0xb3, hi: 0xba}, + {value: 0x3318, lo: 0xbb, hi: 0xbf}, + // Block 0xdd, offset 0x673 + {value: 0x0000, lo: 0x0b}, + {value: 0x3318, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x84}, + {value: 0x3318, lo: 0x85, hi: 0x8b}, + {value: 0x0018, lo: 0x8c, hi: 0xa9}, + {value: 0x3318, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xba}, + {value: 0xb851, lo: 0xbb, hi: 0xbb}, + {value: 0xb899, lo: 0xbc, hi: 0xbc}, + {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, + {value: 0xb949, lo: 0xbe, hi: 0xbe}, + {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, + // Block 0xde, offset 0x67f + {value: 0x0000, lo: 0x03}, + {value: 0xba19, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xbf}, + // Block 0xdf, offset 0x683 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x3318, lo: 0x82, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0xbf}, + // Block 0xe0, offset 0x688 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe1, offset 0x68d + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0xe2, offset 0x691 + {value: 0x0000, lo: 0x04}, + {value: 0x3308, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0xe3, offset 0x696 + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x3308, lo: 0xa1, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xe4, offset 0x69f + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa4}, + {value: 0x0040, lo: 0xa5, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0xe5, offset 0x6aa + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x86}, + {value: 0x0818, lo: 0x87, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xe6, offset 0x6b0 + {value: 0x0000, lo: 0x07}, + {value: 0x0a08, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0818, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xe7, offset 0x6b8 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe8, offset 0x6bc + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0xe9, offset 0x6c0 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0xea, offset 0x6c6 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xeb, offset 0x6cc + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0xc1c1, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xec, offset 0x6d1 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xbf}, + // Block 0xed, offset 0x6d4 + {value: 0x0000, lo: 0x0d}, + {value: 0xc7e9, lo: 0x80, hi: 0x80}, + {value: 0xc839, lo: 0x81, hi: 0x81}, + {value: 0xc889, lo: 0x82, hi: 0x82}, + {value: 0xc8d9, lo: 0x83, hi: 0x83}, + {value: 0xc929, lo: 0x84, hi: 0x84}, + {value: 0xc979, lo: 0x85, hi: 0x85}, + {value: 0xc9c9, lo: 0x86, hi: 0x86}, + {value: 0xca19, lo: 0x87, hi: 0x87}, + {value: 0xca69, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0xcab9, lo: 0x90, hi: 0x90}, + {value: 0xcad9, lo: 0x91, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xee, offset 0x6e2 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x92}, + {value: 0x0040, lo: 0x93, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xef, offset 0x6e9 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0xf0, offset 0x6ec + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0xbf}, + // Block 0xf1, offset 0x6ef + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0xf2, offset 0x6f3 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0xf3, offset 0x6f9 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0xf4, offset 0x6fe + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb2}, + {value: 0x0018, lo: 0xb3, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xf5, offset 0x708 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xf6, offset 0x70d + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xf7, offset 0x710 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0xbf}, + // Block 0xf8, offset 0x713 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xf9, offset 0x716 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xfa, offset 0x719 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0xfb, offset 0x71d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xfc, offset 0x720 + {value: 0x0020, lo: 0x0f}, + {value: 0xdeb9, lo: 0x80, hi: 0x89}, + {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, + {value: 0xdff9, lo: 0x8b, hi: 0x9c}, + {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, + {value: 0xe239, lo: 0x9e, hi: 0xa2}, + {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, + {value: 0xe2d9, lo: 0xa4, hi: 0xab}, + {value: 0x7ed5, lo: 0xac, hi: 0xac}, + {value: 0xe3d9, lo: 0xad, hi: 0xaf}, + {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, + {value: 0xe439, lo: 0xb1, hi: 0xb6}, + {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, + {value: 0xe4f9, lo: 0xba, hi: 0xba}, + {value: 0x8edd, lo: 0xbb, hi: 0xbb}, + {value: 0xe519, lo: 0xbc, hi: 0xbf}, + // Block 0xfd, offset 0x730 + {value: 0x0020, lo: 0x10}, + {value: 0x937d, lo: 0x80, hi: 0x80}, + {value: 0xf099, lo: 0x81, hi: 0x86}, + {value: 0x939d, lo: 0x87, hi: 0x8a}, + {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, + {value: 0xf159, lo: 0x8c, hi: 0x96}, + {value: 0x941d, lo: 0x97, hi: 0x97}, + {value: 0xf2b9, lo: 0x98, hi: 0xa3}, + {value: 0x943d, lo: 0xa4, hi: 0xa6}, + {value: 0xf439, lo: 0xa7, hi: 0xaa}, + {value: 0x949d, lo: 0xab, hi: 0xab}, + {value: 0xf4b9, lo: 0xac, hi: 0xac}, + {value: 0x94bd, lo: 0xad, hi: 0xad}, + {value: 0xf4d9, lo: 0xae, hi: 0xaf}, + {value: 0x94dd, lo: 0xb0, hi: 0xb1}, + {value: 0xf519, lo: 0xb2, hi: 0xbe}, + {value: 0x2040, lo: 0xbf, hi: 0xbf}, + // Block 0xfe, offset 0x741 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0340, lo: 0x81, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x9f}, + {value: 0x0340, lo: 0xa0, hi: 0xbf}, + // Block 0xff, offset 0x746 + {value: 0x0000, lo: 0x01}, + {value: 0x0340, lo: 0x80, hi: 0xbf}, + // Block 0x100, offset 0x748 + {value: 0x0000, lo: 0x01}, + {value: 0x33c0, lo: 0x80, hi: 0xbf}, + // Block 0x101, offset 0x74a + {value: 0x0000, lo: 0x02}, + {value: 0x33c0, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, +} + +// Total table size 41662 bytes (40KiB); checksum: 355A58A4 diff --git a/vendor/golang.org/x/net/internal/socks/socks.go b/vendor/golang.org/x/net/internal/socks/socks.go index 6929a9fd5c6..97db2340ec9 100644 --- a/vendor/golang.org/x/net/internal/socks/socks.go +++ b/vendor/golang.org/x/net/internal/socks/socks.go @@ -127,7 +127,7 @@ type Dialer struct { // establishing the transport connection. ProxyDial func(context.Context, string, string) (net.Conn, error) - // AuthMethods specifies the list of request authention + // AuthMethods specifies the list of request authentication // methods. // If empty, SOCKS client requests only AuthMethodNotRequired. AuthMethods []AuthMethod diff --git a/vendor/golang.org/x/net/proxy/dial.go b/vendor/golang.org/x/net/proxy/dial.go new file mode 100644 index 00000000000..811c2e4e962 --- /dev/null +++ b/vendor/golang.org/x/net/proxy/dial.go @@ -0,0 +1,54 @@ +// 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. + +package proxy + +import ( + "context" + "net" +) + +// A ContextDialer dials using a context. +type ContextDialer interface { + DialContext(ctx context.Context, network, address string) (net.Conn, error) +} + +// Dial works like DialContext on net.Dialer but using a dialer returned by FromEnvironment. +// +// The passed ctx is only used for returning the Conn, not the lifetime of the Conn. +// +// Custom dialers (registered via RegisterDialerType) that do not implement ContextDialer +// can leak a goroutine for as long as it takes the underlying Dialer implementation to timeout. +// +// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed. +func Dial(ctx context.Context, network, address string) (net.Conn, error) { + d := FromEnvironment() + if xd, ok := d.(ContextDialer); ok { + return xd.DialContext(ctx, network, address) + } + return dialContext(ctx, d, network, address) +} + +// WARNING: this can leak a goroutine for as long as the underlying Dialer implementation takes to timeout +// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed. +func dialContext(ctx context.Context, d Dialer, network, address string) (net.Conn, error) { + var ( + conn net.Conn + done = make(chan struct{}, 1) + err error + ) + go func() { + conn, err = d.Dial(network, address) + close(done) + if conn != nil && ctx.Err() != nil { + conn.Close() + } + }() + select { + case <-ctx.Done(): + err = ctx.Err() + case <-done: + } + return conn, err +} diff --git a/vendor/golang.org/x/net/proxy/direct.go b/vendor/golang.org/x/net/proxy/direct.go index 4c5ad88b1e7..3d66bdef9d7 100644 --- a/vendor/golang.org/x/net/proxy/direct.go +++ b/vendor/golang.org/x/net/proxy/direct.go @@ -5,14 +5,27 @@ package proxy import ( + "context" "net" ) type direct struct{} -// Direct is a direct proxy: one that makes network connections directly. +// Direct implements Dialer by making network connections directly using net.Dial or net.DialContext. var Direct = direct{} +var ( + _ Dialer = Direct + _ ContextDialer = Direct +) + +// Dial directly invokes net.Dial with the supplied parameters. func (direct) Dial(network, addr string) (net.Conn, error) { return net.Dial(network, addr) } + +// DialContext instantiates a net.Dialer and invokes its DialContext receiver with the supplied parameters. +func (direct) DialContext(ctx context.Context, network, addr string) (net.Conn, error) { + var d net.Dialer + return d.DialContext(ctx, network, addr) +} diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go index 0689bb6a70f..573fe79e86e 100644 --- a/vendor/golang.org/x/net/proxy/per_host.go +++ b/vendor/golang.org/x/net/proxy/per_host.go @@ -5,6 +5,7 @@ package proxy import ( + "context" "net" "strings" ) @@ -41,6 +42,20 @@ func (p *PerHost) Dial(network, addr string) (c net.Conn, err error) { return p.dialerForRequest(host).Dial(network, addr) } +// DialContext connects to the address addr on the given network through either +// defaultDialer or bypass. +func (p *PerHost) DialContext(ctx context.Context, network, addr string) (c net.Conn, err error) { + host, _, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + d := p.dialerForRequest(host) + if x, ok := d.(ContextDialer); ok { + return x.DialContext(ctx, network, addr) + } + return dialContext(ctx, d, network, addr) +} + func (p *PerHost) dialerForRequest(host string) Dialer { if ip := net.ParseIP(host); ip != nil { for _, net := range p.bypassNetworks { diff --git a/vendor/golang.org/x/net/proxy/proxy.go b/vendor/golang.org/x/net/proxy/proxy.go index f6026b902c8..9ff4b9a7767 100644 --- a/vendor/golang.org/x/net/proxy/proxy.go +++ b/vendor/golang.org/x/net/proxy/proxy.go @@ -15,6 +15,7 @@ import ( ) // A Dialer is a means to establish a connection. +// Custom dialers should also implement ContextDialer. type Dialer interface { // Dial connects to the given address via the proxy. Dial(network, addr string) (c net.Conn, err error) @@ -25,21 +26,30 @@ type Auth struct { User, Password string } -// FromEnvironment returns the dialer specified by the proxy related variables in -// the environment. +// FromEnvironment returns the dialer specified by the proxy-related +// variables in the environment and makes underlying connections +// directly. func FromEnvironment() Dialer { + return FromEnvironmentUsing(Direct) +} + +// FromEnvironmentUsing returns the dialer specify by the proxy-related +// variables in the environment and makes underlying connections +// using the provided forwarding Dialer (for instance, a *net.Dialer +// with desired configuration). +func FromEnvironmentUsing(forward Dialer) Dialer { allProxy := allProxyEnv.Get() if len(allProxy) == 0 { - return Direct + return forward } proxyURL, err := url.Parse(allProxy) if err != nil { - return Direct + return forward } - proxy, err := FromURL(proxyURL, Direct) + proxy, err := FromURL(proxyURL, forward) if err != nil { - return Direct + return forward } noProxy := noProxyEnv.Get() @@ -47,7 +57,7 @@ func FromEnvironment() Dialer { return proxy } - perHost := NewPerHost(proxy, Direct) + perHost := NewPerHost(proxy, forward) perHost.AddFromString(noProxy) return perHost } diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go index 56345ec8b63..c91651f96db 100644 --- a/vendor/golang.org/x/net/proxy/socks5.go +++ b/vendor/golang.org/x/net/proxy/socks5.go @@ -17,8 +17,14 @@ import ( func SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) { d := socks.NewDialer(network, address) if forward != nil { - d.ProxyDial = func(_ context.Context, network string, address string) (net.Conn, error) { - return forward.Dial(network, address) + if f, ok := forward.(ContextDialer); ok { + d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { + return f.DialContext(ctx, network, address) + } + } else { + d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { + return dialContext(ctx, forward, network, address) + } } } if auth != nil { diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go index da6b9e4363d..ed8da8deacf 100644 --- a/vendor/golang.org/x/sys/cpu/byteorder.go +++ b/vendor/golang.org/x/sys/cpu/byteorder.go @@ -5,26 +5,56 @@ package cpu import ( - "encoding/binary" "runtime" ) +// byteOrder is a subset of encoding/binary.ByteOrder. +type byteOrder interface { + Uint32([]byte) uint32 + Uint64([]byte) uint64 +} + +type littleEndian struct{} +type bigEndian struct{} + +func (littleEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func (littleEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return 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 +} + +func (bigEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 +} + +func (bigEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 +} + // hostByteOrder returns binary.LittleEndian on little-endian machines and // binary.BigEndian on big-endian machines. -func hostByteOrder() binary.ByteOrder { +func hostByteOrder() byteOrder { switch runtime.GOARCH { case "386", "amd64", "amd64p32", "arm", "arm64", "mipsle", "mips64le", "mips64p32le", "ppc64le", "riscv", "riscv64": - return binary.LittleEndian + return littleEndian{} case "armbe", "arm64be", "mips", "mips64", "mips64p32", "ppc", "ppc64", "s390", "s390x", "sparc", "sparc64": - return binary.BigEndian + return bigEndian{} } panic("unknown architecture") } diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go index 679e78c2cef..b4e6ecb2dcc 100644 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -78,6 +78,42 @@ var ARM64 struct { _ CacheLinePad } +// ARM contains the supported CPU features of the current ARM (32-bit) platform. +// All feature flags are false if: +// 1. the current platform is not arm, or +// 2. the current operating system is not Linux. +var ARM struct { + _ CacheLinePad + HasSWP bool // SWP instruction support + HasHALF bool // Half-word load and store support + HasTHUMB bool // ARM Thumb instruction set + Has26BIT bool // Address space limited to 26-bits + HasFASTMUL bool // 32-bit operand, 64-bit result multiplication support + HasFPA bool // Floating point arithmetic support + HasVFP bool // Vector floating point support + HasEDSP bool // DSP Extensions support + HasJAVA bool // Java instruction set + HasIWMMXT bool // Intel Wireless MMX technology support + HasCRUNCH bool // MaverickCrunch context switching and handling + HasTHUMBEE bool // Thumb EE instruction set + HasNEON bool // NEON instruction set + HasVFPv3 bool // Vector floating point version 3 support + HasVFPv3D16 bool // Vector floating point version 3 D8-D15 + HasTLS bool // Thread local storage support + HasVFPv4 bool // Vector floating point version 4 support + HasIDIVA bool // Integer divide instruction support in ARM mode + HasIDIVT bool // Integer divide instruction support in Thumb mode + HasVFPD32 bool // Vector floating point version 3 D15-D31 + HasLPAE bool // Large Physical Address Extensions + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + _ CacheLinePad +} + // PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. // If the current platform is not ppc64/ppc64le then all feature flags are false. // diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go index 7f2348b7d4b..981af6818ca 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_arm.go +++ b/vendor/golang.org/x/sys/cpu/cpu_arm.go @@ -6,4 +6,35 @@ package cpu const cacheLineSize = 32 -func doinit() {} +// HWCAP/HWCAP2 bits. +// These are specific to Linux. +const ( + hwcap_SWP = 1 << 0 + hwcap_HALF = 1 << 1 + hwcap_THUMB = 1 << 2 + hwcap_26BIT = 1 << 3 + hwcap_FAST_MULT = 1 << 4 + hwcap_FPA = 1 << 5 + hwcap_VFP = 1 << 6 + hwcap_EDSP = 1 << 7 + hwcap_JAVA = 1 << 8 + hwcap_IWMMXT = 1 << 9 + hwcap_CRUNCH = 1 << 10 + hwcap_THUMBEE = 1 << 11 + hwcap_NEON = 1 << 12 + hwcap_VFPv3 = 1 << 13 + hwcap_VFPv3D16 = 1 << 14 + hwcap_TLS = 1 << 15 + hwcap_VFPv4 = 1 << 16 + hwcap_IDIVA = 1 << 17 + hwcap_IDIVT = 1 << 18 + hwcap_VFPD32 = 1 << 19 + hwcap_LPAE = 1 << 20 + hwcap_EVTSTRM = 1 << 21 + + hwcap2_AES = 1 << 0 + hwcap2_PMULL = 1 << 1 + hwcap2_SHA1 = 1 << 2 + hwcap2_SHA2 = 1 << 3 + hwcap2_CRC32 = 1 << 4 +) diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go new file mode 100644 index 00000000000..2057006dce4 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go @@ -0,0 +1,39 @@ +// 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. + +package cpu + +func doinit() { + ARM.HasSWP = isSet(hwCap, hwcap_SWP) + ARM.HasHALF = isSet(hwCap, hwcap_HALF) + ARM.HasTHUMB = isSet(hwCap, hwcap_THUMB) + ARM.Has26BIT = isSet(hwCap, hwcap_26BIT) + ARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT) + ARM.HasFPA = isSet(hwCap, hwcap_FPA) + ARM.HasVFP = isSet(hwCap, hwcap_VFP) + ARM.HasEDSP = isSet(hwCap, hwcap_EDSP) + ARM.HasJAVA = isSet(hwCap, hwcap_JAVA) + ARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT) + ARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH) + ARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE) + ARM.HasNEON = isSet(hwCap, hwcap_NEON) + ARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3) + ARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16) + ARM.HasTLS = isSet(hwCap, hwcap_TLS) + ARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4) + ARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA) + ARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT) + ARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32) + ARM.HasLPAE = isSet(hwCap, hwcap_LPAE) + ARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM.HasAES = isSet(hwCap2, hwcap2_AES) + ARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL) + ARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1) + ARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2) + ARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index 5a22eca9676..890ec464c7a 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -212,9 +212,11 @@ esac echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; elif [ "$GOOS" == "darwin" ]; then # pre-1.12, direct syscalls - echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; + echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos syscall_darwin_${GOARCH}.1_11.go $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; # 1.12 and later, syscalls via libSystem echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; + # 1.13 and later, syscalls via libSystem (including syscallPtr) + echo "$mksyscall -tags $GOOS,$GOARCH,go1.13 syscall_darwin.1_13.go |gofmt >zsyscall_$GOOSARCH.1_13.go"; else echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index e096161a527..67b84828ac0 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -60,6 +60,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -80,6 +81,7 @@ includes_Darwin=' includes_DragonFly=' #include #include +#include #include #include #include @@ -103,6 +105,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -179,24 +182,31 @@ struct ltchars { #include #include #include +#include #include #include #include #include +#include #include +#include #include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include #include #include #include -#include -#include -#include -#include -#include +#include #include #include #include @@ -208,26 +218,21 @@ struct ltchars { #include #include #include +#include #include #include +#include #include -#include #include #include -#include -#include -#include #include -#include -#include +#include #include -#include -#include -#include -#include -#include -#include #include +#include +#include +#include + #include #include @@ -266,6 +271,11 @@ struct ltchars { #define FS_KEY_DESC_PREFIX "fscrypt:" #define FS_KEY_DESC_PREFIX_SIZE 8 #define FS_MAX_KEY_SIZE 64 + +// The code generator produces -0x1 for (~0), but an unsigned value is necessary +// for the tipc_subscr timeout __u32 field. +#undef TIPC_WAIT_FOREVER +#define TIPC_WAIT_FOREVER 0xffffffff ' includes_NetBSD=' @@ -275,6 +285,7 @@ includes_NetBSD=' #include #include #include +#include #include #include #include @@ -301,6 +312,7 @@ includes_OpenBSD=' #include #include #include +#include #include #include #include @@ -337,6 +349,7 @@ includes_OpenBSD=' includes_SunOS=' #include #include +#include #include #include #include @@ -429,6 +442,7 @@ ccflags="$@" $2 == "XCASE" || $2 == "ALTWERASE" || $2 == "NOKERNINFO" || + $2 == "NFDBITS" || $2 ~ /^PAR/ || $2 ~ /^SIG[^_]/ || $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ || diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go index bf05603f150..b3c8e3301ce 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -29,6 +29,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go index 13d4321f4c3..9a6e024179d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -29,6 +29,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 97a8eef6fae..3e6671426c0 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -413,8 +413,6 @@ func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err e return kevent(kq, change, len(changes), event, len(events), timeout) } -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL - // sysctlmib translates name to mib number and appends any additional args. func sysctlmib(name string, args ...int) ([]_C_int, error) { // Translate name to mib number. diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go new file mode 100644 index 00000000000..6a15cba6110 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go @@ -0,0 +1,29 @@ +// 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 darwin,go1.12,!go1.13 + +package unix + +import ( + "unsafe" +) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // To implement this using libSystem we'd need syscall_syscallPtr for + // fdopendir. However, syscallPtr was only added in Go 1.13, so we fall + // back to raw syscalls for this func on Go 1.12. + var p unsafe.Pointer + if len(buf) > 0 { + p = unsafe.Pointer(&buf[0]) + } else { + p = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + return n, errnoErr(e1) + } + return n, nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go new file mode 100644 index 00000000000..24960c38ba5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go @@ -0,0 +1,103 @@ +// 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 darwin,go1.13 + +package unix + +import "unsafe" + +//sys closedir(dir uintptr) (err error) +//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) + +func fdopendir(fd int) (dir uintptr, err error) { + r0, _, e1 := syscall_syscallPtr(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0) + dir = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fdopendir_trampoline() + +//go:linkname libc_fdopendir libc_fdopendir +//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulate Getdirentries using fdopendir/readdir_r/closedir. + const ptrSize = unsafe.Sizeof(uintptr(0)) + + // We store the number of entries to skip in the seek + // offset of fd. See issue #31368. + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // We need to duplicate the incoming file descriptor + // because the caller expects to retain control of it, but + // fdopendir expects to take control of its argument. + // Just Dup'ing the file descriptor is not enough, as the + // result shares underlying state. Use Openat to make a really + // new file descriptor referring to the same directory. + fd2, err := Openat(fd, ".", O_RDONLY, 0) + if err != nil { + return 0, err + } + d, err := fdopendir(fd2) + if err != nil { + Close(fd2) + return 0, err + } + defer closedir(d) + + var cnt int64 + for { + var entry Dirent + var entryp *Dirent + e := readdir_r(d, &entry, &entryp) + if e != 0 { + return n, errnoErr(e) + } + if entryp == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + // Copy entry into return buffer. + s := struct { + ptr unsafe.Pointer + siz int + cap int + }{ptr: unsafe.Pointer(&entry), siz: reclen, cap: reclen} + copy(buf, *(*[]byte)(unsafe.Pointer(&s))) + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index f26a19ebd6a..c5018a385c8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -460,7 +460,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sys Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go new file mode 100644 index 00000000000..6b223f91a5e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go @@ -0,0 +1,9 @@ +// 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 darwin,386,!go1.12 + +package unix + +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index cd8be182a5f..dd756e708c2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -10,6 +10,7 @@ import ( "syscall" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL //sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) func setTimespec(sec, nsec int64) Timespec { @@ -45,6 +46,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -58,7 +63,6 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 -//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go new file mode 100644 index 00000000000..68ebd6fab2a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go @@ -0,0 +1,9 @@ +// 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 darwin,amd64,!go1.12 + +package unix + +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index d0d07243ce2..7f148c428e8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -10,6 +10,7 @@ import ( "syscall" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL //sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) func setTimespec(sec, nsec int64) Timespec { @@ -45,6 +46,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -58,7 +63,6 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 -//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go new file mode 100644 index 00000000000..c81510da27f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go @@ -0,0 +1,11 @@ +// 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 darwin,386,!go1.12 + +package unix + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go index 01e8a38a944..58be02e718a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -12,6 +12,10 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) error { return ENOTSUP } +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + return ENOTSUP +} + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } @@ -45,6 +49,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -62,7 +70,3 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Lstat(path string, stat *Stat_t) (err error) //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) - -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return 0, ENOSYS -} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go new file mode 100644 index 00000000000..01d450406be --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go @@ -0,0 +1,11 @@ +// 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 darwin,arm64,!go1.12 + +package unix + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index e674f81dad7..1ee931f97c1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -14,6 +14,10 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) error { return ENOTSUP } +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + return ENOTSUP +} + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} } @@ -47,6 +51,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -64,7 +72,3 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Lstat(path string, stat *Stat_t) (err error) //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) - -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return 0, ENOSYS -} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index 4b4ae460f2f..f34c86c899a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -15,6 +15,7 @@ func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) //go:linkname syscall_syscall syscall.syscall //go:linkname syscall_syscall6 syscall.syscall6 @@ -22,6 +23,7 @@ func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, er //go:linkname syscall_syscall9 syscall.syscall9 //go:linkname syscall_rawSyscall syscall.rawSyscall //go:linkname syscall_rawSyscall6 syscall.rawSyscall6 +//go:linkname syscall_syscallPtr syscall.syscallPtr // Find the entry point for f. See comments in runtime/proc.go for the // function of the same name. diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index 474181c022f..8c8d5029799 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -14,6 +14,8 @@ package unix import "unsafe" +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 @@ -288,7 +290,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go index 9babb31ea75..a6b4830ac8a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index d95c4436f96..25ac9340c02 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -36,6 +36,8 @@ var ( // INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h const _ino64First = 1200031 +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + func supportsABI(ver uint32) bool { osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) return osreldate >= ver @@ -651,7 +653,7 @@ func PtraceSingleStep(pid int) (err error) { //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 21e03958cdc..dcc56457a02 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index 9c945a65796..321c3baceb6 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 5cd6243f2a0..69770083132 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index a318054878a..dbbbfd6035c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index e538bb5677a..ebf3195b654 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -1222,6 +1222,34 @@ func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) } +// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This +// command limits the set of keys that can be linked to the keyring, regardless +// of keyring permissions. The command requires the "setattr" permission. +// +// When called with an empty keyType the command locks the keyring, preventing +// any further keys from being linked to the keyring. +// +// The "asymmetric" keyType defines restrictions requiring key payloads to be +// DER encoded X.509 certificates signed by keys in another keyring. Restrictions +// for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted", +// "key_or_keyring:", and "key_or_keyring::chain". +// +// As of Linux 4.12, only the "asymmetric" keyType defines type-specific +// restrictions. +// +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html +// http://man7.org/linux/man-pages/man2/keyctl.2.html +func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error { + if keyType == "" { + return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid) + } + return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) +} + +//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL + func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { var msg Msghdr var rsa RawSockaddrAny @@ -1465,8 +1493,12 @@ func PtraceSyscall(pid int, signal int) (err error) { func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } +func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) } + func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } +func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) } + func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } //sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) @@ -1823,6 +1855,17 @@ func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err erro return openByHandleAt(mountFD, handle.fileHandle, flags) } +// Klogset wraps the sys_syslog system call; it sets console_loglevel to +// the value specified by arg and passes a dummy pointer to bufp. +func Klogset(typ int, arg int) (err error) { + var p unsafe.Pointer + _, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg)) + if errno != 0 { + return errnoErr(errno) + } + return nil +} + /* * Unimplemented */ diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index e2f8cf6e5ad..e7fa665e68b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -372,6 +372,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 87a30744d6c..088ce0f9356 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -163,6 +163,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index f626794439b..11930fc8fac 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -252,6 +252,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index cb20b15d5d2..251e2d97155 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -180,6 +180,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index b3b21ec1e2b..7562fe97b83 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -208,6 +208,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index 5144d4e1330..a939ff8f219 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -220,6 +220,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 0a100b66a3a..28d6d0f229e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -91,6 +91,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 6230f640520..6798c26258a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -179,6 +179,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index f81dbdc9c83..eb5cb1a71d8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -120,6 +120,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index b69565616fc..37321c12efb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -107,6 +107,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index 7f9812b4f9d..f95463ee287 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -18,6 +18,8 @@ import ( "unsafe" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 @@ -328,7 +330,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go index 24f74e58ce2..24da8b52454 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go index 6878bf7ff90..25a0ac82589 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go index dbbfcf71dbd..21591ecd4d1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go index f3434465a17..80474963500 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 9a26768f6b8..7fe65ef75f8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -18,6 +18,8 @@ import ( "unsafe" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 @@ -303,7 +305,7 @@ func Uname(uname *Utsname) error { //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go index d62da60d1ff..42b5a0e51e8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index 9a35334cba4..6ea4b48831b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go index 5d812aaea53..1c3d26fa2c9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go index 0fb39cf5eb1..a8c458cb031 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 1610f551d4c..62f968c7f02 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -649,7 +649,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go index 91c32ddf02a..b22a34d7ae9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -18,6 +18,10 @@ func (iov *Iovec) SetLen(length int) { iov.Len = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index 3b39d7408ad..6217cdba57b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -3,7 +3,7 @@ // +build 386,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 8fe5547775b..e3ff2ee3d48 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -3,7 +3,7 @@ // +build amd64,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index 7a977770d0a..3e417571a94 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -3,7 +3,7 @@ // +build arm,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index 6d56d8a059d..cbd8ed18b97 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -3,7 +3,7 @@ // +build arm64,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index bbe6089bb7e..6130471748a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -938,6 +938,7 @@ const ( NET_RT_FLAGS = 0x2 NET_RT_IFLIST = 0x3 NET_RT_MAXID = 0x4 + NFDBITS = 0x40 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index d2bbaabc87f..b72544fcd2f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -3,7 +3,7 @@ // +build 386,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -1055,6 +1055,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index 4f8db783d3c..9f382678e5a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -3,7 +3,7 @@ // +build amd64,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1056,6 +1056,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 53e5de60518..16db56abc46 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -3,7 +3,7 @@ // +build arm,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- _const.go package unix @@ -1063,6 +1063,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index d4a192fefee..1a1de345431 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -3,7 +3,7 @@ // +build arm64,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1056,6 +1056,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index df7c8964b86..fcf5796a01b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1087,6 +1091,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1099,6 +1114,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1344,6 +1361,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1677,6 +1695,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1692,6 +1712,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1730,6 +1751,10 @@ const ( PTRACE_SINGLEBLOCK = 0x21 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 @@ -1790,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1863,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1887,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1894,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1906,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1914,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2140,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2497,7 +2526,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2518,7 +2547,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2717,6 +2746,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2733,6 +2764,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index a3af923f6c5..5bcf3dbd75b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1087,6 +1091,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1099,6 +1114,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1344,6 +1361,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1678,6 +1696,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1693,6 +1713,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1731,6 +1752,10 @@ const ( PTRACE_SINGLEBLOCK = 0x21 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 @@ -1791,7 +1816,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1864,6 +1889,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1888,6 +1914,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1895,7 +1922,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1907,6 +1934,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1915,8 +1943,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2141,6 +2169,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2498,7 +2527,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2519,7 +2548,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2717,6 +2746,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2733,6 +2764,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a0e87d2cd6b..3e02dcff881 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1675,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1696,6 +1716,7 @@ const ( PTRACE_GETSIGMASK = 0x420a PTRACE_GETVFPREGS = 0x1b PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x16 PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1736,6 +1757,10 @@ const ( PTRACE_SET_SYSCALL = 0x17 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 PT_DATA_ADDR = 0x10004 PT_TEXT_ADDR = 0x10000 @@ -1797,7 +1822,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1870,6 +1895,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1894,6 +1920,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1901,7 +1928,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1913,6 +1940,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1921,8 +1949,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2147,6 +2175,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2504,7 +2533,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2525,7 +2554,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2723,6 +2752,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2739,6 +2770,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index f3c51b03896..2293f8bb869 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -561,6 +564,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1089,6 +1093,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1101,6 +1116,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1345,6 +1362,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1678,6 +1696,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1691,6 +1711,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1723,6 +1744,12 @@ const ( PTRACE_SETSIGMASK = 0x420b PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1781,7 +1808,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1854,6 +1881,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1878,6 +1906,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1885,7 +1914,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1897,6 +1926,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1905,8 +1935,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2131,6 +2161,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2489,7 +2520,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2510,7 +2541,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2708,6 +2739,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2724,6 +2757,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 0f3aad7c872..57742ea2768 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1675,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1689,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1732,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1790,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1863,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1887,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1894,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1906,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1914,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2140,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2499,7 +2528,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2520,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2719,6 +2748,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2735,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 6fa9b6e9f2b..33bfa6cbf05 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1675,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1689,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1732,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1790,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1863,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1887,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1894,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1906,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1914,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2140,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2499,7 +2528,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2520,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2719,6 +2748,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2735,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 25faaf94dec..89fd414e66e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1675,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1689,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1732,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1790,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1863,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1887,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1894,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1906,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1914,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2140,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2499,7 +2528,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2520,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2719,6 +2748,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2735,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 85f5bf18dee..aabe5e4244f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1675,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1689,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1732,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1790,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1863,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1887,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1894,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1906,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1914,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2140,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2499,7 +2528,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2520,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2719,6 +2748,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2735,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 8249f8e767b..27227912879 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1341,6 +1358,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1677,6 +1695,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1696,6 +1716,7 @@ const ( PTRACE_GETVRREGS = 0x12 PTRACE_GETVSRREGS = 0x1b PTRACE_GET_DEBUGREG = 0x19 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1735,6 +1756,10 @@ const ( PTRACE_SINGLEBLOCK = 0x100 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1d PTRACE_SYSEMU_SINGLESTEP = 0x1e PTRACE_TRACEME = 0x0 @@ -1848,7 +1873,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1921,6 +1946,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1945,6 +1971,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1952,7 +1979,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1964,6 +1991,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1972,8 +2000,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2198,6 +2226,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2559,7 +2588,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2580,7 +2609,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2778,6 +2807,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2794,6 +2825,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0xc00 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 5a0d2d3ac62..e33be416c7d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1341,6 +1358,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1677,6 +1695,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1696,6 +1716,7 @@ const ( PTRACE_GETVRREGS = 0x12 PTRACE_GETVSRREGS = 0x1b PTRACE_GET_DEBUGREG = 0x19 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1735,6 +1756,10 @@ const ( PTRACE_SINGLEBLOCK = 0x100 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1d PTRACE_SYSEMU_SINGLESTEP = 0x1e PTRACE_TRACEME = 0x0 @@ -1848,7 +1873,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1921,6 +1946,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1945,6 +1971,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1952,7 +1979,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1964,6 +1991,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1972,8 +2000,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2198,6 +2226,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2559,7 +2588,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2580,7 +2609,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2778,6 +2807,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2794,6 +2825,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0xc00 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 0c7dec3b739..b9908d3094f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1675,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1688,6 +1708,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1720,6 +1741,10 @@ const ( PTRACE_SETSIGMASK = 0x420b PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1778,7 +1803,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1851,6 +1876,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1875,6 +1901,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1882,7 +1909,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1894,6 +1921,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1902,8 +1930,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2128,6 +2156,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2485,7 +2514,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2506,7 +2535,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2704,6 +2733,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2720,6 +2751,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index f0b3c3fd973..85647f4f79e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -253,6 +253,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -304,9 +305,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -460,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -560,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1086,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1098,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1342,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1677,6 +1695,8 @@ const ( PTRACE_DETACH = 0x11 PTRACE_DISABLE_TE = 0x5010 PTRACE_ENABLE_TE = 0x5009 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1691,6 +1711,7 @@ const ( PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1734,6 +1755,10 @@ const ( PTRACE_SINGLEBLOCK = 0xc PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TE_ABORT_RAND = 0x5011 PTRACE_TRACEME = 0x0 PT_ACR0 = 0x90 @@ -1851,7 +1876,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1924,6 +1949,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1948,6 +1974,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1955,7 +1982,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1967,6 +1994,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1975,8 +2003,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2201,6 +2229,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2558,7 +2587,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2579,7 +2608,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2777,6 +2806,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2793,6 +2824,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index ebe264d60e6..c0095a5432e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -256,6 +256,7 @@ const ( BPF_F_STACK_BUILD_ID = 0x20 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TUNINFO_IPV6 = 0x1 BPF_F_USER_BUILD_ID = 0x800 BPF_F_USER_STACK = 0x100 @@ -307,9 +308,10 @@ const ( BPF_RET = 0x6 BPF_RSH = 0x70 BPF_SK_STORAGE_GET_F_CREATE = 0x1 - BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 @@ -463,6 +465,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -564,6 +567,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -1090,6 +1094,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -1102,6 +1117,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1346,6 +1363,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1679,6 +1697,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1696,6 +1716,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1735,6 +1756,10 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SPARC_DETACH = 0xb PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 PTRACE_WRITEDATA = 0x11 PTRACE_WRITETEXT = 0x13 @@ -1843,7 +1868,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1916,6 +1941,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1940,6 +1966,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1947,7 +1974,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1959,6 +1986,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1967,8 +1995,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2193,6 +2221,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x47 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2547,7 +2576,7 @@ const ( TIPC_SUB_PORTS = 0x1 TIPC_SUB_SERVICE = 0x2 TIPC_TOP_SRV = 0x1 - TIPC_WAIT_FOREVER = -0x1 + TIPC_WAIT_FOREVER = 0xffffffff TIPC_WITHDRAWN = 0x2 TIPC_ZONE_BITS = 0x8 TIPC_ZONE_CLUSTER_MASK = 0xfffff000 @@ -2568,7 +2597,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2766,6 +2795,8 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 @@ -2782,6 +2813,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 __TIOCFLUSH = 0x80047410 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index 78cc04ea6df..96b9b8ab300 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -3,7 +3,7 @@ // +build 386,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -1085,6 +1085,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 92185e693ff..ed522a84e84 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -3,7 +3,7 @@ // +build amd64,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1075,6 +1075,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index 373ad4543d8..c8d36fe998e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -3,7 +3,7 @@ // +build arm,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -marm _const.go package unix @@ -1065,6 +1065,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go index fb6c60441da..f1c146a74c9 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -3,7 +3,7 @@ // +build arm64,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1075,6 +1075,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index d8be045189b..5402bd55ce1 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -3,7 +3,7 @@ // +build 386,openbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -881,14 +881,15 @@ const ( MADV_SPACEAVAIL = 0x5 MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 - MAP_COPY = 0x4 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x1ff7 - MAP_HASSEMAPHORE = 0x200 - MAP_INHERIT = 0x80 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 - MAP_INHERIT_DONATE_COPY = 0x3 MAP_INHERIT_NONE = 0x2 MAP_INHERIT_SHARE = 0x0 MAP_NOEXTEND = 0x100 @@ -896,7 +897,8 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x20 MAP_SHARED = 0x1 - MAP_TRYFIXED = 0x400 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MNT_ASYNC = 0x40 @@ -946,6 +948,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index 1f9e8a29ea9..ffaf2d2f9f2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -3,7 +3,7 @@ // +build amd64,openbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -920,10 +920,11 @@ const ( MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x7ff7 + MAP_FLAGMASK = 0xfff7 MAP_HASSEMAPHORE = 0x0 MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 @@ -990,6 +991,7 @@ const ( NET_RT_MAXID = 0x7 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 79d5695c376..7aa796a642b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1,11 +1,11 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- _const.go - // +build arm,openbsd +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- _const.go + package unix import "syscall" @@ -881,10 +881,11 @@ const ( MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x3ff7 + MAP_FLAGMASK = 0xfff7 MAP_HASSEMAPHORE = 0x0 MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 @@ -896,6 +897,7 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x0 MAP_SHARED = 0x1 + MAP_STACK = 0x4000 MAP_TRYFIXED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -947,6 +949,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go index ec5f92de888..1792d3f13e6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -996,6 +996,7 @@ const ( NET_RT_MAXID = 0x7 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 22569db31d3..46e054ccb0e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -3,7 +3,7 @@ // +build amd64,solaris -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -666,6 +666,7 @@ const ( M_FLUSH = 0x86 NAME_MAX = 0xff NEWDEV = 0x1 + NFDBITS = 0x40 NL0 = 0x0 NL1 = 0x100 NLDLY = 0x100 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go index dd5ea36ee97..b42c1cbadd2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.1_11.go syscall_darwin_386.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,386,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1342,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1681,6 +1666,39 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -1738,23 +1756,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go new file mode 100644 index 00000000000..e263fbdb8bf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s new file mode 100644 index 00000000000..00da1ebfca1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go 386 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 78ca923396b..603c9f6eb19 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -928,6 +907,21 @@ func libc_chroot_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Close(fd int) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) if e1 != 0 { @@ -1857,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -2326,6 +2321,27 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -2408,28 +2424,6 @@ func libc_fstatfs64_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___getdirentries64_trampoline() - -//go:linkname libc___getdirentries64 libc___getdirentries64 -//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s index f40465ca89e..ece6f67c26e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -106,6 +104,8 @@ TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 JMP libc_chown(SB) TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 JMP libc_close(SB) TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 @@ -262,6 +262,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 JMP libc_ptrace(SB) TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 @@ -272,8 +274,6 @@ TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatat64(SB) TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatfs64(SB) -TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 - JMP libc___getdirentries64(SB) TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_getfsstat64(SB) TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go index 2581e8960fd..38b7cbab38a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.1_11.go syscall_darwin_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,amd64,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1691,6 +1666,49 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) sec = int64(r0) @@ -1738,23 +1756,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go new file mode 100644 index 00000000000..314042a9d42 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s new file mode 100644 index 00000000000..d671e8311fa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go amd64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 64df03c4520..fda478e8bdf 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1872,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -2341,6 +2321,27 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -2423,28 +2424,6 @@ func libc_fstatfs64_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___getdirentries64_trampoline() - -//go:linkname libc___getdirentries64 libc___getdirentries64 -//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index debcb8ed3a8..7c4d5901633 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -264,6 +262,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 JMP libc_ptrace(SB) TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 @@ -274,8 +274,6 @@ TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatat64(SB) TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatfs64(SB) -TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 - JMP libc___getdirentries64(SB) TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_getfsstat64(SB) TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go index f8caecef02e..abb69183a34 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.1_11.go syscall_darwin_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,arm,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go new file mode 100644 index 00000000000..f519ce9afb3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s new file mode 100644 index 00000000000..488e55707ab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go arm +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index ed330623997..163b3912d32 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -928,6 +907,21 @@ func libc_chroot_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Close(fd int) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) if e1 != 0 { @@ -1857,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s index 66af9f480e5..5bebb1bbd00 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -106,6 +104,8 @@ TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 JMP libc_chown(SB) TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 JMP libc_close(SB) TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go index 3fd0f3c854d..b75c11d41e0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.1_11.go syscall_darwin_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,arm64,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go new file mode 100644 index 00000000000..d64e6c806f5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s new file mode 100644 index 00000000000..b29dabb0f08 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go arm64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 5258a73282a..7c5bd510e5f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -928,6 +907,21 @@ func libc_chroot_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Close(fd int) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) if e1 != 0 { @@ -1857,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index f57f48f826d..96ab9877eb0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -106,6 +104,8 @@ TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 JMP libc_chown(SB) TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 JMP libc_close(SB) TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index cdfe9318ba0..df199b34545 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -1272,8 +1272,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index a783306b2ad..e68185f1e30 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -1606,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index f995520d38d..2f77f93c4ea 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,8 +361,14 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } @@ -387,8 +377,8 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data int) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -424,6 +414,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1606,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index d681acd4300..e9a12c9d93b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,8 +361,14 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } @@ -387,8 +377,8 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data int) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } @@ -424,6 +414,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1606,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index 5049b2ede45..27ab0fbda0b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -404,8 +404,8 @@ func Getcwd(buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data int) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } @@ -414,8 +414,8 @@ func ptrace(request int, pid int, addr uintptr, data int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { err = errnoErr(e1) } @@ -1606,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index c5e46e4cf66..fe5d462e494 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index da8819e480d..536abcea339 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index 6ad9be6dd48..37823cd6bfc 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index f88331782b3..794f61264ad 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 8eebc6c77c0..1b34b550c36 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index ecf62a677d8..5714e259227 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index 1ba0f7b6f4e..88a6b3362f0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index 20012b2f0ec..c09dbe34548 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 2b520deaa2f..42f6c210398 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index d9f044c9534..de2cd8db918 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index 9feed65eb0b..d51bf07fc57 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index 0a651508814..1e3a3cb7324 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index e27f66930c0..3c97008cd0c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 7e05826647e..5ade42cce0e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index d94d076aa01..3e0bbc5f101 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index cf5bf3d0546..cb0af13a3cb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 243a9317cf2..6fd48d3dcd7 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index a9532d07870..2938e4124ed 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 0cb9f01774b..22b79ab0e27 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index 6fc99b54947..cb921f37afd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index 27878a72b83..5a743803550 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 5f614760c6c..a96165d4bf0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -1478,8 +1478,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = e1 } diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index e869c060318..7aae554f210 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -429,4 +429,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 4917b8ab6d4..7968439a926 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -351,4 +351,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index f85fcb4f80b..3c663c69d4b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -393,4 +393,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 678a119bc9e..753def987ec 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -296,4 +296,5 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 222c9f9a2f9..ac86bd5446a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -414,4 +414,5 @@ const ( SYS_FSCONFIG = 4431 SYS_FSMOUNT = 4432 SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 28e6d0e9d66..1f5705b5884 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -344,4 +344,5 @@ const ( SYS_FSCONFIG = 5431 SYS_FSMOUNT = 5432 SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index e643c6f6322..d9ed953264c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -344,4 +344,5 @@ const ( SYS_FSCONFIG = 5431 SYS_FSMOUNT = 5432 SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 01d93c420f4..94266b65a45 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -414,4 +414,5 @@ const ( SYS_FSCONFIG = 4431 SYS_FSMOUNT = 4432 SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 5744149ebf9..52e3da64904 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -393,4 +393,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 21c83204281..6141f90a823 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -393,4 +393,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index c1bb6d8f2d8..4f7261a884d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -295,4 +295,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index bc3cc6b5b24..f47014ac058 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -358,4 +358,6 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 0a2841ba8ce..dd78abb0d6b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -373,4 +373,5 @@ const ( SYS_FSCONFIG = 431 SYS_FSMOUNT = 432 SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 37c69e235cb..16d62fa4927 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -599,22 +599,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -622,6 +606,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -672,6 +657,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2476,6 +2468,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2584,3 +2612,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index d686b9f6d47..97e92393cd0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -600,22 +600,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -623,6 +607,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -673,6 +658,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2489,6 +2481,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2598,3 +2626,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 6d5d460e0e5..05f978e8173 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -603,22 +603,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -626,6 +610,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -676,6 +661,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2467,6 +2459,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2575,3 +2603,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 619ba8ccc28..5086fcea989 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -601,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -624,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -674,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2468,6 +2460,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2577,3 +2605,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 7f22e4175ed..b6ddd8c536a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -602,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -625,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -675,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2473,6 +2465,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2581,3 +2609,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index ad9837101e3..89f3e32af9e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -601,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -624,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -674,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2470,6 +2462,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2579,3 +2607,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index e5a414a0345..6b84cf79af4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -601,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -624,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -674,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2470,6 +2462,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2579,3 +2607,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index 6e4c502d3b2..bc50cd3819b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -602,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -625,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -675,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2473,6 +2465,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2581,3 +2609,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 041d73471f0..0a1ec1705d4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -602,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -625,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -675,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2478,6 +2470,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2587,3 +2615,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 252e38d056f..c7f045a55c7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -602,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -625,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -675,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2478,6 +2470,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2587,3 +2615,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 6880f0ba49a..5d8d44799f7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -601,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -624,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -674,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2496,6 +2488,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2605,3 +2633,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 6832422162e..034875a69ea 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -600,22 +600,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -623,6 +607,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -673,6 +658,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2492,6 +2484,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2601,3 +2629,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 991916e8436..2f7ec8b8870 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -604,22 +604,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -627,6 +611,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -677,6 +662,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -2473,6 +2465,42 @@ const ( BPF_FD_TYPE_URETPROBE = 0x5 ) +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + type CapUserHeader struct { Version uint32 Pid int32 @@ -2582,3 +2610,17 @@ const ( TIPC_CLUSTER_SCOPE = 0x2 TIPC_NODE_SCOPE = 0x3 ) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s deleted file mode 100644 index 21d994d318a..00000000000 --- a/vendor/golang.org/x/sys/windows/asm_windows_386.s +++ /dev/null @@ -1,13 +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. - -// -// System calls for 386, Windows are implemented in runtime/syscall_windows.goc -// - -TEXT ·getprocaddress(SB), 7, $0-16 - JMP syscall·getprocaddress(SB) - -TEXT ·loadlibrary(SB), 7, $0-12 - JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s deleted file mode 100644 index 5bfdf797414..00000000000 --- a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s +++ /dev/null @@ -1,13 +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. - -// -// System calls for amd64, Windows are implemented in runtime/syscall_windows.goc -// - -TEXT ·getprocaddress(SB), 7, $0-32 - JMP syscall·getprocaddress(SB) - -TEXT ·loadlibrary(SB), 7, $0-24 - JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index ba67658db1d..d7771134158 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -11,6 +11,18 @@ import ( "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 @@ -20,10 +32,6 @@ type DLLError struct { func (e *DLLError) Error() string { return e.Msg } -// Implemented in runtime/syscall_windows.goc; we provide jumps to them in our assembly file. -func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno) -func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno) - // A DLL implements access to a single DLL. type DLL struct { Name string @@ -40,7 +48,7 @@ func LoadDLL(name string) (dll *DLL, err error) { if err != nil { return nil, err } - h, e := loadlibrary(namep) + h, e := syscall_loadlibrary(namep) if e != 0 { return nil, &DLLError{ Err: e, @@ -50,7 +58,7 @@ func LoadDLL(name string) (dll *DLL, err error) { } d := &DLL{ Name: name, - Handle: Handle(h), + Handle: h, } return d, nil } @@ -71,7 +79,7 @@ func (d *DLL) FindProc(name string) (proc *Proc, err error) { if err != nil { return nil, err } - a, e := getprocaddress(uintptr(d.Handle), namep) + a, e := syscall_getprocaddress(d.Handle, namep) if e != 0 { return nil, &DLLError{ Err: e, diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go index 62770572747..328e3b2ace2 100644 --- a/vendor/golang.org/x/sys/windows/mksyscall.go +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -6,4 +6,4 @@ package windows -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go +//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/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 7b2cfb9e0ac..c605ee6abba 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -9,14 +9,6 @@ import ( "unsafe" ) -const ( - STANDARD_RIGHTS_REQUIRED = 0xf0000 - STANDARD_RIGHTS_READ = 0x20000 - STANDARD_RIGHTS_WRITE = 0x20000 - STANDARD_RIGHTS_EXECUTE = 0x20000 - STANDARD_RIGHTS_ALL = 0x1F0000 -) - const ( NameUnknown = 0 NameFullyQualifiedDN = 1 @@ -235,16 +227,15 @@ func LookupSID(system, account string) (sid *SID, domain string, accType uint32, } } -// String converts SID to a string format -// suitable for display, storage, or transmission. -func (sid *SID) String() (string, error) { +// 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 "", e + return "" } defer LocalFree((Handle)(unsafe.Pointer(s))) - return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil + return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(s))[:]) } // Len returns the length, in bytes, of a valid security identifier SID. @@ -656,21 +647,16 @@ func (tml *Tokenmandatorylabel) Size() uint32 { // system-related operations on the local computer. type Token Handle -// OpenCurrentProcessToken opens the access token -// associated with current process. It is a real -// token that needs to be closed, unlike -// GetCurrentProcessToken. +// 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) { - p, e := GetCurrentProcess() - if e != nil { - return 0, e - } - var t Token - e = OpenProcessToken(p, TOKEN_QUERY|TOKEN_DUPLICATE, &t) - if e != nil { - return 0, e - } - return t, nil + var token Token + err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token) + return token, err } // GetCurrentProcessToken returns the access token associated with @@ -890,3 +876,521 @@ type WTS_SESSION_INFO struct { //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/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index abdefc33ca4..df0ffc69634 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -57,6 +57,10 @@ const ( 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 @@ -136,6 +140,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //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) @@ -160,6 +166,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //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) @@ -173,13 +181,11 @@ func NewCallbackCDecl(fn interface{}) uintptr { //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) = shell32.ShellExecuteW +//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 GetCurrentProcess() (pseudoHandle Handle, err error) -//sys GetCurrentThread() (pseudoHandle Handle, err error) //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] @@ -284,6 +290,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //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 @@ -296,6 +303,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //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 @@ -305,6 +316,34 @@ func NewCallbackCDecl(fn interface{}) uintptr { // 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) { diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 1ef80cd7179..7f178bb91ed 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -62,11 +62,6 @@ var signals = [...]string{ } const ( - GENERIC_READ = 0x80000000 - GENERIC_WRITE = 0x40000000 - GENERIC_EXECUTE = 0x20000000 - GENERIC_ALL = 0x10000000 - FILE_LIST_DIRECTORY = 0x00000001 FILE_APPEND_DATA = 0x00000004 FILE_WRITE_ATTRIBUTES = 0x00000100 @@ -158,13 +153,6 @@ const ( WAIT_OBJECT_0 = 0x00000000 WAIT_FAILED = 0xFFFFFFFF - // Standard access rights. - DELETE = 0x00010000 - READ_CONTROL = 0x00020000 - SYNCHRONIZE = 0x00100000 - WRITE_DAC = 0x00040000 - WRITE_OWNER = 0x00080000 - // Access rights for process. PROCESS_CREATE_PROCESS = 0x0080 PROCESS_CREATE_THREAD = 0x0002 @@ -483,12 +471,6 @@ func NsecToTimeval(nsec int64) (tv Timeval) { return } -type SecurityAttributes struct { - Length uint32 - SecurityDescriptor uintptr - InheritHandle uint32 -} - type Overlapped struct { Internal uintptr InternalHigh uintptr @@ -1688,3 +1670,75 @@ type OsVersionInfoEx struct { 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/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 9c448be31c1..74d721e0f35 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -51,269 +51,301 @@ var ( 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") - 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") - 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") - procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") - procGetCurrentThread = modkernel32.NewProc("GetCurrentThread") - 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") - 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") - procCLSIDFromString = modole32.NewProc("CLSIDFromString") - procStringFromGUID2 = modole32.NewProc("StringFromGUID2") - procCoCreateGuid = modole32.NewProc("CoCreateGuid") - procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") - procRtlGetVersion = modntdll.NewProc("RtlGetVersion") - procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers") - 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") + 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") + 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) { @@ -654,6 +686,31 @@ func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { 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) @@ -690,7 +747,14 @@ func ExitProcess(exitcode uint32) { } func IsWow64Process(handle Handle, isWow64 *bool) (err error) { - r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(isWow64)), 0) + 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) @@ -960,6 +1024,30 @@ func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { 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 { @@ -1119,7 +1207,7 @@ func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (ha 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 == 0 { + if r1 <= 32 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1173,32 +1261,6 @@ func GetStartupInfo(startupInfo *StartupInfo) (err error) { return } -func GetCurrentProcess() (pseudoHandle Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0) - pseudoHandle = Handle(r0) - if pseudoHandle == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func GetCurrentThread() (pseudoHandle Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0) - pseudoHandle = Handle(r0) - if pseudoHandle == 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 { @@ -2442,6 +2504,18 @@ func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { 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) @@ -2584,6 +2658,66 @@ func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret 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 { @@ -3455,3 +3589,358 @@ 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/golang.org/x/tools/AUTHORS b/vendor/golang.org/x/tools/AUTHORS new file mode 100644 index 00000000000..15167cd746c --- /dev/null +++ b/vendor/golang.org/x/tools/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/tools/CONTRIBUTORS b/vendor/golang.org/x/tools/CONTRIBUTORS new file mode 100644 index 00000000000..1c4577e9680 --- /dev/null +++ b/vendor/golang.org/x/tools/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/tools/LICENSE b/vendor/golang.org/x/tools/LICENSE new file mode 100644 index 00000000000..6a66aea5eaf --- /dev/null +++ b/vendor/golang.org/x/tools/LICENSE @@ -0,0 +1,27 @@ +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/tools/PATENTS b/vendor/golang.org/x/tools/PATENTS new file mode 100644 index 00000000000..733099041f8 --- /dev/null +++ b/vendor/golang.org/x/tools/PATENTS @@ -0,0 +1,22 @@ +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/tools/cmd/goimports/doc.go b/vendor/golang.org/x/tools/cmd/goimports/doc.go new file mode 100644 index 00000000000..7033e4d4cff --- /dev/null +++ b/vendor/golang.org/x/tools/cmd/goimports/doc.go @@ -0,0 +1,43 @@ +/* + +Command goimports updates your Go import lines, +adding missing ones and removing unreferenced ones. + + $ go get golang.org/x/tools/cmd/goimports + +In addition to fixing imports, goimports also formats +your code in the same style as gofmt so it can be used +as a replacement for your editor's gofmt-on-save hook. + +For emacs, make sure you have the latest go-mode.el: + https://github.com/dominikh/go-mode.el +Then in your .emacs file: + (setq gofmt-command "goimports") + (add-hook 'before-save-hook 'gofmt-before-save) + +For vim, set "gofmt_command" to "goimports": + https://golang.org/change/39c724dd7f252 + https://golang.org/wiki/IDEsAndTextEditorPlugins + etc + +For GoSublime, follow the steps described here: + http://michaelwhatcott.com/gosublime-goimports/ + +For other editors, you probably know what to do. + +To exclude directories in your $GOPATH from being scanned for Go +files, goimports respects a configuration file at +$GOPATH/src/.goimportsignore which may contain blank lines, comment +lines (beginning with '#'), or lines naming a directory relative to +the configuration file to ignore when scanning. No globbing or regex +patterns are allowed. Use the "-v" verbose flag to verify it's +working and see what goimports is doing. + +File bugs or feature requests at: + + https://golang.org/issues/new?title=x/tools/cmd/goimports:+ + +Happy hacking! + +*/ +package main // import "golang.org/x/tools/cmd/goimports" diff --git a/vendor/golang.org/x/tools/cmd/goimports/goimports.go b/vendor/golang.org/x/tools/cmd/goimports/goimports.go new file mode 100644 index 00000000000..a476a7f3c30 --- /dev/null +++ b/vendor/golang.org/x/tools/cmd/goimports/goimports.go @@ -0,0 +1,377 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "bufio" + "bytes" + "errors" + "flag" + "fmt" + "go/build" + "go/scanner" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "path/filepath" + "runtime" + "runtime/pprof" + "strings" + + "golang.org/x/tools/internal/imports" +) + +var ( + // main operation modes + list = flag.Bool("l", false, "list files whose formatting differs from goimport's") + write = flag.Bool("w", false, "write result to (source) file instead of stdout") + doDiff = flag.Bool("d", false, "display diffs instead of rewriting files") + srcdir = flag.String("srcdir", "", "choose imports as if source code is from `dir`. When operating on a single file, dir may instead be the complete file name.") + + verbose bool // verbose logging + + cpuProfile = flag.String("cpuprofile", "", "CPU profile output") + memProfile = flag.String("memprofile", "", "memory profile output") + memProfileRate = flag.Int("memrate", 0, "if > 0, sets runtime.MemProfileRate") + + options = &imports.Options{ + TabWidth: 8, + TabIndent: true, + Comments: true, + Fragment: true, + // This environment, and its caches, will be reused for the whole run. + Env: &imports.ProcessEnv{ + GOPATH: build.Default.GOPATH, + GOROOT: build.Default.GOROOT, + }, + } + exitCode = 0 +) + +func init() { + flag.BoolVar(&options.AllErrors, "e", false, "report all errors (not just the first 10 on different lines)") + flag.StringVar(&options.Env.LocalPrefix, "local", "", "put imports beginning with this string after 3rd-party packages; comma-separated list") + flag.BoolVar(&options.FormatOnly, "format-only", false, "if true, don't fix imports and only format. In this mode, goimports is effectively gofmt, with the addition that imports are grouped into sections.") +} + +func report(err error) { + scanner.PrintError(os.Stderr, err) + exitCode = 2 +} + +func usage() { + fmt.Fprintf(os.Stderr, "usage: goimports [flags] [path ...]\n") + flag.PrintDefaults() + os.Exit(2) +} + +func isGoFile(f os.FileInfo) bool { + // ignore non-Go files + name := f.Name() + return !f.IsDir() && !strings.HasPrefix(name, ".") && strings.HasSuffix(name, ".go") +} + +// argumentType is which mode goimports was invoked as. +type argumentType int + +const ( + // fromStdin means the user is piping their source into goimports. + fromStdin argumentType = iota + + // singleArg is the common case from editors, when goimports is run on + // a single file. + singleArg + + // multipleArg is when the user ran "goimports file1.go file2.go" + // or ran goimports on a directory tree. + multipleArg +) + +func processFile(filename string, in io.Reader, out io.Writer, argType argumentType) error { + opt := options + if argType == fromStdin { + nopt := *options + nopt.Fragment = true + opt = &nopt + } + + if in == nil { + f, err := os.Open(filename) + if err != nil { + return err + } + defer f.Close() + in = f + } + + src, err := ioutil.ReadAll(in) + if err != nil { + return err + } + + target := filename + if *srcdir != "" { + // Determine whether the provided -srcdirc is a directory or file + // and then use it to override the target. + // + // See https://github.com/dominikh/go-mode.el/issues/146 + if isFile(*srcdir) { + if argType == multipleArg { + return errors.New("-srcdir value can't be a file when passing multiple arguments or when walking directories") + } + target = *srcdir + } else if argType == singleArg && strings.HasSuffix(*srcdir, ".go") && !isDir(*srcdir) { + // For a file which doesn't exist on disk yet, but might shortly. + // e.g. user in editor opens $DIR/newfile.go and newfile.go doesn't yet exist on disk. + // The goimports on-save hook writes the buffer to a temp file + // first and runs goimports before the actual save to newfile.go. + // The editor's buffer is named "newfile.go" so that is passed to goimports as: + // goimports -srcdir=/gopath/src/pkg/newfile.go /tmp/gofmtXXXXXXXX.go + // and then the editor reloads the result from the tmp file and writes + // it to newfile.go. + target = *srcdir + } else { + // Pretend that file is from *srcdir in order to decide + // visible imports correctly. + target = filepath.Join(*srcdir, filepath.Base(filename)) + } + } + + res, err := imports.Process(target, src, opt) + if err != nil { + return err + } + + if !bytes.Equal(src, res) { + // formatting has changed + if *list { + fmt.Fprintln(out, filename) + } + if *write { + if argType == fromStdin { + // filename is "" + return errors.New("can't use -w on stdin") + } + err = ioutil.WriteFile(filename, res, 0) + if err != nil { + return err + } + } + if *doDiff { + if argType == fromStdin { + filename = "stdin.go" // because .orig looks silly + } + data, err := diff(src, res, filename) + if err != nil { + return fmt.Errorf("computing diff: %s", err) + } + fmt.Printf("diff -u %s %s\n", filepath.ToSlash(filename+".orig"), filepath.ToSlash(filename)) + out.Write(data) + } + } + + if !*list && !*write && !*doDiff { + _, err = out.Write(res) + } + + return err +} + +func visitFile(path string, f os.FileInfo, err error) error { + if err == nil && isGoFile(f) { + err = processFile(path, nil, os.Stdout, multipleArg) + } + if err != nil { + report(err) + } + return nil +} + +func walkDir(path string) { + filepath.Walk(path, visitFile) +} + +func main() { + runtime.GOMAXPROCS(runtime.NumCPU()) + + // call gofmtMain in a separate function + // so that it can use defer and have them + // run before the exit. + gofmtMain() + os.Exit(exitCode) +} + +// parseFlags parses command line flags and returns the paths to process. +// It's a var so that custom implementations can replace it in other files. +var parseFlags = func() []string { + flag.BoolVar(&verbose, "v", false, "verbose logging") + + flag.Parse() + return flag.Args() +} + +func bufferedFileWriter(dest string) (w io.Writer, close func()) { + f, err := os.Create(dest) + if err != nil { + log.Fatal(err) + } + bw := bufio.NewWriter(f) + return bw, func() { + if err := bw.Flush(); err != nil { + log.Fatalf("error flushing %v: %v", dest, err) + } + if err := f.Close(); err != nil { + log.Fatal(err) + } + } +} + +func gofmtMain() { + flag.Usage = usage + paths := parseFlags() + + if *cpuProfile != "" { + bw, flush := bufferedFileWriter(*cpuProfile) + pprof.StartCPUProfile(bw) + defer flush() + defer pprof.StopCPUProfile() + } + // doTrace is a conditionally compiled wrapper around runtime/trace. It is + // used to allow goimports to compile under gccgo, which does not support + // runtime/trace. See https://golang.org/issue/15544. + defer doTrace()() + if *memProfileRate > 0 { + runtime.MemProfileRate = *memProfileRate + bw, flush := bufferedFileWriter(*memProfile) + defer func() { + runtime.GC() // materialize all statistics + if err := pprof.WriteHeapProfile(bw); err != nil { + log.Fatal(err) + } + flush() + }() + } + + if verbose { + log.SetFlags(log.LstdFlags | log.Lmicroseconds) + options.Env.Debug = true + } + if options.TabWidth < 0 { + fmt.Fprintf(os.Stderr, "negative tabwidth %d\n", options.TabWidth) + exitCode = 2 + return + } + + if len(paths) == 0 { + if err := processFile("", os.Stdin, os.Stdout, fromStdin); err != nil { + report(err) + } + return + } + + argType := singleArg + if len(paths) > 1 { + argType = multipleArg + } + + for _, path := range paths { + switch dir, err := os.Stat(path); { + case err != nil: + report(err) + case dir.IsDir(): + walkDir(path) + default: + if err := processFile(path, nil, os.Stdout, argType); err != nil { + report(err) + } + } + } +} + +func writeTempFile(dir, prefix string, data []byte) (string, error) { + file, err := ioutil.TempFile(dir, prefix) + if err != nil { + return "", err + } + _, err = file.Write(data) + if err1 := file.Close(); err == nil { + err = err1 + } + if err != nil { + os.Remove(file.Name()) + return "", err + } + return file.Name(), nil +} + +func diff(b1, b2 []byte, filename string) (data []byte, err error) { + f1, err := writeTempFile("", "gofmt", b1) + if err != nil { + return + } + defer os.Remove(f1) + + f2, err := writeTempFile("", "gofmt", b2) + if err != nil { + return + } + defer os.Remove(f2) + + cmd := "diff" + if runtime.GOOS == "plan9" { + cmd = "/bin/ape/diff" + } + + data, err = exec.Command(cmd, "-u", f1, f2).CombinedOutput() + if len(data) > 0 { + // diff exits with a non-zero status when the files don't match. + // Ignore that failure as long as we get output. + return replaceTempFilename(data, filename) + } + return +} + +// replaceTempFilename replaces temporary filenames in diff with actual one. +// +// --- /tmp/gofmt316145376 2017-02-03 19:13:00.280468375 -0500 +// +++ /tmp/gofmt617882815 2017-02-03 19:13:00.280468375 -0500 +// ... +// -> +// --- path/to/file.go.orig 2017-02-03 19:13:00.280468375 -0500 +// +++ path/to/file.go 2017-02-03 19:13:00.280468375 -0500 +// ... +func replaceTempFilename(diff []byte, filename string) ([]byte, error) { + bs := bytes.SplitN(diff, []byte{'\n'}, 3) + if len(bs) < 3 { + return nil, fmt.Errorf("got unexpected diff for %s", filename) + } + // Preserve timestamps. + var t0, t1 []byte + if i := bytes.LastIndexByte(bs[0], '\t'); i != -1 { + t0 = bs[0][i:] + } + if i := bytes.LastIndexByte(bs[1], '\t'); i != -1 { + t1 = bs[1][i:] + } + // Always print filepath with slash separator. + f := filepath.ToSlash(filename) + bs[0] = []byte(fmt.Sprintf("--- %s%s", f+".orig", t0)) + bs[1] = []byte(fmt.Sprintf("+++ %s%s", f, t1)) + return bytes.Join(bs, []byte{'\n'}), nil +} + +// isFile reports whether name is a file. +func isFile(name string) bool { + fi, err := os.Stat(name) + return err == nil && fi.Mode().IsRegular() +} + +// isDir reports whether name is a directory. +func isDir(name string) bool { + fi, err := os.Stat(name) + return err == nil && fi.IsDir() +} diff --git a/vendor/golang.org/x/tools/cmd/goimports/goimports_gc.go b/vendor/golang.org/x/tools/cmd/goimports/goimports_gc.go new file mode 100644 index 00000000000..21d867eaab5 --- /dev/null +++ b/vendor/golang.org/x/tools/cmd/goimports/goimports_gc.go @@ -0,0 +1,26 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build gc + +package main + +import ( + "flag" + "runtime/trace" +) + +var traceProfile = flag.String("trace", "", "trace profile output") + +func doTrace() func() { + if *traceProfile != "" { + bw, flush := bufferedFileWriter(*traceProfile) + trace.Start(bw) + return func() { + flush() + trace.Stop() + } + } + return func() {} +} diff --git a/vendor/golang.org/x/tools/cmd/goimports/goimports_not_gc.go b/vendor/golang.org/x/tools/cmd/goimports/goimports_not_gc.go new file mode 100644 index 00000000000..f5531ceb317 --- /dev/null +++ b/vendor/golang.org/x/tools/cmd/goimports/goimports_not_gc.go @@ -0,0 +1,11 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gc + +package main + +func doTrace() func() { + return func() {} +} diff --git a/vendor/golang.org/x/tools/go/analysis/analysis.go b/vendor/golang.org/x/tools/go/analysis/analysis.go new file mode 100644 index 00000000000..bc58c31c9f0 --- /dev/null +++ b/vendor/golang.org/x/tools/go/analysis/analysis.go @@ -0,0 +1,215 @@ +package analysis + +import ( + "flag" + "fmt" + "go/ast" + "go/token" + "go/types" + "reflect" +) + +// An Analyzer describes an analysis function and its options. +type Analyzer struct { + // The Name of the analyzer must be a valid Go identifier + // as it may appear in command-line flags, URLs, and so on. + Name string + + // Doc is the documentation for the analyzer. + // The part before the first "\n\n" is the title + // (no capital or period, max ~60 letters). + Doc string + + // Flags defines any flags accepted by the analyzer. + // The manner in which these flags are exposed to the user + // depends on the driver which runs the analyzer. + Flags flag.FlagSet + + // Run applies the analyzer to a package. + // It returns an error if the analyzer failed. + // + // On success, the Run function may return a result + // computed by the Analyzer; its type must match ResultType. + // The driver makes this result available as an input to + // another Analyzer that depends directly on this one (see + // Requires) when it analyzes the same package. + // + // To pass analysis results between packages (and thus + // potentially between address spaces), use Facts, which are + // serializable. + Run func(*Pass) (interface{}, error) + + // RunDespiteErrors allows the driver to invoke + // the Run method of this analyzer even on a + // package that contains parse or type errors. + RunDespiteErrors bool + + // Requires is a set of analyzers that must run successfully + // before this one on a given package. This analyzer may inspect + // the outputs produced by each analyzer in Requires. + // The graph over analyzers implied by Requires edges must be acyclic. + // + // Requires establishes a "horizontal" dependency between + // analysis passes (different analyzers, same package). + Requires []*Analyzer + + // ResultType is the type of the optional result of the Run function. + ResultType reflect.Type + + // FactTypes indicates that this analyzer imports and exports + // Facts of the specified concrete types. + // An analyzer that uses facts may assume that its import + // dependencies have been similarly analyzed before it runs. + // Facts must be pointers. + // + // FactTypes establishes a "vertical" dependency between + // analysis passes (same analyzer, different packages). + FactTypes []Fact +} + +func (a *Analyzer) String() string { return a.Name } + +// A Pass provides information to the Run function that +// applies a specific analyzer to a single Go package. +// +// It forms the interface between the analysis logic and the driver +// program, and has both input and an output components. +// +// As in a compiler, one pass may depend on the result computed by another. +// +// The Run function should not call any of the Pass functions concurrently. +type Pass struct { + Analyzer *Analyzer // the identity of the current analyzer + + // syntax and type information + Fset *token.FileSet // file position information + Files []*ast.File // the abstract syntax tree of each file + OtherFiles []string // names of non-Go files of this package + Pkg *types.Package // type information about the package + TypesInfo *types.Info // type information about the syntax trees + TypesSizes types.Sizes // function for computing sizes of types + + // Report reports a Diagnostic, a finding about a specific location + // in the analyzed source code such as a potential mistake. + // It may be called by the Run function. + Report func(Diagnostic) + + // ResultOf provides the inputs to this analysis pass, which are + // the corresponding results of its prerequisite analyzers. + // The map keys are the elements of Analysis.Required, + // and the type of each corresponding value is the required + // analysis's ResultType. + ResultOf map[*Analyzer]interface{} + + // -- facts -- + + // ImportObjectFact retrieves a fact associated with obj. + // Given a value ptr of type *T, where *T satisfies Fact, + // ImportObjectFact copies the value to *ptr. + // + // ImportObjectFact panics if called after the pass is complete. + // ImportObjectFact is not concurrency-safe. + ImportObjectFact func(obj types.Object, fact Fact) bool + + // ImportPackageFact retrieves a fact associated with package pkg, + // which must be this package or one of its dependencies. + // See comments for ImportObjectFact. + ImportPackageFact func(pkg *types.Package, fact Fact) bool + + // ExportObjectFact associates a fact of type *T with the obj, + // replacing any previous fact of that type. + // + // ExportObjectFact panics if it is called after the pass is + // complete, or if obj does not belong to the package being analyzed. + // ExportObjectFact is not concurrency-safe. + ExportObjectFact func(obj types.Object, fact Fact) + + // ExportPackageFact associates a fact with the current package. + // See comments for ExportObjectFact. + ExportPackageFact func(fact Fact) + + // AllPackageFacts returns a new slice containing all package facts of the analysis's FactTypes + // in unspecified order. + // WARNING: This is an experimental API and may change in the future. + AllPackageFacts func() []PackageFact + + // AllObjectFacts returns a new slice containing all object facts of the analysis's FactTypes + // in unspecified order. + // WARNING: This is an experimental API and may change in the future. + AllObjectFacts func() []ObjectFact + + /* Further fields may be added in future. */ + // For example, suggested or applied refactorings. +} + +// PackageFact is a package together with an associated fact. +// WARNING: This is an experimental API and may change in the future. +type PackageFact struct { + Package *types.Package + Fact Fact +} + +// ObjectFact is an object together with an associated fact. +// WARNING: This is an experimental API and may change in the future. +type ObjectFact struct { + Object types.Object + Fact Fact +} + +// Reportf is a helper function that reports a Diagnostic using the +// specified position and formatted error message. +func (pass *Pass) Reportf(pos token.Pos, format string, args ...interface{}) { + msg := fmt.Sprintf(format, args...) + pass.Report(Diagnostic{Pos: pos, Message: msg}) +} + +// reportNodef is a helper function that reports a Diagnostic using the +// range denoted by the AST node. +// +// WARNING: This is an experimental API and may change in the future. +func (pass *Pass) reportNodef(node ast.Node, format string, args ...interface{}) { + msg := fmt.Sprintf(format, args...) + pass.Report(Diagnostic{Pos: node.Pos(), End: node.End(), Message: msg}) +} + +func (pass *Pass) String() string { + return fmt.Sprintf("%s@%s", pass.Analyzer.Name, pass.Pkg.Path()) +} + +// A Fact is an intermediate fact produced during analysis. +// +// Each fact is associated with a named declaration (a types.Object) or +// with a package as a whole. A single object or package may have +// multiple associated facts, but only one of any particular fact type. +// +// A Fact represents a predicate such as "never returns", but does not +// represent the subject of the predicate such as "function F" or "package P". +// +// Facts may be produced in one analysis pass and consumed by another +// analysis pass even if these are in different address spaces. +// If package P imports Q, all facts about Q produced during +// analysis of that package will be available during later analysis of P. +// Facts are analogous to type export data in a build system: +// just as export data enables separate compilation of several passes, +// facts enable "separate analysis". +// +// Each pass (a, p) starts with the set of facts produced by the +// same analyzer a applied to the packages directly imported by p. +// The analysis may add facts to the set, and they may be exported in turn. +// An analysis's Run function may retrieve facts by calling +// Pass.Import{Object,Package}Fact and update them using +// Pass.Export{Object,Package}Fact. +// +// A fact is logically private to its Analysis. To pass values +// between different analyzers, use the results mechanism; +// see Analyzer.Requires, Analyzer.ResultType, and Pass.ResultOf. +// +// A Fact type must be a pointer. +// Facts are encoded and decoded using encoding/gob. +// A Fact may implement the GobEncoder/GobDecoder interfaces +// to customize its encoding. Fact encoding should not fail. +// +// A Fact should not be modified once exported. +type Fact interface { + AFact() // dummy method to avoid type errors +} diff --git a/vendor/golang.org/x/tools/go/analysis/diagnostic.go b/vendor/golang.org/x/tools/go/analysis/diagnostic.go new file mode 100644 index 00000000000..744072cd798 --- /dev/null +++ b/vendor/golang.org/x/tools/go/analysis/diagnostic.go @@ -0,0 +1,48 @@ +package analysis + +import "go/token" + +// A Diagnostic is a message associated with a source location or range. +// +// An Analyzer may return a variety of diagnostics; the optional Category, +// which should be a constant, may be used to classify them. +// It is primarily intended to make it easy to look up documentation. +// +// If End is provided, the diagnostic is specified to apply to the range between +// Pos and End. +type Diagnostic struct { + Pos token.Pos + End token.Pos // optional + Category string // optional + Message string + + // SuggestedFixes contains suggested fixes for a diagnostic which can be used to perform + // edits to a file that address the diagnostic. + // TODO(matloob): Should multiple SuggestedFixes be allowed for a diagnostic? + // Diagnostics should not contain SuggestedFixes that overlap. + // Experimental: This API is experimental and may change in the future. + SuggestedFixes []SuggestedFix // optional +} + +// A SuggestedFix is a code change associated with a Diagnostic that a user can choose +// to apply to their code. Usually the SuggestedFix is meant to fix the issue flagged +// by the diagnostic. +// TextEdits for a SuggestedFix should not overlap. TextEdits for a SuggestedFix +// should not contain edits for other packages. +// Experimental: This API is experimental and may change in the future. +type SuggestedFix struct { + // A description for this suggested fix to be shown to a user deciding + // whether to accept it. + Message string + TextEdits []TextEdit +} + +// A TextEdit represents the replacement of the code between Pos and End with the new text. +// Each TextEdit should apply to a single file. End should not be earlier in the file than Pos. +// Experimental: This API is experimental and may change in the future. +type TextEdit struct { + // For a pure insertion, End can either be set to Pos or token.NoPos. + Pos token.Pos + End token.Pos + NewText []byte +} diff --git a/vendor/golang.org/x/tools/go/analysis/doc.go b/vendor/golang.org/x/tools/go/analysis/doc.go new file mode 100644 index 00000000000..a2353fc88b9 --- /dev/null +++ b/vendor/golang.org/x/tools/go/analysis/doc.go @@ -0,0 +1,336 @@ +/* + +The analysis package defines the interface between a modular static +analysis and an analysis driver program. + +Background + +A static analysis is a function that inspects a package of Go code and +reports a set of diagnostics (typically mistakes in the code), and +perhaps produces other results as well, such as suggested refactorings +or other facts. An analysis that reports mistakes is informally called a +"checker". For example, the printf checker reports mistakes in +fmt.Printf format strings. + +A "modular" analysis is one that inspects one package at a time but can +save information from a lower-level package and use it when inspecting a +higher-level package, analogous to separate compilation in a toolchain. +The printf checker is modular: when it discovers that a function such as +log.Fatalf delegates to fmt.Printf, it records this fact, and checks +calls to that function too, including calls made from another package. + +By implementing a common interface, checkers from a variety of sources +can be easily selected, incorporated, and reused in a wide range of +driver programs including command-line tools (such as vet), text editors and +IDEs, build and test systems (such as go build, Bazel, or Buck), test +frameworks, code review tools, code-base indexers (such as SourceGraph), +documentation viewers (such as godoc), batch pipelines for large code +bases, and so on. + + +Analyzer + +The primary type in the API is Analyzer. An Analyzer statically +describes an analysis function: its name, documentation, flags, +relationship to other analyzers, and of course, its logic. + +To define an analysis, a user declares a (logically constant) variable +of type Analyzer. Here is a typical example from one of the analyzers in +the go/analysis/passes/ subdirectory: + + package unusedresult + + var Analyzer = &analysis.Analyzer{ + Name: "unusedresult", + Doc: "check for unused results of calls to some functions", + Run: run, + ... + } + + func run(pass *analysis.Pass) (interface{}, error) { + ... + } + + +An analysis driver is a program such as vet that runs a set of +analyses and prints the diagnostics that they report. +The driver program must import the list of Analyzers it needs. +Typically each Analyzer resides in a separate package. +To add a new Analyzer to an existing driver, add another item to the list: + + import ( "unusedresult"; "nilness"; "printf" ) + + var analyses = []*analysis.Analyzer{ + unusedresult.Analyzer, + nilness.Analyzer, + printf.Analyzer, + } + +A driver may use the name, flags, and documentation to provide on-line +help that describes the analyses it performs. +The doc comment contains a brief one-line summary, +optionally followed by paragraphs of explanation. +The vet command, shown below, is an example of a driver that runs +multiple analyzers. It is based on the multichecker package +(see the "Standalone commands" section for details). + + $ go build golang.org/x/tools/go/analysis/cmd/vet + $ ./vet help + vet is a tool for static analysis of Go programs. + + Usage: vet [-flag] [package] + + Registered analyzers: + + asmdecl report mismatches between assembly files and Go declarations + assign check for useless assignments + atomic check for common mistakes using the sync/atomic package + ... + unusedresult check for unused results of calls to some functions + + $ ./vet help unusedresult + unusedresult: check for unused results of calls to some functions + + Analyzer flags: + + -unusedresult.funcs value + comma-separated list of functions whose results must be used (default Error,String) + -unusedresult.stringmethods value + comma-separated list of names of methods of type func() string whose results must be used + + Some functions like fmt.Errorf return a result and have no side effects, + so it is always a mistake to discard the result. This analyzer reports + calls to certain functions in which the result of the call is ignored. + + The set of functions may be controlled using flags. + +The Analyzer type has more fields besides those shown above: + + type Analyzer struct { + Name string + Doc string + Flags flag.FlagSet + Run func(*Pass) (interface{}, error) + RunDespiteErrors bool + ResultType reflect.Type + Requires []*Analyzer + FactTypes []Fact + } + +The Flags field declares a set of named (global) flag variables that +control analysis behavior. Unlike vet, analysis flags are not declared +directly in the command line FlagSet; it is up to the driver to set the +flag variables. A driver for a single analysis, a, might expose its flag +f directly on the command line as -f, whereas a driver for multiple +analyses might prefix the flag name by the analysis name (-a.f) to avoid +ambiguity. An IDE might expose the flags through a graphical interface, +and a batch pipeline might configure them from a config file. +See the "findcall" analyzer for an example of flags in action. + +The RunDespiteErrors flag indicates whether the analysis is equipped to +handle ill-typed code. If not, the driver will skip the analysis if +there were parse or type errors. +The optional ResultType field specifies the type of the result value +computed by this analysis and made available to other analyses. +The Requires field specifies a list of analyses upon which +this one depends and whose results it may access, and it constrains the +order in which a driver may run analyses. +The FactTypes field is discussed in the section on Modularity. +The analysis package provides a Validate function to perform basic +sanity checks on an Analyzer, such as that its Requires graph is +acyclic, its fact and result types are unique, and so on. + +Finally, the Run field contains a function to be called by the driver to +execute the analysis on a single package. The driver passes it an +instance of the Pass type. + + +Pass + +A Pass describes a single unit of work: the application of a particular +Analyzer to a particular package of Go code. +The Pass provides information to the Analyzer's Run function about the +package being analyzed, and provides operations to the Run function for +reporting diagnostics and other information back to the driver. + + type Pass struct { + Fset *token.FileSet + Files []*ast.File + OtherFiles []string + Pkg *types.Package + TypesInfo *types.Info + ResultOf map[*Analyzer]interface{} + Report func(Diagnostic) + ... + } + +The Fset, Files, Pkg, and TypesInfo fields provide the syntax trees, +type information, and source positions for a single package of Go code. + +The OtherFiles field provides the names, but not the contents, of non-Go +files such as assembly that are part of this package. See the "asmdecl" +or "buildtags" analyzers for examples of loading non-Go files and reporting +diagnostics against them. + +The ResultOf field provides the results computed by the analyzers +required by this one, as expressed in its Analyzer.Requires field. The +driver runs the required analyzers first and makes their results +available in this map. Each Analyzer must return a value of the type +described in its Analyzer.ResultType field. +For example, the "ctrlflow" analyzer returns a *ctrlflow.CFGs, which +provides a control-flow graph for each function in the package (see +golang.org/x/tools/go/cfg); the "inspect" analyzer returns a value that +enables other Analyzers to traverse the syntax trees of the package more +efficiently; and the "buildssa" analyzer constructs an SSA-form +intermediate representation. +Each of these Analyzers extends the capabilities of later Analyzers +without adding a dependency to the core API, so an analysis tool pays +only for the extensions it needs. + +The Report function emits a diagnostic, a message associated with a +source position. For most analyses, diagnostics are their primary +result. +For convenience, Pass provides a helper method, Reportf, to report a new +diagnostic by formatting a string. +Diagnostic is defined as: + + type Diagnostic struct { + Pos token.Pos + Category string // optional + Message string + } + +The optional Category field is a short identifier that classifies the +kind of message when an analysis produces several kinds of diagnostic. + +Most Analyzers inspect typed Go syntax trees, but a few, such as asmdecl +and buildtag, inspect the raw text of Go source files or even non-Go +files such as assembly. To report a diagnostic against a line of a +raw text file, use the following sequence: + + content, err := ioutil.ReadFile(filename) + if err != nil { ... } + tf := fset.AddFile(filename, -1, len(content)) + tf.SetLinesForContent(content) + ... + pass.Reportf(tf.LineStart(line), "oops") + + +Modular analysis with Facts + +To improve efficiency and scalability, large programs are routinely +built using separate compilation: units of the program are compiled +separately, and recompiled only when one of their dependencies changes; +independent modules may be compiled in parallel. The same technique may +be applied to static analyses, for the same benefits. Such analyses are +described as "modular". + +A compiler’s type checker is an example of a modular static analysis. +Many other checkers we would like to apply to Go programs can be +understood as alternative or non-standard type systems. For example, +vet's printf checker infers whether a function has the "printf wrapper" +type, and it applies stricter checks to calls of such functions. In +addition, it records which functions are printf wrappers for use by +later analysis passes to identify other printf wrappers by induction. +A result such as “f is a printf wrapper” that is not interesting by +itself but serves as a stepping stone to an interesting result (such as +a diagnostic) is called a "fact". + +The analysis API allows an analysis to define new types of facts, to +associate facts of these types with objects (named entities) declared +within the current package, or with the package as a whole, and to query +for an existing fact of a given type associated with an object or +package. + +An Analyzer that uses facts must declare their types: + + var Analyzer = &analysis.Analyzer{ + Name: "printf", + FactTypes: []analysis.Fact{new(isWrapper)}, + ... + } + + type isWrapper struct{} // => *types.Func f “is a printf wrapper” + +The driver program ensures that facts for a pass’s dependencies are +generated before analyzing the package and is responsible for propagating +facts from one package to another, possibly across address spaces. +Consequently, Facts must be serializable. The API requires that drivers +use the gob encoding, an efficient, robust, self-describing binary +protocol. A fact type may implement the GobEncoder/GobDecoder interfaces +if the default encoding is unsuitable. Facts should be stateless. + +The Pass type has functions to import and export facts, +associated either with an object or with a package: + + type Pass struct { + ... + ExportObjectFact func(types.Object, Fact) + ImportObjectFact func(types.Object, Fact) bool + + ExportPackageFact func(fact Fact) + ImportPackageFact func(*types.Package, Fact) bool + } + +An Analyzer may only export facts associated with the current package or +its objects, though it may import facts from any package or object that +is an import dependency of the current package. + +Conceptually, ExportObjectFact(obj, fact) inserts fact into a hidden map keyed by +the pair (obj, TypeOf(fact)), and the ImportObjectFact function +retrieves the entry from this map and copies its value into the variable +pointed to by fact. This scheme assumes that the concrete type of fact +is a pointer; this assumption is checked by the Validate function. +See the "printf" analyzer for an example of object facts in action. + +Some driver implementations (such as those based on Bazel and Blaze) do +not currently apply analyzers to packages of the standard library. +Therefore, for best results, analyzer authors should not rely on +analysis facts being available for standard packages. +For example, although the printf checker is capable of deducing during +analysis of the log package that log.Printf is a printf wrapper, +this fact is built in to the analyzer so that it correctly checks +calls to log.Printf even when run in a driver that does not apply +it to standard packages. We would like to remove this limitation in future. + + +Testing an Analyzer + +The analysistest subpackage provides utilities for testing an Analyzer. +In a few lines of code, it is possible to run an analyzer on a package +of testdata files and check that it reported all the expected +diagnostics and facts (and no more). Expectations are expressed using +"// want ..." comments in the input code. + + +Standalone commands + +Analyzers are provided in the form of packages that a driver program is +expected to import. The vet command imports a set of several analyzers, +but users may wish to define their own analysis commands that perform +additional checks. To simplify the task of creating an analysis command, +either for a single analyzer or for a whole suite, we provide the +singlechecker and multichecker subpackages. + +The singlechecker package provides the main function for a command that +runs one analyzer. By convention, each analyzer such as +go/passes/findcall should be accompanied by a singlechecker-based +command such as go/analysis/passes/findcall/cmd/findcall, defined in its +entirety as: + + package main + + import ( + "golang.org/x/tools/go/analysis/passes/findcall" + "golang.org/x/tools/go/analysis/singlechecker" + ) + + func main() { singlechecker.Main(findcall.Analyzer) } + +A tool that provides multiple analyzers can use multichecker in a +similar way, giving it the list of Analyzers. + + + +*/ +package analysis diff --git a/vendor/golang.org/x/tools/go/analysis/passes/inspect/inspect.go b/vendor/golang.org/x/tools/go/analysis/passes/inspect/inspect.go new file mode 100644 index 00000000000..8213f633135 --- /dev/null +++ b/vendor/golang.org/x/tools/go/analysis/passes/inspect/inspect.go @@ -0,0 +1,49 @@ +// 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 inspect defines an Analyzer that provides an AST inspector +// (golang.org/x/tools/go/ast/inspect.Inspect) for the syntax trees of a +// package. It is only a building block for other analyzers. +// +// Example of use in another analysis: +// +// import ( +// "golang.org/x/tools/go/analysis" +// "golang.org/x/tools/go/analysis/passes/inspect" +// "golang.org/x/tools/go/ast/inspector" +// ) +// +// var Analyzer = &analysis.Analyzer{ +// ... +// Requires: reflect.TypeOf(new(inspect.Analyzer)), +// } +// +// func run(pass *analysis.Pass) (interface{}, error) { +// inspect := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector) +// inspect.Preorder(nil, func(n ast.Node) { +// ... +// }) +// return nil +// } +// +package inspect + +import ( + "reflect" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/ast/inspector" +) + +var Analyzer = &analysis.Analyzer{ + Name: "inspect", + Doc: "optimize AST traversal for later passes", + Run: run, + RunDespiteErrors: true, + ResultType: reflect.TypeOf(new(inspector.Inspector)), +} + +func run(pass *analysis.Pass) (interface{}, error) { + return inspector.New(pass.Files), nil +} diff --git a/vendor/golang.org/x/tools/go/analysis/validate.go b/vendor/golang.org/x/tools/go/analysis/validate.go new file mode 100644 index 00000000000..be98143461e --- /dev/null +++ b/vendor/golang.org/x/tools/go/analysis/validate.go @@ -0,0 +1,97 @@ +package analysis + +import ( + "fmt" + "reflect" + "unicode" +) + +// Validate reports an error if any of the analyzers are misconfigured. +// Checks include: +// that the name is a valid identifier; +// that the Requires graph is acyclic; +// that analyzer fact types are unique; +// that each fact type is a pointer. +func Validate(analyzers []*Analyzer) error { + // Map each fact type to its sole generating analyzer. + factTypes := make(map[reflect.Type]*Analyzer) + + // Traverse the Requires graph, depth first. + const ( + white = iota + grey + black + finished + ) + color := make(map[*Analyzer]uint8) + var visit func(a *Analyzer) error + visit = func(a *Analyzer) error { + if a == nil { + return fmt.Errorf("nil *Analyzer") + } + if color[a] == white { + color[a] = grey + + // names + if !validIdent(a.Name) { + return fmt.Errorf("invalid analyzer name %q", a) + } + + if a.Doc == "" { + return fmt.Errorf("analyzer %q is undocumented", a) + } + + // fact types + for _, f := range a.FactTypes { + if f == nil { + return fmt.Errorf("analyzer %s has nil FactType", a) + } + t := reflect.TypeOf(f) + if prev := factTypes[t]; prev != nil { + return fmt.Errorf("fact type %s registered by two analyzers: %v, %v", + t, a, prev) + } + if t.Kind() != reflect.Ptr { + return fmt.Errorf("%s: fact type %s is not a pointer", a, t) + } + factTypes[t] = a + } + + // recursion + for i, req := range a.Requires { + if err := visit(req); err != nil { + return fmt.Errorf("%s.Requires[%d]: %v", a.Name, i, err) + } + } + color[a] = black + } + + return nil + } + for _, a := range analyzers { + if err := visit(a); err != nil { + return err + } + } + + // Reject duplicates among analyzers. + // Precondition: color[a] == black. + // Postcondition: color[a] == finished. + for _, a := range analyzers { + if color[a] == finished { + return fmt.Errorf("duplicate analyzer: %s", a.Name) + } + color[a] = finished + } + + return nil +} + +func validIdent(name string) bool { + for i, r := range name { + if !(r == '_' || unicode.IsLetter(r) || i > 0 && unicode.IsDigit(r)) { + return false + } + } + return name != "" +} diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go new file mode 100644 index 00000000000..6b7052b892c --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go @@ -0,0 +1,627 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package astutil + +// This file defines utilities for working with source positions. + +import ( + "fmt" + "go/ast" + "go/token" + "sort" +) + +// PathEnclosingInterval returns the node that encloses the source +// interval [start, end), and all its ancestors up to the AST root. +// +// The definition of "enclosing" used by this function considers +// additional whitespace abutting a node to be enclosed by it. +// In this example: +// +// z := x + y // add them +// <-A-> +// <----B-----> +// +// the ast.BinaryExpr(+) node is considered to enclose interval B +// even though its [Pos()..End()) is actually only interval A. +// This behaviour makes user interfaces more tolerant of imperfect +// input. +// +// This function treats tokens as nodes, though they are not included +// in the result. e.g. PathEnclosingInterval("+") returns the +// enclosing ast.BinaryExpr("x + y"). +// +// If start==end, the 1-char interval following start is used instead. +// +// The 'exact' result is true if the interval contains only path[0] +// and perhaps some adjacent whitespace. It is false if the interval +// overlaps multiple children of path[0], or if it contains only +// interior whitespace of path[0]. +// In this example: +// +// z := x + y // add them +// <--C--> <---E--> +// ^ +// D +// +// intervals C, D and E are inexact. C is contained by the +// z-assignment statement, because it spans three of its children (:=, +// x, +). So too is the 1-char interval D, because it contains only +// interior whitespace of the assignment. E is considered interior +// whitespace of the BlockStmt containing the assignment. +// +// Precondition: [start, end) both lie within the same file as root. +// TODO(adonovan): return (nil, false) in this case and remove precond. +// Requires FileSet; see loader.tokenFileContainsPos. +// +// Postcondition: path is never nil; it always contains at least 'root'. +// +func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Node, exact bool) { + // fmt.Printf("EnclosingInterval %d %d\n", start, end) // debugging + + // Precondition: node.[Pos..End) and adjoining whitespace contain [start, end). + var visit func(node ast.Node) bool + visit = func(node ast.Node) bool { + path = append(path, node) + + nodePos := node.Pos() + nodeEnd := node.End() + + // fmt.Printf("visit(%T, %d, %d)\n", node, nodePos, nodeEnd) // debugging + + // Intersect [start, end) with interval of node. + if start < nodePos { + start = nodePos + } + if end > nodeEnd { + end = nodeEnd + } + + // Find sole child that contains [start, end). + children := childrenOf(node) + l := len(children) + for i, child := range children { + // [childPos, childEnd) is unaugmented interval of child. + childPos := child.Pos() + childEnd := child.End() + + // [augPos, augEnd) is whitespace-augmented interval of child. + augPos := childPos + augEnd := childEnd + if i > 0 { + augPos = children[i-1].End() // start of preceding whitespace + } + if i < l-1 { + nextChildPos := children[i+1].Pos() + // Does [start, end) lie between child and next child? + if start >= augEnd && end <= nextChildPos { + return false // inexact match + } + augEnd = nextChildPos // end of following whitespace + } + + // fmt.Printf("\tchild %d: [%d..%d)\tcontains interval [%d..%d)?\n", + // i, augPos, augEnd, start, end) // debugging + + // Does augmented child strictly contain [start, end)? + if augPos <= start && end <= augEnd { + _, isToken := child.(tokenNode) + return isToken || visit(child) + } + + // Does [start, end) overlap multiple children? + // i.e. left-augmented child contains start + // but LR-augmented child does not contain end. + if start < childEnd && end > augEnd { + break + } + } + + // No single child contained [start, end), + // so node is the result. Is it exact? + + // (It's tempting to put this condition before the + // child loop, but it gives the wrong result in the + // case where a node (e.g. ExprStmt) and its sole + // child have equal intervals.) + if start == nodePos && end == nodeEnd { + return true // exact match + } + + return false // inexact: overlaps multiple children + } + + if start > end { + start, end = end, start + } + + if start < root.End() && end > root.Pos() { + if start == end { + end = start + 1 // empty interval => interval of size 1 + } + exact = visit(root) + + // Reverse the path: + for i, l := 0, len(path); i < l/2; i++ { + path[i], path[l-1-i] = path[l-1-i], path[i] + } + } else { + // Selection lies within whitespace preceding the + // first (or following the last) declaration in the file. + // The result nonetheless always includes the ast.File. + path = append(path, root) + } + + return +} + +// tokenNode is a dummy implementation of ast.Node for a single token. +// They are used transiently by PathEnclosingInterval but never escape +// this package. +// +type tokenNode struct { + pos token.Pos + end token.Pos +} + +func (n tokenNode) Pos() token.Pos { + return n.pos +} + +func (n tokenNode) End() token.Pos { + return n.end +} + +func tok(pos token.Pos, len int) ast.Node { + return tokenNode{pos, pos + token.Pos(len)} +} + +// childrenOf returns the direct non-nil children of ast.Node n. +// It may include fake ast.Node implementations for bare tokens. +// it is not safe to call (e.g.) ast.Walk on such nodes. +// +func childrenOf(n ast.Node) []ast.Node { + var children []ast.Node + + // First add nodes for all true subtrees. + ast.Inspect(n, func(node ast.Node) bool { + if node == n { // push n + return true // recur + } + if node != nil { // push child + children = append(children, node) + } + return false // no recursion + }) + + // Then add fake Nodes for bare tokens. + switch n := n.(type) { + case *ast.ArrayType: + children = append(children, + tok(n.Lbrack, len("[")), + tok(n.Elt.End(), len("]"))) + + case *ast.AssignStmt: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.BasicLit: + children = append(children, + tok(n.ValuePos, len(n.Value))) + + case *ast.BinaryExpr: + children = append(children, tok(n.OpPos, len(n.Op.String()))) + + case *ast.BlockStmt: + children = append(children, + tok(n.Lbrace, len("{")), + tok(n.Rbrace, len("}"))) + + case *ast.BranchStmt: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.CallExpr: + children = append(children, + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + if n.Ellipsis != 0 { + children = append(children, tok(n.Ellipsis, len("..."))) + } + + case *ast.CaseClause: + if n.List == nil { + children = append(children, + tok(n.Case, len("default"))) + } else { + children = append(children, + tok(n.Case, len("case"))) + } + children = append(children, tok(n.Colon, len(":"))) + + case *ast.ChanType: + switch n.Dir { + case ast.RECV: + children = append(children, tok(n.Begin, len("<-chan"))) + case ast.SEND: + children = append(children, tok(n.Begin, len("chan<-"))) + case ast.RECV | ast.SEND: + children = append(children, tok(n.Begin, len("chan"))) + } + + case *ast.CommClause: + if n.Comm == nil { + children = append(children, + tok(n.Case, len("default"))) + } else { + children = append(children, + tok(n.Case, len("case"))) + } + children = append(children, tok(n.Colon, len(":"))) + + case *ast.Comment: + // nop + + case *ast.CommentGroup: + // nop + + case *ast.CompositeLit: + children = append(children, + tok(n.Lbrace, len("{")), + tok(n.Rbrace, len("{"))) + + case *ast.DeclStmt: + // nop + + case *ast.DeferStmt: + children = append(children, + tok(n.Defer, len("defer"))) + + case *ast.Ellipsis: + children = append(children, + tok(n.Ellipsis, len("..."))) + + case *ast.EmptyStmt: + // nop + + case *ast.ExprStmt: + // nop + + case *ast.Field: + // TODO(adonovan): Field.{Doc,Comment,Tag}? + + case *ast.FieldList: + children = append(children, + tok(n.Opening, len("(")), + tok(n.Closing, len(")"))) + + case *ast.File: + // TODO test: Doc + children = append(children, + tok(n.Package, len("package"))) + + case *ast.ForStmt: + children = append(children, + tok(n.For, len("for"))) + + case *ast.FuncDecl: + // TODO(adonovan): FuncDecl.Comment? + + // Uniquely, FuncDecl breaks the invariant that + // preorder traversal yields tokens in lexical order: + // in fact, FuncDecl.Recv precedes FuncDecl.Type.Func. + // + // As a workaround, we inline the case for FuncType + // here and order things correctly. + // + children = nil // discard ast.Walk(FuncDecl) info subtrees + children = append(children, tok(n.Type.Func, len("func"))) + if n.Recv != nil { + children = append(children, n.Recv) + } + children = append(children, n.Name) + if n.Type.Params != nil { + children = append(children, n.Type.Params) + } + if n.Type.Results != nil { + children = append(children, n.Type.Results) + } + if n.Body != nil { + children = append(children, n.Body) + } + + case *ast.FuncLit: + // nop + + case *ast.FuncType: + if n.Func != 0 { + children = append(children, + tok(n.Func, len("func"))) + } + + case *ast.GenDecl: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + if n.Lparen != 0 { + children = append(children, + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + } + + case *ast.GoStmt: + children = append(children, + tok(n.Go, len("go"))) + + case *ast.Ident: + children = append(children, + tok(n.NamePos, len(n.Name))) + + case *ast.IfStmt: + children = append(children, + tok(n.If, len("if"))) + + case *ast.ImportSpec: + // TODO(adonovan): ImportSpec.{Doc,EndPos}? + + case *ast.IncDecStmt: + children = append(children, + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.IndexExpr: + children = append(children, + tok(n.Lbrack, len("{")), + tok(n.Rbrack, len("}"))) + + case *ast.InterfaceType: + children = append(children, + tok(n.Interface, len("interface"))) + + case *ast.KeyValueExpr: + children = append(children, + tok(n.Colon, len(":"))) + + case *ast.LabeledStmt: + children = append(children, + tok(n.Colon, len(":"))) + + case *ast.MapType: + children = append(children, + tok(n.Map, len("map"))) + + case *ast.ParenExpr: + children = append(children, + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + + case *ast.RangeStmt: + children = append(children, + tok(n.For, len("for")), + tok(n.TokPos, len(n.Tok.String()))) + + case *ast.ReturnStmt: + children = append(children, + tok(n.Return, len("return"))) + + case *ast.SelectStmt: + children = append(children, + tok(n.Select, len("select"))) + + case *ast.SelectorExpr: + // nop + + case *ast.SendStmt: + children = append(children, + tok(n.Arrow, len("<-"))) + + case *ast.SliceExpr: + children = append(children, + tok(n.Lbrack, len("[")), + tok(n.Rbrack, len("]"))) + + case *ast.StarExpr: + children = append(children, tok(n.Star, len("*"))) + + case *ast.StructType: + children = append(children, tok(n.Struct, len("struct"))) + + case *ast.SwitchStmt: + children = append(children, tok(n.Switch, len("switch"))) + + case *ast.TypeAssertExpr: + children = append(children, + tok(n.Lparen-1, len(".")), + tok(n.Lparen, len("(")), + tok(n.Rparen, len(")"))) + + case *ast.TypeSpec: + // TODO(adonovan): TypeSpec.{Doc,Comment}? + + case *ast.TypeSwitchStmt: + children = append(children, tok(n.Switch, len("switch"))) + + case *ast.UnaryExpr: + children = append(children, tok(n.OpPos, len(n.Op.String()))) + + case *ast.ValueSpec: + // TODO(adonovan): ValueSpec.{Doc,Comment}? + + case *ast.BadDecl, *ast.BadExpr, *ast.BadStmt: + // nop + } + + // TODO(adonovan): opt: merge the logic of ast.Inspect() into + // the switch above so we can make interleaved callbacks for + // both Nodes and Tokens in the right order and avoid the need + // to sort. + sort.Sort(byPos(children)) + + return children +} + +type byPos []ast.Node + +func (sl byPos) Len() int { + return len(sl) +} +func (sl byPos) Less(i, j int) bool { + return sl[i].Pos() < sl[j].Pos() +} +func (sl byPos) Swap(i, j int) { + sl[i], sl[j] = sl[j], sl[i] +} + +// NodeDescription returns a description of the concrete type of n suitable +// for a user interface. +// +// TODO(adonovan): in some cases (e.g. Field, FieldList, Ident, +// StarExpr) we could be much more specific given the path to the AST +// root. Perhaps we should do that. +// +func NodeDescription(n ast.Node) string { + switch n := n.(type) { + case *ast.ArrayType: + return "array type" + case *ast.AssignStmt: + return "assignment" + case *ast.BadDecl: + return "bad declaration" + case *ast.BadExpr: + return "bad expression" + case *ast.BadStmt: + return "bad statement" + case *ast.BasicLit: + return "basic literal" + case *ast.BinaryExpr: + return fmt.Sprintf("binary %s operation", n.Op) + case *ast.BlockStmt: + return "block" + case *ast.BranchStmt: + switch n.Tok { + case token.BREAK: + return "break statement" + case token.CONTINUE: + return "continue statement" + case token.GOTO: + return "goto statement" + case token.FALLTHROUGH: + return "fall-through statement" + } + case *ast.CallExpr: + if len(n.Args) == 1 && !n.Ellipsis.IsValid() { + return "function call (or conversion)" + } + return "function call" + case *ast.CaseClause: + return "case clause" + case *ast.ChanType: + return "channel type" + case *ast.CommClause: + return "communication clause" + case *ast.Comment: + return "comment" + case *ast.CommentGroup: + return "comment group" + case *ast.CompositeLit: + return "composite literal" + case *ast.DeclStmt: + return NodeDescription(n.Decl) + " statement" + case *ast.DeferStmt: + return "defer statement" + case *ast.Ellipsis: + return "ellipsis" + case *ast.EmptyStmt: + return "empty statement" + case *ast.ExprStmt: + return "expression statement" + case *ast.Field: + // Can be any of these: + // struct {x, y int} -- struct field(s) + // struct {T} -- anon struct field + // interface {I} -- interface embedding + // interface {f()} -- interface method + // func (A) func(B) C -- receiver, param(s), result(s) + return "field/method/parameter" + case *ast.FieldList: + return "field/method/parameter list" + case *ast.File: + return "source file" + case *ast.ForStmt: + return "for loop" + case *ast.FuncDecl: + return "function declaration" + case *ast.FuncLit: + return "function literal" + case *ast.FuncType: + return "function type" + case *ast.GenDecl: + switch n.Tok { + case token.IMPORT: + return "import declaration" + case token.CONST: + return "constant declaration" + case token.TYPE: + return "type declaration" + case token.VAR: + return "variable declaration" + } + case *ast.GoStmt: + return "go statement" + case *ast.Ident: + return "identifier" + case *ast.IfStmt: + return "if statement" + case *ast.ImportSpec: + return "import specification" + case *ast.IncDecStmt: + if n.Tok == token.INC { + return "increment statement" + } + return "decrement statement" + case *ast.IndexExpr: + return "index expression" + case *ast.InterfaceType: + return "interface type" + case *ast.KeyValueExpr: + return "key/value association" + case *ast.LabeledStmt: + return "statement label" + case *ast.MapType: + return "map type" + case *ast.Package: + return "package" + case *ast.ParenExpr: + return "parenthesized " + NodeDescription(n.X) + case *ast.RangeStmt: + return "range loop" + case *ast.ReturnStmt: + return "return statement" + case *ast.SelectStmt: + return "select statement" + case *ast.SelectorExpr: + return "selector" + case *ast.SendStmt: + return "channel send" + case *ast.SliceExpr: + return "slice expression" + case *ast.StarExpr: + return "*-operation" // load/store expr or pointer type + case *ast.StructType: + return "struct type" + case *ast.SwitchStmt: + return "switch statement" + case *ast.TypeAssertExpr: + return "type assertion" + case *ast.TypeSpec: + return "type specification" + case *ast.TypeSwitchStmt: + return "type switch" + case *ast.UnaryExpr: + return fmt.Sprintf("unary %s operation", n.Op) + case *ast.ValueSpec: + return "value specification" + + } + panic(fmt.Sprintf("unexpected node type: %T", n)) +} diff --git a/vendor/golang.org/x/tools/go/ast/astutil/imports.go b/vendor/golang.org/x/tools/go/ast/astutil/imports.go new file mode 100644 index 00000000000..3e4b195368b --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/imports.go @@ -0,0 +1,481 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package astutil contains common utilities for working with the Go AST. +package astutil // import "golang.org/x/tools/go/ast/astutil" + +import ( + "fmt" + "go/ast" + "go/token" + "strconv" + "strings" +) + +// AddImport adds the import path to the file f, if absent. +func AddImport(fset *token.FileSet, f *ast.File, path string) (added bool) { + return AddNamedImport(fset, f, "", path) +} + +// AddNamedImport adds the import with the given name and path to the file f, if absent. +// If name is not empty, it is used to rename the import. +// +// For example, calling +// AddNamedImport(fset, f, "pathpkg", "path") +// adds +// import pathpkg "path" +func AddNamedImport(fset *token.FileSet, f *ast.File, name, path string) (added bool) { + if imports(f, name, path) { + return false + } + + newImport := &ast.ImportSpec{ + Path: &ast.BasicLit{ + Kind: token.STRING, + Value: strconv.Quote(path), + }, + } + if name != "" { + newImport.Name = &ast.Ident{Name: name} + } + + // Find an import decl to add to. + // The goal is to find an existing import + // whose import path has the longest shared + // prefix with path. + var ( + bestMatch = -1 // length of longest shared prefix + lastImport = -1 // index in f.Decls of the file's final import decl + impDecl *ast.GenDecl // import decl containing the best match + impIndex = -1 // spec index in impDecl containing the best match + + isThirdPartyPath = isThirdParty(path) + ) + for i, decl := range f.Decls { + gen, ok := decl.(*ast.GenDecl) + if ok && gen.Tok == token.IMPORT { + lastImport = i + // Do not add to import "C", to avoid disrupting the + // association with its doc comment, breaking cgo. + if declImports(gen, "C") { + continue + } + + // Match an empty import decl if that's all that is available. + if len(gen.Specs) == 0 && bestMatch == -1 { + impDecl = gen + } + + // Compute longest shared prefix with imports in this group and find best + // matched import spec. + // 1. Always prefer import spec with longest shared prefix. + // 2. While match length is 0, + // - for stdlib package: prefer first import spec. + // - for third party package: prefer first third party import spec. + // We cannot use last import spec as best match for third party package + // because grouped imports are usually placed last by goimports -local + // flag. + // See issue #19190. + seenAnyThirdParty := false + for j, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + p := importPath(impspec) + n := matchLen(p, path) + if n > bestMatch || (bestMatch == 0 && !seenAnyThirdParty && isThirdPartyPath) { + bestMatch = n + impDecl = gen + impIndex = j + } + seenAnyThirdParty = seenAnyThirdParty || isThirdParty(p) + } + } + } + + // If no import decl found, add one after the last import. + if impDecl == nil { + impDecl = &ast.GenDecl{ + Tok: token.IMPORT, + } + if lastImport >= 0 { + impDecl.TokPos = f.Decls[lastImport].End() + } else { + // There are no existing imports. + // Our new import, preceded by a blank line, goes after the package declaration + // and after the comment, if any, that starts on the same line as the + // package declaration. + impDecl.TokPos = f.Package + + file := fset.File(f.Package) + pkgLine := file.Line(f.Package) + for _, c := range f.Comments { + if file.Line(c.Pos()) > pkgLine { + break + } + // +2 for a blank line + impDecl.TokPos = c.End() + 2 + } + } + f.Decls = append(f.Decls, nil) + copy(f.Decls[lastImport+2:], f.Decls[lastImport+1:]) + f.Decls[lastImport+1] = impDecl + } + + // Insert new import at insertAt. + insertAt := 0 + if impIndex >= 0 { + // insert after the found import + insertAt = impIndex + 1 + } + impDecl.Specs = append(impDecl.Specs, nil) + copy(impDecl.Specs[insertAt+1:], impDecl.Specs[insertAt:]) + impDecl.Specs[insertAt] = newImport + pos := impDecl.Pos() + if insertAt > 0 { + // If there is a comment after an existing import, preserve the comment + // position by adding the new import after the comment. + if spec, ok := impDecl.Specs[insertAt-1].(*ast.ImportSpec); ok && spec.Comment != nil { + pos = spec.Comment.End() + } else { + // Assign same position as the previous import, + // so that the sorter sees it as being in the same block. + pos = impDecl.Specs[insertAt-1].Pos() + } + } + if newImport.Name != nil { + newImport.Name.NamePos = pos + } + newImport.Path.ValuePos = pos + newImport.EndPos = pos + + // Clean up parens. impDecl contains at least one spec. + if len(impDecl.Specs) == 1 { + // Remove unneeded parens. + impDecl.Lparen = token.NoPos + } else if !impDecl.Lparen.IsValid() { + // impDecl needs parens added. + impDecl.Lparen = impDecl.Specs[0].Pos() + } + + f.Imports = append(f.Imports, newImport) + + if len(f.Decls) <= 1 { + return true + } + + // Merge all the import declarations into the first one. + var first *ast.GenDecl + for i := 0; i < len(f.Decls); i++ { + decl := f.Decls[i] + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.IMPORT || declImports(gen, "C") { + continue + } + if first == nil { + first = gen + continue // Don't touch the first one. + } + // We now know there is more than one package in this import + // declaration. Ensure that it ends up parenthesized. + first.Lparen = first.Pos() + // Move the imports of the other import declaration to the first one. + for _, spec := range gen.Specs { + spec.(*ast.ImportSpec).Path.ValuePos = first.Pos() + first.Specs = append(first.Specs, spec) + } + f.Decls = append(f.Decls[:i], f.Decls[i+1:]...) + i-- + } + + return true +} + +func isThirdParty(importPath string) bool { + // Third party package import path usually contains "." (".com", ".org", ...) + // This logic is taken from golang.org/x/tools/imports package. + return strings.Contains(importPath, ".") +} + +// DeleteImport deletes the import path from the file f, if present. +// If there are duplicate import declarations, all matching ones are deleted. +func DeleteImport(fset *token.FileSet, f *ast.File, path string) (deleted bool) { + return DeleteNamedImport(fset, f, "", path) +} + +// DeleteNamedImport deletes the import with the given name and path from the file f, if present. +// If there are duplicate import declarations, all matching ones are deleted. +func DeleteNamedImport(fset *token.FileSet, f *ast.File, name, path string) (deleted bool) { + var delspecs []*ast.ImportSpec + var delcomments []*ast.CommentGroup + + // Find the import nodes that import path, if any. + for i := 0; i < len(f.Decls); i++ { + decl := f.Decls[i] + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.IMPORT { + continue + } + for j := 0; j < len(gen.Specs); j++ { + spec := gen.Specs[j] + impspec := spec.(*ast.ImportSpec) + if importName(impspec) != name || importPath(impspec) != path { + continue + } + + // We found an import spec that imports path. + // Delete it. + delspecs = append(delspecs, impspec) + deleted = true + copy(gen.Specs[j:], gen.Specs[j+1:]) + gen.Specs = gen.Specs[:len(gen.Specs)-1] + + // If this was the last import spec in this decl, + // delete the decl, too. + if len(gen.Specs) == 0 { + copy(f.Decls[i:], f.Decls[i+1:]) + f.Decls = f.Decls[:len(f.Decls)-1] + i-- + break + } else if len(gen.Specs) == 1 { + if impspec.Doc != nil { + delcomments = append(delcomments, impspec.Doc) + } + if impspec.Comment != nil { + delcomments = append(delcomments, impspec.Comment) + } + for _, cg := range f.Comments { + // Found comment on the same line as the import spec. + if cg.End() < impspec.Pos() && fset.Position(cg.End()).Line == fset.Position(impspec.Pos()).Line { + delcomments = append(delcomments, cg) + break + } + } + + spec := gen.Specs[0].(*ast.ImportSpec) + + // Move the documentation right after the import decl. + if spec.Doc != nil { + for fset.Position(gen.TokPos).Line+1 < fset.Position(spec.Doc.Pos()).Line { + fset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line) + } + } + for _, cg := range f.Comments { + if cg.End() < spec.Pos() && fset.Position(cg.End()).Line == fset.Position(spec.Pos()).Line { + for fset.Position(gen.TokPos).Line+1 < fset.Position(spec.Pos()).Line { + fset.File(gen.TokPos).MergeLine(fset.Position(gen.TokPos).Line) + } + break + } + } + } + if j > 0 { + lastImpspec := gen.Specs[j-1].(*ast.ImportSpec) + lastLine := fset.Position(lastImpspec.Path.ValuePos).Line + line := fset.Position(impspec.Path.ValuePos).Line + + // We deleted an entry but now there may be + // a blank line-sized hole where the import was. + if line-lastLine > 1 { + // There was a blank line immediately preceding the deleted import, + // so there's no need to close the hole. + // Do nothing. + } else if line != fset.File(gen.Rparen).LineCount() { + // There was no blank line. Close the hole. + fset.File(gen.Rparen).MergeLine(line) + } + } + j-- + } + } + + // Delete imports from f.Imports. + for i := 0; i < len(f.Imports); i++ { + imp := f.Imports[i] + for j, del := range delspecs { + if imp == del { + copy(f.Imports[i:], f.Imports[i+1:]) + f.Imports = f.Imports[:len(f.Imports)-1] + copy(delspecs[j:], delspecs[j+1:]) + delspecs = delspecs[:len(delspecs)-1] + i-- + break + } + } + } + + // Delete comments from f.Comments. + for i := 0; i < len(f.Comments); i++ { + cg := f.Comments[i] + for j, del := range delcomments { + if cg == del { + copy(f.Comments[i:], f.Comments[i+1:]) + f.Comments = f.Comments[:len(f.Comments)-1] + copy(delcomments[j:], delcomments[j+1:]) + delcomments = delcomments[:len(delcomments)-1] + i-- + break + } + } + } + + if len(delspecs) > 0 { + panic(fmt.Sprintf("deleted specs from Decls but not Imports: %v", delspecs)) + } + + return +} + +// RewriteImport rewrites any import of path oldPath to path newPath. +func RewriteImport(fset *token.FileSet, f *ast.File, oldPath, newPath string) (rewrote bool) { + for _, imp := range f.Imports { + if importPath(imp) == oldPath { + rewrote = true + // record old End, because the default is to compute + // it using the length of imp.Path.Value. + imp.EndPos = imp.End() + imp.Path.Value = strconv.Quote(newPath) + } + } + return +} + +// UsesImport reports whether a given import is used. +func UsesImport(f *ast.File, path string) (used bool) { + spec := importSpec(f, path) + if spec == nil { + return + } + + name := spec.Name.String() + switch name { + case "": + // If the package name is not explicitly specified, + // make an educated guess. This is not guaranteed to be correct. + lastSlash := strings.LastIndex(path, "/") + if lastSlash == -1 { + name = path + } else { + name = path[lastSlash+1:] + } + case "_", ".": + // Not sure if this import is used - err on the side of caution. + return true + } + + ast.Walk(visitFn(func(n ast.Node) { + sel, ok := n.(*ast.SelectorExpr) + if ok && isTopName(sel.X, name) { + used = true + } + }), f) + + return +} + +type visitFn func(node ast.Node) + +func (fn visitFn) Visit(node ast.Node) ast.Visitor { + fn(node) + return fn +} + +// imports reports whether f has an import with the specified name and path. +func imports(f *ast.File, name, path string) bool { + for _, s := range f.Imports { + if importName(s) == name && importPath(s) == path { + return true + } + } + return false +} + +// importSpec returns the import spec if f imports path, +// or nil otherwise. +func importSpec(f *ast.File, path string) *ast.ImportSpec { + for _, s := range f.Imports { + if importPath(s) == path { + return s + } + } + return nil +} + +// importName returns the name of s, +// or "" if the import is not named. +func importName(s *ast.ImportSpec) string { + if s.Name == nil { + return "" + } + return s.Name.Name +} + +// importPath returns the unquoted import path of s, +// or "" if the path is not properly quoted. +func importPath(s *ast.ImportSpec) string { + t, err := strconv.Unquote(s.Path.Value) + if err != nil { + return "" + } + return t +} + +// declImports reports whether gen contains an import of path. +func declImports(gen *ast.GenDecl, path string) bool { + if gen.Tok != token.IMPORT { + return false + } + for _, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + if importPath(impspec) == path { + return true + } + } + return false +} + +// matchLen returns the length of the longest path segment prefix shared by x and y. +func matchLen(x, y string) int { + n := 0 + for i := 0; i < len(x) && i < len(y) && x[i] == y[i]; i++ { + if x[i] == '/' { + n++ + } + } + return n +} + +// isTopName returns true if n is a top-level unresolved identifier with the given name. +func isTopName(n ast.Expr, name string) bool { + id, ok := n.(*ast.Ident) + return ok && id.Name == name && id.Obj == nil +} + +// Imports returns the file imports grouped by paragraph. +func Imports(fset *token.FileSet, f *ast.File) [][]*ast.ImportSpec { + var groups [][]*ast.ImportSpec + + for _, decl := range f.Decls { + genDecl, ok := decl.(*ast.GenDecl) + if !ok || genDecl.Tok != token.IMPORT { + break + } + + group := []*ast.ImportSpec{} + + var lastLine int + for _, spec := range genDecl.Specs { + importSpec := spec.(*ast.ImportSpec) + pos := importSpec.Path.ValuePos + line := fset.Position(pos).Line + if lastLine > 0 && pos > 0 && line-lastLine > 1 { + groups = append(groups, group) + group = []*ast.ImportSpec{} + } + group = append(group, importSpec) + lastLine = line + } + groups = append(groups, group) + } + + return groups +} diff --git a/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go b/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go new file mode 100644 index 00000000000..cf72ea990bd --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go @@ -0,0 +1,477 @@ +// 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 astutil + +import ( + "fmt" + "go/ast" + "reflect" + "sort" +) + +// An ApplyFunc is invoked by Apply for each node n, even if n is nil, +// before and/or after the node's children, using a Cursor describing +// the current node and providing operations on it. +// +// The return value of ApplyFunc controls the syntax tree traversal. +// See Apply for details. +type ApplyFunc func(*Cursor) bool + +// Apply traverses a syntax tree recursively, starting with root, +// and calling pre and post for each node as described below. +// Apply returns the syntax tree, possibly modified. +// +// If pre is not nil, it is called for each node before the node's +// children are traversed (pre-order). If pre returns false, no +// children are traversed, and post is not called for that node. +// +// If post is not nil, and a prior call of pre didn't return false, +// post is called for each node after its children are traversed +// (post-order). If post returns false, traversal is terminated and +// Apply returns immediately. +// +// Only fields that refer to AST nodes are considered children; +// i.e., token.Pos, Scopes, Objects, and fields of basic types +// (strings, etc.) are ignored. +// +// Children are traversed in the order in which they appear in the +// respective node's struct definition. A package's files are +// traversed in the filenames' alphabetical order. +// +func Apply(root ast.Node, pre, post ApplyFunc) (result ast.Node) { + parent := &struct{ ast.Node }{root} + defer func() { + if r := recover(); r != nil && r != abort { + panic(r) + } + result = parent.Node + }() + a := &application{pre: pre, post: post} + a.apply(parent, "Node", nil, root) + return +} + +var abort = new(int) // singleton, to signal termination of Apply + +// A Cursor describes a node encountered during Apply. +// Information about the node and its parent is available +// from the Node, Parent, Name, and Index methods. +// +// If p is a variable of type and value of the current parent node +// c.Parent(), and f is the field identifier with name c.Name(), +// the following invariants hold: +// +// p.f == c.Node() if c.Index() < 0 +// p.f[c.Index()] == c.Node() if c.Index() >= 0 +// +// The methods Replace, Delete, InsertBefore, and InsertAfter +// can be used to change the AST without disrupting Apply. +type Cursor struct { + parent ast.Node + name string + iter *iterator // valid if non-nil + node ast.Node +} + +// Node returns the current Node. +func (c *Cursor) Node() ast.Node { return c.node } + +// Parent returns the parent of the current Node. +func (c *Cursor) Parent() ast.Node { return c.parent } + +// Name returns the name of the parent Node field that contains the current Node. +// If the parent is a *ast.Package and the current Node is a *ast.File, Name returns +// the filename for the current Node. +func (c *Cursor) Name() string { return c.name } + +// Index reports the index >= 0 of the current Node in the slice of Nodes that +// contains it, or a value < 0 if the current Node is not part of a slice. +// The index of the current node changes if InsertBefore is called while +// processing the current node. +func (c *Cursor) Index() int { + if c.iter != nil { + return c.iter.index + } + return -1 +} + +// field returns the current node's parent field value. +func (c *Cursor) field() reflect.Value { + return reflect.Indirect(reflect.ValueOf(c.parent)).FieldByName(c.name) +} + +// Replace replaces the current Node with n. +// The replacement node is not walked by Apply. +func (c *Cursor) Replace(n ast.Node) { + if _, ok := c.node.(*ast.File); ok { + file, ok := n.(*ast.File) + if !ok { + panic("attempt to replace *ast.File with non-*ast.File") + } + c.parent.(*ast.Package).Files[c.name] = file + return + } + + v := c.field() + if i := c.Index(); i >= 0 { + v = v.Index(i) + } + v.Set(reflect.ValueOf(n)) +} + +// Delete deletes the current Node from its containing slice. +// If the current Node is not part of a slice, Delete panics. +// As a special case, if the current node is a package file, +// Delete removes it from the package's Files map. +func (c *Cursor) Delete() { + if _, ok := c.node.(*ast.File); ok { + delete(c.parent.(*ast.Package).Files, c.name) + return + } + + i := c.Index() + if i < 0 { + panic("Delete node not contained in slice") + } + v := c.field() + l := v.Len() + reflect.Copy(v.Slice(i, l), v.Slice(i+1, l)) + v.Index(l - 1).Set(reflect.Zero(v.Type().Elem())) + v.SetLen(l - 1) + c.iter.step-- +} + +// InsertAfter inserts n after the current Node in its containing slice. +// If the current Node is not part of a slice, InsertAfter panics. +// Apply does not walk n. +func (c *Cursor) InsertAfter(n ast.Node) { + i := c.Index() + if i < 0 { + panic("InsertAfter node not contained in slice") + } + v := c.field() + v.Set(reflect.Append(v, reflect.Zero(v.Type().Elem()))) + l := v.Len() + reflect.Copy(v.Slice(i+2, l), v.Slice(i+1, l)) + v.Index(i + 1).Set(reflect.ValueOf(n)) + c.iter.step++ +} + +// InsertBefore inserts n before the current Node in its containing slice. +// If the current Node is not part of a slice, InsertBefore panics. +// Apply will not walk n. +func (c *Cursor) InsertBefore(n ast.Node) { + i := c.Index() + if i < 0 { + panic("InsertBefore node not contained in slice") + } + v := c.field() + v.Set(reflect.Append(v, reflect.Zero(v.Type().Elem()))) + l := v.Len() + reflect.Copy(v.Slice(i+1, l), v.Slice(i, l)) + v.Index(i).Set(reflect.ValueOf(n)) + c.iter.index++ +} + +// application carries all the shared data so we can pass it around cheaply. +type application struct { + pre, post ApplyFunc + cursor Cursor + iter iterator +} + +func (a *application) apply(parent ast.Node, name string, iter *iterator, n ast.Node) { + // convert typed nil into untyped nil + if v := reflect.ValueOf(n); v.Kind() == reflect.Ptr && v.IsNil() { + n = nil + } + + // avoid heap-allocating a new cursor for each apply call; reuse a.cursor instead + saved := a.cursor + a.cursor.parent = parent + a.cursor.name = name + a.cursor.iter = iter + a.cursor.node = n + + if a.pre != nil && !a.pre(&a.cursor) { + a.cursor = saved + return + } + + // walk children + // (the order of the cases matches the order of the corresponding node types in go/ast) + switch n := n.(type) { + case nil: + // nothing to do + + // Comments and fields + case *ast.Comment: + // nothing to do + + case *ast.CommentGroup: + if n != nil { + a.applyList(n, "List") + } + + case *ast.Field: + a.apply(n, "Doc", nil, n.Doc) + a.applyList(n, "Names") + a.apply(n, "Type", nil, n.Type) + a.apply(n, "Tag", nil, n.Tag) + a.apply(n, "Comment", nil, n.Comment) + + case *ast.FieldList: + a.applyList(n, "List") + + // Expressions + case *ast.BadExpr, *ast.Ident, *ast.BasicLit: + // nothing to do + + case *ast.Ellipsis: + a.apply(n, "Elt", nil, n.Elt) + + case *ast.FuncLit: + a.apply(n, "Type", nil, n.Type) + a.apply(n, "Body", nil, n.Body) + + case *ast.CompositeLit: + a.apply(n, "Type", nil, n.Type) + a.applyList(n, "Elts") + + case *ast.ParenExpr: + a.apply(n, "X", nil, n.X) + + case *ast.SelectorExpr: + a.apply(n, "X", nil, n.X) + a.apply(n, "Sel", nil, n.Sel) + + case *ast.IndexExpr: + a.apply(n, "X", nil, n.X) + a.apply(n, "Index", nil, n.Index) + + case *ast.SliceExpr: + a.apply(n, "X", nil, n.X) + a.apply(n, "Low", nil, n.Low) + a.apply(n, "High", nil, n.High) + a.apply(n, "Max", nil, n.Max) + + case *ast.TypeAssertExpr: + a.apply(n, "X", nil, n.X) + a.apply(n, "Type", nil, n.Type) + + case *ast.CallExpr: + a.apply(n, "Fun", nil, n.Fun) + a.applyList(n, "Args") + + case *ast.StarExpr: + a.apply(n, "X", nil, n.X) + + case *ast.UnaryExpr: + a.apply(n, "X", nil, n.X) + + case *ast.BinaryExpr: + a.apply(n, "X", nil, n.X) + a.apply(n, "Y", nil, n.Y) + + case *ast.KeyValueExpr: + a.apply(n, "Key", nil, n.Key) + a.apply(n, "Value", nil, n.Value) + + // Types + case *ast.ArrayType: + a.apply(n, "Len", nil, n.Len) + a.apply(n, "Elt", nil, n.Elt) + + case *ast.StructType: + a.apply(n, "Fields", nil, n.Fields) + + case *ast.FuncType: + a.apply(n, "Params", nil, n.Params) + a.apply(n, "Results", nil, n.Results) + + case *ast.InterfaceType: + a.apply(n, "Methods", nil, n.Methods) + + case *ast.MapType: + a.apply(n, "Key", nil, n.Key) + a.apply(n, "Value", nil, n.Value) + + case *ast.ChanType: + a.apply(n, "Value", nil, n.Value) + + // Statements + case *ast.BadStmt: + // nothing to do + + case *ast.DeclStmt: + a.apply(n, "Decl", nil, n.Decl) + + case *ast.EmptyStmt: + // nothing to do + + case *ast.LabeledStmt: + a.apply(n, "Label", nil, n.Label) + a.apply(n, "Stmt", nil, n.Stmt) + + case *ast.ExprStmt: + a.apply(n, "X", nil, n.X) + + case *ast.SendStmt: + a.apply(n, "Chan", nil, n.Chan) + a.apply(n, "Value", nil, n.Value) + + case *ast.IncDecStmt: + a.apply(n, "X", nil, n.X) + + case *ast.AssignStmt: + a.applyList(n, "Lhs") + a.applyList(n, "Rhs") + + case *ast.GoStmt: + a.apply(n, "Call", nil, n.Call) + + case *ast.DeferStmt: + a.apply(n, "Call", nil, n.Call) + + case *ast.ReturnStmt: + a.applyList(n, "Results") + + case *ast.BranchStmt: + a.apply(n, "Label", nil, n.Label) + + case *ast.BlockStmt: + a.applyList(n, "List") + + case *ast.IfStmt: + a.apply(n, "Init", nil, n.Init) + a.apply(n, "Cond", nil, n.Cond) + a.apply(n, "Body", nil, n.Body) + a.apply(n, "Else", nil, n.Else) + + case *ast.CaseClause: + a.applyList(n, "List") + a.applyList(n, "Body") + + case *ast.SwitchStmt: + a.apply(n, "Init", nil, n.Init) + a.apply(n, "Tag", nil, n.Tag) + a.apply(n, "Body", nil, n.Body) + + case *ast.TypeSwitchStmt: + a.apply(n, "Init", nil, n.Init) + a.apply(n, "Assign", nil, n.Assign) + a.apply(n, "Body", nil, n.Body) + + case *ast.CommClause: + a.apply(n, "Comm", nil, n.Comm) + a.applyList(n, "Body") + + case *ast.SelectStmt: + a.apply(n, "Body", nil, n.Body) + + case *ast.ForStmt: + a.apply(n, "Init", nil, n.Init) + a.apply(n, "Cond", nil, n.Cond) + a.apply(n, "Post", nil, n.Post) + a.apply(n, "Body", nil, n.Body) + + case *ast.RangeStmt: + a.apply(n, "Key", nil, n.Key) + a.apply(n, "Value", nil, n.Value) + a.apply(n, "X", nil, n.X) + a.apply(n, "Body", nil, n.Body) + + // Declarations + case *ast.ImportSpec: + a.apply(n, "Doc", nil, n.Doc) + a.apply(n, "Name", nil, n.Name) + a.apply(n, "Path", nil, n.Path) + a.apply(n, "Comment", nil, n.Comment) + + case *ast.ValueSpec: + a.apply(n, "Doc", nil, n.Doc) + a.applyList(n, "Names") + a.apply(n, "Type", nil, n.Type) + a.applyList(n, "Values") + a.apply(n, "Comment", nil, n.Comment) + + case *ast.TypeSpec: + a.apply(n, "Doc", nil, n.Doc) + a.apply(n, "Name", nil, n.Name) + a.apply(n, "Type", nil, n.Type) + a.apply(n, "Comment", nil, n.Comment) + + case *ast.BadDecl: + // nothing to do + + case *ast.GenDecl: + a.apply(n, "Doc", nil, n.Doc) + a.applyList(n, "Specs") + + case *ast.FuncDecl: + a.apply(n, "Doc", nil, n.Doc) + a.apply(n, "Recv", nil, n.Recv) + a.apply(n, "Name", nil, n.Name) + a.apply(n, "Type", nil, n.Type) + a.apply(n, "Body", nil, n.Body) + + // Files and packages + case *ast.File: + a.apply(n, "Doc", nil, n.Doc) + a.apply(n, "Name", nil, n.Name) + a.applyList(n, "Decls") + // Don't walk n.Comments; they have either been walked already if + // they are Doc comments, or they can be easily walked explicitly. + + case *ast.Package: + // collect and sort names for reproducible behavior + var names []string + for name := range n.Files { + names = append(names, name) + } + sort.Strings(names) + for _, name := range names { + a.apply(n, name, nil, n.Files[name]) + } + + default: + panic(fmt.Sprintf("Apply: unexpected node type %T", n)) + } + + if a.post != nil && !a.post(&a.cursor) { + panic(abort) + } + + a.cursor = saved +} + +// An iterator controls iteration over a slice of nodes. +type iterator struct { + index, step int +} + +func (a *application) applyList(parent ast.Node, name string) { + // avoid heap-allocating a new iterator for each applyList call; reuse a.iter instead + saved := a.iter + a.iter.index = 0 + for { + // must reload parent.name each time, since cursor modifications might change it + v := reflect.Indirect(reflect.ValueOf(parent)).FieldByName(name) + if a.iter.index >= v.Len() { + break + } + + // element x may be nil in a bad AST - be cautious + var x ast.Node + if e := v.Index(a.iter.index); e.IsValid() { + x = e.Interface().(ast.Node) + } + + a.iter.step = 1 + a.apply(parent, name, &a.iter, x) + a.iter.index += a.iter.step + } + a.iter = saved +} diff --git a/vendor/golang.org/x/tools/go/ast/astutil/util.go b/vendor/golang.org/x/tools/go/ast/astutil/util.go new file mode 100644 index 00000000000..7630629824a --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/astutil/util.go @@ -0,0 +1,14 @@ +package astutil + +import "go/ast" + +// Unparen returns e with any enclosing parentheses stripped. +func Unparen(e ast.Expr) ast.Expr { + for { + p, ok := e.(*ast.ParenExpr) + if !ok { + return e + } + e = p.X + } +} diff --git a/vendor/golang.org/x/tools/go/ast/inspector/inspector.go b/vendor/golang.org/x/tools/go/ast/inspector/inspector.go new file mode 100644 index 00000000000..ddbdd3f08fc --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/inspector/inspector.go @@ -0,0 +1,182 @@ +// 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 inspector provides helper functions for traversal over the +// syntax trees of a package, including node filtering by type, and +// materialization of the traversal stack. +// +// During construction, the inspector does a complete traversal and +// builds a list of push/pop events and their node type. Subsequent +// method calls that request a traversal scan this list, rather than walk +// the AST, and perform type filtering using efficient bit sets. +// +// Experiments suggest the inspector's traversals are about 2.5x faster +// than ast.Inspect, but it may take around 5 traversals for this +// benefit to amortize the inspector's construction cost. +// If efficiency is the primary concern, do not use Inspector for +// one-off traversals. +package inspector + +// There are four orthogonal features in a traversal: +// 1 type filtering +// 2 pruning +// 3 postorder calls to f +// 4 stack +// Rather than offer all of them in the API, +// only a few combinations are exposed: +// - Preorder is the fastest and has fewest features, +// but is the most commonly needed traversal. +// - Nodes and WithStack both provide pruning and postorder calls, +// even though few clients need it, because supporting two versions +// is not justified. +// More combinations could be supported by expressing them as +// wrappers around a more generic traversal, but this was measured +// and found to degrade performance significantly (30%). + +import ( + "go/ast" +) + +// An Inspector provides methods for inspecting +// (traversing) the syntax trees of a package. +type Inspector struct { + events []event +} + +// New returns an Inspector for the specified syntax trees. +func New(files []*ast.File) *Inspector { + return &Inspector{traverse(files)} +} + +// An event represents a push or a pop +// of an ast.Node during a traversal. +type event struct { + node ast.Node + typ uint64 // typeOf(node) + index int // 1 + index of corresponding pop event, or 0 if this is a pop +} + +// Preorder visits all the nodes of the files supplied to New in +// depth-first order. It calls f(n) for each node n before it visits +// n's children. +// +// The types argument, if non-empty, enables type-based filtering of +// events. The function f if is called only for nodes whose type +// matches an element of the types slice. +func (in *Inspector) Preorder(types []ast.Node, f func(ast.Node)) { + // Because it avoids postorder calls to f, and the pruning + // check, Preorder is almost twice as fast as Nodes. The two + // features seem to contribute similar slowdowns (~1.4x each). + + mask := maskOf(types) + for i := 0; i < len(in.events); { + ev := in.events[i] + if ev.typ&mask != 0 { + if ev.index > 0 { + f(ev.node) + } + } + i++ + } +} + +// Nodes visits the nodes of the files supplied to New in depth-first +// order. It calls f(n, true) for each node n before it visits n's +// children. If f returns true, Nodes invokes f recursively for each +// of the non-nil children of the node, followed by a call of +// f(n, false). +// +// The types argument, if non-empty, enables type-based filtering of +// events. The function f if is called only for nodes whose type +// matches an element of the types slice. +func (in *Inspector) Nodes(types []ast.Node, f func(n ast.Node, push bool) (prune bool)) { + mask := maskOf(types) + for i := 0; i < len(in.events); { + ev := in.events[i] + if ev.typ&mask != 0 { + if ev.index > 0 { + // push + if !f(ev.node, true) { + i = ev.index // jump to corresponding pop + 1 + continue + } + } else { + // pop + f(ev.node, false) + } + } + i++ + } +} + +// WithStack visits nodes in a similar manner to Nodes, but it +// supplies each call to f an additional argument, the current +// traversal stack. The stack's first element is the outermost node, +// an *ast.File; its last is the innermost, n. +func (in *Inspector) WithStack(types []ast.Node, f func(n ast.Node, push bool, stack []ast.Node) (prune bool)) { + mask := maskOf(types) + var stack []ast.Node + for i := 0; i < len(in.events); { + ev := in.events[i] + if ev.index > 0 { + // push + stack = append(stack, ev.node) + if ev.typ&mask != 0 { + if !f(ev.node, true, stack) { + i = ev.index + stack = stack[:len(stack)-1] + continue + } + } + } else { + // pop + if ev.typ&mask != 0 { + f(ev.node, false, stack) + } + stack = stack[:len(stack)-1] + } + i++ + } +} + +// traverse builds the table of events representing a traversal. +func traverse(files []*ast.File) []event { + // Preallocate approximate number of events + // based on source file extent. + // This makes traverse faster by 4x (!). + var extent int + for _, f := range files { + extent += int(f.End() - f.Pos()) + } + // This estimate is based on the net/http package. + events := make([]event, 0, extent*33/100) + + var stack []event + for _, f := range files { + ast.Inspect(f, func(n ast.Node) bool { + if n != nil { + // push + ev := event{ + node: n, + typ: typeOf(n), + index: len(events), // push event temporarily holds own index + } + stack = append(stack, ev) + events = append(events, ev) + } else { + // pop + ev := stack[len(stack)-1] + stack = stack[:len(stack)-1] + + events[ev.index].index = len(events) + 1 // make push refer to pop + + ev.index = 0 // turn ev into a pop event + events = append(events, ev) + } + return true + }) + } + + return events +} diff --git a/vendor/golang.org/x/tools/go/ast/inspector/typeof.go b/vendor/golang.org/x/tools/go/ast/inspector/typeof.go new file mode 100644 index 00000000000..d61301b133d --- /dev/null +++ b/vendor/golang.org/x/tools/go/ast/inspector/typeof.go @@ -0,0 +1,216 @@ +package inspector + +// This file defines func typeOf(ast.Node) uint64. +// +// The initial map-based implementation was too slow; +// see https://go-review.googlesource.com/c/tools/+/135655/1/go/ast/inspector/inspector.go#196 + +import "go/ast" + +const ( + nArrayType = iota + nAssignStmt + nBadDecl + nBadExpr + nBadStmt + nBasicLit + nBinaryExpr + nBlockStmt + nBranchStmt + nCallExpr + nCaseClause + nChanType + nCommClause + nComment + nCommentGroup + nCompositeLit + nDeclStmt + nDeferStmt + nEllipsis + nEmptyStmt + nExprStmt + nField + nFieldList + nFile + nForStmt + nFuncDecl + nFuncLit + nFuncType + nGenDecl + nGoStmt + nIdent + nIfStmt + nImportSpec + nIncDecStmt + nIndexExpr + nInterfaceType + nKeyValueExpr + nLabeledStmt + nMapType + nPackage + nParenExpr + nRangeStmt + nReturnStmt + nSelectStmt + nSelectorExpr + nSendStmt + nSliceExpr + nStarExpr + nStructType + nSwitchStmt + nTypeAssertExpr + nTypeSpec + nTypeSwitchStmt + nUnaryExpr + nValueSpec +) + +// typeOf returns a distinct single-bit value that represents the type of n. +// +// Various implementations were benchmarked with BenchmarkNewInspector: +// GOGC=off +// - type switch 4.9-5.5ms 2.1ms +// - binary search over a sorted list of types 5.5-5.9ms 2.5ms +// - linear scan, frequency-ordered list 5.9-6.1ms 2.7ms +// - linear scan, unordered list 6.4ms 2.7ms +// - hash table 6.5ms 3.1ms +// A perfect hash seemed like overkill. +// +// The compiler's switch statement is the clear winner +// as it produces a binary tree in code, +// with constant conditions and good branch prediction. +// (Sadly it is the most verbose in source code.) +// Binary search suffered from poor branch prediction. +// +func typeOf(n ast.Node) uint64 { + // Fast path: nearly half of all nodes are identifiers. + if _, ok := n.(*ast.Ident); ok { + return 1 << nIdent + } + + // These cases include all nodes encountered by ast.Inspect. + switch n.(type) { + case *ast.ArrayType: + return 1 << nArrayType + case *ast.AssignStmt: + return 1 << nAssignStmt + case *ast.BadDecl: + return 1 << nBadDecl + case *ast.BadExpr: + return 1 << nBadExpr + case *ast.BadStmt: + return 1 << nBadStmt + case *ast.BasicLit: + return 1 << nBasicLit + case *ast.BinaryExpr: + return 1 << nBinaryExpr + case *ast.BlockStmt: + return 1 << nBlockStmt + case *ast.BranchStmt: + return 1 << nBranchStmt + case *ast.CallExpr: + return 1 << nCallExpr + case *ast.CaseClause: + return 1 << nCaseClause + case *ast.ChanType: + return 1 << nChanType + case *ast.CommClause: + return 1 << nCommClause + case *ast.Comment: + return 1 << nComment + case *ast.CommentGroup: + return 1 << nCommentGroup + case *ast.CompositeLit: + return 1 << nCompositeLit + case *ast.DeclStmt: + return 1 << nDeclStmt + case *ast.DeferStmt: + return 1 << nDeferStmt + case *ast.Ellipsis: + return 1 << nEllipsis + case *ast.EmptyStmt: + return 1 << nEmptyStmt + case *ast.ExprStmt: + return 1 << nExprStmt + case *ast.Field: + return 1 << nField + case *ast.FieldList: + return 1 << nFieldList + case *ast.File: + return 1 << nFile + case *ast.ForStmt: + return 1 << nForStmt + case *ast.FuncDecl: + return 1 << nFuncDecl + case *ast.FuncLit: + return 1 << nFuncLit + case *ast.FuncType: + return 1 << nFuncType + case *ast.GenDecl: + return 1 << nGenDecl + case *ast.GoStmt: + return 1 << nGoStmt + case *ast.Ident: + return 1 << nIdent + case *ast.IfStmt: + return 1 << nIfStmt + case *ast.ImportSpec: + return 1 << nImportSpec + case *ast.IncDecStmt: + return 1 << nIncDecStmt + case *ast.IndexExpr: + return 1 << nIndexExpr + case *ast.InterfaceType: + return 1 << nInterfaceType + case *ast.KeyValueExpr: + return 1 << nKeyValueExpr + case *ast.LabeledStmt: + return 1 << nLabeledStmt + case *ast.MapType: + return 1 << nMapType + case *ast.Package: + return 1 << nPackage + case *ast.ParenExpr: + return 1 << nParenExpr + case *ast.RangeStmt: + return 1 << nRangeStmt + case *ast.ReturnStmt: + return 1 << nReturnStmt + case *ast.SelectStmt: + return 1 << nSelectStmt + case *ast.SelectorExpr: + return 1 << nSelectorExpr + case *ast.SendStmt: + return 1 << nSendStmt + case *ast.SliceExpr: + return 1 << nSliceExpr + case *ast.StarExpr: + return 1 << nStarExpr + case *ast.StructType: + return 1 << nStructType + case *ast.SwitchStmt: + return 1 << nSwitchStmt + case *ast.TypeAssertExpr: + return 1 << nTypeAssertExpr + case *ast.TypeSpec: + return 1 << nTypeSpec + case *ast.TypeSwitchStmt: + return 1 << nTypeSwitchStmt + case *ast.UnaryExpr: + return 1 << nUnaryExpr + case *ast.ValueSpec: + return 1 << nValueSpec + } + return 0 +} + +func maskOf(nodes []ast.Node) uint64 { + if nodes == nil { + return 1<<64 - 1 // match all node types + } + var mask uint64 + for _, n := range nodes { + mask |= typeOf(n) + } + return mask +} diff --git a/vendor/golang.org/x/tools/go/buildutil/allpackages.go b/vendor/golang.org/x/tools/go/buildutil/allpackages.go new file mode 100644 index 00000000000..c0cb03e7bee --- /dev/null +++ b/vendor/golang.org/x/tools/go/buildutil/allpackages.go @@ -0,0 +1,198 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package buildutil provides utilities related to the go/build +// package in the standard library. +// +// All I/O is done via the build.Context file system interface, which must +// be concurrency-safe. +package buildutil // import "golang.org/x/tools/go/buildutil" + +import ( + "go/build" + "os" + "path/filepath" + "sort" + "strings" + "sync" +) + +// AllPackages returns the package path of each Go package in any source +// directory of the specified build context (e.g. $GOROOT or an element +// of $GOPATH). Errors are ignored. The results are sorted. +// All package paths are canonical, and thus may contain "/vendor/". +// +// The result may include import paths for directories that contain no +// *.go files, such as "archive" (in $GOROOT/src). +// +// All I/O is done via the build.Context file system interface, +// which must be concurrency-safe. +// +func AllPackages(ctxt *build.Context) []string { + var list []string + ForEachPackage(ctxt, func(pkg string, _ error) { + list = append(list, pkg) + }) + sort.Strings(list) + return list +} + +// ForEachPackage calls the found function with the package path of +// each Go package it finds in any source directory of the specified +// build context (e.g. $GOROOT or an element of $GOPATH). +// All package paths are canonical, and thus may contain "/vendor/". +// +// If the package directory exists but could not be read, the second +// argument to the found function provides the error. +// +// All I/O is done via the build.Context file system interface, +// which must be concurrency-safe. +// +func ForEachPackage(ctxt *build.Context, found func(importPath string, err error)) { + ch := make(chan item) + + var wg sync.WaitGroup + for _, root := range ctxt.SrcDirs() { + root := root + wg.Add(1) + go func() { + allPackages(ctxt, root, ch) + wg.Done() + }() + } + go func() { + wg.Wait() + close(ch) + }() + + // All calls to found occur in the caller's goroutine. + for i := range ch { + found(i.importPath, i.err) + } +} + +type item struct { + importPath string + err error // (optional) +} + +// We use a process-wide counting semaphore to limit +// the number of parallel calls to ReadDir. +var ioLimit = make(chan bool, 20) + +func allPackages(ctxt *build.Context, root string, ch chan<- item) { + root = filepath.Clean(root) + string(os.PathSeparator) + + var wg sync.WaitGroup + + var walkDir func(dir string) + walkDir = func(dir string) { + // Avoid .foo, _foo, and testdata directory trees. + base := filepath.Base(dir) + if base == "" || base[0] == '.' || base[0] == '_' || base == "testdata" { + return + } + + pkg := filepath.ToSlash(strings.TrimPrefix(dir, root)) + + // Prune search if we encounter any of these import paths. + switch pkg { + case "builtin": + return + } + + ioLimit <- true + files, err := ReadDir(ctxt, dir) + <-ioLimit + if pkg != "" || err != nil { + ch <- item{pkg, err} + } + for _, fi := range files { + fi := fi + if fi.IsDir() { + wg.Add(1) + go func() { + walkDir(filepath.Join(dir, fi.Name())) + wg.Done() + }() + } + } + } + + walkDir(root) + wg.Wait() +} + +// ExpandPatterns returns the set of packages matched by patterns, +// which may have the following forms: +// +// golang.org/x/tools/cmd/guru # a single package +// golang.org/x/tools/... # all packages beneath dir +// ... # the entire workspace. +// +// Order is significant: a pattern preceded by '-' removes matching +// packages from the set. For example, these patterns match all encoding +// packages except encoding/xml: +// +// encoding/... -encoding/xml +// +// A trailing slash in a pattern is ignored. (Path components of Go +// package names are separated by slash, not the platform's path separator.) +// +func ExpandPatterns(ctxt *build.Context, patterns []string) map[string]bool { + // TODO(adonovan): support other features of 'go list': + // - "std"/"cmd"/"all" meta-packages + // - "..." not at the end of a pattern + // - relative patterns using "./" or "../" prefix + + pkgs := make(map[string]bool) + doPkg := func(pkg string, neg bool) { + if neg { + delete(pkgs, pkg) + } else { + pkgs[pkg] = true + } + } + + // Scan entire workspace if wildcards are present. + // TODO(adonovan): opt: scan only the necessary subtrees of the workspace. + var all []string + for _, arg := range patterns { + if strings.HasSuffix(arg, "...") { + all = AllPackages(ctxt) + break + } + } + + for _, arg := range patterns { + if arg == "" { + continue + } + + neg := arg[0] == '-' + if neg { + arg = arg[1:] + } + + if arg == "..." { + // ... matches all packages + for _, pkg := range all { + doPkg(pkg, neg) + } + } else if dir := strings.TrimSuffix(arg, "/..."); dir != arg { + // dir/... matches all packages beneath dir + for _, pkg := range all { + if strings.HasPrefix(pkg, dir) && + (len(pkg) == len(dir) || pkg[len(dir)] == '/') { + doPkg(pkg, neg) + } + } + } else { + // single package + doPkg(strings.TrimSuffix(arg, "/"), neg) + } + } + + return pkgs +} diff --git a/vendor/golang.org/x/tools/go/buildutil/fakecontext.go b/vendor/golang.org/x/tools/go/buildutil/fakecontext.go new file mode 100644 index 00000000000..8b7f066739f --- /dev/null +++ b/vendor/golang.org/x/tools/go/buildutil/fakecontext.go @@ -0,0 +1,109 @@ +package buildutil + +import ( + "fmt" + "go/build" + "io" + "io/ioutil" + "os" + "path" + "path/filepath" + "sort" + "strings" + "time" +) + +// FakeContext returns a build.Context for the fake file tree specified +// by pkgs, which maps package import paths to a mapping from file base +// names to contents. +// +// The fake Context has a GOROOT of "/go" and no GOPATH, and overrides +// the necessary file access methods to read from memory instead of the +// real file system. +// +// Unlike a real file tree, the fake one has only two levels---packages +// and files---so ReadDir("/go/src/") returns all packages under +// /go/src/ including, for instance, "math" and "math/big". +// ReadDir("/go/src/math/big") would return all the files in the +// "math/big" package. +// +func FakeContext(pkgs map[string]map[string]string) *build.Context { + clean := func(filename string) string { + f := path.Clean(filepath.ToSlash(filename)) + // Removing "/go/src" while respecting segment + // boundaries has this unfortunate corner case: + if f == "/go/src" { + return "" + } + return strings.TrimPrefix(f, "/go/src/") + } + + ctxt := build.Default // copy + ctxt.GOROOT = "/go" + ctxt.GOPATH = "" + ctxt.Compiler = "gc" + ctxt.IsDir = func(dir string) bool { + dir = clean(dir) + if dir == "" { + return true // needed by (*build.Context).SrcDirs + } + return pkgs[dir] != nil + } + ctxt.ReadDir = func(dir string) ([]os.FileInfo, error) { + dir = clean(dir) + var fis []os.FileInfo + if dir == "" { + // enumerate packages + for importPath := range pkgs { + fis = append(fis, fakeDirInfo(importPath)) + } + } else { + // enumerate files of package + for basename := range pkgs[dir] { + fis = append(fis, fakeFileInfo(basename)) + } + } + sort.Sort(byName(fis)) + return fis, nil + } + ctxt.OpenFile = func(filename string) (io.ReadCloser, error) { + filename = clean(filename) + dir, base := path.Split(filename) + content, ok := pkgs[path.Clean(dir)][base] + if !ok { + return nil, fmt.Errorf("file not found: %s", filename) + } + return ioutil.NopCloser(strings.NewReader(content)), nil + } + ctxt.IsAbsPath = func(path string) bool { + path = filepath.ToSlash(path) + // Don't rely on the default (filepath.Path) since on + // Windows, it reports virtual paths as non-absolute. + return strings.HasPrefix(path, "/") + } + return &ctxt +} + +type byName []os.FileInfo + +func (s byName) Len() int { return len(s) } +func (s byName) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +func (s byName) Less(i, j int) bool { return s[i].Name() < s[j].Name() } + +type fakeFileInfo string + +func (fi fakeFileInfo) Name() string { return string(fi) } +func (fakeFileInfo) Sys() interface{} { return nil } +func (fakeFileInfo) ModTime() time.Time { return time.Time{} } +func (fakeFileInfo) IsDir() bool { return false } +func (fakeFileInfo) Size() int64 { return 0 } +func (fakeFileInfo) Mode() os.FileMode { return 0644 } + +type fakeDirInfo string + +func (fd fakeDirInfo) Name() string { return string(fd) } +func (fakeDirInfo) Sys() interface{} { return nil } +func (fakeDirInfo) ModTime() time.Time { return time.Time{} } +func (fakeDirInfo) IsDir() bool { return true } +func (fakeDirInfo) Size() int64 { return 0 } +func (fakeDirInfo) Mode() os.FileMode { return 0755 } diff --git a/vendor/golang.org/x/tools/go/buildutil/overlay.go b/vendor/golang.org/x/tools/go/buildutil/overlay.go new file mode 100644 index 00000000000..8e239086bd4 --- /dev/null +++ b/vendor/golang.org/x/tools/go/buildutil/overlay.go @@ -0,0 +1,103 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package buildutil + +import ( + "bufio" + "bytes" + "fmt" + "go/build" + "io" + "io/ioutil" + "path/filepath" + "strconv" + "strings" +) + +// OverlayContext overlays a build.Context with additional files from +// a map. Files in the map take precedence over other files. +// +// In addition to plain string comparison, two file names are +// considered equal if their base names match and their directory +// components point at the same directory on the file system. That is, +// symbolic links are followed for directories, but not files. +// +// A common use case for OverlayContext is to allow editors to pass in +// a set of unsaved, modified files. +// +// Currently, only the Context.OpenFile function will respect the +// overlay. This may change in the future. +func OverlayContext(orig *build.Context, overlay map[string][]byte) *build.Context { + // TODO(dominikh): Implement IsDir, HasSubdir and ReadDir + + rc := func(data []byte) (io.ReadCloser, error) { + return ioutil.NopCloser(bytes.NewBuffer(data)), nil + } + + copy := *orig // make a copy + ctxt := © + ctxt.OpenFile = func(path string) (io.ReadCloser, error) { + // Fast path: names match exactly. + if content, ok := overlay[path]; ok { + return rc(content) + } + + // Slow path: check for same file under a different + // alias, perhaps due to a symbolic link. + for filename, content := range overlay { + if sameFile(path, filename) { + return rc(content) + } + } + + return OpenFile(orig, path) + } + return ctxt +} + +// ParseOverlayArchive parses an archive containing Go files and their +// contents. The result is intended to be used with OverlayContext. +// +// +// Archive format +// +// The archive consists of a series of files. Each file consists of a +// name, a decimal file size and the file contents, separated by +// newlines. No newline follows after the file contents. +func ParseOverlayArchive(archive io.Reader) (map[string][]byte, error) { + overlay := make(map[string][]byte) + r := bufio.NewReader(archive) + for { + // Read file name. + filename, err := r.ReadString('\n') + if err != nil { + if err == io.EOF { + break // OK + } + return nil, fmt.Errorf("reading archive file name: %v", err) + } + filename = filepath.Clean(strings.TrimSpace(filename)) + + // Read file size. + sz, err := r.ReadString('\n') + if err != nil { + return nil, fmt.Errorf("reading size of archive file %s: %v", filename, err) + } + sz = strings.TrimSpace(sz) + size, err := strconv.ParseUint(sz, 10, 32) + if err != nil { + return nil, fmt.Errorf("parsing size of archive file %s: %v", filename, err) + } + + // Read file content. + content := make([]byte, size) + if _, err := io.ReadFull(r, content); err != nil { + return nil, fmt.Errorf("reading archive file %s: %v", filename, err) + } + overlay[filename] = content + } + + return overlay, nil +} diff --git a/vendor/golang.org/x/tools/go/buildutil/tags.go b/vendor/golang.org/x/tools/go/buildutil/tags.go new file mode 100644 index 00000000000..486606f3768 --- /dev/null +++ b/vendor/golang.org/x/tools/go/buildutil/tags.go @@ -0,0 +1,75 @@ +package buildutil + +// This logic was copied from stringsFlag from $GOROOT/src/cmd/go/build.go. + +import "fmt" + +const TagsFlagDoc = "a list of `build tags` to consider satisfied during the build. " + + "For more information about build tags, see the description of " + + "build constraints in the documentation for the go/build package" + +// TagsFlag is an implementation of the flag.Value and flag.Getter interfaces that parses +// a flag value in the same manner as go build's -tags flag and +// populates a []string slice. +// +// See $GOROOT/src/go/build/doc.go for description of build tags. +// See $GOROOT/src/cmd/go/doc.go for description of 'go build -tags' flag. +// +// Example: +// flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc) +type TagsFlag []string + +func (v *TagsFlag) Set(s string) error { + var err error + *v, err = splitQuotedFields(s) + if *v == nil { + *v = []string{} + } + return err +} + +func (v *TagsFlag) Get() interface{} { return *v } + +func splitQuotedFields(s string) ([]string, error) { + // Split fields allowing '' or "" around elements. + // Quotes further inside the string do not count. + var f []string + for len(s) > 0 { + for len(s) > 0 && isSpaceByte(s[0]) { + s = s[1:] + } + if len(s) == 0 { + break + } + // Accepted quoted string. No unescaping inside. + if s[0] == '"' || s[0] == '\'' { + quote := s[0] + s = s[1:] + i := 0 + for i < len(s) && s[i] != quote { + i++ + } + if i >= len(s) { + return nil, fmt.Errorf("unterminated %c string", quote) + } + f = append(f, s[:i]) + s = s[i+1:] + continue + } + i := 0 + for i < len(s) && !isSpaceByte(s[i]) { + i++ + } + f = append(f, s[:i]) + s = s[i:] + } + return f, nil +} + +func (v *TagsFlag) String() string { + return "" +} + +func isSpaceByte(c byte) bool { + return c == ' ' || c == '\t' || c == '\n' || c == '\r' +} diff --git a/vendor/golang.org/x/tools/go/buildutil/util.go b/vendor/golang.org/x/tools/go/buildutil/util.go new file mode 100644 index 00000000000..fc923d7a702 --- /dev/null +++ b/vendor/golang.org/x/tools/go/buildutil/util.go @@ -0,0 +1,212 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package buildutil + +import ( + "fmt" + "go/ast" + "go/build" + "go/parser" + "go/token" + "io" + "io/ioutil" + "os" + "path" + "path/filepath" + "strings" +) + +// ParseFile behaves like parser.ParseFile, +// but uses the build context's file system interface, if any. +// +// If file is not absolute (as defined by IsAbsPath), the (dir, file) +// components are joined using JoinPath; dir must be absolute. +// +// The displayPath function, if provided, is used to transform the +// filename that will be attached to the ASTs. +// +// TODO(adonovan): call this from go/loader.parseFiles when the tree thaws. +// +func ParseFile(fset *token.FileSet, ctxt *build.Context, displayPath func(string) string, dir string, file string, mode parser.Mode) (*ast.File, error) { + if !IsAbsPath(ctxt, file) { + file = JoinPath(ctxt, dir, file) + } + rd, err := OpenFile(ctxt, file) + if err != nil { + return nil, err + } + defer rd.Close() // ignore error + if displayPath != nil { + file = displayPath(file) + } + return parser.ParseFile(fset, file, rd, mode) +} + +// ContainingPackage returns the package containing filename. +// +// If filename is not absolute, it is interpreted relative to working directory dir. +// All I/O is via the build context's file system interface, if any. +// +// The '...Files []string' fields of the resulting build.Package are not +// populated (build.FindOnly mode). +// +func ContainingPackage(ctxt *build.Context, dir, filename string) (*build.Package, error) { + if !IsAbsPath(ctxt, filename) { + filename = JoinPath(ctxt, dir, filename) + } + + // We must not assume the file tree uses + // "/" always, + // `\` always, + // or os.PathSeparator (which varies by platform), + // but to make any progress, we are forced to assume that + // paths will not use `\` unless the PathSeparator + // is also `\`, thus we can rely on filepath.ToSlash for some sanity. + + dirSlash := path.Dir(filepath.ToSlash(filename)) + "/" + + // We assume that no source root (GOPATH[i] or GOROOT) contains any other. + for _, srcdir := range ctxt.SrcDirs() { + srcdirSlash := filepath.ToSlash(srcdir) + "/" + if importPath, ok := HasSubdir(ctxt, srcdirSlash, dirSlash); ok { + return ctxt.Import(importPath, dir, build.FindOnly) + } + } + + return nil, fmt.Errorf("can't find package containing %s", filename) +} + +// -- Effective methods of file system interface ------------------------- + +// (go/build.Context defines these as methods, but does not export them.) + +// hasSubdir calls ctxt.HasSubdir (if not nil) or else uses +// the local file system to answer the question. +func HasSubdir(ctxt *build.Context, root, dir string) (rel string, ok bool) { + if f := ctxt.HasSubdir; f != nil { + return f(root, dir) + } + + // Try using paths we received. + if rel, ok = hasSubdir(root, dir); ok { + return + } + + // Try expanding symlinks and comparing + // expanded against unexpanded and + // expanded against expanded. + rootSym, _ := filepath.EvalSymlinks(root) + dirSym, _ := filepath.EvalSymlinks(dir) + + if rel, ok = hasSubdir(rootSym, dir); ok { + return + } + if rel, ok = hasSubdir(root, dirSym); ok { + return + } + return hasSubdir(rootSym, dirSym) +} + +func hasSubdir(root, dir string) (rel string, ok bool) { + const sep = string(filepath.Separator) + root = filepath.Clean(root) + if !strings.HasSuffix(root, sep) { + root += sep + } + + dir = filepath.Clean(dir) + if !strings.HasPrefix(dir, root) { + return "", false + } + + return filepath.ToSlash(dir[len(root):]), true +} + +// FileExists returns true if the specified file exists, +// using the build context's file system interface. +func FileExists(ctxt *build.Context, path string) bool { + if ctxt.OpenFile != nil { + r, err := ctxt.OpenFile(path) + if err != nil { + return false + } + r.Close() // ignore error + return true + } + _, err := os.Stat(path) + return err == nil +} + +// OpenFile behaves like os.Open, +// but uses the build context's file system interface, if any. +func OpenFile(ctxt *build.Context, path string) (io.ReadCloser, error) { + if ctxt.OpenFile != nil { + return ctxt.OpenFile(path) + } + return os.Open(path) +} + +// IsAbsPath behaves like filepath.IsAbs, +// but uses the build context's file system interface, if any. +func IsAbsPath(ctxt *build.Context, path string) bool { + if ctxt.IsAbsPath != nil { + return ctxt.IsAbsPath(path) + } + return filepath.IsAbs(path) +} + +// JoinPath behaves like filepath.Join, +// but uses the build context's file system interface, if any. +func JoinPath(ctxt *build.Context, path ...string) string { + if ctxt.JoinPath != nil { + return ctxt.JoinPath(path...) + } + return filepath.Join(path...) +} + +// IsDir behaves like os.Stat plus IsDir, +// but uses the build context's file system interface, if any. +func IsDir(ctxt *build.Context, path string) bool { + if ctxt.IsDir != nil { + return ctxt.IsDir(path) + } + fi, err := os.Stat(path) + return err == nil && fi.IsDir() +} + +// ReadDir behaves like ioutil.ReadDir, +// but uses the build context's file system interface, if any. +func ReadDir(ctxt *build.Context, path string) ([]os.FileInfo, error) { + if ctxt.ReadDir != nil { + return ctxt.ReadDir(path) + } + return ioutil.ReadDir(path) +} + +// SplitPathList behaves like filepath.SplitList, +// but uses the build context's file system interface, if any. +func SplitPathList(ctxt *build.Context, s string) []string { + if ctxt.SplitPathList != nil { + return ctxt.SplitPathList(s) + } + return filepath.SplitList(s) +} + +// sameFile returns true if x and y have the same basename and denote +// the same file. +// +func sameFile(x, y string) bool { + if path.Clean(x) == path.Clean(y) { + return true + } + if filepath.Base(x) == filepath.Base(y) { // (optimisation) + if xi, err := os.Stat(x); err == nil { + if yi, err := os.Stat(y); err == nil { + return os.SameFile(xi, yi) + } + } + } + return false +} diff --git a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go new file mode 100644 index 00000000000..f8363d8faae --- /dev/null +++ b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go @@ -0,0 +1,109 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package gcexportdata provides functions for locating, reading, and +// writing export data files containing type information produced by the +// gc compiler. This package supports go1.7 export data format and all +// later versions. +// +// Although it might seem convenient for this package to live alongside +// go/types in the standard library, this would cause version skew +// problems for developer tools that use it, since they must be able to +// consume the outputs of the gc compiler both before and after a Go +// update such as from Go 1.7 to Go 1.8. Because this package lives in +// golang.org/x/tools, sites can update their version of this repo some +// time before the Go 1.8 release and rebuild and redeploy their +// developer tools, which will then be able to consume both Go 1.7 and +// Go 1.8 export data files, so they will work before and after the +// Go update. (See discussion at https://golang.org/issue/15651.) +// +package gcexportdata // import "golang.org/x/tools/go/gcexportdata" + +import ( + "bufio" + "bytes" + "fmt" + "go/token" + "go/types" + "io" + "io/ioutil" + + "golang.org/x/tools/go/internal/gcimporter" +) + +// Find returns the name of an object (.o) or archive (.a) file +// containing type information for the specified import path, +// using the workspace layout conventions of go/build. +// If no file was found, an empty filename is returned. +// +// A relative srcDir is interpreted relative to the current working directory. +// +// Find also returns the package's resolved (canonical) import path, +// reflecting the effects of srcDir and vendoring on importPath. +func Find(importPath, srcDir string) (filename, path string) { + return gcimporter.FindPkg(importPath, srcDir) +} + +// NewReader returns a reader for the export data section of an object +// (.o) or archive (.a) file read from r. The new reader may provide +// additional trailing data beyond the end of the export data. +func NewReader(r io.Reader) (io.Reader, error) { + buf := bufio.NewReader(r) + _, err := gcimporter.FindExportData(buf) + // If we ever switch to a zip-like archive format with the ToC + // at the end, we can return the correct portion of export data, + // but for now we must return the entire rest of the file. + return buf, err +} + +// Read reads export data from in, decodes it, and returns type +// information for the package. +// The package name is specified by path. +// File position information is added to fset. +// +// Read may inspect and add to the imports map to ensure that references +// within the export data to other packages are consistent. The caller +// must ensure that imports[path] does not exist, or exists but is +// incomplete (see types.Package.Complete), and Read inserts the +// resulting package into this map entry. +// +// On return, the state of the reader is undefined. +func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, path string) (*types.Package, error) { + data, err := ioutil.ReadAll(in) + if err != nil { + return nil, fmt.Errorf("reading export data for %q: %v", path, err) + } + + if bytes.HasPrefix(data, []byte("!")) { + return nil, fmt.Errorf("can't read export data for %q directly from an archive file (call gcexportdata.NewReader first to extract export data)", path) + } + + // The App Engine Go runtime v1.6 uses the old export data format. + // TODO(adonovan): delete once v1.7 has been around for a while. + if bytes.HasPrefix(data, []byte("package ")) { + return gcimporter.ImportData(imports, path, path, bytes.NewReader(data)) + } + + // The indexed export format starts with an 'i'; the older + // binary export format starts with a 'c', 'd', or 'v' + // (from "version"). Select appropriate importer. + if len(data) > 0 && data[0] == 'i' { + _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) + return pkg, err + } + + _, pkg, err := gcimporter.BImportData(fset, imports, data, path) + return pkg, err +} + +// Write writes encoded type information for the specified package to out. +// The FileSet provides file position information for named objects. +func Write(out io.Writer, fset *token.FileSet, pkg *types.Package) error { + b, err := gcimporter.IExportData(fset, pkg) + if err != nil { + return err + } + _, err = out.Write(b) + return err +} diff --git a/vendor/golang.org/x/tools/go/gcexportdata/importer.go b/vendor/golang.org/x/tools/go/gcexportdata/importer.go new file mode 100644 index 00000000000..efe221e7e14 --- /dev/null +++ b/vendor/golang.org/x/tools/go/gcexportdata/importer.go @@ -0,0 +1,73 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package gcexportdata + +import ( + "fmt" + "go/token" + "go/types" + "os" +) + +// NewImporter returns a new instance of the types.Importer interface +// that reads type information from export data files written by gc. +// The Importer also satisfies types.ImporterFrom. +// +// Export data files are located using "go build" workspace conventions +// and the build.Default context. +// +// Use this importer instead of go/importer.For("gc", ...) to avoid the +// version-skew problems described in the documentation of this package, +// or to control the FileSet or access the imports map populated during +// package loading. +// +func NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom { + return importer{fset, imports} +} + +type importer struct { + fset *token.FileSet + imports map[string]*types.Package +} + +func (imp importer) Import(importPath string) (*types.Package, error) { + return imp.ImportFrom(importPath, "", 0) +} + +func (imp importer) ImportFrom(importPath, srcDir string, mode types.ImportMode) (_ *types.Package, err error) { + filename, path := Find(importPath, srcDir) + if filename == "" { + if importPath == "unsafe" { + // Even for unsafe, call Find first in case + // the package was vendored. + return types.Unsafe, nil + } + return nil, fmt.Errorf("can't find import: %s", importPath) + } + + if pkg, ok := imp.imports[path]; ok && pkg.Complete() { + return pkg, nil // cache hit + } + + // open file + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer func() { + f.Close() + if err != nil { + // add file name to error + err = fmt.Errorf("reading export data: %s: %v", filename, err) + } + }() + + r, err := NewReader(f) + if err != nil { + return nil, err + } + + return Read(r, imp.fset, imp.imports, path) +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go new file mode 100644 index 00000000000..a807d0aaa28 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go @@ -0,0 +1,852 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Binary package export. +// This file was derived from $GOROOT/src/cmd/compile/internal/gc/bexport.go; +// see that file for specification of the format. + +package gcimporter + +import ( + "bytes" + "encoding/binary" + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + "math" + "math/big" + "sort" + "strings" +) + +// If debugFormat is set, each integer and string value is preceded by a marker +// and position information in the encoding. This mechanism permits an importer +// to recognize immediately when it is out of sync. The importer recognizes this +// mode automatically (i.e., it can import export data produced with debugging +// support even if debugFormat is not set at the time of import). This mode will +// lead to massively larger export data (by a factor of 2 to 3) and should only +// be enabled during development and debugging. +// +// NOTE: This flag is the first flag to enable if importing dies because of +// (suspected) format errors, and whenever a change is made to the format. +const debugFormat = false // default: false + +// If trace is set, debugging output is printed to std out. +const trace = false // default: false + +// Current export format version. Increase with each format change. +// Note: The latest binary (non-indexed) export format is at version 6. +// This exporter is still at level 4, but it doesn't matter since +// the binary importer can handle older versions just fine. +// 6: package height (CL 105038) -- NOT IMPLEMENTED HERE +// 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMEMTED HERE +// 4: type name objects support type aliases, uses aliasTag +// 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) +// 2: removed unused bool in ODCL export (compiler only) +// 1: header format change (more regular), export package for _ struct fields +// 0: Go1.7 encoding +const exportVersion = 4 + +// trackAllTypes enables cycle tracking for all types, not just named +// types. The existing compiler invariants assume that unnamed types +// that are not completely set up are not used, or else there are spurious +// errors. +// If disabled, only named types are tracked, possibly leading to slightly +// less efficient encoding in rare cases. It also prevents the export of +// some corner-case type declarations (but those are not handled correctly +// with with the textual export format either). +// TODO(gri) enable and remove once issues caused by it are fixed +const trackAllTypes = false + +type exporter struct { + fset *token.FileSet + out bytes.Buffer + + // object -> index maps, indexed in order of serialization + strIndex map[string]int + pkgIndex map[*types.Package]int + typIndex map[types.Type]int + + // position encoding + posInfoFormat bool + prevFile string + prevLine int + + // debugging support + written int // bytes written + indent int // for trace +} + +// internalError represents an error generated inside this package. +type internalError string + +func (e internalError) Error() string { return "gcimporter: " + string(e) } + +func internalErrorf(format string, args ...interface{}) error { + return internalError(fmt.Sprintf(format, args...)) +} + +// BExportData returns binary export data for pkg. +// If no file set is provided, position info will be missing. +func BExportData(fset *token.FileSet, pkg *types.Package) (b []byte, err error) { + defer func() { + if e := recover(); e != nil { + if ierr, ok := e.(internalError); ok { + err = ierr + return + } + // Not an internal error; panic again. + panic(e) + } + }() + + p := exporter{ + fset: fset, + strIndex: map[string]int{"": 0}, // empty string is mapped to 0 + pkgIndex: make(map[*types.Package]int), + typIndex: make(map[types.Type]int), + posInfoFormat: true, // TODO(gri) might become a flag, eventually + } + + // write version info + // The version string must start with "version %d" where %d is the version + // number. Additional debugging information may follow after a blank; that + // text is ignored by the importer. + p.rawStringln(fmt.Sprintf("version %d", exportVersion)) + var debug string + if debugFormat { + debug = "debug" + } + p.rawStringln(debug) // cannot use p.bool since it's affected by debugFormat; also want to see this clearly + p.bool(trackAllTypes) + p.bool(p.posInfoFormat) + + // --- generic export data --- + + // populate type map with predeclared "known" types + for index, typ := range predeclared() { + p.typIndex[typ] = index + } + if len(p.typIndex) != len(predeclared()) { + return nil, internalError("duplicate entries in type map?") + } + + // write package data + p.pkg(pkg, true) + if trace { + p.tracef("\n") + } + + // write objects + objcount := 0 + scope := pkg.Scope() + for _, name := range scope.Names() { + if !ast.IsExported(name) { + continue + } + if trace { + p.tracef("\n") + } + p.obj(scope.Lookup(name)) + objcount++ + } + + // indicate end of list + if trace { + p.tracef("\n") + } + p.tag(endTag) + + // for self-verification only (redundant) + p.int(objcount) + + if trace { + p.tracef("\n") + } + + // --- end of export data --- + + return p.out.Bytes(), nil +} + +func (p *exporter) pkg(pkg *types.Package, emptypath bool) { + if pkg == nil { + panic(internalError("unexpected nil pkg")) + } + + // if we saw the package before, write its index (>= 0) + if i, ok := p.pkgIndex[pkg]; ok { + p.index('P', i) + return + } + + // otherwise, remember the package, write the package tag (< 0) and package data + if trace { + p.tracef("P%d = { ", len(p.pkgIndex)) + defer p.tracef("} ") + } + p.pkgIndex[pkg] = len(p.pkgIndex) + + p.tag(packageTag) + p.string(pkg.Name()) + if emptypath { + p.string("") + } else { + p.string(pkg.Path()) + } +} + +func (p *exporter) obj(obj types.Object) { + switch obj := obj.(type) { + case *types.Const: + p.tag(constTag) + p.pos(obj) + p.qualifiedName(obj) + p.typ(obj.Type()) + p.value(obj.Val()) + + case *types.TypeName: + if obj.IsAlias() { + p.tag(aliasTag) + p.pos(obj) + p.qualifiedName(obj) + } else { + p.tag(typeTag) + } + p.typ(obj.Type()) + + case *types.Var: + p.tag(varTag) + p.pos(obj) + p.qualifiedName(obj) + p.typ(obj.Type()) + + case *types.Func: + p.tag(funcTag) + p.pos(obj) + p.qualifiedName(obj) + sig := obj.Type().(*types.Signature) + p.paramList(sig.Params(), sig.Variadic()) + p.paramList(sig.Results(), false) + + default: + panic(internalErrorf("unexpected object %v (%T)", obj, obj)) + } +} + +func (p *exporter) pos(obj types.Object) { + if !p.posInfoFormat { + return + } + + file, line := p.fileLine(obj) + if file == p.prevFile { + // common case: write line delta + // delta == 0 means different file or no line change + delta := line - p.prevLine + p.int(delta) + if delta == 0 { + p.int(-1) // -1 means no file change + } + } else { + // different file + p.int(0) + // Encode filename as length of common prefix with previous + // filename, followed by (possibly empty) suffix. Filenames + // frequently share path prefixes, so this can save a lot + // of space and make export data size less dependent on file + // path length. The suffix is unlikely to be empty because + // file names tend to end in ".go". + n := commonPrefixLen(p.prevFile, file) + p.int(n) // n >= 0 + p.string(file[n:]) // write suffix only + p.prevFile = file + p.int(line) + } + p.prevLine = line +} + +func (p *exporter) fileLine(obj types.Object) (file string, line int) { + if p.fset != nil { + pos := p.fset.Position(obj.Pos()) + file = pos.Filename + line = pos.Line + } + return +} + +func commonPrefixLen(a, b string) int { + if len(a) > len(b) { + a, b = b, a + } + // len(a) <= len(b) + i := 0 + for i < len(a) && a[i] == b[i] { + i++ + } + return i +} + +func (p *exporter) qualifiedName(obj types.Object) { + p.string(obj.Name()) + p.pkg(obj.Pkg(), false) +} + +func (p *exporter) typ(t types.Type) { + if t == nil { + panic(internalError("nil type")) + } + + // Possible optimization: Anonymous pointer types *T where + // T is a named type are common. We could canonicalize all + // such types *T to a single type PT = *T. This would lead + // to at most one *T entry in typIndex, and all future *T's + // would be encoded as the respective index directly. Would + // save 1 byte (pointerTag) per *T and reduce the typIndex + // size (at the cost of a canonicalization map). We can do + // this later, without encoding format change. + + // if we saw the type before, write its index (>= 0) + if i, ok := p.typIndex[t]; ok { + p.index('T', i) + return + } + + // otherwise, remember the type, write the type tag (< 0) and type data + if trackAllTypes { + if trace { + p.tracef("T%d = {>\n", len(p.typIndex)) + defer p.tracef("<\n} ") + } + p.typIndex[t] = len(p.typIndex) + } + + switch t := t.(type) { + case *types.Named: + if !trackAllTypes { + // if we don't track all types, track named types now + p.typIndex[t] = len(p.typIndex) + } + + p.tag(namedTag) + p.pos(t.Obj()) + p.qualifiedName(t.Obj()) + p.typ(t.Underlying()) + if !types.IsInterface(t) { + p.assocMethods(t) + } + + case *types.Array: + p.tag(arrayTag) + p.int64(t.Len()) + p.typ(t.Elem()) + + case *types.Slice: + p.tag(sliceTag) + p.typ(t.Elem()) + + case *dddSlice: + p.tag(dddTag) + p.typ(t.elem) + + case *types.Struct: + p.tag(structTag) + p.fieldList(t) + + case *types.Pointer: + p.tag(pointerTag) + p.typ(t.Elem()) + + case *types.Signature: + p.tag(signatureTag) + p.paramList(t.Params(), t.Variadic()) + p.paramList(t.Results(), false) + + case *types.Interface: + p.tag(interfaceTag) + p.iface(t) + + case *types.Map: + p.tag(mapTag) + p.typ(t.Key()) + p.typ(t.Elem()) + + case *types.Chan: + p.tag(chanTag) + p.int(int(3 - t.Dir())) // hack + p.typ(t.Elem()) + + default: + panic(internalErrorf("unexpected type %T: %s", t, t)) + } +} + +func (p *exporter) assocMethods(named *types.Named) { + // Sort methods (for determinism). + var methods []*types.Func + for i := 0; i < named.NumMethods(); i++ { + methods = append(methods, named.Method(i)) + } + sort.Sort(methodsByName(methods)) + + p.int(len(methods)) + + if trace && methods != nil { + p.tracef("associated methods {>\n") + } + + for i, m := range methods { + if trace && i > 0 { + p.tracef("\n") + } + + p.pos(m) + name := m.Name() + p.string(name) + if !exported(name) { + p.pkg(m.Pkg(), false) + } + + sig := m.Type().(*types.Signature) + p.paramList(types.NewTuple(sig.Recv()), false) + p.paramList(sig.Params(), sig.Variadic()) + p.paramList(sig.Results(), false) + p.int(0) // dummy value for go:nointerface pragma - ignored by importer + } + + if trace && methods != nil { + p.tracef("<\n} ") + } +} + +type methodsByName []*types.Func + +func (x methodsByName) Len() int { return len(x) } +func (x methodsByName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x methodsByName) Less(i, j int) bool { return x[i].Name() < x[j].Name() } + +func (p *exporter) fieldList(t *types.Struct) { + if trace && t.NumFields() > 0 { + p.tracef("fields {>\n") + defer p.tracef("<\n} ") + } + + p.int(t.NumFields()) + for i := 0; i < t.NumFields(); i++ { + if trace && i > 0 { + p.tracef("\n") + } + p.field(t.Field(i)) + p.string(t.Tag(i)) + } +} + +func (p *exporter) field(f *types.Var) { + if !f.IsField() { + panic(internalError("field expected")) + } + + p.pos(f) + p.fieldName(f) + p.typ(f.Type()) +} + +func (p *exporter) iface(t *types.Interface) { + // TODO(gri): enable importer to load embedded interfaces, + // then emit Embeddeds and ExplicitMethods separately here. + p.int(0) + + n := t.NumMethods() + if trace && n > 0 { + p.tracef("methods {>\n") + defer p.tracef("<\n} ") + } + p.int(n) + for i := 0; i < n; i++ { + if trace && i > 0 { + p.tracef("\n") + } + p.method(t.Method(i)) + } +} + +func (p *exporter) method(m *types.Func) { + sig := m.Type().(*types.Signature) + if sig.Recv() == nil { + panic(internalError("method expected")) + } + + p.pos(m) + p.string(m.Name()) + if m.Name() != "_" && !ast.IsExported(m.Name()) { + p.pkg(m.Pkg(), false) + } + + // interface method; no need to encode receiver. + p.paramList(sig.Params(), sig.Variadic()) + p.paramList(sig.Results(), false) +} + +func (p *exporter) fieldName(f *types.Var) { + name := f.Name() + + if f.Anonymous() { + // anonymous field - we distinguish between 3 cases: + // 1) field name matches base type name and is exported + // 2) field name matches base type name and is not exported + // 3) field name doesn't match base type name (alias name) + bname := basetypeName(f.Type()) + if name == bname { + if ast.IsExported(name) { + name = "" // 1) we don't need to know the field name or package + } else { + name = "?" // 2) use unexported name "?" to force package export + } + } else { + // 3) indicate alias and export name as is + // (this requires an extra "@" but this is a rare case) + p.string("@") + } + } + + p.string(name) + if name != "" && !ast.IsExported(name) { + p.pkg(f.Pkg(), false) + } +} + +func basetypeName(typ types.Type) string { + switch typ := deref(typ).(type) { + case *types.Basic: + return typ.Name() + case *types.Named: + return typ.Obj().Name() + default: + return "" // unnamed type + } +} + +func (p *exporter) paramList(params *types.Tuple, variadic bool) { + // use negative length to indicate unnamed parameters + // (look at the first parameter only since either all + // names are present or all are absent) + n := params.Len() + if n > 0 && params.At(0).Name() == "" { + n = -n + } + p.int(n) + for i := 0; i < params.Len(); i++ { + q := params.At(i) + t := q.Type() + if variadic && i == params.Len()-1 { + t = &dddSlice{t.(*types.Slice).Elem()} + } + p.typ(t) + if n > 0 { + name := q.Name() + p.string(name) + if name != "_" { + p.pkg(q.Pkg(), false) + } + } + p.string("") // no compiler-specific info + } +} + +func (p *exporter) value(x constant.Value) { + if trace { + p.tracef("= ") + } + + switch x.Kind() { + case constant.Bool: + tag := falseTag + if constant.BoolVal(x) { + tag = trueTag + } + p.tag(tag) + + case constant.Int: + if v, exact := constant.Int64Val(x); exact { + // common case: x fits into an int64 - use compact encoding + p.tag(int64Tag) + p.int64(v) + return + } + // uncommon case: large x - use float encoding + // (powers of 2 will be encoded efficiently with exponent) + p.tag(floatTag) + p.float(constant.ToFloat(x)) + + case constant.Float: + p.tag(floatTag) + p.float(x) + + case constant.Complex: + p.tag(complexTag) + p.float(constant.Real(x)) + p.float(constant.Imag(x)) + + case constant.String: + p.tag(stringTag) + p.string(constant.StringVal(x)) + + case constant.Unknown: + // package contains type errors + p.tag(unknownTag) + + default: + panic(internalErrorf("unexpected value %v (%T)", x, x)) + } +} + +func (p *exporter) float(x constant.Value) { + if x.Kind() != constant.Float { + panic(internalErrorf("unexpected constant %v, want float", x)) + } + // extract sign (there is no -0) + sign := constant.Sign(x) + if sign == 0 { + // x == 0 + p.int(0) + return + } + // x != 0 + + var f big.Float + if v, exact := constant.Float64Val(x); exact { + // float64 + f.SetFloat64(v) + } else if num, denom := constant.Num(x), constant.Denom(x); num.Kind() == constant.Int { + // TODO(gri): add big.Rat accessor to constant.Value. + r := valueToRat(num) + f.SetRat(r.Quo(r, valueToRat(denom))) + } else { + // Value too large to represent as a fraction => inaccessible. + // TODO(gri): add big.Float accessor to constant.Value. + f.SetFloat64(math.MaxFloat64) // FIXME + } + + // extract exponent such that 0.5 <= m < 1.0 + var m big.Float + exp := f.MantExp(&m) + + // extract mantissa as *big.Int + // - set exponent large enough so mant satisfies mant.IsInt() + // - get *big.Int from mant + m.SetMantExp(&m, int(m.MinPrec())) + mant, acc := m.Int(nil) + if acc != big.Exact { + panic(internalError("internal error")) + } + + p.int(sign) + p.int(exp) + p.string(string(mant.Bytes())) +} + +func valueToRat(x constant.Value) *big.Rat { + // Convert little-endian to big-endian. + // I can't believe this is necessary. + bytes := constant.Bytes(x) + for i := 0; i < len(bytes)/2; i++ { + bytes[i], bytes[len(bytes)-1-i] = bytes[len(bytes)-1-i], bytes[i] + } + return new(big.Rat).SetInt(new(big.Int).SetBytes(bytes)) +} + +func (p *exporter) bool(b bool) bool { + if trace { + p.tracef("[") + defer p.tracef("= %v] ", b) + } + + x := 0 + if b { + x = 1 + } + p.int(x) + return b +} + +// ---------------------------------------------------------------------------- +// Low-level encoders + +func (p *exporter) index(marker byte, index int) { + if index < 0 { + panic(internalError("invalid index < 0")) + } + if debugFormat { + p.marker('t') + } + if trace { + p.tracef("%c%d ", marker, index) + } + p.rawInt64(int64(index)) +} + +func (p *exporter) tag(tag int) { + if tag >= 0 { + panic(internalError("invalid tag >= 0")) + } + if debugFormat { + p.marker('t') + } + if trace { + p.tracef("%s ", tagString[-tag]) + } + p.rawInt64(int64(tag)) +} + +func (p *exporter) int(x int) { + p.int64(int64(x)) +} + +func (p *exporter) int64(x int64) { + if debugFormat { + p.marker('i') + } + if trace { + p.tracef("%d ", x) + } + p.rawInt64(x) +} + +func (p *exporter) string(s string) { + if debugFormat { + p.marker('s') + } + if trace { + p.tracef("%q ", s) + } + // if we saw the string before, write its index (>= 0) + // (the empty string is mapped to 0) + if i, ok := p.strIndex[s]; ok { + p.rawInt64(int64(i)) + return + } + // otherwise, remember string and write its negative length and bytes + p.strIndex[s] = len(p.strIndex) + p.rawInt64(-int64(len(s))) + for i := 0; i < len(s); i++ { + p.rawByte(s[i]) + } +} + +// marker emits a marker byte and position information which makes +// it easy for a reader to detect if it is "out of sync". Used for +// debugFormat format only. +func (p *exporter) marker(m byte) { + p.rawByte(m) + // Enable this for help tracking down the location + // of an incorrect marker when running in debugFormat. + if false && trace { + p.tracef("#%d ", p.written) + } + p.rawInt64(int64(p.written)) +} + +// rawInt64 should only be used by low-level encoders. +func (p *exporter) rawInt64(x int64) { + var tmp [binary.MaxVarintLen64]byte + n := binary.PutVarint(tmp[:], x) + for i := 0; i < n; i++ { + p.rawByte(tmp[i]) + } +} + +// rawStringln should only be used to emit the initial version string. +func (p *exporter) rawStringln(s string) { + for i := 0; i < len(s); i++ { + p.rawByte(s[i]) + } + p.rawByte('\n') +} + +// rawByte is the bottleneck interface to write to p.out. +// rawByte escapes b as follows (any encoding does that +// hides '$'): +// +// '$' => '|' 'S' +// '|' => '|' '|' +// +// Necessary so other tools can find the end of the +// export data by searching for "$$". +// rawByte should only be used by low-level encoders. +func (p *exporter) rawByte(b byte) { + switch b { + case '$': + // write '$' as '|' 'S' + b = 'S' + fallthrough + case '|': + // write '|' as '|' '|' + p.out.WriteByte('|') + p.written++ + } + p.out.WriteByte(b) + p.written++ +} + +// tracef is like fmt.Printf but it rewrites the format string +// to take care of indentation. +func (p *exporter) tracef(format string, args ...interface{}) { + if strings.ContainsAny(format, "<>\n") { + var buf bytes.Buffer + for i := 0; i < len(format); i++ { + // no need to deal with runes + ch := format[i] + switch ch { + case '>': + p.indent++ + continue + case '<': + p.indent-- + continue + } + buf.WriteByte(ch) + if ch == '\n' { + for j := p.indent; j > 0; j-- { + buf.WriteString(". ") + } + } + } + format = buf.String() + } + fmt.Printf(format, args...) +} + +// Debugging support. +// (tagString is only used when tracing is enabled) +var tagString = [...]string{ + // Packages + -packageTag: "package", + + // Types + -namedTag: "named type", + -arrayTag: "array", + -sliceTag: "slice", + -dddTag: "ddd", + -structTag: "struct", + -pointerTag: "pointer", + -signatureTag: "signature", + -interfaceTag: "interface", + -mapTag: "map", + -chanTag: "chan", + + // Values + -falseTag: "false", + -trueTag: "true", + -int64Tag: "int64", + -floatTag: "float", + -fractionTag: "fraction", + -complexTag: "complex", + -stringTag: "string", + -unknownTag: "unknown", + + // Type aliases + -aliasTag: "alias", +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go new file mode 100644 index 00000000000..e9f73d14a18 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bimport.go @@ -0,0 +1,1039 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file is a copy of $GOROOT/src/go/internal/gcimporter/bimport.go. + +package gcimporter + +import ( + "encoding/binary" + "fmt" + "go/constant" + "go/token" + "go/types" + "sort" + "strconv" + "strings" + "sync" + "unicode" + "unicode/utf8" +) + +type importer struct { + imports map[string]*types.Package + data []byte + importpath string + buf []byte // for reading strings + version int // export format version + + // object lists + strList []string // in order of appearance + pathList []string // in order of appearance + pkgList []*types.Package // in order of appearance + typList []types.Type // in order of appearance + interfaceList []*types.Interface // for delayed completion only + trackAllTypes bool + + // position encoding + posInfoFormat bool + prevFile string + prevLine int + fake fakeFileSet + + // debugging support + debugFormat bool + read int // bytes read +} + +// BImportData imports a package from the serialized package data +// and returns the number of bytes consumed and a reference to the package. +// If the export data version is not recognized or the format is otherwise +// compromised, an error is returned. +func BImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { + // catch panics and return them as errors + const currentVersion = 6 + version := -1 // unknown version + defer func() { + if e := recover(); e != nil { + // Return a (possibly nil or incomplete) package unchanged (see #16088). + if version > currentVersion { + err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) + } else { + err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) + } + } + }() + + p := importer{ + imports: imports, + data: data, + importpath: path, + version: version, + strList: []string{""}, // empty string is mapped to 0 + pathList: []string{""}, // empty string is mapped to 0 + fake: fakeFileSet{ + fset: fset, + files: make(map[string]*token.File), + }, + } + + // read version info + var versionstr string + if b := p.rawByte(); b == 'c' || b == 'd' { + // Go1.7 encoding; first byte encodes low-level + // encoding format (compact vs debug). + // For backward-compatibility only (avoid problems with + // old installed packages). Newly compiled packages use + // the extensible format string. + // TODO(gri) Remove this support eventually; after Go1.8. + if b == 'd' { + p.debugFormat = true + } + p.trackAllTypes = p.rawByte() == 'a' + p.posInfoFormat = p.int() != 0 + versionstr = p.string() + if versionstr == "v1" { + version = 0 + } + } else { + // Go1.8 extensible encoding + // read version string and extract version number (ignore anything after the version number) + versionstr = p.rawStringln(b) + if s := strings.SplitN(versionstr, " ", 3); len(s) >= 2 && s[0] == "version" { + if v, err := strconv.Atoi(s[1]); err == nil && v > 0 { + version = v + } + } + } + p.version = version + + // read version specific flags - extend as necessary + switch p.version { + // case currentVersion: + // ... + // fallthrough + case currentVersion, 5, 4, 3, 2, 1: + p.debugFormat = p.rawStringln(p.rawByte()) == "debug" + p.trackAllTypes = p.int() != 0 + p.posInfoFormat = p.int() != 0 + case 0: + // Go1.7 encoding format - nothing to do here + default: + errorf("unknown bexport format version %d (%q)", p.version, versionstr) + } + + // --- generic export data --- + + // populate typList with predeclared "known" types + p.typList = append(p.typList, predeclared()...) + + // read package data + pkg = p.pkg() + + // read objects of phase 1 only (see cmd/compile/internal/gc/bexport.go) + objcount := 0 + for { + tag := p.tagOrIndex() + if tag == endTag { + break + } + p.obj(tag) + objcount++ + } + + // self-verification + if count := p.int(); count != objcount { + errorf("got %d objects; want %d", objcount, count) + } + + // ignore compiler-specific import data + + // complete interfaces + // TODO(gri) re-investigate if we still need to do this in a delayed fashion + for _, typ := range p.interfaceList { + typ.Complete() + } + + // record all referenced packages as imports + list := append(([]*types.Package)(nil), p.pkgList[1:]...) + sort.Sort(byPath(list)) + pkg.SetImports(list) + + // package was imported completely and without errors + pkg.MarkComplete() + + return p.read, pkg, nil +} + +func errorf(format string, args ...interface{}) { + panic(fmt.Sprintf(format, args...)) +} + +func (p *importer) pkg() *types.Package { + // if the package was seen before, i is its index (>= 0) + i := p.tagOrIndex() + if i >= 0 { + return p.pkgList[i] + } + + // otherwise, i is the package tag (< 0) + if i != packageTag { + errorf("unexpected package tag %d version %d", i, p.version) + } + + // read package data + name := p.string() + var path string + if p.version >= 5 { + path = p.path() + } else { + path = p.string() + } + if p.version >= 6 { + p.int() // package height; unused by go/types + } + + // we should never see an empty package name + if name == "" { + errorf("empty package name in import") + } + + // an empty path denotes the package we are currently importing; + // it must be the first package we see + if (path == "") != (len(p.pkgList) == 0) { + errorf("package path %q for pkg index %d", path, len(p.pkgList)) + } + + // if the package was imported before, use that one; otherwise create a new one + if path == "" { + path = p.importpath + } + pkg := p.imports[path] + if pkg == nil { + pkg = types.NewPackage(path, name) + p.imports[path] = pkg + } else if pkg.Name() != name { + errorf("conflicting names %s and %s for package %q", pkg.Name(), name, path) + } + p.pkgList = append(p.pkgList, pkg) + + return pkg +} + +// objTag returns the tag value for each object kind. +func objTag(obj types.Object) int { + switch obj.(type) { + case *types.Const: + return constTag + case *types.TypeName: + return typeTag + case *types.Var: + return varTag + case *types.Func: + return funcTag + default: + errorf("unexpected object: %v (%T)", obj, obj) // panics + panic("unreachable") + } +} + +func sameObj(a, b types.Object) bool { + // Because unnamed types are not canonicalized, we cannot simply compare types for + // (pointer) identity. + // Ideally we'd check equality of constant values as well, but this is good enough. + return objTag(a) == objTag(b) && types.Identical(a.Type(), b.Type()) +} + +func (p *importer) declare(obj types.Object) { + pkg := obj.Pkg() + if alt := pkg.Scope().Insert(obj); alt != nil { + // This can only trigger if we import a (non-type) object a second time. + // Excluding type aliases, this cannot happen because 1) we only import a package + // once; and b) we ignore compiler-specific export data which may contain + // functions whose inlined function bodies refer to other functions that + // were already imported. + // However, type aliases require reexporting the original type, so we need + // to allow it (see also the comment in cmd/compile/internal/gc/bimport.go, + // method importer.obj, switch case importing functions). + // TODO(gri) review/update this comment once the gc compiler handles type aliases. + if !sameObj(obj, alt) { + errorf("inconsistent import:\n\t%v\npreviously imported as:\n\t%v\n", obj, alt) + } + } +} + +func (p *importer) obj(tag int) { + switch tag { + case constTag: + pos := p.pos() + pkg, name := p.qualifiedName() + typ := p.typ(nil, nil) + val := p.value() + p.declare(types.NewConst(pos, pkg, name, typ, val)) + + case aliasTag: + // TODO(gri) verify type alias hookup is correct + pos := p.pos() + pkg, name := p.qualifiedName() + typ := p.typ(nil, nil) + p.declare(types.NewTypeName(pos, pkg, name, typ)) + + case typeTag: + p.typ(nil, nil) + + case varTag: + pos := p.pos() + pkg, name := p.qualifiedName() + typ := p.typ(nil, nil) + p.declare(types.NewVar(pos, pkg, name, typ)) + + case funcTag: + pos := p.pos() + pkg, name := p.qualifiedName() + params, isddd := p.paramList() + result, _ := p.paramList() + sig := types.NewSignature(nil, params, result, isddd) + p.declare(types.NewFunc(pos, pkg, name, sig)) + + default: + errorf("unexpected object tag %d", tag) + } +} + +const deltaNewFile = -64 // see cmd/compile/internal/gc/bexport.go + +func (p *importer) pos() token.Pos { + if !p.posInfoFormat { + return token.NoPos + } + + file := p.prevFile + line := p.prevLine + delta := p.int() + line += delta + if p.version >= 5 { + if delta == deltaNewFile { + if n := p.int(); n >= 0 { + // file changed + file = p.path() + line = n + } + } + } else { + if delta == 0 { + if n := p.int(); n >= 0 { + // file changed + file = p.prevFile[:n] + p.string() + line = p.int() + } + } + } + p.prevFile = file + p.prevLine = line + + return p.fake.pos(file, line, 0) +} + +// Synthesize a token.Pos +type fakeFileSet struct { + fset *token.FileSet + files map[string]*token.File +} + +func (s *fakeFileSet) pos(file string, line, column int) token.Pos { + // TODO(mdempsky): Make use of column. + + // Since we don't know the set of needed file positions, we + // reserve maxlines positions per file. + const maxlines = 64 * 1024 + f := s.files[file] + if f == nil { + f = s.fset.AddFile(file, -1, maxlines) + s.files[file] = f + // Allocate the fake linebreak indices on first use. + // TODO(adonovan): opt: save ~512KB using a more complex scheme? + fakeLinesOnce.Do(func() { + fakeLines = make([]int, maxlines) + for i := range fakeLines { + fakeLines[i] = i + } + }) + f.SetLines(fakeLines) + } + + if line > maxlines { + line = 1 + } + + // Treat the file as if it contained only newlines + // and column=1: use the line number as the offset. + return f.Pos(line - 1) +} + +var ( + fakeLines []int + fakeLinesOnce sync.Once +) + +func (p *importer) qualifiedName() (pkg *types.Package, name string) { + name = p.string() + pkg = p.pkg() + return +} + +func (p *importer) record(t types.Type) { + p.typList = append(p.typList, t) +} + +// A dddSlice is a types.Type representing ...T parameters. +// It only appears for parameter types and does not escape +// the importer. +type dddSlice struct { + elem types.Type +} + +func (t *dddSlice) Underlying() types.Type { return t } +func (t *dddSlice) String() string { return "..." + t.elem.String() } + +// parent is the package which declared the type; parent == nil means +// the package currently imported. The parent package is needed for +// exported struct fields and interface methods which don't contain +// explicit package information in the export data. +// +// A non-nil tname is used as the "owner" of the result type; i.e., +// the result type is the underlying type of tname. tname is used +// to give interface methods a named receiver type where possible. +func (p *importer) typ(parent *types.Package, tname *types.Named) types.Type { + // if the type was seen before, i is its index (>= 0) + i := p.tagOrIndex() + if i >= 0 { + return p.typList[i] + } + + // otherwise, i is the type tag (< 0) + switch i { + case namedTag: + // read type object + pos := p.pos() + parent, name := p.qualifiedName() + scope := parent.Scope() + obj := scope.Lookup(name) + + // if the object doesn't exist yet, create and insert it + if obj == nil { + obj = types.NewTypeName(pos, parent, name, nil) + scope.Insert(obj) + } + + if _, ok := obj.(*types.TypeName); !ok { + errorf("pkg = %s, name = %s => %s", parent, name, obj) + } + + // associate new named type with obj if it doesn't exist yet + t0 := types.NewNamed(obj.(*types.TypeName), nil, nil) + + // but record the existing type, if any + tname := obj.Type().(*types.Named) // tname is either t0 or the existing type + p.record(tname) + + // read underlying type + t0.SetUnderlying(p.typ(parent, t0)) + + // interfaces don't have associated methods + if types.IsInterface(t0) { + return tname + } + + // read associated methods + for i := p.int(); i > 0; i-- { + // TODO(gri) replace this with something closer to fieldName + pos := p.pos() + name := p.string() + if !exported(name) { + p.pkg() + } + + recv, _ := p.paramList() // TODO(gri) do we need a full param list for the receiver? + params, isddd := p.paramList() + result, _ := p.paramList() + p.int() // go:nointerface pragma - discarded + + sig := types.NewSignature(recv.At(0), params, result, isddd) + t0.AddMethod(types.NewFunc(pos, parent, name, sig)) + } + + return tname + + case arrayTag: + t := new(types.Array) + if p.trackAllTypes { + p.record(t) + } + + n := p.int64() + *t = *types.NewArray(p.typ(parent, nil), n) + return t + + case sliceTag: + t := new(types.Slice) + if p.trackAllTypes { + p.record(t) + } + + *t = *types.NewSlice(p.typ(parent, nil)) + return t + + case dddTag: + t := new(dddSlice) + if p.trackAllTypes { + p.record(t) + } + + t.elem = p.typ(parent, nil) + return t + + case structTag: + t := new(types.Struct) + if p.trackAllTypes { + p.record(t) + } + + *t = *types.NewStruct(p.fieldList(parent)) + return t + + case pointerTag: + t := new(types.Pointer) + if p.trackAllTypes { + p.record(t) + } + + *t = *types.NewPointer(p.typ(parent, nil)) + return t + + case signatureTag: + t := new(types.Signature) + if p.trackAllTypes { + p.record(t) + } + + params, isddd := p.paramList() + result, _ := p.paramList() + *t = *types.NewSignature(nil, params, result, isddd) + return t + + case interfaceTag: + // Create a dummy entry in the type list. This is safe because we + // cannot expect the interface type to appear in a cycle, as any + // such cycle must contain a named type which would have been + // first defined earlier. + // TODO(gri) Is this still true now that we have type aliases? + // See issue #23225. + n := len(p.typList) + if p.trackAllTypes { + p.record(nil) + } + + var embeddeds []types.Type + for n := p.int(); n > 0; n-- { + p.pos() + embeddeds = append(embeddeds, p.typ(parent, nil)) + } + + t := newInterface(p.methodList(parent, tname), embeddeds) + p.interfaceList = append(p.interfaceList, t) + if p.trackAllTypes { + p.typList[n] = t + } + return t + + case mapTag: + t := new(types.Map) + if p.trackAllTypes { + p.record(t) + } + + key := p.typ(parent, nil) + val := p.typ(parent, nil) + *t = *types.NewMap(key, val) + return t + + case chanTag: + t := new(types.Chan) + if p.trackAllTypes { + p.record(t) + } + + dir := chanDir(p.int()) + val := p.typ(parent, nil) + *t = *types.NewChan(dir, val) + return t + + default: + errorf("unexpected type tag %d", i) // panics + panic("unreachable") + } +} + +func chanDir(d int) types.ChanDir { + // tag values must match the constants in cmd/compile/internal/gc/go.go + switch d { + case 1 /* Crecv */ : + return types.RecvOnly + case 2 /* Csend */ : + return types.SendOnly + case 3 /* Cboth */ : + return types.SendRecv + default: + errorf("unexpected channel dir %d", d) + return 0 + } +} + +func (p *importer) fieldList(parent *types.Package) (fields []*types.Var, tags []string) { + if n := p.int(); n > 0 { + fields = make([]*types.Var, n) + tags = make([]string, n) + for i := range fields { + fields[i], tags[i] = p.field(parent) + } + } + return +} + +func (p *importer) field(parent *types.Package) (*types.Var, string) { + pos := p.pos() + pkg, name, alias := p.fieldName(parent) + typ := p.typ(parent, nil) + tag := p.string() + + anonymous := false + if name == "" { + // anonymous field - typ must be T or *T and T must be a type name + switch typ := deref(typ).(type) { + case *types.Basic: // basic types are named types + pkg = nil // // objects defined in Universe scope have no package + name = typ.Name() + case *types.Named: + name = typ.Obj().Name() + default: + errorf("named base type expected") + } + anonymous = true + } else if alias { + // anonymous field: we have an explicit name because it's an alias + anonymous = true + } + + return types.NewField(pos, pkg, name, typ, anonymous), tag +} + +func (p *importer) methodList(parent *types.Package, baseType *types.Named) (methods []*types.Func) { + if n := p.int(); n > 0 { + methods = make([]*types.Func, n) + for i := range methods { + methods[i] = p.method(parent, baseType) + } + } + return +} + +func (p *importer) method(parent *types.Package, baseType *types.Named) *types.Func { + pos := p.pos() + pkg, name, _ := p.fieldName(parent) + // If we don't have a baseType, use a nil receiver. + // A receiver using the actual interface type (which + // we don't know yet) will be filled in when we call + // types.Interface.Complete. + var recv *types.Var + if baseType != nil { + recv = types.NewVar(token.NoPos, parent, "", baseType) + } + params, isddd := p.paramList() + result, _ := p.paramList() + sig := types.NewSignature(recv, params, result, isddd) + return types.NewFunc(pos, pkg, name, sig) +} + +func (p *importer) fieldName(parent *types.Package) (pkg *types.Package, name string, alias bool) { + name = p.string() + pkg = parent + if pkg == nil { + // use the imported package instead + pkg = p.pkgList[0] + } + if p.version == 0 && name == "_" { + // version 0 didn't export a package for _ fields + return + } + switch name { + case "": + // 1) field name matches base type name and is exported: nothing to do + case "?": + // 2) field name matches base type name and is not exported: need package + name = "" + pkg = p.pkg() + case "@": + // 3) field name doesn't match type name (alias) + name = p.string() + alias = true + fallthrough + default: + if !exported(name) { + pkg = p.pkg() + } + } + return +} + +func (p *importer) paramList() (*types.Tuple, bool) { + n := p.int() + if n == 0 { + return nil, false + } + // negative length indicates unnamed parameters + named := true + if n < 0 { + n = -n + named = false + } + // n > 0 + params := make([]*types.Var, n) + isddd := false + for i := range params { + params[i], isddd = p.param(named) + } + return types.NewTuple(params...), isddd +} + +func (p *importer) param(named bool) (*types.Var, bool) { + t := p.typ(nil, nil) + td, isddd := t.(*dddSlice) + if isddd { + t = types.NewSlice(td.elem) + } + + var pkg *types.Package + var name string + if named { + name = p.string() + if name == "" { + errorf("expected named parameter") + } + if name != "_" { + pkg = p.pkg() + } + if i := strings.Index(name, "·"); i > 0 { + name = name[:i] // cut off gc-specific parameter numbering + } + } + + // read and discard compiler-specific info + p.string() + + return types.NewVar(token.NoPos, pkg, name, t), isddd +} + +func exported(name string) bool { + ch, _ := utf8.DecodeRuneInString(name) + return unicode.IsUpper(ch) +} + +func (p *importer) value() constant.Value { + switch tag := p.tagOrIndex(); tag { + case falseTag: + return constant.MakeBool(false) + case trueTag: + return constant.MakeBool(true) + case int64Tag: + return constant.MakeInt64(p.int64()) + case floatTag: + return p.float() + case complexTag: + re := p.float() + im := p.float() + return constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) + case stringTag: + return constant.MakeString(p.string()) + case unknownTag: + return constant.MakeUnknown() + default: + errorf("unexpected value tag %d", tag) // panics + panic("unreachable") + } +} + +func (p *importer) float() constant.Value { + sign := p.int() + if sign == 0 { + return constant.MakeInt64(0) + } + + exp := p.int() + mant := []byte(p.string()) // big endian + + // remove leading 0's if any + for len(mant) > 0 && mant[0] == 0 { + mant = mant[1:] + } + + // convert to little endian + // TODO(gri) go/constant should have a more direct conversion function + // (e.g., once it supports a big.Float based implementation) + for i, j := 0, len(mant)-1; i < j; i, j = i+1, j-1 { + mant[i], mant[j] = mant[j], mant[i] + } + + // adjust exponent (constant.MakeFromBytes creates an integer value, + // but mant represents the mantissa bits such that 0.5 <= mant < 1.0) + exp -= len(mant) << 3 + if len(mant) > 0 { + for msd := mant[len(mant)-1]; msd&0x80 == 0; msd <<= 1 { + exp++ + } + } + + x := constant.MakeFromBytes(mant) + switch { + case exp < 0: + d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) + x = constant.BinaryOp(x, token.QUO, d) + case exp > 0: + x = constant.Shift(x, token.SHL, uint(exp)) + } + + if sign < 0 { + x = constant.UnaryOp(token.SUB, x, 0) + } + return x +} + +// ---------------------------------------------------------------------------- +// Low-level decoders + +func (p *importer) tagOrIndex() int { + if p.debugFormat { + p.marker('t') + } + + return int(p.rawInt64()) +} + +func (p *importer) int() int { + x := p.int64() + if int64(int(x)) != x { + errorf("exported integer too large") + } + return int(x) +} + +func (p *importer) int64() int64 { + if p.debugFormat { + p.marker('i') + } + + return p.rawInt64() +} + +func (p *importer) path() string { + if p.debugFormat { + p.marker('p') + } + // if the path was seen before, i is its index (>= 0) + // (the empty string is at index 0) + i := p.rawInt64() + if i >= 0 { + return p.pathList[i] + } + // otherwise, i is the negative path length (< 0) + a := make([]string, -i) + for n := range a { + a[n] = p.string() + } + s := strings.Join(a, "/") + p.pathList = append(p.pathList, s) + return s +} + +func (p *importer) string() string { + if p.debugFormat { + p.marker('s') + } + // if the string was seen before, i is its index (>= 0) + // (the empty string is at index 0) + i := p.rawInt64() + if i >= 0 { + return p.strList[i] + } + // otherwise, i is the negative string length (< 0) + if n := int(-i); n <= cap(p.buf) { + p.buf = p.buf[:n] + } else { + p.buf = make([]byte, n) + } + for i := range p.buf { + p.buf[i] = p.rawByte() + } + s := string(p.buf) + p.strList = append(p.strList, s) + return s +} + +func (p *importer) marker(want byte) { + if got := p.rawByte(); got != want { + errorf("incorrect marker: got %c; want %c (pos = %d)", got, want, p.read) + } + + pos := p.read + if n := int(p.rawInt64()); n != pos { + errorf("incorrect position: got %d; want %d", n, pos) + } +} + +// rawInt64 should only be used by low-level decoders. +func (p *importer) rawInt64() int64 { + i, err := binary.ReadVarint(p) + if err != nil { + errorf("read error: %v", err) + } + return i +} + +// rawStringln should only be used to read the initial version string. +func (p *importer) rawStringln(b byte) string { + p.buf = p.buf[:0] + for b != '\n' { + p.buf = append(p.buf, b) + b = p.rawByte() + } + return string(p.buf) +} + +// needed for binary.ReadVarint in rawInt64 +func (p *importer) ReadByte() (byte, error) { + return p.rawByte(), nil +} + +// byte is the bottleneck interface for reading p.data. +// It unescapes '|' 'S' to '$' and '|' '|' to '|'. +// rawByte should only be used by low-level decoders. +func (p *importer) rawByte() byte { + b := p.data[0] + r := 1 + if b == '|' { + b = p.data[1] + r = 2 + switch b { + case 'S': + b = '$' + case '|': + // nothing to do + default: + errorf("unexpected escape sequence in export data") + } + } + p.data = p.data[r:] + p.read += r + return b + +} + +// ---------------------------------------------------------------------------- +// Export format + +// Tags. Must be < 0. +const ( + // Objects + packageTag = -(iota + 1) + constTag + typeTag + varTag + funcTag + endTag + + // Types + namedTag + arrayTag + sliceTag + dddTag + structTag + pointerTag + signatureTag + interfaceTag + mapTag + chanTag + + // Values + falseTag + trueTag + int64Tag + floatTag + fractionTag // not used by gc + complexTag + stringTag + nilTag // only used by gc (appears in exported inlined function bodies) + unknownTag // not used by gc (only appears in packages with errors) + + // Type aliases + aliasTag +) + +var predeclOnce sync.Once +var predecl []types.Type // initialized lazily + +func predeclared() []types.Type { + predeclOnce.Do(func() { + // initialize lazily to be sure that all + // elements have been initialized before + predecl = []types.Type{ // basic types + types.Typ[types.Bool], + types.Typ[types.Int], + types.Typ[types.Int8], + types.Typ[types.Int16], + types.Typ[types.Int32], + types.Typ[types.Int64], + types.Typ[types.Uint], + types.Typ[types.Uint8], + types.Typ[types.Uint16], + types.Typ[types.Uint32], + types.Typ[types.Uint64], + types.Typ[types.Uintptr], + types.Typ[types.Float32], + types.Typ[types.Float64], + types.Typ[types.Complex64], + types.Typ[types.Complex128], + types.Typ[types.String], + + // basic type aliases + types.Universe.Lookup("byte").Type(), + types.Universe.Lookup("rune").Type(), + + // error + types.Universe.Lookup("error").Type(), + + // untyped types + types.Typ[types.UntypedBool], + types.Typ[types.UntypedInt], + types.Typ[types.UntypedRune], + types.Typ[types.UntypedFloat], + types.Typ[types.UntypedComplex], + types.Typ[types.UntypedString], + types.Typ[types.UntypedNil], + + // package unsafe + types.Typ[types.UnsafePointer], + + // invalid type + types.Typ[types.Invalid], // only appears in packages with errors + + // used internally by gc; never used by this package or in .a files + anyType{}, + } + }) + return predecl +} + +type anyType struct{} + +func (t anyType) Underlying() types.Type { return t } +func (t anyType) String() string { return "any" } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go b/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go new file mode 100644 index 00000000000..f33dc5613e7 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/exportdata.go @@ -0,0 +1,93 @@ +// 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. + +// This file is a copy of $GOROOT/src/go/internal/gcimporter/exportdata.go. + +// This file implements FindExportData. + +package gcimporter + +import ( + "bufio" + "fmt" + "io" + "strconv" + "strings" +) + +func readGopackHeader(r *bufio.Reader) (name string, size int, err error) { + // See $GOROOT/include/ar.h. + hdr := make([]byte, 16+12+6+6+8+10+2) + _, err = io.ReadFull(r, hdr) + if err != nil { + return + } + // leave for debugging + if false { + fmt.Printf("header: %s", hdr) + } + s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10])) + size, err = strconv.Atoi(s) + if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' { + err = fmt.Errorf("invalid archive header") + return + } + name = strings.TrimSpace(string(hdr[:16])) + return +} + +// FindExportData positions the reader r at the beginning of the +// export data section of an underlying GC-created object/archive +// file by reading from it. The reader must be positioned at the +// start of the file before calling this function. The hdr result +// is the string before the export data, either "$$" or "$$B". +// +func FindExportData(r *bufio.Reader) (hdr string, err error) { + // Read first line to make sure this is an object file. + line, err := r.ReadSlice('\n') + if err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + + if string(line) == "!\n" { + // Archive file. Scan to __.PKGDEF. + var name string + if name, _, err = readGopackHeader(r); err != nil { + return + } + + // First entry should be __.PKGDEF. + if name != "__.PKGDEF" { + err = fmt.Errorf("go archive is missing __.PKGDEF") + return + } + + // Read first line of __.PKGDEF data, so that line + // is once again the first line of the input. + if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + } + + // Now at __.PKGDEF in archive or still at beginning of file. + // Either way, line should begin with "go object ". + if !strings.HasPrefix(string(line), "go object ") { + err = fmt.Errorf("not a Go object file") + return + } + + // Skip over object header to export data. + // Begins after first line starting with $$. + for line[0] != '$' { + if line, err = r.ReadSlice('\n'); err != nil { + err = fmt.Errorf("can't find export data (%v)", err) + return + } + } + hdr = string(line) + + return +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go new file mode 100644 index 00000000000..9cf186605f6 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go @@ -0,0 +1,1078 @@ +// 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. + +// This file is a modified copy of $GOROOT/src/go/internal/gcimporter/gcimporter.go, +// but it also contains the original source-based importer code for Go1.6. +// Once we stop supporting 1.6, we can remove that code. + +// Package gcimporter provides various functions for reading +// gc-generated object files that can be used to implement the +// Importer interface defined by the Go 1.5 standard library package. +package gcimporter // import "golang.org/x/tools/go/internal/gcimporter" + +import ( + "bufio" + "errors" + "fmt" + "go/build" + "go/constant" + "go/token" + "go/types" + "io" + "io/ioutil" + "os" + "path/filepath" + "sort" + "strconv" + "strings" + "text/scanner" +) + +// debugging/development support +const debug = false + +var pkgExts = [...]string{".a", ".o"} + +// FindPkg returns the filename and unique package id for an import +// path based on package information provided by build.Import (using +// the build.Default build.Context). A relative srcDir is interpreted +// relative to the current working directory. +// If no file was found, an empty filename is returned. +// +func FindPkg(path, srcDir string) (filename, id string) { + if path == "" { + return + } + + var noext string + switch { + default: + // "x" -> "$GOPATH/pkg/$GOOS_$GOARCH/x.ext", "x" + // Don't require the source files to be present. + if abs, err := filepath.Abs(srcDir); err == nil { // see issue 14282 + srcDir = abs + } + bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary) + if bp.PkgObj == "" { + id = path // make sure we have an id to print in error message + return + } + noext = strings.TrimSuffix(bp.PkgObj, ".a") + id = bp.ImportPath + + case build.IsLocalImport(path): + // "./x" -> "/this/directory/x.ext", "/this/directory/x" + noext = filepath.Join(srcDir, path) + id = noext + + case filepath.IsAbs(path): + // for completeness only - go/build.Import + // does not support absolute imports + // "/x" -> "/x.ext", "/x" + noext = path + id = path + } + + if false { // for debugging + if path != id { + fmt.Printf("%s -> %s\n", path, id) + } + } + + // try extensions + for _, ext := range pkgExts { + filename = noext + ext + if f, err := os.Stat(filename); err == nil && !f.IsDir() { + return + } + } + + filename = "" // not found + return +} + +// ImportData imports a package by reading the gc-generated export data, +// adds the corresponding package object to the packages map indexed by id, +// and returns the object. +// +// The packages map must contains all packages already imported. The data +// reader position must be the beginning of the export data section. The +// filename is only used in error messages. +// +// If packages[id] contains the completely imported package, that package +// can be used directly, and there is no need to call this function (but +// there is also no harm but for extra time used). +// +func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { + // support for parser error handling + defer func() { + switch r := recover().(type) { + case nil: + // nothing to do + case importError: + err = r + default: + panic(r) // internal error + } + }() + + var p parser + p.init(filename, id, data, packages) + pkg = p.parseExport() + + return +} + +// Import imports a gc-generated package given its import path and srcDir, adds +// the corresponding package object to the packages map, and returns the object. +// The packages map must contain all packages already imported. +// +func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { + var rc io.ReadCloser + var filename, id string + if lookup != nil { + // With custom lookup specified, assume that caller has + // converted path to a canonical import path for use in the map. + if path == "unsafe" { + return types.Unsafe, nil + } + id = path + + // No need to re-import if the package was imported completely before. + if pkg = packages[id]; pkg != nil && pkg.Complete() { + return + } + f, err := lookup(path) + if err != nil { + return nil, err + } + rc = f + } else { + filename, id = FindPkg(path, srcDir) + if filename == "" { + if path == "unsafe" { + return types.Unsafe, nil + } + return nil, fmt.Errorf("can't find import: %q", id) + } + + // no need to re-import if the package was imported completely before + if pkg = packages[id]; pkg != nil && pkg.Complete() { + return + } + + // open file + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer func() { + if err != nil { + // add file name to error + err = fmt.Errorf("%s: %v", filename, err) + } + }() + rc = f + } + defer rc.Close() + + var hdr string + buf := bufio.NewReader(rc) + if hdr, err = FindExportData(buf); err != nil { + return + } + + switch hdr { + case "$$\n": + // Work-around if we don't have a filename; happens only if lookup != nil. + // Either way, the filename is only needed for importer error messages, so + // this is fine. + if filename == "" { + filename = path + } + return ImportData(packages, filename, id, buf) + + case "$$B\n": + var data []byte + data, err = ioutil.ReadAll(buf) + if err != nil { + break + } + + // TODO(gri): allow clients of go/importer to provide a FileSet. + // Or, define a new standard go/types/gcexportdata package. + fset := token.NewFileSet() + + // The indexed export format starts with an 'i'; the older + // binary export format starts with a 'c', 'd', or 'v' + // (from "version"). Select appropriate importer. + if len(data) > 0 && data[0] == 'i' { + _, pkg, err = IImportData(fset, packages, data[1:], id) + } else { + _, pkg, err = BImportData(fset, packages, data, id) + } + + default: + err = fmt.Errorf("unknown export data header: %q", hdr) + } + + return +} + +// ---------------------------------------------------------------------------- +// Parser + +// TODO(gri) Imported objects don't have position information. +// Ideally use the debug table line info; alternatively +// create some fake position (or the position of the +// import). That way error messages referring to imported +// objects can print meaningful information. + +// parser parses the exports inside a gc compiler-produced +// object/archive file and populates its scope with the results. +type parser struct { + scanner scanner.Scanner + tok rune // current token + lit string // literal string; only valid for Ident, Int, String tokens + id string // package id of imported package + sharedPkgs map[string]*types.Package // package id -> package object (across importer) + localPkgs map[string]*types.Package // package id -> package object (just this package) +} + +func (p *parser) init(filename, id string, src io.Reader, packages map[string]*types.Package) { + p.scanner.Init(src) + p.scanner.Error = func(_ *scanner.Scanner, msg string) { p.error(msg) } + p.scanner.Mode = scanner.ScanIdents | scanner.ScanInts | scanner.ScanChars | scanner.ScanStrings | scanner.ScanComments | scanner.SkipComments + p.scanner.Whitespace = 1<<'\t' | 1<<' ' + p.scanner.Filename = filename // for good error messages + p.next() + p.id = id + p.sharedPkgs = packages + if debug { + // check consistency of packages map + for _, pkg := range packages { + if pkg.Name() == "" { + fmt.Printf("no package name for %s\n", pkg.Path()) + } + } + } +} + +func (p *parser) next() { + p.tok = p.scanner.Scan() + switch p.tok { + case scanner.Ident, scanner.Int, scanner.Char, scanner.String, '·': + p.lit = p.scanner.TokenText() + default: + p.lit = "" + } + if debug { + fmt.Printf("%s: %q -> %q\n", scanner.TokenString(p.tok), p.scanner.TokenText(), p.lit) + } +} + +func declTypeName(pkg *types.Package, name string) *types.TypeName { + scope := pkg.Scope() + if obj := scope.Lookup(name); obj != nil { + return obj.(*types.TypeName) + } + obj := types.NewTypeName(token.NoPos, pkg, name, nil) + // a named type may be referred to before the underlying type + // is known - set it up + types.NewNamed(obj, nil, nil) + scope.Insert(obj) + return obj +} + +// ---------------------------------------------------------------------------- +// Error handling + +// Internal errors are boxed as importErrors. +type importError struct { + pos scanner.Position + err error +} + +func (e importError) Error() string { + return fmt.Sprintf("import error %s (byte offset = %d): %s", e.pos, e.pos.Offset, e.err) +} + +func (p *parser) error(err interface{}) { + if s, ok := err.(string); ok { + err = errors.New(s) + } + // panic with a runtime.Error if err is not an error + panic(importError{p.scanner.Pos(), err.(error)}) +} + +func (p *parser) errorf(format string, args ...interface{}) { + p.error(fmt.Sprintf(format, args...)) +} + +func (p *parser) expect(tok rune) string { + lit := p.lit + if p.tok != tok { + p.errorf("expected %s, got %s (%s)", scanner.TokenString(tok), scanner.TokenString(p.tok), lit) + } + p.next() + return lit +} + +func (p *parser) expectSpecial(tok string) { + sep := 'x' // not white space + i := 0 + for i < len(tok) && p.tok == rune(tok[i]) && sep > ' ' { + sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token + p.next() + i++ + } + if i < len(tok) { + p.errorf("expected %q, got %q", tok, tok[0:i]) + } +} + +func (p *parser) expectKeyword(keyword string) { + lit := p.expect(scanner.Ident) + if lit != keyword { + p.errorf("expected keyword %s, got %q", keyword, lit) + } +} + +// ---------------------------------------------------------------------------- +// Qualified and unqualified names + +// PackageId = string_lit . +// +func (p *parser) parsePackageId() string { + id, err := strconv.Unquote(p.expect(scanner.String)) + if err != nil { + p.error(err) + } + // id == "" stands for the imported package id + // (only known at time of package installation) + if id == "" { + id = p.id + } + return id +} + +// PackageName = ident . +// +func (p *parser) parsePackageName() string { + return p.expect(scanner.Ident) +} + +// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . +func (p *parser) parseDotIdent() string { + ident := "" + if p.tok != scanner.Int { + sep := 'x' // not white space + for (p.tok == scanner.Ident || p.tok == scanner.Int || p.tok == '·') && sep > ' ' { + ident += p.lit + sep = p.scanner.Peek() // if sep <= ' ', there is white space before the next token + p.next() + } + } + if ident == "" { + p.expect(scanner.Ident) // use expect() for error handling + } + return ident +} + +// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . +// +func (p *parser) parseQualifiedName() (id, name string) { + p.expect('@') + id = p.parsePackageId() + p.expect('.') + // Per rev f280b8a485fd (10/2/2013), qualified names may be used for anonymous fields. + if p.tok == '?' { + p.next() + } else { + name = p.parseDotIdent() + } + return +} + +// getPkg returns the package for a given id. If the package is +// not found, create the package and add it to the p.localPkgs +// and p.sharedPkgs maps. name is the (expected) name of the +// package. If name == "", the package name is expected to be +// set later via an import clause in the export data. +// +// id identifies a package, usually by a canonical package path like +// "encoding/json" but possibly by a non-canonical import path like +// "./json". +// +func (p *parser) getPkg(id, name string) *types.Package { + // package unsafe is not in the packages maps - handle explicitly + if id == "unsafe" { + return types.Unsafe + } + + pkg := p.localPkgs[id] + if pkg == nil { + // first import of id from this package + pkg = p.sharedPkgs[id] + if pkg == nil { + // first import of id by this importer; + // add (possibly unnamed) pkg to shared packages + pkg = types.NewPackage(id, name) + p.sharedPkgs[id] = pkg + } + // add (possibly unnamed) pkg to local packages + if p.localPkgs == nil { + p.localPkgs = make(map[string]*types.Package) + } + p.localPkgs[id] = pkg + } else if name != "" { + // package exists already and we have an expected package name; + // make sure names match or set package name if necessary + if pname := pkg.Name(); pname == "" { + pkg.SetName(name) + } else if pname != name { + p.errorf("%s package name mismatch: %s (given) vs %s (expected)", id, pname, name) + } + } + return pkg +} + +// parseExportedName is like parseQualifiedName, but +// the package id is resolved to an imported *types.Package. +// +func (p *parser) parseExportedName() (pkg *types.Package, name string) { + id, name := p.parseQualifiedName() + pkg = p.getPkg(id, "") + return +} + +// ---------------------------------------------------------------------------- +// Types + +// BasicType = identifier . +// +func (p *parser) parseBasicType() types.Type { + id := p.expect(scanner.Ident) + obj := types.Universe.Lookup(id) + if obj, ok := obj.(*types.TypeName); ok { + return obj.Type() + } + p.errorf("not a basic type: %s", id) + return nil +} + +// ArrayType = "[" int_lit "]" Type . +// +func (p *parser) parseArrayType(parent *types.Package) types.Type { + // "[" already consumed and lookahead known not to be "]" + lit := p.expect(scanner.Int) + p.expect(']') + elem := p.parseType(parent) + n, err := strconv.ParseInt(lit, 10, 64) + if err != nil { + p.error(err) + } + return types.NewArray(elem, n) +} + +// MapType = "map" "[" Type "]" Type . +// +func (p *parser) parseMapType(parent *types.Package) types.Type { + p.expectKeyword("map") + p.expect('[') + key := p.parseType(parent) + p.expect(']') + elem := p.parseType(parent) + return types.NewMap(key, elem) +} + +// Name = identifier | "?" | QualifiedName . +// +// For unqualified and anonymous names, the returned package is the parent +// package unless parent == nil, in which case the returned package is the +// package being imported. (The parent package is not nil if the the name +// is an unqualified struct field or interface method name belonging to a +// type declared in another package.) +// +// For qualified names, the returned package is nil (and not created if +// it doesn't exist yet) unless materializePkg is set (which creates an +// unnamed package with valid package path). In the latter case, a +// subsequent import clause is expected to provide a name for the package. +// +func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { + pkg = parent + if pkg == nil { + pkg = p.sharedPkgs[p.id] + } + switch p.tok { + case scanner.Ident: + name = p.lit + p.next() + case '?': + // anonymous + p.next() + case '@': + // exported name prefixed with package path + pkg = nil + var id string + id, name = p.parseQualifiedName() + if materializePkg { + pkg = p.getPkg(id, "") + } + default: + p.error("name expected") + } + return +} + +func deref(typ types.Type) types.Type { + if p, _ := typ.(*types.Pointer); p != nil { + return p.Elem() + } + return typ +} + +// Field = Name Type [ string_lit ] . +// +func (p *parser) parseField(parent *types.Package) (*types.Var, string) { + pkg, name := p.parseName(parent, true) + + if name == "_" { + // Blank fields should be package-qualified because they + // are unexported identifiers, but gc does not qualify them. + // Assuming that the ident belongs to the current package + // causes types to change during re-exporting, leading + // to spurious "can't assign A to B" errors from go/types. + // As a workaround, pretend all blank fields belong + // to the same unique dummy package. + const blankpkg = "<_>" + pkg = p.getPkg(blankpkg, blankpkg) + } + + typ := p.parseType(parent) + anonymous := false + if name == "" { + // anonymous field - typ must be T or *T and T must be a type name + switch typ := deref(typ).(type) { + case *types.Basic: // basic types are named types + pkg = nil // objects defined in Universe scope have no package + name = typ.Name() + case *types.Named: + name = typ.Obj().Name() + default: + p.errorf("anonymous field expected") + } + anonymous = true + } + tag := "" + if p.tok == scanner.String { + s := p.expect(scanner.String) + var err error + tag, err = strconv.Unquote(s) + if err != nil { + p.errorf("invalid struct tag %s: %s", s, err) + } + } + return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag +} + +// StructType = "struct" "{" [ FieldList ] "}" . +// FieldList = Field { ";" Field } . +// +func (p *parser) parseStructType(parent *types.Package) types.Type { + var fields []*types.Var + var tags []string + + p.expectKeyword("struct") + p.expect('{') + for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { + if i > 0 { + p.expect(';') + } + fld, tag := p.parseField(parent) + if tag != "" && tags == nil { + tags = make([]string, i) + } + if tags != nil { + tags = append(tags, tag) + } + fields = append(fields, fld) + } + p.expect('}') + + return types.NewStruct(fields, tags) +} + +// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . +// +func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { + _, name := p.parseName(nil, false) + // remove gc-specific parameter numbering + if i := strings.Index(name, "·"); i >= 0 { + name = name[:i] + } + if p.tok == '.' { + p.expectSpecial("...") + isVariadic = true + } + typ := p.parseType(nil) + if isVariadic { + typ = types.NewSlice(typ) + } + // ignore argument tag (e.g. "noescape") + if p.tok == scanner.String { + p.next() + } + // TODO(gri) should we provide a package? + par = types.NewVar(token.NoPos, nil, name, typ) + return +} + +// Parameters = "(" [ ParameterList ] ")" . +// ParameterList = { Parameter "," } Parameter . +// +func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { + p.expect('(') + for p.tok != ')' && p.tok != scanner.EOF { + if len(list) > 0 { + p.expect(',') + } + par, variadic := p.parseParameter() + list = append(list, par) + if variadic { + if isVariadic { + p.error("... not on final argument") + } + isVariadic = true + } + } + p.expect(')') + + return +} + +// Signature = Parameters [ Result ] . +// Result = Type | Parameters . +// +func (p *parser) parseSignature(recv *types.Var) *types.Signature { + params, isVariadic := p.parseParameters() + + // optional result type + var results []*types.Var + if p.tok == '(' { + var variadic bool + results, variadic = p.parseParameters() + if variadic { + p.error("... not permitted on result type") + } + } + + return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) +} + +// InterfaceType = "interface" "{" [ MethodList ] "}" . +// MethodList = Method { ";" Method } . +// Method = Name Signature . +// +// The methods of embedded interfaces are always "inlined" +// by the compiler and thus embedded interfaces are never +// visible in the export data. +// +func (p *parser) parseInterfaceType(parent *types.Package) types.Type { + var methods []*types.Func + + p.expectKeyword("interface") + p.expect('{') + for i := 0; p.tok != '}' && p.tok != scanner.EOF; i++ { + if i > 0 { + p.expect(';') + } + pkg, name := p.parseName(parent, true) + sig := p.parseSignature(nil) + methods = append(methods, types.NewFunc(token.NoPos, pkg, name, sig)) + } + p.expect('}') + + // Complete requires the type's embedded interfaces to be fully defined, + // but we do not define any + return types.NewInterface(methods, nil).Complete() +} + +// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . +// +func (p *parser) parseChanType(parent *types.Package) types.Type { + dir := types.SendRecv + if p.tok == scanner.Ident { + p.expectKeyword("chan") + if p.tok == '<' { + p.expectSpecial("<-") + dir = types.SendOnly + } + } else { + p.expectSpecial("<-") + p.expectKeyword("chan") + dir = types.RecvOnly + } + elem := p.parseType(parent) + return types.NewChan(dir, elem) +} + +// Type = +// BasicType | TypeName | ArrayType | SliceType | StructType | +// PointerType | FuncType | InterfaceType | MapType | ChanType | +// "(" Type ")" . +// +// BasicType = ident . +// TypeName = ExportedName . +// SliceType = "[" "]" Type . +// PointerType = "*" Type . +// FuncType = "func" Signature . +// +func (p *parser) parseType(parent *types.Package) types.Type { + switch p.tok { + case scanner.Ident: + switch p.lit { + default: + return p.parseBasicType() + case "struct": + return p.parseStructType(parent) + case "func": + // FuncType + p.next() + return p.parseSignature(nil) + case "interface": + return p.parseInterfaceType(parent) + case "map": + return p.parseMapType(parent) + case "chan": + return p.parseChanType(parent) + } + case '@': + // TypeName + pkg, name := p.parseExportedName() + return declTypeName(pkg, name).Type() + case '[': + p.next() // look ahead + if p.tok == ']' { + // SliceType + p.next() + return types.NewSlice(p.parseType(parent)) + } + return p.parseArrayType(parent) + case '*': + // PointerType + p.next() + return types.NewPointer(p.parseType(parent)) + case '<': + return p.parseChanType(parent) + case '(': + // "(" Type ")" + p.next() + typ := p.parseType(parent) + p.expect(')') + return typ + } + p.errorf("expected type, got %s (%q)", scanner.TokenString(p.tok), p.lit) + return nil +} + +// ---------------------------------------------------------------------------- +// Declarations + +// ImportDecl = "import" PackageName PackageId . +// +func (p *parser) parseImportDecl() { + p.expectKeyword("import") + name := p.parsePackageName() + p.getPkg(p.parsePackageId(), name) +} + +// int_lit = [ "+" | "-" ] { "0" ... "9" } . +// +func (p *parser) parseInt() string { + s := "" + switch p.tok { + case '-': + s = "-" + p.next() + case '+': + p.next() + } + return s + p.expect(scanner.Int) +} + +// number = int_lit [ "p" int_lit ] . +// +func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { + // mantissa + mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) + if mant == nil { + panic("invalid mantissa") + } + + if p.lit == "p" { + // exponent (base 2) + p.next() + exp, err := strconv.ParseInt(p.parseInt(), 10, 0) + if err != nil { + p.error(err) + } + if exp < 0 { + denom := constant.MakeInt64(1) + denom = constant.Shift(denom, token.SHL, uint(-exp)) + typ = types.Typ[types.UntypedFloat] + val = constant.BinaryOp(mant, token.QUO, denom) + return + } + if exp > 0 { + mant = constant.Shift(mant, token.SHL, uint(exp)) + } + typ = types.Typ[types.UntypedFloat] + val = mant + return + } + + typ = types.Typ[types.UntypedInt] + val = mant + return +} + +// ConstDecl = "const" ExportedName [ Type ] "=" Literal . +// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . +// bool_lit = "true" | "false" . +// complex_lit = "(" float_lit "+" float_lit "i" ")" . +// rune_lit = "(" int_lit "+" int_lit ")" . +// string_lit = `"` { unicode_char } `"` . +// +func (p *parser) parseConstDecl() { + p.expectKeyword("const") + pkg, name := p.parseExportedName() + + var typ0 types.Type + if p.tok != '=' { + // constant types are never structured - no need for parent type + typ0 = p.parseType(nil) + } + + p.expect('=') + var typ types.Type + var val constant.Value + switch p.tok { + case scanner.Ident: + // bool_lit + if p.lit != "true" && p.lit != "false" { + p.error("expected true or false") + } + typ = types.Typ[types.UntypedBool] + val = constant.MakeBool(p.lit == "true") + p.next() + + case '-', scanner.Int: + // int_lit + typ, val = p.parseNumber() + + case '(': + // complex_lit or rune_lit + p.next() + if p.tok == scanner.Char { + p.next() + p.expect('+') + typ = types.Typ[types.UntypedRune] + _, val = p.parseNumber() + p.expect(')') + break + } + _, re := p.parseNumber() + p.expect('+') + _, im := p.parseNumber() + p.expectKeyword("i") + p.expect(')') + typ = types.Typ[types.UntypedComplex] + val = constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) + + case scanner.Char: + // rune_lit + typ = types.Typ[types.UntypedRune] + val = constant.MakeFromLiteral(p.lit, token.CHAR, 0) + p.next() + + case scanner.String: + // string_lit + typ = types.Typ[types.UntypedString] + val = constant.MakeFromLiteral(p.lit, token.STRING, 0) + p.next() + + default: + p.errorf("expected literal got %s", scanner.TokenString(p.tok)) + } + + if typ0 == nil { + typ0 = typ + } + + pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) +} + +// TypeDecl = "type" ExportedName Type . +// +func (p *parser) parseTypeDecl() { + p.expectKeyword("type") + pkg, name := p.parseExportedName() + obj := declTypeName(pkg, name) + + // The type object may have been imported before and thus already + // have a type associated with it. We still need to parse the type + // structure, but throw it away if the object already has a type. + // This ensures that all imports refer to the same type object for + // a given type declaration. + typ := p.parseType(pkg) + + if name := obj.Type().(*types.Named); name.Underlying() == nil { + name.SetUnderlying(typ) + } +} + +// VarDecl = "var" ExportedName Type . +// +func (p *parser) parseVarDecl() { + p.expectKeyword("var") + pkg, name := p.parseExportedName() + typ := p.parseType(pkg) + pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) +} + +// Func = Signature [ Body ] . +// Body = "{" ... "}" . +// +func (p *parser) parseFunc(recv *types.Var) *types.Signature { + sig := p.parseSignature(recv) + if p.tok == '{' { + p.next() + for i := 1; i > 0; p.next() { + switch p.tok { + case '{': + i++ + case '}': + i-- + } + } + } + return sig +} + +// MethodDecl = "func" Receiver Name Func . +// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . +// +func (p *parser) parseMethodDecl() { + // "func" already consumed + p.expect('(') + recv, _ := p.parseParameter() // receiver + p.expect(')') + + // determine receiver base type object + base := deref(recv.Type()).(*types.Named) + + // parse method name, signature, and possibly inlined body + _, name := p.parseName(nil, false) + sig := p.parseFunc(recv) + + // methods always belong to the same package as the base type object + pkg := base.Obj().Pkg() + + // add method to type unless type was imported before + // and method exists already + // TODO(gri) This leads to a quadratic algorithm - ok for now because method counts are small. + base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) +} + +// FuncDecl = "func" ExportedName Func . +// +func (p *parser) parseFuncDecl() { + // "func" already consumed + pkg, name := p.parseExportedName() + typ := p.parseFunc(nil) + pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) +} + +// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . +// +func (p *parser) parseDecl() { + if p.tok == scanner.Ident { + switch p.lit { + case "import": + p.parseImportDecl() + case "const": + p.parseConstDecl() + case "type": + p.parseTypeDecl() + case "var": + p.parseVarDecl() + case "func": + p.next() // look ahead + if p.tok == '(' { + p.parseMethodDecl() + } else { + p.parseFuncDecl() + } + } + } + p.expect('\n') +} + +// ---------------------------------------------------------------------------- +// Export + +// Export = "PackageClause { Decl } "$$" . +// PackageClause = "package" PackageName [ "safe" ] "\n" . +// +func (p *parser) parseExport() *types.Package { + p.expectKeyword("package") + name := p.parsePackageName() + if p.tok == scanner.Ident && p.lit == "safe" { + // package was compiled with -u option - ignore + p.next() + } + p.expect('\n') + + pkg := p.getPkg(p.id, name) + + for p.tok != '$' && p.tok != scanner.EOF { + p.parseDecl() + } + + if ch := p.scanner.Peek(); p.tok != '$' || ch != '$' { + // don't call next()/expect() since reading past the + // export data may cause scanner errors (e.g. NUL chars) + p.errorf("expected '$$', got %s %c", scanner.TokenString(p.tok), ch) + } + + if n := p.scanner.ErrorCount; n != 0 { + p.errorf("expected no scanner errors, got %d", n) + } + + // Record all locally referenced packages as imports. + var imports []*types.Package + for id, pkg2 := range p.localPkgs { + if pkg2.Name() == "" { + p.errorf("%s package has no name", id) + } + if id == p.id { + continue // avoid self-edge + } + imports = append(imports, pkg2) + } + sort.Sort(byPath(imports)) + pkg.SetImports(imports) + + // package was imported completely and without errors + pkg.MarkComplete() + + return pkg +} + +type byPath []*types.Package + +func (a byPath) Len() int { return len(a) } +func (a byPath) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a byPath) Less(i, j int) bool { return a[i].Path() < a[j].Path() } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go new file mode 100644 index 00000000000..5f00153f896 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go @@ -0,0 +1,726 @@ +// 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. + +// Indexed binary package export. +// This file was derived from $GOROOT/src/cmd/compile/internal/gc/iexport.go; +// see that file for specification of the format. + +package gcimporter + +import ( + "bytes" + "encoding/binary" + "go/ast" + "go/constant" + "go/token" + "go/types" + "io" + "math/big" + "reflect" + "sort" +) + +// Current indexed export format version. Increase with each format change. +// 0: Go1.11 encoding +const iexportVersion = 0 + +// IExportData returns the binary export data for pkg. +// If no file set is provided, position info will be missing. +func IExportData(fset *token.FileSet, pkg *types.Package) (b []byte, err error) { + defer func() { + if e := recover(); e != nil { + if ierr, ok := e.(internalError); ok { + err = ierr + return + } + // Not an internal error; panic again. + panic(e) + } + }() + + p := iexporter{ + out: bytes.NewBuffer(nil), + fset: fset, + allPkgs: map[*types.Package]bool{}, + stringIndex: map[string]uint64{}, + declIndex: map[types.Object]uint64{}, + typIndex: map[types.Type]uint64{}, + } + + for i, pt := range predeclared() { + p.typIndex[pt] = uint64(i) + } + if len(p.typIndex) > predeclReserved { + panic(internalErrorf("too many predeclared types: %d > %d", len(p.typIndex), predeclReserved)) + } + + // Initialize work queue with exported declarations. + scope := pkg.Scope() + for _, name := range scope.Names() { + if ast.IsExported(name) { + p.pushDecl(scope.Lookup(name)) + } + } + + // Loop until no more work. + for !p.declTodo.empty() { + p.doDecl(p.declTodo.popHead()) + } + + // Append indices to data0 section. + dataLen := uint64(p.data0.Len()) + w := p.newWriter() + w.writeIndex(p.declIndex, pkg) + w.flush() + + // Assemble header. + var hdr intWriter + hdr.WriteByte('i') + hdr.uint64(iexportVersion) + hdr.uint64(uint64(p.strings.Len())) + hdr.uint64(dataLen) + + // Flush output. + io.Copy(p.out, &hdr) + io.Copy(p.out, &p.strings) + io.Copy(p.out, &p.data0) + + return p.out.Bytes(), nil +} + +// writeIndex writes out an object index. mainIndex indicates whether +// we're writing out the main index, which is also read by +// non-compiler tools and includes a complete package description +// (i.e., name and height). +func (w *exportWriter) writeIndex(index map[types.Object]uint64, localpkg *types.Package) { + // Build a map from packages to objects from that package. + pkgObjs := map[*types.Package][]types.Object{} + + // For the main index, make sure to include every package that + // we reference, even if we're not exporting (or reexporting) + // any symbols from it. + pkgObjs[localpkg] = nil + for pkg := range w.p.allPkgs { + pkgObjs[pkg] = nil + } + + for obj := range index { + pkgObjs[obj.Pkg()] = append(pkgObjs[obj.Pkg()], obj) + } + + var pkgs []*types.Package + for pkg, objs := range pkgObjs { + pkgs = append(pkgs, pkg) + + sort.Slice(objs, func(i, j int) bool { + return objs[i].Name() < objs[j].Name() + }) + } + + sort.Slice(pkgs, func(i, j int) bool { + return pkgs[i].Path() < pkgs[j].Path() + }) + + w.uint64(uint64(len(pkgs))) + for _, pkg := range pkgs { + w.string(pkg.Path()) + w.string(pkg.Name()) + w.uint64(uint64(0)) // package height is not needed for go/types + + objs := pkgObjs[pkg] + w.uint64(uint64(len(objs))) + for _, obj := range objs { + w.string(obj.Name()) + w.uint64(index[obj]) + } + } +} + +type iexporter struct { + fset *token.FileSet + out *bytes.Buffer + + // allPkgs tracks all packages that have been referenced by + // the export data, so we can ensure to include them in the + // main index. + allPkgs map[*types.Package]bool + + declTodo objQueue + + strings intWriter + stringIndex map[string]uint64 + + data0 intWriter + declIndex map[types.Object]uint64 + typIndex map[types.Type]uint64 +} + +// stringOff returns the offset of s within the string section. +// If not already present, it's added to the end. +func (p *iexporter) stringOff(s string) uint64 { + off, ok := p.stringIndex[s] + if !ok { + off = uint64(p.strings.Len()) + p.stringIndex[s] = off + + p.strings.uint64(uint64(len(s))) + p.strings.WriteString(s) + } + return off +} + +// pushDecl adds n to the declaration work queue, if not already present. +func (p *iexporter) pushDecl(obj types.Object) { + // Package unsafe is known to the compiler and predeclared. + assert(obj.Pkg() != types.Unsafe) + + if _, ok := p.declIndex[obj]; ok { + return + } + + p.declIndex[obj] = ^uint64(0) // mark n present in work queue + p.declTodo.pushTail(obj) +} + +// exportWriter handles writing out individual data section chunks. +type exportWriter struct { + p *iexporter + + data intWriter + currPkg *types.Package + prevFile string + prevLine int64 +} + +func (p *iexporter) doDecl(obj types.Object) { + w := p.newWriter() + w.setPkg(obj.Pkg(), false) + + switch obj := obj.(type) { + case *types.Var: + w.tag('V') + w.pos(obj.Pos()) + w.typ(obj.Type(), obj.Pkg()) + + case *types.Func: + sig, _ := obj.Type().(*types.Signature) + if sig.Recv() != nil { + panic(internalErrorf("unexpected method: %v", sig)) + } + w.tag('F') + w.pos(obj.Pos()) + w.signature(sig) + + case *types.Const: + w.tag('C') + w.pos(obj.Pos()) + w.value(obj.Type(), obj.Val()) + + case *types.TypeName: + if obj.IsAlias() { + w.tag('A') + w.pos(obj.Pos()) + w.typ(obj.Type(), obj.Pkg()) + break + } + + // Defined type. + w.tag('T') + w.pos(obj.Pos()) + + underlying := obj.Type().Underlying() + w.typ(underlying, obj.Pkg()) + + t := obj.Type() + if types.IsInterface(t) { + break + } + + named, ok := t.(*types.Named) + if !ok { + panic(internalErrorf("%s is not a defined type", t)) + } + + n := named.NumMethods() + w.uint64(uint64(n)) + for i := 0; i < n; i++ { + m := named.Method(i) + w.pos(m.Pos()) + w.string(m.Name()) + sig, _ := m.Type().(*types.Signature) + w.param(sig.Recv()) + w.signature(sig) + } + + default: + panic(internalErrorf("unexpected object: %v", obj)) + } + + p.declIndex[obj] = w.flush() +} + +func (w *exportWriter) tag(tag byte) { + w.data.WriteByte(tag) +} + +func (w *exportWriter) pos(pos token.Pos) { + if w.p.fset == nil { + w.int64(0) + return + } + + p := w.p.fset.Position(pos) + file := p.Filename + line := int64(p.Line) + + // When file is the same as the last position (common case), + // we can save a few bytes by delta encoding just the line + // number. + // + // Note: Because data objects may be read out of order (or not + // at all), we can only apply delta encoding within a single + // object. This is handled implicitly by tracking prevFile and + // prevLine as fields of exportWriter. + + if file == w.prevFile { + delta := line - w.prevLine + w.int64(delta) + if delta == deltaNewFile { + w.int64(-1) + } + } else { + w.int64(deltaNewFile) + w.int64(line) // line >= 0 + w.string(file) + w.prevFile = file + } + w.prevLine = line +} + +func (w *exportWriter) pkg(pkg *types.Package) { + // Ensure any referenced packages are declared in the main index. + w.p.allPkgs[pkg] = true + + w.string(pkg.Path()) +} + +func (w *exportWriter) qualifiedIdent(obj types.Object) { + // Ensure any referenced declarations are written out too. + w.p.pushDecl(obj) + + w.string(obj.Name()) + w.pkg(obj.Pkg()) +} + +func (w *exportWriter) typ(t types.Type, pkg *types.Package) { + w.data.uint64(w.p.typOff(t, pkg)) +} + +func (p *iexporter) newWriter() *exportWriter { + return &exportWriter{p: p} +} + +func (w *exportWriter) flush() uint64 { + off := uint64(w.p.data0.Len()) + io.Copy(&w.p.data0, &w.data) + return off +} + +func (p *iexporter) typOff(t types.Type, pkg *types.Package) uint64 { + off, ok := p.typIndex[t] + if !ok { + w := p.newWriter() + w.doTyp(t, pkg) + off = predeclReserved + w.flush() + p.typIndex[t] = off + } + return off +} + +func (w *exportWriter) startType(k itag) { + w.data.uint64(uint64(k)) +} + +func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { + switch t := t.(type) { + case *types.Named: + w.startType(definedType) + w.qualifiedIdent(t.Obj()) + + case *types.Pointer: + w.startType(pointerType) + w.typ(t.Elem(), pkg) + + case *types.Slice: + w.startType(sliceType) + w.typ(t.Elem(), pkg) + + case *types.Array: + w.startType(arrayType) + w.uint64(uint64(t.Len())) + w.typ(t.Elem(), pkg) + + case *types.Chan: + w.startType(chanType) + // 1 RecvOnly; 2 SendOnly; 3 SendRecv + var dir uint64 + switch t.Dir() { + case types.RecvOnly: + dir = 1 + case types.SendOnly: + dir = 2 + case types.SendRecv: + dir = 3 + } + w.uint64(dir) + w.typ(t.Elem(), pkg) + + case *types.Map: + w.startType(mapType) + w.typ(t.Key(), pkg) + w.typ(t.Elem(), pkg) + + case *types.Signature: + w.startType(signatureType) + w.setPkg(pkg, true) + w.signature(t) + + case *types.Struct: + w.startType(structType) + w.setPkg(pkg, true) + + n := t.NumFields() + w.uint64(uint64(n)) + for i := 0; i < n; i++ { + f := t.Field(i) + w.pos(f.Pos()) + w.string(f.Name()) + w.typ(f.Type(), pkg) + w.bool(f.Anonymous()) + w.string(t.Tag(i)) // note (or tag) + } + + case *types.Interface: + w.startType(interfaceType) + w.setPkg(pkg, true) + + n := t.NumEmbeddeds() + w.uint64(uint64(n)) + for i := 0; i < n; i++ { + f := t.Embedded(i) + w.pos(f.Obj().Pos()) + w.typ(f.Obj().Type(), f.Obj().Pkg()) + } + + n = t.NumExplicitMethods() + w.uint64(uint64(n)) + for i := 0; i < n; i++ { + m := t.ExplicitMethod(i) + w.pos(m.Pos()) + w.string(m.Name()) + sig, _ := m.Type().(*types.Signature) + w.signature(sig) + } + + default: + panic(internalErrorf("unexpected type: %v, %v", t, reflect.TypeOf(t))) + } +} + +func (w *exportWriter) setPkg(pkg *types.Package, write bool) { + if write { + w.pkg(pkg) + } + + w.currPkg = pkg +} + +func (w *exportWriter) signature(sig *types.Signature) { + w.paramList(sig.Params()) + w.paramList(sig.Results()) + if sig.Params().Len() > 0 { + w.bool(sig.Variadic()) + } +} + +func (w *exportWriter) paramList(tup *types.Tuple) { + n := tup.Len() + w.uint64(uint64(n)) + for i := 0; i < n; i++ { + w.param(tup.At(i)) + } +} + +func (w *exportWriter) param(obj types.Object) { + w.pos(obj.Pos()) + w.localIdent(obj) + w.typ(obj.Type(), obj.Pkg()) +} + +func (w *exportWriter) value(typ types.Type, v constant.Value) { + w.typ(typ, nil) + + switch v.Kind() { + case constant.Bool: + w.bool(constant.BoolVal(v)) + case constant.Int: + var i big.Int + if i64, exact := constant.Int64Val(v); exact { + i.SetInt64(i64) + } else if ui64, exact := constant.Uint64Val(v); exact { + i.SetUint64(ui64) + } else { + i.SetString(v.ExactString(), 10) + } + w.mpint(&i, typ) + case constant.Float: + f := constantToFloat(v) + w.mpfloat(f, typ) + case constant.Complex: + w.mpfloat(constantToFloat(constant.Real(v)), typ) + w.mpfloat(constantToFloat(constant.Imag(v)), typ) + case constant.String: + w.string(constant.StringVal(v)) + case constant.Unknown: + // package contains type errors + default: + panic(internalErrorf("unexpected value %v (%T)", v, v)) + } +} + +// constantToFloat converts a constant.Value with kind constant.Float to a +// big.Float. +func constantToFloat(x constant.Value) *big.Float { + assert(x.Kind() == constant.Float) + // Use the same floating-point precision (512) as cmd/compile + // (see Mpprec in cmd/compile/internal/gc/mpfloat.go). + const mpprec = 512 + var f big.Float + f.SetPrec(mpprec) + if v, exact := constant.Float64Val(x); exact { + // float64 + f.SetFloat64(v) + } else if num, denom := constant.Num(x), constant.Denom(x); num.Kind() == constant.Int { + // TODO(gri): add big.Rat accessor to constant.Value. + n := valueToRat(num) + d := valueToRat(denom) + f.SetRat(n.Quo(n, d)) + } else { + // Value too large to represent as a fraction => inaccessible. + // TODO(gri): add big.Float accessor to constant.Value. + _, ok := f.SetString(x.ExactString()) + assert(ok) + } + return &f +} + +// mpint exports a multi-precision integer. +// +// For unsigned types, small values are written out as a single +// byte. Larger values are written out as a length-prefixed big-endian +// byte string, where the length prefix is encoded as its complement. +// For example, bytes 0, 1, and 2 directly represent the integer +// values 0, 1, and 2; while bytes 255, 254, and 253 indicate a 1-, +// 2-, and 3-byte big-endian string follow. +// +// Encoding for signed types use the same general approach as for +// unsigned types, except small values use zig-zag encoding and the +// bottom bit of length prefix byte for large values is reserved as a +// sign bit. +// +// The exact boundary between small and large encodings varies +// according to the maximum number of bytes needed to encode a value +// of type typ. As a special case, 8-bit types are always encoded as a +// single byte. +// +// TODO(mdempsky): Is this level of complexity really worthwhile? +func (w *exportWriter) mpint(x *big.Int, typ types.Type) { + basic, ok := typ.Underlying().(*types.Basic) + if !ok { + panic(internalErrorf("unexpected type %v (%T)", typ.Underlying(), typ.Underlying())) + } + + signed, maxBytes := intSize(basic) + + negative := x.Sign() < 0 + if !signed && negative { + panic(internalErrorf("negative unsigned integer; type %v, value %v", typ, x)) + } + + b := x.Bytes() + if len(b) > 0 && b[0] == 0 { + panic(internalErrorf("leading zeros")) + } + if uint(len(b)) > maxBytes { + panic(internalErrorf("bad mpint length: %d > %d (type %v, value %v)", len(b), maxBytes, typ, x)) + } + + maxSmall := 256 - maxBytes + if signed { + maxSmall = 256 - 2*maxBytes + } + if maxBytes == 1 { + maxSmall = 256 + } + + // Check if x can use small value encoding. + if len(b) <= 1 { + var ux uint + if len(b) == 1 { + ux = uint(b[0]) + } + if signed { + ux <<= 1 + if negative { + ux-- + } + } + if ux < maxSmall { + w.data.WriteByte(byte(ux)) + return + } + } + + n := 256 - uint(len(b)) + if signed { + n = 256 - 2*uint(len(b)) + if negative { + n |= 1 + } + } + if n < maxSmall || n >= 256 { + panic(internalErrorf("encoding mistake: %d, %v, %v => %d", len(b), signed, negative, n)) + } + + w.data.WriteByte(byte(n)) + w.data.Write(b) +} + +// mpfloat exports a multi-precision floating point number. +// +// The number's value is decomposed into mantissa × 2**exponent, where +// mantissa is an integer. The value is written out as mantissa (as a +// multi-precision integer) and then the exponent, except exponent is +// omitted if mantissa is zero. +func (w *exportWriter) mpfloat(f *big.Float, typ types.Type) { + if f.IsInf() { + panic("infinite constant") + } + + // Break into f = mant × 2**exp, with 0.5 <= mant < 1. + var mant big.Float + exp := int64(f.MantExp(&mant)) + + // Scale so that mant is an integer. + prec := mant.MinPrec() + mant.SetMantExp(&mant, int(prec)) + exp -= int64(prec) + + manti, acc := mant.Int(nil) + if acc != big.Exact { + panic(internalErrorf("mantissa scaling failed for %f (%s)", f, acc)) + } + w.mpint(manti, typ) + if manti.Sign() != 0 { + w.int64(exp) + } +} + +func (w *exportWriter) bool(b bool) bool { + var x uint64 + if b { + x = 1 + } + w.uint64(x) + return b +} + +func (w *exportWriter) int64(x int64) { w.data.int64(x) } +func (w *exportWriter) uint64(x uint64) { w.data.uint64(x) } +func (w *exportWriter) string(s string) { w.uint64(w.p.stringOff(s)) } + +func (w *exportWriter) localIdent(obj types.Object) { + // Anonymous parameters. + if obj == nil { + w.string("") + return + } + + name := obj.Name() + if name == "_" { + w.string("_") + return + } + + w.string(name) +} + +type intWriter struct { + bytes.Buffer +} + +func (w *intWriter) int64(x int64) { + var buf [binary.MaxVarintLen64]byte + n := binary.PutVarint(buf[:], x) + w.Write(buf[:n]) +} + +func (w *intWriter) uint64(x uint64) { + var buf [binary.MaxVarintLen64]byte + n := binary.PutUvarint(buf[:], x) + w.Write(buf[:n]) +} + +func assert(cond bool) { + if !cond { + panic("internal error: assertion failed") + } +} + +// The below is copied from go/src/cmd/compile/internal/gc/syntax.go. + +// objQueue is a FIFO queue of types.Object. The zero value of objQueue is +// a ready-to-use empty queue. +type objQueue struct { + ring []types.Object + head, tail int +} + +// empty returns true if q contains no Nodes. +func (q *objQueue) empty() bool { + return q.head == q.tail +} + +// pushTail appends n to the tail of the queue. +func (q *objQueue) pushTail(obj types.Object) { + if len(q.ring) == 0 { + q.ring = make([]types.Object, 16) + } else if q.head+len(q.ring) == q.tail { + // Grow the ring. + nring := make([]types.Object, len(q.ring)*2) + // Copy the old elements. + part := q.ring[q.head%len(q.ring):] + if q.tail-q.head <= len(part) { + part = part[:q.tail-q.head] + copy(nring, part) + } else { + pos := copy(nring, part) + copy(nring[pos:], q.ring[:q.tail%len(q.ring)]) + } + q.ring, q.head, q.tail = nring, 0, q.tail-q.head + } + + q.ring[q.tail%len(q.ring)] = obj + q.tail++ +} + +// popHead pops a node from the head of the queue. It panics if q is empty. +func (q *objQueue) popHead() types.Object { + if q.empty() { + panic("dequeue empty") + } + obj := q.ring[q.head%len(q.ring)] + q.head++ + return obj +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go new file mode 100644 index 00000000000..3af95f4a16a --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go @@ -0,0 +1,636 @@ +// 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. + +// Indexed package import. +// See cmd/compile/internal/gc/iexport.go for the export data format. + +// This file is a copy of $GOROOT/src/go/internal/gcimporter/iimport.go. + +package gcimporter + +import ( + "bytes" + "encoding/binary" + "fmt" + "go/constant" + "go/token" + "go/types" + "io" + "sort" +) + +type intReader struct { + *bytes.Reader + path string +} + +func (r *intReader) int64() int64 { + i, err := binary.ReadVarint(r.Reader) + if err != nil { + errorf("import %q: read varint error: %v", r.path, err) + } + return i +} + +func (r *intReader) uint64() uint64 { + i, err := binary.ReadUvarint(r.Reader) + if err != nil { + errorf("import %q: read varint error: %v", r.path, err) + } + return i +} + +const predeclReserved = 32 + +type itag uint64 + +const ( + // Types + definedType itag = iota + pointerType + sliceType + arrayType + chanType + mapType + signatureType + structType + interfaceType +) + +// IImportData imports a package from the serialized package data +// and returns the number of bytes consumed and a reference to the package. +// If the export data version is not recognized or the format is otherwise +// compromised, an error is returned. +func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { + const currentVersion = 1 + version := int64(-1) + defer func() { + if e := recover(); e != nil { + if version > currentVersion { + err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) + } else { + err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) + } + } + }() + + r := &intReader{bytes.NewReader(data), path} + + version = int64(r.uint64()) + switch version { + case currentVersion, 0: + default: + errorf("unknown iexport format version %d", version) + } + + sLen := int64(r.uint64()) + dLen := int64(r.uint64()) + + whence, _ := r.Seek(0, io.SeekCurrent) + stringData := data[whence : whence+sLen] + declData := data[whence+sLen : whence+sLen+dLen] + r.Seek(sLen+dLen, io.SeekCurrent) + + p := iimporter{ + ipath: path, + version: int(version), + + stringData: stringData, + stringCache: make(map[uint64]string), + pkgCache: make(map[uint64]*types.Package), + + declData: declData, + pkgIndex: make(map[*types.Package]map[string]uint64), + typCache: make(map[uint64]types.Type), + + fake: fakeFileSet{ + fset: fset, + files: make(map[string]*token.File), + }, + } + + for i, pt := range predeclared() { + p.typCache[uint64(i)] = pt + } + + pkgList := make([]*types.Package, r.uint64()) + for i := range pkgList { + pkgPathOff := r.uint64() + pkgPath := p.stringAt(pkgPathOff) + pkgName := p.stringAt(r.uint64()) + _ = r.uint64() // package height; unused by go/types + + if pkgPath == "" { + pkgPath = path + } + pkg := imports[pkgPath] + if pkg == nil { + pkg = types.NewPackage(pkgPath, pkgName) + imports[pkgPath] = pkg + } else if pkg.Name() != pkgName { + errorf("conflicting names %s and %s for package %q", pkg.Name(), pkgName, path) + } + + p.pkgCache[pkgPathOff] = pkg + + nameIndex := make(map[string]uint64) + for nSyms := r.uint64(); nSyms > 0; nSyms-- { + name := p.stringAt(r.uint64()) + nameIndex[name] = r.uint64() + } + + p.pkgIndex[pkg] = nameIndex + pkgList[i] = pkg + } + if len(pkgList) == 0 { + errorf("no packages found for %s", path) + panic("unreachable") + } + var localpkg *types.Package + for _, pkg := range pkgList { + if pkg.Path() == path { + localpkg = pkg + break + } + } + if localpkg == nil { + localpkg = pkgList[0] + } + + names := make([]string, 0, len(p.pkgIndex[localpkg])) + for name := range p.pkgIndex[localpkg] { + names = append(names, name) + } + sort.Strings(names) + for _, name := range names { + p.doDecl(localpkg, name) + } + + for _, typ := range p.interfaceList { + typ.Complete() + } + + // record all referenced packages as imports + list := append(([]*types.Package)(nil), pkgList[1:]...) + sort.Sort(byPath(list)) + localpkg.SetImports(list) + + // package was imported completely and without errors + localpkg.MarkComplete() + + consumed, _ := r.Seek(0, io.SeekCurrent) + return int(consumed), localpkg, nil +} + +type iimporter struct { + ipath string + version int + + stringData []byte + stringCache map[uint64]string + pkgCache map[uint64]*types.Package + + declData []byte + pkgIndex map[*types.Package]map[string]uint64 + typCache map[uint64]types.Type + + fake fakeFileSet + interfaceList []*types.Interface +} + +func (p *iimporter) doDecl(pkg *types.Package, name string) { + // See if we've already imported this declaration. + if obj := pkg.Scope().Lookup(name); obj != nil { + return + } + + off, ok := p.pkgIndex[pkg][name] + if !ok { + errorf("%v.%v not in index", pkg, name) + } + + r := &importReader{p: p, currPkg: pkg} + r.declReader.Reset(p.declData[off:]) + + r.obj(name) +} + +func (p *iimporter) stringAt(off uint64) string { + if s, ok := p.stringCache[off]; ok { + return s + } + + slen, n := binary.Uvarint(p.stringData[off:]) + if n <= 0 { + errorf("varint failed") + } + spos := off + uint64(n) + s := string(p.stringData[spos : spos+slen]) + p.stringCache[off] = s + return s +} + +func (p *iimporter) pkgAt(off uint64) *types.Package { + if pkg, ok := p.pkgCache[off]; ok { + return pkg + } + path := p.stringAt(off) + errorf("missing package %q in %q", path, p.ipath) + return nil +} + +func (p *iimporter) typAt(off uint64, base *types.Named) types.Type { + if t, ok := p.typCache[off]; ok && (base == nil || !isInterface(t)) { + return t + } + + if off < predeclReserved { + errorf("predeclared type missing from cache: %v", off) + } + + r := &importReader{p: p} + r.declReader.Reset(p.declData[off-predeclReserved:]) + t := r.doType(base) + + if base == nil || !isInterface(t) { + p.typCache[off] = t + } + return t +} + +type importReader struct { + p *iimporter + declReader bytes.Reader + currPkg *types.Package + prevFile string + prevLine int64 + prevColumn int64 +} + +func (r *importReader) obj(name string) { + tag := r.byte() + pos := r.pos() + + switch tag { + case 'A': + typ := r.typ() + + r.declare(types.NewTypeName(pos, r.currPkg, name, typ)) + + case 'C': + typ, val := r.value() + + r.declare(types.NewConst(pos, r.currPkg, name, typ, val)) + + case 'F': + sig := r.signature(nil) + + r.declare(types.NewFunc(pos, r.currPkg, name, sig)) + + case 'T': + // Types can be recursive. We need to setup a stub + // declaration before recursing. + obj := types.NewTypeName(pos, r.currPkg, name, nil) + named := types.NewNamed(obj, nil, nil) + r.declare(obj) + + underlying := r.p.typAt(r.uint64(), named).Underlying() + named.SetUnderlying(underlying) + + if !isInterface(underlying) { + for n := r.uint64(); n > 0; n-- { + mpos := r.pos() + mname := r.ident() + recv := r.param() + msig := r.signature(recv) + + named.AddMethod(types.NewFunc(mpos, r.currPkg, mname, msig)) + } + } + + case 'V': + typ := r.typ() + + r.declare(types.NewVar(pos, r.currPkg, name, typ)) + + default: + errorf("unexpected tag: %v", tag) + } +} + +func (r *importReader) declare(obj types.Object) { + obj.Pkg().Scope().Insert(obj) +} + +func (r *importReader) value() (typ types.Type, val constant.Value) { + typ = r.typ() + + switch b := typ.Underlying().(*types.Basic); b.Info() & types.IsConstType { + case types.IsBoolean: + val = constant.MakeBool(r.bool()) + + case types.IsString: + val = constant.MakeString(r.string()) + + case types.IsInteger: + val = r.mpint(b) + + case types.IsFloat: + val = r.mpfloat(b) + + case types.IsComplex: + re := r.mpfloat(b) + im := r.mpfloat(b) + val = constant.BinaryOp(re, token.ADD, constant.MakeImag(im)) + + default: + if b.Kind() == types.Invalid { + val = constant.MakeUnknown() + return + } + errorf("unexpected type %v", typ) // panics + panic("unreachable") + } + + return +} + +func intSize(b *types.Basic) (signed bool, maxBytes uint) { + if (b.Info() & types.IsUntyped) != 0 { + return true, 64 + } + + switch b.Kind() { + case types.Float32, types.Complex64: + return true, 3 + case types.Float64, types.Complex128: + return true, 7 + } + + signed = (b.Info() & types.IsUnsigned) == 0 + switch b.Kind() { + case types.Int8, types.Uint8: + maxBytes = 1 + case types.Int16, types.Uint16: + maxBytes = 2 + case types.Int32, types.Uint32: + maxBytes = 4 + default: + maxBytes = 8 + } + + return +} + +func (r *importReader) mpint(b *types.Basic) constant.Value { + signed, maxBytes := intSize(b) + + maxSmall := 256 - maxBytes + if signed { + maxSmall = 256 - 2*maxBytes + } + if maxBytes == 1 { + maxSmall = 256 + } + + n, _ := r.declReader.ReadByte() + if uint(n) < maxSmall { + v := int64(n) + if signed { + v >>= 1 + if n&1 != 0 { + v = ^v + } + } + return constant.MakeInt64(v) + } + + v := -n + if signed { + v = -(n &^ 1) >> 1 + } + if v < 1 || uint(v) > maxBytes { + errorf("weird decoding: %v, %v => %v", n, signed, v) + } + + buf := make([]byte, v) + io.ReadFull(&r.declReader, buf) + + // convert to little endian + // TODO(gri) go/constant should have a more direct conversion function + // (e.g., once it supports a big.Float based implementation) + for i, j := 0, len(buf)-1; i < j; i, j = i+1, j-1 { + buf[i], buf[j] = buf[j], buf[i] + } + + x := constant.MakeFromBytes(buf) + if signed && n&1 != 0 { + x = constant.UnaryOp(token.SUB, x, 0) + } + return x +} + +func (r *importReader) mpfloat(b *types.Basic) constant.Value { + x := r.mpint(b) + if constant.Sign(x) == 0 { + return x + } + + exp := r.int64() + switch { + case exp > 0: + x = constant.Shift(x, token.SHL, uint(exp)) + case exp < 0: + d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) + x = constant.BinaryOp(x, token.QUO, d) + } + return x +} + +func (r *importReader) ident() string { + return r.string() +} + +func (r *importReader) qualifiedIdent() (*types.Package, string) { + name := r.string() + pkg := r.pkg() + return pkg, name +} + +func (r *importReader) pos() token.Pos { + if r.p.version >= 1 { + r.posv1() + } else { + r.posv0() + } + + if r.prevFile == "" && r.prevLine == 0 && r.prevColumn == 0 { + return token.NoPos + } + return r.p.fake.pos(r.prevFile, int(r.prevLine), int(r.prevColumn)) +} + +func (r *importReader) posv0() { + delta := r.int64() + if delta != deltaNewFile { + r.prevLine += delta + } else if l := r.int64(); l == -1 { + r.prevLine += deltaNewFile + } else { + r.prevFile = r.string() + r.prevLine = l + } +} + +func (r *importReader) posv1() { + delta := r.int64() + r.prevColumn += delta >> 1 + if delta&1 != 0 { + delta = r.int64() + r.prevLine += delta >> 1 + if delta&1 != 0 { + r.prevFile = r.string() + } + } +} + +func (r *importReader) typ() types.Type { + return r.p.typAt(r.uint64(), nil) +} + +func isInterface(t types.Type) bool { + _, ok := t.(*types.Interface) + return ok +} + +func (r *importReader) pkg() *types.Package { return r.p.pkgAt(r.uint64()) } +func (r *importReader) string() string { return r.p.stringAt(r.uint64()) } + +func (r *importReader) doType(base *types.Named) types.Type { + switch k := r.kind(); k { + default: + errorf("unexpected kind tag in %q: %v", r.p.ipath, k) + return nil + + case definedType: + pkg, name := r.qualifiedIdent() + r.p.doDecl(pkg, name) + return pkg.Scope().Lookup(name).(*types.TypeName).Type() + case pointerType: + return types.NewPointer(r.typ()) + case sliceType: + return types.NewSlice(r.typ()) + case arrayType: + n := r.uint64() + return types.NewArray(r.typ(), int64(n)) + case chanType: + dir := chanDir(int(r.uint64())) + return types.NewChan(dir, r.typ()) + case mapType: + return types.NewMap(r.typ(), r.typ()) + case signatureType: + r.currPkg = r.pkg() + return r.signature(nil) + + case structType: + r.currPkg = r.pkg() + + fields := make([]*types.Var, r.uint64()) + tags := make([]string, len(fields)) + for i := range fields { + fpos := r.pos() + fname := r.ident() + ftyp := r.typ() + emb := r.bool() + tag := r.string() + + fields[i] = types.NewField(fpos, r.currPkg, fname, ftyp, emb) + tags[i] = tag + } + return types.NewStruct(fields, tags) + + case interfaceType: + r.currPkg = r.pkg() + + embeddeds := make([]types.Type, r.uint64()) + for i := range embeddeds { + _ = r.pos() + embeddeds[i] = r.typ() + } + + methods := make([]*types.Func, r.uint64()) + for i := range methods { + mpos := r.pos() + mname := r.ident() + + // TODO(mdempsky): Matches bimport.go, but I + // don't agree with this. + var recv *types.Var + if base != nil { + recv = types.NewVar(token.NoPos, r.currPkg, "", base) + } + + msig := r.signature(recv) + methods[i] = types.NewFunc(mpos, r.currPkg, mname, msig) + } + + typ := newInterface(methods, embeddeds) + r.p.interfaceList = append(r.p.interfaceList, typ) + return typ + } +} + +func (r *importReader) kind() itag { + return itag(r.uint64()) +} + +func (r *importReader) signature(recv *types.Var) *types.Signature { + params := r.paramList() + results := r.paramList() + variadic := params.Len() > 0 && r.bool() + return types.NewSignature(recv, params, results, variadic) +} + +func (r *importReader) paramList() *types.Tuple { + xs := make([]*types.Var, r.uint64()) + for i := range xs { + xs[i] = r.param() + } + return types.NewTuple(xs...) +} + +func (r *importReader) param() *types.Var { + pos := r.pos() + name := r.ident() + typ := r.typ() + return types.NewParam(pos, r.currPkg, name, typ) +} + +func (r *importReader) bool() bool { + return r.uint64() != 0 +} + +func (r *importReader) int64() int64 { + n, err := binary.ReadVarint(&r.declReader) + if err != nil { + errorf("readVarint: %v", err) + } + return n +} + +func (r *importReader) uint64() uint64 { + n, err := binary.ReadUvarint(&r.declReader) + if err != nil { + errorf("readUvarint: %v", err) + } + return n +} + +func (r *importReader) byte() byte { + x, err := r.declReader.ReadByte() + if err != nil { + errorf("declReader.ReadByte: %v", err) + } + return x +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go b/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go new file mode 100644 index 00000000000..463f2522714 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface10.go @@ -0,0 +1,21 @@ +// 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 !go1.11 + +package gcimporter + +import "go/types" + +func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { + named := make([]*types.Named, len(embeddeds)) + for i, e := range embeddeds { + var ok bool + named[i], ok = e.(*types.Named) + if !ok { + panic("embedding of non-defined interfaces in interfaces is not supported before Go 1.11") + } + } + return types.NewInterface(methods, named) +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go b/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go new file mode 100644 index 00000000000..ab28b95cbb8 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/newInterface11.go @@ -0,0 +1,13 @@ +// 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 go1.11 + +package gcimporter + +import "go/types" + +func newInterface(methods []*types.Func, embeddeds []types.Type) *types.Interface { + return types.NewInterfaceType(methods, embeddeds) +} diff --git a/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go new file mode 100644 index 00000000000..ea15d57be1a --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/packagesdriver/sizes.go @@ -0,0 +1,173 @@ +// 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 packagesdriver fetches type sizes for go/packages and go/analysis. +package packagesdriver + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "go/types" + "log" + "os" + "os/exec" + "strings" + "time" +) + +var debug = false + +// GetSizes returns the sizes used by the underlying driver with the given parameters. +func GetSizes(ctx context.Context, buildFlags, env []string, dir string, usesExportData bool) (types.Sizes, error) { + // TODO(matloob): Clean this up. This code is mostly a copy of packages.findExternalDriver. + const toolPrefix = "GOPACKAGESDRIVER=" + tool := "" + for _, env := range env { + if val := strings.TrimPrefix(env, toolPrefix); val != env { + tool = val + } + } + + if tool == "" { + var err error + tool, err = exec.LookPath("gopackagesdriver") + if err != nil { + // We did not find the driver, so use "go list". + tool = "off" + } + } + + if tool == "off" { + return GetSizesGolist(ctx, buildFlags, env, dir, usesExportData) + } + + req, err := json.Marshal(struct { + Command string `json:"command"` + Env []string `json:"env"` + BuildFlags []string `json:"build_flags"` + }{ + Command: "sizes", + Env: env, + BuildFlags: buildFlags, + }) + if err != nil { + return nil, fmt.Errorf("failed to encode message to driver tool: %v", err) + } + + buf := new(bytes.Buffer) + cmd := exec.CommandContext(ctx, tool) + cmd.Dir = dir + cmd.Env = env + cmd.Stdin = bytes.NewReader(req) + cmd.Stdout = buf + cmd.Stderr = new(bytes.Buffer) + if err := cmd.Run(); err != nil { + return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr) + } + var response struct { + // Sizes, if not nil, is the types.Sizes to use when type checking. + Sizes *types.StdSizes + } + if err := json.Unmarshal(buf.Bytes(), &response); err != nil { + return nil, err + } + return response.Sizes, nil +} + +func GetSizesGolist(ctx context.Context, buildFlags, env []string, dir string, usesExportData bool) (types.Sizes, error) { + args := []string{"list", "-f", "{{context.GOARCH}} {{context.Compiler}}"} + args = append(args, buildFlags...) + args = append(args, "--", "unsafe") + stdout, err := InvokeGo(ctx, env, dir, usesExportData, args...) + var goarch, compiler string + if err != nil { + if strings.Contains(err.Error(), "cannot find main module") { + // User's running outside of a module. All bets are off. Get GOARCH and guess compiler is gc. + // TODO(matloob): Is this a problem in practice? + envout, enverr := InvokeGo(ctx, env, dir, usesExportData, "env", "GOARCH") + if enverr != nil { + return nil, err + } + goarch = strings.TrimSpace(envout.String()) + compiler = "gc" + } else { + return nil, err + } + } else { + fields := strings.Fields(stdout.String()) + if len(fields) < 2 { + return nil, fmt.Errorf("could not determine GOARCH and Go compiler") + } + goarch = fields[0] + compiler = fields[1] + } + return types.SizesFor(compiler, goarch), nil +} + +// InvokeGo returns the stdout of a go command invocation. +func InvokeGo(ctx context.Context, env []string, dir string, usesExportData bool, args ...string) (*bytes.Buffer, error) { + if debug { + defer func(start time.Time) { log.Printf("%s for %v", time.Since(start), cmdDebugStr(env, args...)) }(time.Now()) + } + stdout := new(bytes.Buffer) + stderr := new(bytes.Buffer) + cmd := exec.CommandContext(ctx, "go", args...) + // On darwin the cwd gets resolved to the real path, which breaks anything that + // expects the working directory to keep the original path, including the + // go command when dealing with modules. + // The Go stdlib has a special feature where if the cwd and the PWD are the + // same node then it trusts the PWD, so by setting it in the env for the child + // process we fix up all the paths returned by the go command. + cmd.Env = append(append([]string{}, env...), "PWD="+dir) + cmd.Dir = dir + cmd.Stdout = stdout + cmd.Stderr = stderr + if err := cmd.Run(); err != nil { + exitErr, ok := err.(*exec.ExitError) + if !ok { + // Catastrophic error: + // - executable not found + // - context cancellation + return nil, fmt.Errorf("couldn't exec 'go %v': %s %T", args, err, err) + } + + // Export mode entails a build. + // If that build fails, errors appear on stderr + // (despite the -e flag) and the Export field is blank. + // Do not fail in that case. + if !usesExportData { + return nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr) + } + } + + // As of writing, go list -export prints some non-fatal compilation + // errors to stderr, even with -e set. We would prefer that it put + // them in the Package.Error JSON (see https://golang.org/issue/26319). + // In the meantime, there's nowhere good to put them, but they can + // be useful for debugging. Print them if $GOPACKAGESPRINTGOLISTERRORS + // is set. + if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTGOLISTERRORS") != "" { + fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(env, args...), stderr) + } + + // debugging + if false { + fmt.Fprintf(os.Stderr, "%s stdout: <<%s>>\n", cmdDebugStr(env, args...), stdout) + } + + return stdout, nil +} + +func cmdDebugStr(envlist []string, args ...string) string { + env := make(map[string]string) + for _, kv := range envlist { + split := strings.Split(kv, "=") + k, v := split[0], split[1] + env[k] = v + } + + return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["PWD"], args) +} diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go new file mode 100644 index 00000000000..3799f8ed8be --- /dev/null +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -0,0 +1,222 @@ +// 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 packages loads Go packages for inspection and analysis. + +The Load function takes as input a list of patterns and return a list of Package +structs describing individual packages matched by those patterns. +The LoadMode controls the amount of detail in the loaded packages. + +Load passes most patterns directly to the underlying build tool, +but all patterns with the prefix "query=", where query is a +non-empty string of letters from [a-z], are reserved and may be +interpreted as query operators. + +Two query operators are currently supported: "file" and "pattern". + +The query "file=path/to/file.go" matches the package or packages enclosing +the Go source file path/to/file.go. For example "file=~/go/src/fmt/print.go" +might return the packages "fmt" and "fmt [fmt.test]". + +The query "pattern=string" causes "string" to be passed directly to +the underlying build tool. In most cases this is unnecessary, +but an application can use Load("pattern=" + x) as an escaping mechanism +to ensure that x is not interpreted as a query operator if it contains '='. + +All other query operators are reserved for future use and currently +cause Load to report an error. + +The Package struct provides basic information about the package, including + + - ID, a unique identifier for the package in the returned set; + - GoFiles, the names of the package's Go source files; + - Imports, a map from source import strings to the Packages they name; + - Types, the type information for the package's exported symbols; + - Syntax, the parsed syntax trees for the package's source code; and + - TypeInfo, the result of a complete type-check of the package syntax trees. + +(See the documentation for type Package for the complete list of fields +and more detailed descriptions.) + +For example, + + Load(nil, "bytes", "unicode...") + +returns four Package structs describing the standard library packages +bytes, unicode, unicode/utf16, and unicode/utf8. Note that one pattern +can match multiple packages and that a package might be matched by +multiple patterns: in general it is not possible to determine which +packages correspond to which patterns. + +Note that the list returned by Load contains only the packages matched +by the patterns. Their dependencies can be found by walking the import +graph using the Imports fields. + +The Load function can be configured by passing a pointer to a Config as +the first argument. A nil Config is equivalent to the zero Config, which +causes Load to run in LoadFiles mode, collecting minimal information. +See the documentation for type Config for details. + +As noted earlier, the Config.Mode controls the amount of detail +reported about the loaded packages, with each mode returning all the data of the +previous mode with some extra added. See the documentation for type LoadMode +for details. + +Most tools should pass their command-line arguments (after any flags) +uninterpreted to the loader, so that the loader can interpret them +according to the conventions of the underlying build system. +See the Example function for typical usage. + +*/ +package packages // import "golang.org/x/tools/go/packages" + +/* + +Motivation and design considerations + +The new package's design solves problems addressed by two existing +packages: go/build, which locates and describes packages, and +golang.org/x/tools/go/loader, which loads, parses and type-checks them. +The go/build.Package structure encodes too much of the 'go build' way +of organizing projects, leaving us in need of a data type that describes a +package of Go source code independent of the underlying build system. +We wanted something that works equally well with go build and vgo, and +also other build systems such as Bazel and Blaze, making it possible to +construct analysis tools that work in all these environments. +Tools such as errcheck and staticcheck were essentially unavailable to +the Go community at Google, and some of Google's internal tools for Go +are unavailable externally. +This new package provides a uniform way to obtain package metadata by +querying each of these build systems, optionally supporting their +preferred command-line notations for packages, so that tools integrate +neatly with users' build environments. The Metadata query function +executes an external query tool appropriate to the current workspace. + +Loading packages always returns the complete import graph "all the way down", +even if all you want is information about a single package, because the query +mechanisms of all the build systems we currently support ({go,vgo} list, and +blaze/bazel aspect-based query) cannot provide detailed information +about one package without visiting all its dependencies too, so there is +no additional asymptotic cost to providing transitive information. +(This property might not be true of a hypothetical 5th build system.) + +In calls to TypeCheck, all initial packages, and any package that +transitively depends on one of them, must be loaded from source. +Consider A->B->C->D->E: if A,C are initial, A,B,C must be loaded from +source; D may be loaded from export data, and E may not be loaded at all +(though it's possible that D's export data mentions it, so a +types.Package may be created for it and exposed.) + +The old loader had a feature to suppress type-checking of function +bodies on a per-package basis, primarily intended to reduce the work of +obtaining type information for imported packages. Now that imports are +satisfied by export data, the optimization no longer seems necessary. + +Despite some early attempts, the old loader did not exploit export data, +instead always using the equivalent of WholeProgram mode. This was due +to the complexity of mixing source and export data packages (now +resolved by the upward traversal mentioned above), and because export data +files were nearly always missing or stale. Now that 'go build' supports +caching, all the underlying build systems can guarantee to produce +export data in a reasonable (amortized) time. + +Test "main" packages synthesized by the build system are now reported as +first-class packages, avoiding the need for clients (such as go/ssa) to +reinvent this generation logic. + +One way in which go/packages is simpler than the old loader is in its +treatment of in-package tests. In-package tests are packages that +consist of all the files of the library under test, plus the test files. +The old loader constructed in-package tests by a two-phase process of +mutation called "augmentation": first it would construct and type check +all the ordinary library packages and type-check the packages that +depend on them; then it would add more (test) files to the package and +type-check again. This two-phase approach had four major problems: +1) in processing the tests, the loader modified the library package, + leaving no way for a client application to see both the test + package and the library package; one would mutate into the other. +2) because test files can declare additional methods on types defined in + the library portion of the package, the dispatch of method calls in + the library portion was affected by the presence of the test files. + This should have been a clue that the packages were logically + different. +3) this model of "augmentation" assumed at most one in-package test + per library package, which is true of projects using 'go build', + but not other build systems. +4) because of the two-phase nature of test processing, all packages that + import the library package had to be processed before augmentation, + forcing a "one-shot" API and preventing the client from calling Load + in several times in sequence as is now possible in WholeProgram mode. + (TypeCheck mode has a similar one-shot restriction for a different reason.) + +Early drafts of this package supported "multi-shot" operation. +Although it allowed clients to make a sequence of calls (or concurrent +calls) to Load, building up the graph of Packages incrementally, +it was of marginal value: it complicated the API +(since it allowed some options to vary across calls but not others), +it complicated the implementation, +it cannot be made to work in Types mode, as explained above, +and it was less efficient than making one combined call (when this is possible). +Among the clients we have inspected, none made multiple calls to load +but could not be easily and satisfactorily modified to make only a single call. +However, applications changes may be required. +For example, the ssadump command loads the user-specified packages +and in addition the runtime package. It is tempting to simply append +"runtime" to the user-provided list, but that does not work if the user +specified an ad-hoc package such as [a.go b.go]. +Instead, ssadump no longer requests the runtime package, +but seeks it among the dependencies of the user-specified packages, +and emits an error if it is not found. + +Overlays: The Overlay field in the Config allows providing alternate contents +for Go source files, by providing a mapping from file path to contents. +go/packages will pull in new imports added in overlay files when go/packages +is run in LoadImports mode or greater. +Overlay support for the go list driver isn't complete yet: if the file doesn't +exist on disk, it will only be recognized in an overlay if it is a non-test file +and the package would be reported even without the overlay. + +Questions & Tasks + +- Add GOARCH/GOOS? + They are not portable concepts, but could be made portable. + Our goal has been to allow users to express themselves using the conventions + of the underlying build system: if the build system honors GOARCH + during a build and during a metadata query, then so should + applications built atop that query mechanism. + Conversely, if the target architecture of the build is determined by + command-line flags, the application can pass the relevant + flags through to the build system using a command such as: + myapp -query_flag="--cpu=amd64" -query_flag="--os=darwin" + However, this approach is low-level, unwieldy, and non-portable. + GOOS and GOARCH seem important enough to warrant a dedicated option. + +- How should we handle partial failures such as a mixture of good and + malformed patterns, existing and non-existent packages, successful and + failed builds, import failures, import cycles, and so on, in a call to + Load? + +- Support bazel, blaze, and go1.10 list, not just go1.11 list. + +- Handle (and test) various partial success cases, e.g. + a mixture of good packages and: + invalid patterns + nonexistent packages + empty packages + packages with malformed package or import declarations + unreadable files + import cycles + other parse errors + type errors + Make sure we record errors at the correct place in the graph. + +- Missing packages among initial arguments are not reported. + Return bogus packages for them, like golist does. + +- "undeclared name" errors (for example) are reported out of source file + order. I suspect this is due to the breadth-first resolution now used + by go/types. Is that a bug? Discuss with gri. + +*/ diff --git a/vendor/golang.org/x/tools/go/packages/external.go b/vendor/golang.org/x/tools/go/packages/external.go new file mode 100644 index 00000000000..b696b687097 --- /dev/null +++ b/vendor/golang.org/x/tools/go/packages/external.go @@ -0,0 +1,94 @@ +// 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. + +// This file enables an external tool to intercept package requests. +// If the tool is present then its results are used in preference to +// the go list command. + +package packages + +import ( + "bytes" + "encoding/json" + "fmt" + "os/exec" + "strings" +) + +// The Driver Protocol +// +// The driver, given the inputs to a call to Load, returns metadata about the packages specified. +// This allows for different build systems to support go/packages by telling go/packages how the +// packages' source is organized. +// The driver is a binary, either specified by the GOPACKAGESDRIVER environment variable or in +// the path as gopackagesdriver. It's given the inputs to load in its argv. See the package +// documentation in doc.go for the full description of the patterns that need to be supported. +// A driver receives as a JSON-serialized driverRequest struct in standard input and will +// produce a JSON-serialized driverResponse (see definition in packages.go) in its standard output. + +// driverRequest is used to provide the portion of Load's Config that is needed by a driver. +type driverRequest struct { + Mode LoadMode `json:"mode"` + // Env specifies the environment the underlying build system should be run in. + Env []string `json:"env"` + // BuildFlags are flags that should be passed to the underlying build system. + BuildFlags []string `json:"build_flags"` + // Tests specifies whether the patterns should also return test packages. + Tests bool `json:"tests"` + // Overlay maps file paths (relative to the driver's working directory) to the byte contents + // of overlay files. + Overlay map[string][]byte `json:"overlay"` +} + +// findExternalDriver returns the file path of a tool that supplies +// the build system package structure, or "" if not found." +// If GOPACKAGESDRIVER is set in the environment findExternalTool returns its +// value, otherwise it searches for a binary named gopackagesdriver on the PATH. +func findExternalDriver(cfg *Config) driver { + const toolPrefix = "GOPACKAGESDRIVER=" + tool := "" + for _, env := range cfg.Env { + if val := strings.TrimPrefix(env, toolPrefix); val != env { + tool = val + } + } + if tool != "" && tool == "off" { + return nil + } + if tool == "" { + var err error + tool, err = exec.LookPath("gopackagesdriver") + if err != nil { + return nil + } + } + return func(cfg *Config, words ...string) (*driverResponse, error) { + req, err := json.Marshal(driverRequest{ + Mode: cfg.Mode, + Env: cfg.Env, + BuildFlags: cfg.BuildFlags, + Tests: cfg.Tests, + Overlay: cfg.Overlay, + }) + if err != nil { + return nil, fmt.Errorf("failed to encode message to driver tool: %v", err) + } + + buf := new(bytes.Buffer) + cmd := exec.CommandContext(cfg.Context, tool, words...) + cmd.Dir = cfg.Dir + cmd.Env = cfg.Env + cmd.Stdin = bytes.NewReader(req) + cmd.Stdout = buf + cmd.Stderr = new(bytes.Buffer) + if err := cmd.Run(); err != nil { + return nil, fmt.Errorf("%v: %v: %s", tool, err, cmd.Stderr) + } + var response driverResponse + if err := json.Unmarshal(buf.Bytes(), &response); err != nil { + return nil, err + } + return &response, nil + } +} diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go new file mode 100644 index 00000000000..bb635bcf64c --- /dev/null +++ b/vendor/golang.org/x/tools/go/packages/golist.go @@ -0,0 +1,1132 @@ +// 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 packages + +import ( + "bytes" + "encoding/json" + "fmt" + "go/types" + "io/ioutil" + "log" + "os" + "os/exec" + "path" + "path/filepath" + "reflect" + "regexp" + "strconv" + "strings" + "sync" + "time" + "unicode" + + "golang.org/x/tools/go/internal/packagesdriver" + "golang.org/x/tools/internal/gopathwalk" + "golang.org/x/tools/internal/semver" + "golang.org/x/tools/internal/span" +) + +// debug controls verbose logging. +var debug, _ = strconv.ParseBool(os.Getenv("GOPACKAGESDEBUG")) + +// A goTooOldError reports that the go command +// found by exec.LookPath is too old to use the new go list behavior. +type goTooOldError struct { + error +} + +// responseDeduper wraps a driverResponse, deduplicating its contents. +type responseDeduper struct { + seenRoots map[string]bool + seenPackages map[string]*Package + dr *driverResponse +} + +// init fills in r with a driverResponse. +func (r *responseDeduper) init(dr *driverResponse) { + r.dr = dr + r.seenRoots = map[string]bool{} + r.seenPackages = map[string]*Package{} + for _, pkg := range dr.Packages { + r.seenPackages[pkg.ID] = pkg + } + for _, root := range dr.Roots { + r.seenRoots[root] = true + } +} + +func (r *responseDeduper) addPackage(p *Package) { + if r.seenPackages[p.ID] != nil { + return + } + r.seenPackages[p.ID] = p + r.dr.Packages = append(r.dr.Packages, p) +} + +func (r *responseDeduper) addRoot(id string) { + if r.seenRoots[id] { + return + } + r.seenRoots[id] = true + r.dr.Roots = append(r.dr.Roots, id) +} + +// goInfo contains global information from the go tool. +type goInfo struct { + rootDirs map[string]string + env goEnv +} + +type goEnv struct { + modulesOn bool +} + +func determineEnv(cfg *Config) goEnv { + buf, err := invokeGo(cfg, "env", "GOMOD") + if err != nil { + return goEnv{} + } + gomod := bytes.TrimSpace(buf.Bytes()) + + env := goEnv{} + env.modulesOn = len(gomod) > 0 + return env +} + +// goListDriver uses the go list command to interpret the patterns and produce +// the build system package structure. +// See driver for more details. +func goListDriver(cfg *Config, patterns ...string) (*driverResponse, error) { + var sizes types.Sizes + var sizeserr error + var sizeswg sync.WaitGroup + if cfg.Mode&NeedTypesSizes != 0 || cfg.Mode&NeedTypes != 0 { + sizeswg.Add(1) + go func() { + sizes, sizeserr = getSizes(cfg) + sizeswg.Done() + }() + } + + // start fetching rootDirs + var info goInfo + var rootDirsReady, envReady = make(chan struct{}), make(chan struct{}) + go func() { + info.rootDirs = determineRootDirs(cfg) + close(rootDirsReady) + }() + go func() { + info.env = determineEnv(cfg) + close(envReady) + }() + getGoInfo := func() *goInfo { + <-rootDirsReady + <-envReady + return &info + } + + // always pass getGoInfo to golistDriver + golistDriver := func(cfg *Config, patterns ...string) (*driverResponse, error) { + return golistDriver(cfg, getGoInfo, patterns...) + } + + // Determine files requested in contains patterns + var containFiles []string + var packagesNamed []string + restPatterns := make([]string, 0, len(patterns)) + // Extract file= and other [querytype]= patterns. Report an error if querytype + // doesn't exist. +extractQueries: + for _, pattern := range patterns { + eqidx := strings.Index(pattern, "=") + if eqidx < 0 { + restPatterns = append(restPatterns, pattern) + } else { + query, value := pattern[:eqidx], pattern[eqidx+len("="):] + switch query { + case "file": + containFiles = append(containFiles, value) + case "pattern": + restPatterns = append(restPatterns, value) + case "iamashamedtousethedisabledqueryname": + packagesNamed = append(packagesNamed, value) + case "": // not a reserved query + restPatterns = append(restPatterns, pattern) + default: + for _, rune := range query { + if rune < 'a' || rune > 'z' { // not a reserved query + restPatterns = append(restPatterns, pattern) + continue extractQueries + } + } + // Reject all other patterns containing "=" + return nil, fmt.Errorf("invalid query type %q in query pattern %q", query, pattern) + } + } + } + + response := &responseDeduper{} + var err error + + // See if we have any patterns to pass through to go list. Zero initial + // patterns also requires a go list call, since it's the equivalent of + // ".". + if len(restPatterns) > 0 || len(patterns) == 0 { + dr, err := golistDriver(cfg, restPatterns...) + if err != nil { + return nil, err + } + response.init(dr) + } else { + response.init(&driverResponse{}) + } + + sizeswg.Wait() + if sizeserr != nil { + return nil, sizeserr + } + // types.SizesFor always returns nil or a *types.StdSizes + response.dr.Sizes, _ = sizes.(*types.StdSizes) + + var containsCandidates []string + + if len(containFiles) != 0 { + if err := runContainsQueries(cfg, golistDriver, response, containFiles, getGoInfo); err != nil { + return nil, err + } + } + + if len(packagesNamed) != 0 { + if err := runNamedQueries(cfg, golistDriver, response, packagesNamed); err != nil { + return nil, err + } + } + + modifiedPkgs, needPkgs, err := processGolistOverlay(cfg, response, getGoInfo) + if err != nil { + return nil, err + } + if len(containFiles) > 0 { + containsCandidates = append(containsCandidates, modifiedPkgs...) + containsCandidates = append(containsCandidates, needPkgs...) + } + if err := addNeededOverlayPackages(cfg, golistDriver, response, needPkgs, getGoInfo); err != nil { + return nil, err + } + // Check candidate packages for containFiles. + if len(containFiles) > 0 { + for _, id := range containsCandidates { + pkg, ok := response.seenPackages[id] + if !ok { + response.addPackage(&Package{ + ID: id, + Errors: []Error{ + { + Kind: ListError, + Msg: fmt.Sprintf("package %s expected but not seen", id), + }, + }, + }) + continue + } + for _, f := range containFiles { + for _, g := range pkg.GoFiles { + if sameFile(f, g) { + response.addRoot(id) + } + } + } + } + } + + return response.dr, nil +} + +func addNeededOverlayPackages(cfg *Config, driver driver, response *responseDeduper, pkgs []string, getGoInfo func() *goInfo) error { + if len(pkgs) == 0 { + return nil + } + drivercfg := *cfg + if getGoInfo().env.modulesOn { + drivercfg.BuildFlags = append(drivercfg.BuildFlags, "-mod=readonly") + } + dr, err := driver(&drivercfg, pkgs...) + + if err != nil { + return err + } + for _, pkg := range dr.Packages { + response.addPackage(pkg) + } + _, needPkgs, err := processGolistOverlay(cfg, response, getGoInfo) + if err != nil { + return err + } + if err := addNeededOverlayPackages(cfg, driver, response, needPkgs, getGoInfo); err != nil { + return err + } + return nil +} + +func runContainsQueries(cfg *Config, driver driver, response *responseDeduper, queries []string, goInfo func() *goInfo) error { + for _, query := range queries { + // TODO(matloob): Do only one query per directory. + fdir := filepath.Dir(query) + // Pass absolute path of directory to go list so that it knows to treat it as a directory, + // not a package path. + pattern, err := filepath.Abs(fdir) + if err != nil { + return fmt.Errorf("could not determine absolute path of file= query path %q: %v", query, err) + } + dirResponse, err := driver(cfg, pattern) + if err != nil { + var queryErr error + if dirResponse, queryErr = adHocPackage(cfg, driver, pattern, query); queryErr != nil { + return err // return the original error + } + } + // `go list` can report errors for files that are not listed as part of a package's GoFiles. + // In the case of an invalid Go file, we should assume that it is part of package if only + // one package is in the response. The file may have valid contents in an overlay. + if len(dirResponse.Packages) == 1 { + pkg := dirResponse.Packages[0] + for i, err := range pkg.Errors { + s := errorSpan(err) + if !s.IsValid() { + break + } + if len(pkg.CompiledGoFiles) == 0 { + break + } + dir := filepath.Dir(pkg.CompiledGoFiles[0]) + filename := filepath.Join(dir, filepath.Base(s.URI().Filename())) + if info, err := os.Stat(filename); err != nil || info.IsDir() { + break + } + if !contains(pkg.CompiledGoFiles, filename) { + pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, filename) + pkg.GoFiles = append(pkg.GoFiles, filename) + pkg.Errors = append(pkg.Errors[:i], pkg.Errors[i+1:]...) + } + } + } + // A final attempt to construct an ad-hoc package. + if len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].Errors) == 1 { + var queryErr error + if dirResponse, queryErr = adHocPackage(cfg, driver, pattern, query); queryErr != nil { + return err // return the original error + } + } + isRoot := make(map[string]bool, len(dirResponse.Roots)) + for _, root := range dirResponse.Roots { + isRoot[root] = true + } + for _, pkg := range dirResponse.Packages { + // Add any new packages to the main set + // We don't bother to filter packages that will be dropped by the changes of roots, + // that will happen anyway during graph construction outside this function. + // Over-reporting packages is not a problem. + response.addPackage(pkg) + // if the package was not a root one, it cannot have the file + if !isRoot[pkg.ID] { + continue + } + for _, pkgFile := range pkg.GoFiles { + if filepath.Base(query) == filepath.Base(pkgFile) { + response.addRoot(pkg.ID) + break + } + } + } + } + return nil +} + +// adHocPackage attempts to construct an ad-hoc package given a query that failed. +func adHocPackage(cfg *Config, driver driver, pattern, query string) (*driverResponse, error) { + // There was an error loading the package. Try to load the file as an ad-hoc package. + // Usually the error will appear in a returned package, but may not if we're in modules mode + // and the ad-hoc is located outside a module. + dirResponse, err := driver(cfg, query) + if err != nil { + return nil, err + } + // If we get nothing back from `go list`, try to make this file into its own ad-hoc package. + if len(dirResponse.Packages) == 0 && err == nil { + dirResponse.Packages = append(dirResponse.Packages, &Package{ + ID: "command-line-arguments", + PkgPath: query, + GoFiles: []string{query}, + CompiledGoFiles: []string{query}, + }) + dirResponse.Roots = append(dirResponse.Roots, "command-line-arguments") + } + // Special case to handle issue #33482: + // If this is a file= query for ad-hoc packages where the file only exists on an overlay, + // and exists outside of a module, add the file in for the package. + if len(dirResponse.Packages) == 1 && (dirResponse.Packages[0].ID == "command-line-arguments" || dirResponse.Packages[0].PkgPath == filepath.ToSlash(query)) { + if len(dirResponse.Packages[0].GoFiles) == 0 { + filename := filepath.Join(pattern, filepath.Base(query)) // avoid recomputing abspath + // TODO(matloob): check if the file is outside of a root dir? + for path := range cfg.Overlay { + if path == filename { + dirResponse.Packages[0].Errors = nil + dirResponse.Packages[0].GoFiles = []string{path} + dirResponse.Packages[0].CompiledGoFiles = []string{path} + } + } + } + } + return dirResponse, nil +} + +func contains(files []string, filename string) bool { + for _, f := range files { + if f == filename { + return true + } + } + return false +} + +// errorSpan attempts to parse a standard `go list` error message +// by stripping off the trailing error message. +// +// It works only on errors whose message is prefixed by colon, +// followed by a space (": "). For example: +// +// attributes.go:13:1: expected 'package', found 'type' +// +func errorSpan(err Error) span.Span { + if err.Pos == "" { + input := strings.TrimSpace(err.Msg) + msgIndex := strings.Index(input, ": ") + if msgIndex < 0 { + return span.Parse(input) + } + return span.Parse(input[:msgIndex]) + } + return span.Parse(err.Pos) +} + +// modCacheRegexp splits a path in a module cache into module, module version, and package. +var modCacheRegexp = regexp.MustCompile(`(.*)@([^/\\]*)(.*)`) + +func runNamedQueries(cfg *Config, driver driver, response *responseDeduper, queries []string) error { + // calling `go env` isn't free; bail out if there's nothing to do. + if len(queries) == 0 { + return nil + } + // Determine which directories are relevant to scan. + roots, modRoot, err := roots(cfg) + if err != nil { + return err + } + + // Scan the selected directories. Simple matches, from GOPATH/GOROOT + // or the local module, can simply be "go list"ed. Matches from the + // module cache need special treatment. + var matchesMu sync.Mutex + var simpleMatches, modCacheMatches []string + add := func(root gopathwalk.Root, dir string) { + // Walk calls this concurrently; protect the result slices. + matchesMu.Lock() + defer matchesMu.Unlock() + + path := dir + if dir != root.Path { + path = dir[len(root.Path)+1:] + } + if pathMatchesQueries(path, queries) { + switch root.Type { + case gopathwalk.RootModuleCache: + modCacheMatches = append(modCacheMatches, path) + case gopathwalk.RootCurrentModule: + // We'd need to read go.mod to find the full + // import path. Relative's easier. + rel, err := filepath.Rel(cfg.Dir, dir) + if err != nil { + // This ought to be impossible, since + // we found dir in the current module. + panic(err) + } + simpleMatches = append(simpleMatches, "./"+rel) + case gopathwalk.RootGOPATH, gopathwalk.RootGOROOT: + simpleMatches = append(simpleMatches, path) + } + } + } + + startWalk := time.Now() + gopathwalk.Walk(roots, add, gopathwalk.Options{ModulesEnabled: modRoot != "", Debug: debug}) + cfg.Logf("%v for walk", time.Since(startWalk)) + + // Weird special case: the top-level package in a module will be in + // whatever directory the user checked the repository out into. It's + // more reasonable for that to not match the package name. So, if there + // are any Go files in the mod root, query it just to be safe. + if modRoot != "" { + rel, err := filepath.Rel(cfg.Dir, modRoot) + if err != nil { + panic(err) // See above. + } + + files, err := ioutil.ReadDir(modRoot) + if err != nil { + panic(err) // See above. + } + + for _, f := range files { + if strings.HasSuffix(f.Name(), ".go") { + simpleMatches = append(simpleMatches, rel) + break + } + } + } + + addResponse := func(r *driverResponse) { + for _, pkg := range r.Packages { + response.addPackage(pkg) + for _, name := range queries { + if pkg.Name == name { + response.addRoot(pkg.ID) + break + } + } + } + } + + if len(simpleMatches) != 0 { + resp, err := driver(cfg, simpleMatches...) + if err != nil { + return err + } + addResponse(resp) + } + + // Module cache matches are tricky. We want to avoid downloading new + // versions of things, so we need to use the ones present in the cache. + // go list doesn't accept version specifiers, so we have to write out a + // temporary module, and do the list in that module. + if len(modCacheMatches) != 0 { + // Collect all the matches, deduplicating by major version + // and preferring the newest. + type modInfo struct { + mod string + major string + } + mods := make(map[modInfo]string) + var imports []string + for _, modPath := range modCacheMatches { + matches := modCacheRegexp.FindStringSubmatch(modPath) + mod, ver := filepath.ToSlash(matches[1]), matches[2] + importPath := filepath.ToSlash(filepath.Join(matches[1], matches[3])) + + major := semver.Major(ver) + if prevVer, ok := mods[modInfo{mod, major}]; !ok || semver.Compare(ver, prevVer) > 0 { + mods[modInfo{mod, major}] = ver + } + + imports = append(imports, importPath) + } + + // Build the temporary module. + var gomod bytes.Buffer + gomod.WriteString("module modquery\nrequire (\n") + for mod, version := range mods { + gomod.WriteString("\t" + mod.mod + " " + version + "\n") + } + gomod.WriteString(")\n") + + tmpCfg := *cfg + + // We're only trying to look at stuff in the module cache, so + // disable the network. This should speed things up, and has + // prevented errors in at least one case, #28518. + tmpCfg.Env = append([]string{"GOPROXY=off"}, cfg.Env...) + + var err error + tmpCfg.Dir, err = ioutil.TempDir("", "gopackages-modquery") + if err != nil { + return err + } + defer os.RemoveAll(tmpCfg.Dir) + + if err := ioutil.WriteFile(filepath.Join(tmpCfg.Dir, "go.mod"), gomod.Bytes(), 0777); err != nil { + return fmt.Errorf("writing go.mod for module cache query: %v", err) + } + + // Run the query, using the import paths calculated from the matches above. + resp, err := driver(&tmpCfg, imports...) + if err != nil { + return fmt.Errorf("querying module cache matches: %v", err) + } + addResponse(resp) + } + + return nil +} + +func getSizes(cfg *Config) (types.Sizes, error) { + return packagesdriver.GetSizesGolist(cfg.Context, cfg.BuildFlags, cfg.Env, cfg.Dir, usesExportData(cfg)) +} + +// roots selects the appropriate paths to walk based on the passed-in configuration, +// particularly the environment and the presence of a go.mod in cfg.Dir's parents. +func roots(cfg *Config) ([]gopathwalk.Root, string, error) { + stdout, err := invokeGo(cfg, "env", "GOROOT", "GOPATH", "GOMOD") + if err != nil { + return nil, "", err + } + + fields := strings.Split(stdout.String(), "\n") + if len(fields) != 4 || len(fields[3]) != 0 { + return nil, "", fmt.Errorf("go env returned unexpected output: %q", stdout.String()) + } + goroot, gopath, gomod := fields[0], filepath.SplitList(fields[1]), fields[2] + var modDir string + if gomod != "" { + modDir = filepath.Dir(gomod) + } + + var roots []gopathwalk.Root + // Always add GOROOT. + roots = append(roots, gopathwalk.Root{ + Path: filepath.Join(goroot, "/src"), + Type: gopathwalk.RootGOROOT, + }) + // If modules are enabled, scan the module dir. + if modDir != "" { + roots = append(roots, gopathwalk.Root{ + Path: modDir, + Type: gopathwalk.RootCurrentModule, + }) + } + // Add either GOPATH/src or GOPATH/pkg/mod, depending on module mode. + for _, p := range gopath { + if modDir != "" { + roots = append(roots, gopathwalk.Root{ + Path: filepath.Join(p, "/pkg/mod"), + Type: gopathwalk.RootModuleCache, + }) + } else { + roots = append(roots, gopathwalk.Root{ + Path: filepath.Join(p, "/src"), + Type: gopathwalk.RootGOPATH, + }) + } + } + + return roots, modDir, nil +} + +// These functions were copied from goimports. See further documentation there. + +// pathMatchesQueries is adapted from pkgIsCandidate. +// TODO: is it reasonable to do Contains here, rather than an exact match on a path component? +func pathMatchesQueries(path string, queries []string) bool { + lastTwo := lastTwoComponents(path) + for _, query := range queries { + if strings.Contains(lastTwo, query) { + return true + } + if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(query) { + lastTwo = lowerASCIIAndRemoveHyphen(lastTwo) + if strings.Contains(lastTwo, query) { + return true + } + } + } + return false +} + +// lastTwoComponents returns at most the last two path components +// of v, using either / or \ as the path separator. +func lastTwoComponents(v string) string { + nslash := 0 + for i := len(v) - 1; i >= 0; i-- { + if v[i] == '/' || v[i] == '\\' { + nslash++ + if nslash == 2 { + return v[i:] + } + } + } + return v +} + +func hasHyphenOrUpperASCII(s string) bool { + for i := 0; i < len(s); i++ { + b := s[i] + if b == '-' || ('A' <= b && b <= 'Z') { + return true + } + } + return false +} + +func lowerASCIIAndRemoveHyphen(s string) (ret string) { + buf := make([]byte, 0, len(s)) + for i := 0; i < len(s); i++ { + b := s[i] + switch { + case b == '-': + continue + case 'A' <= b && b <= 'Z': + buf = append(buf, b+('a'-'A')) + default: + buf = append(buf, b) + } + } + return string(buf) +} + +// Fields must match go list; +// see $GOROOT/src/cmd/go/internal/load/pkg.go. +type jsonPackage struct { + ImportPath string + Dir string + Name string + Export string + GoFiles []string + CompiledGoFiles []string + CFiles []string + CgoFiles []string + CXXFiles []string + MFiles []string + HFiles []string + FFiles []string + SFiles []string + SwigFiles []string + SwigCXXFiles []string + SysoFiles []string + Imports []string + ImportMap map[string]string + Deps []string + TestGoFiles []string + TestImports []string + XTestGoFiles []string + XTestImports []string + ForTest string // q in a "p [q.test]" package, else "" + DepOnly bool + + Error *jsonPackageError +} + +type jsonPackageError struct { + ImportStack []string + Pos string + Err string +} + +func otherFiles(p *jsonPackage) [][]string { + return [][]string{p.CFiles, p.CXXFiles, p.MFiles, p.HFiles, p.FFiles, p.SFiles, p.SwigFiles, p.SwigCXXFiles, p.SysoFiles} +} + +// golistDriver uses the "go list" command to expand the pattern +// words and return metadata for the specified packages. dir may be +// "" and env may be nil, as per os/exec.Command. +func golistDriver(cfg *Config, rootsDirs func() *goInfo, words ...string) (*driverResponse, error) { + // go list uses the following identifiers in ImportPath and Imports: + // + // "p" -- importable package or main (command) + // "q.test" -- q's test executable + // "p [q.test]" -- variant of p as built for q's test executable + // "q_test [q.test]" -- q's external test package + // + // The packages p that are built differently for a test q.test + // are q itself, plus any helpers used by the external test q_test, + // typically including "testing" and all its dependencies. + + // Run "go list" for complete + // information on the specified packages. + buf, err := invokeGo(cfg, golistargs(cfg, words)...) + if err != nil { + return nil, err + } + seen := make(map[string]*jsonPackage) + // Decode the JSON and convert it to Package form. + var response driverResponse + for dec := json.NewDecoder(buf); dec.More(); { + p := new(jsonPackage) + if err := dec.Decode(p); err != nil { + return nil, fmt.Errorf("JSON decoding failed: %v", err) + } + + if p.ImportPath == "" { + // The documentation for go list says that “[e]rroneous packages will have + // a non-empty ImportPath”. If for some reason it comes back empty, we + // prefer to error out rather than silently discarding data or handing + // back a package without any way to refer to it. + if p.Error != nil { + return nil, Error{ + Pos: p.Error.Pos, + Msg: p.Error.Err, + } + } + return nil, fmt.Errorf("package missing import path: %+v", p) + } + + // Work around https://golang.org/issue/33157: + // go list -e, when given an absolute path, will find the package contained at + // that directory. But when no package exists there, it will return a fake package + // with an error and the ImportPath set to the absolute path provided to go list. + // Try to convert that absolute path to what its package path would be if it's + // contained in a known module or GOPATH entry. This will allow the package to be + // properly "reclaimed" when overlays are processed. + if filepath.IsAbs(p.ImportPath) && p.Error != nil { + pkgPath, ok := getPkgPath(cfg, p.ImportPath, rootsDirs) + if ok { + p.ImportPath = pkgPath + } + } + + if old, found := seen[p.ImportPath]; found { + if !reflect.DeepEqual(p, old) { + return nil, fmt.Errorf("internal error: go list gives conflicting information for package %v", p.ImportPath) + } + // skip the duplicate + continue + } + seen[p.ImportPath] = p + + pkg := &Package{ + Name: p.Name, + ID: p.ImportPath, + GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles), + CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), + OtherFiles: absJoin(p.Dir, otherFiles(p)...), + } + + // Work around https://golang.org/issue/28749: + // cmd/go puts assembly, C, and C++ files in CompiledGoFiles. + // Filter out any elements of CompiledGoFiles that are also in OtherFiles. + // We have to keep this workaround in place until go1.12 is a distant memory. + if len(pkg.OtherFiles) > 0 { + other := make(map[string]bool, len(pkg.OtherFiles)) + for _, f := range pkg.OtherFiles { + other[f] = true + } + + out := pkg.CompiledGoFiles[:0] + for _, f := range pkg.CompiledGoFiles { + if other[f] { + continue + } + out = append(out, f) + } + pkg.CompiledGoFiles = out + } + + // Extract the PkgPath from the package's ID. + if i := strings.IndexByte(pkg.ID, ' '); i >= 0 { + pkg.PkgPath = pkg.ID[:i] + } else { + pkg.PkgPath = pkg.ID + } + + if pkg.PkgPath == "unsafe" { + pkg.GoFiles = nil // ignore fake unsafe.go file + } + + // Assume go list emits only absolute paths for Dir. + if p.Dir != "" && !filepath.IsAbs(p.Dir) { + log.Fatalf("internal error: go list returned non-absolute Package.Dir: %s", p.Dir) + } + + if p.Export != "" && !filepath.IsAbs(p.Export) { + pkg.ExportFile = filepath.Join(p.Dir, p.Export) + } else { + pkg.ExportFile = p.Export + } + + // imports + // + // Imports contains the IDs of all imported packages. + // ImportsMap records (path, ID) only where they differ. + ids := make(map[string]bool) + for _, id := range p.Imports { + ids[id] = true + } + pkg.Imports = make(map[string]*Package) + for path, id := range p.ImportMap { + pkg.Imports[path] = &Package{ID: id} // non-identity import + delete(ids, id) + } + for id := range ids { + if id == "C" { + continue + } + + pkg.Imports[id] = &Package{ID: id} // identity import + } + if !p.DepOnly { + response.Roots = append(response.Roots, pkg.ID) + } + + // Work around for pre-go.1.11 versions of go list. + // TODO(matloob): they should be handled by the fallback. + // Can we delete this? + if len(pkg.CompiledGoFiles) == 0 { + pkg.CompiledGoFiles = pkg.GoFiles + } + + if p.Error != nil { + pkg.Errors = append(pkg.Errors, Error{ + Pos: p.Error.Pos, + Msg: strings.TrimSpace(p.Error.Err), // Trim to work around golang.org/issue/32363. + }) + } + + response.Packages = append(response.Packages, pkg) + } + + return &response, nil +} + +// getPkgPath finds the package path of a directory if it's relative to a root directory. +func getPkgPath(cfg *Config, dir string, goInfo func() *goInfo) (string, bool) { + absDir, err := filepath.Abs(dir) + if err != nil { + cfg.Logf("error getting absolute path of %s: %v", dir, err) + return "", false + } + for rdir, rpath := range goInfo().rootDirs { + absRdir, err := filepath.Abs(rdir) + if err != nil { + cfg.Logf("error getting absolute path of %s: %v", rdir, err) + continue + } + // Make sure that the directory is in the module, + // to avoid creating a path relative to another module. + if !strings.HasPrefix(absDir, absRdir) { + cfg.Logf("%s does not have prefix %s", absDir, absRdir) + continue + } + // TODO(matloob): This doesn't properly handle symlinks. + r, err := filepath.Rel(rdir, dir) + if err != nil { + continue + } + if rpath != "" { + // We choose only one root even though the directory even it can belong in multiple modules + // or GOPATH entries. This is okay because we only need to work with absolute dirs when a + // file is missing from disk, for instance when gopls calls go/packages in an overlay. + // Once the file is saved, gopls, or the next invocation of the tool will get the correct + // result straight from golist. + // TODO(matloob): Implement module tiebreaking? + return path.Join(rpath, filepath.ToSlash(r)), true + } + return filepath.ToSlash(r), true + } + return "", false +} + +// absJoin absolutizes and flattens the lists of files. +func absJoin(dir string, fileses ...[]string) (res []string) { + for _, files := range fileses { + for _, file := range files { + if !filepath.IsAbs(file) { + file = filepath.Join(dir, file) + } + res = append(res, file) + } + } + return res +} + +func golistargs(cfg *Config, words []string) []string { + const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo + fullargs := []string{ + "list", "-e", "-json", + fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypesInfo|NeedTypesSizes) != 0), + fmt.Sprintf("-test=%t", cfg.Tests), + fmt.Sprintf("-export=%t", usesExportData(cfg)), + fmt.Sprintf("-deps=%t", cfg.Mode&NeedImports != 0), + // go list doesn't let you pass -test and -find together, + // probably because you'd just get the TestMain. + fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0), + } + fullargs = append(fullargs, cfg.BuildFlags...) + fullargs = append(fullargs, "--") + fullargs = append(fullargs, words...) + return fullargs +} + +// invokeGo returns the stdout of a go command invocation. +func invokeGo(cfg *Config, args ...string) (*bytes.Buffer, error) { + stdout := new(bytes.Buffer) + stderr := new(bytes.Buffer) + cmd := exec.CommandContext(cfg.Context, "go", args...) + // On darwin the cwd gets resolved to the real path, which breaks anything that + // expects the working directory to keep the original path, including the + // go command when dealing with modules. + // The Go stdlib has a special feature where if the cwd and the PWD are the + // same node then it trusts the PWD, so by setting it in the env for the child + // process we fix up all the paths returned by the go command. + cmd.Env = append(append([]string{}, cfg.Env...), "PWD="+cfg.Dir) + cmd.Dir = cfg.Dir + cmd.Stdout = stdout + cmd.Stderr = stderr + defer func(start time.Time) { + cfg.Logf("%s for %v, stderr: <<%s>> stdout: <<%s>>\n", time.Since(start), cmdDebugStr(cmd, args...), stderr, stdout) + }(time.Now()) + + if err := cmd.Run(); err != nil { + // Check for 'go' executable not being found. + if ee, ok := err.(*exec.Error); ok && ee.Err == exec.ErrNotFound { + return nil, fmt.Errorf("'go list' driver requires 'go', but %s", exec.ErrNotFound) + } + + exitErr, ok := err.(*exec.ExitError) + if !ok { + // Catastrophic error: + // - context cancellation + return nil, fmt.Errorf("couldn't exec 'go %v': %s %T", args, err, err) + } + + // Old go version? + if strings.Contains(stderr.String(), "flag provided but not defined") { + return nil, goTooOldError{fmt.Errorf("unsupported version of go: %s: %s", exitErr, stderr)} + } + + // Related to #24854 + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "unexpected directory layout") { + return nil, fmt.Errorf("%s", stderr.String()) + } + + // Is there an error running the C compiler in cgo? This will be reported in the "Error" field + // and should be suppressed by go list -e. + // + // This condition is not perfect yet because the error message can include other error messages than runtime/cgo. + isPkgPathRune := func(r rune) bool { + // From https://golang.org/ref/spec#Import_declarations: + // Implementation restriction: A compiler may restrict ImportPaths to non-empty strings + // using only characters belonging to Unicode's L, M, N, P, and S general categories + // (the Graphic characters without spaces) and may also exclude the + // characters !"#$%&'()*,:;<=>?[\]^`{|} and the Unicode replacement character U+FFFD. + return unicode.IsOneOf([]*unicode.RangeTable{unicode.L, unicode.M, unicode.N, unicode.P, unicode.S}, r) && + !strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^`{|}\uFFFD", r) + } + if len(stderr.String()) > 0 && strings.HasPrefix(stderr.String(), "# ") { + if strings.HasPrefix(strings.TrimLeftFunc(stderr.String()[len("# "):], isPkgPathRune), "\n") { + return stdout, nil + } + } + + // This error only appears in stderr. See golang.org/cl/166398 for a fix in go list to show + // the error in the Err section of stdout in case -e option is provided. + // This fix is provided for backwards compatibility. + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "named files must be .go files") { + output := fmt.Sprintf(`{"ImportPath": "command-line-arguments","Incomplete": true,"Error": {"Pos": "","Err": %q}}`, + strings.Trim(stderr.String(), "\n")) + return bytes.NewBufferString(output), nil + } + + // Similar to the previous error, but currently lacks a fix in Go. + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "named files must all be in one directory") { + output := fmt.Sprintf(`{"ImportPath": "command-line-arguments","Incomplete": true,"Error": {"Pos": "","Err": %q}}`, + strings.Trim(stderr.String(), "\n")) + return bytes.NewBufferString(output), nil + } + + // Backwards compatibility for Go 1.11 because 1.12 and 1.13 put the directory in the ImportPath. + // If the package doesn't exist, put the absolute path of the directory into the error message, + // as Go 1.13 list does. + const noSuchDirectory = "no such directory" + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), noSuchDirectory) { + errstr := stderr.String() + abspath := strings.TrimSpace(errstr[strings.Index(errstr, noSuchDirectory)+len(noSuchDirectory):]) + output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, + abspath, strings.Trim(stderr.String(), "\n")) + return bytes.NewBufferString(output), nil + } + + // Workaround for #29280: go list -e has incorrect behavior when an ad-hoc package doesn't exist. + // Note that the error message we look for in this case is different that the one looked for above. + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "no such file or directory") { + output := fmt.Sprintf(`{"ImportPath": "command-line-arguments","Incomplete": true,"Error": {"Pos": "","Err": %q}}`, + strings.Trim(stderr.String(), "\n")) + return bytes.NewBufferString(output), nil + } + + // Workaround for #34273. go list -e with GO111MODULE=on has incorrect behavior when listing a + // directory outside any module. + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "outside available modules") { + output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, + // TODO(matloob): command-line-arguments isn't correct here. + "command-line-arguments", strings.Trim(stderr.String(), "\n")) + return bytes.NewBufferString(output), nil + + } + + // Workaround for an instance of golang.org/issue/26755: go list -e will return a non-zero exit + // status if there's a dependency on a package that doesn't exist. But it should return + // a zero exit status and set an error on that package. + if len(stderr.String()) > 0 && strings.Contains(stderr.String(), "no Go files in") { + // Don't clobber stdout if `go list` actually returned something. + if len(stdout.String()) > 0 { + return stdout, nil + } + // try to extract package name from string + stderrStr := stderr.String() + var importPath string + colon := strings.Index(stderrStr, ":") + if colon > 0 && strings.HasPrefix(stderrStr, "go build ") { + importPath = stderrStr[len("go build "):colon] + } + output := fmt.Sprintf(`{"ImportPath": %q,"Incomplete": true,"Error": {"Pos": "","Err": %q}}`, + importPath, strings.Trim(stderrStr, "\n")) + return bytes.NewBufferString(output), nil + } + + // Export mode entails a build. + // If that build fails, errors appear on stderr + // (despite the -e flag) and the Export field is blank. + // Do not fail in that case. + // The same is true if an ad-hoc package given to go list doesn't exist. + // TODO(matloob): Remove these once we can depend on go list to exit with a zero status with -e even when + // packages don't exist or a build fails. + if !usesExportData(cfg) && !containsGoFile(args) { + return nil, fmt.Errorf("go %v: %s: %s", args, exitErr, stderr) + } + } + + // As of writing, go list -export prints some non-fatal compilation + // errors to stderr, even with -e set. We would prefer that it put + // them in the Package.Error JSON (see https://golang.org/issue/26319). + // In the meantime, there's nowhere good to put them, but they can + // be useful for debugging. Print them if $GOPACKAGESPRINTGOLISTERRORS + // is set. + if len(stderr.Bytes()) != 0 && os.Getenv("GOPACKAGESPRINTGOLISTERRORS") != "" { + fmt.Fprintf(os.Stderr, "%s stderr: <<%s>>\n", cmdDebugStr(cmd, args...), stderr) + } + return stdout, nil +} + +func containsGoFile(s []string) bool { + for _, f := range s { + if strings.HasSuffix(f, ".go") { + return true + } + } + return false +} + +func cmdDebugStr(cmd *exec.Cmd, args ...string) string { + env := make(map[string]string) + for _, kv := range cmd.Env { + split := strings.Split(kv, "=") + k, v := split[0], split[1] + env[k] = v + } + var quotedArgs []string + for _, arg := range args { + quotedArgs = append(quotedArgs, strconv.Quote(arg)) + } + + return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v PWD=%v go %s", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["PWD"], strings.Join(quotedArgs, " ")) +} diff --git a/vendor/golang.org/x/tools/go/packages/golist_overlay.go b/vendor/golang.org/x/tools/go/packages/golist_overlay.go new file mode 100644 index 00000000000..a7de62299d6 --- /dev/null +++ b/vendor/golang.org/x/tools/go/packages/golist_overlay.go @@ -0,0 +1,293 @@ +package packages + +import ( + "bytes" + "encoding/json" + "fmt" + "go/parser" + "go/token" + "path/filepath" + "strconv" + "strings" +) + +// processGolistOverlay provides rudimentary support for adding +// files that don't exist on disk to an overlay. The results can be +// sometimes incorrect. +// TODO(matloob): Handle unsupported cases, including the following: +// - determining the correct package to add given a new import path +func processGolistOverlay(cfg *Config, response *responseDeduper, rootDirs func() *goInfo) (modifiedPkgs, needPkgs []string, err error) { + havePkgs := make(map[string]string) // importPath -> non-test package ID + needPkgsSet := make(map[string]bool) + modifiedPkgsSet := make(map[string]bool) + + for _, pkg := range response.dr.Packages { + // This is an approximation of import path to id. This can be + // wrong for tests, vendored packages, and a number of other cases. + havePkgs[pkg.PkgPath] = pkg.ID + } + + // If no new imports are added, it is safe to avoid loading any needPkgs. + // Otherwise, it's hard to tell which package is actually being loaded + // (due to vendoring) and whether any modified package will show up + // in the transitive set of dependencies (because new imports are added, + // potentially modifying the transitive set of dependencies). + var overlayAddsImports bool + + for opath, contents := range cfg.Overlay { + base := filepath.Base(opath) + dir := filepath.Dir(opath) + var pkg *Package // if opath belongs to both a package and its test variant, this will be the test variant + var testVariantOf *Package // if opath is a test file, this is the package it is testing + var fileExists bool + isTestFile := strings.HasSuffix(opath, "_test.go") + pkgName, ok := extractPackageName(opath, contents) + if !ok { + // Don't bother adding a file that doesn't even have a parsable package statement + // to the overlay. + continue + } + nextPackage: + for _, p := range response.dr.Packages { + if pkgName != p.Name && p.ID != "command-line-arguments" { + continue + } + for _, f := range p.GoFiles { + if !sameFile(filepath.Dir(f), dir) { + continue + } + // Make sure to capture information on the package's test variant, if needed. + if isTestFile && !hasTestFiles(p) { + // TODO(matloob): Are there packages other than the 'production' variant + // of a package that this can match? This shouldn't match the test main package + // because the file is generated in another directory. + testVariantOf = p + continue nextPackage + } + if pkg != nil && p != pkg && pkg.PkgPath == p.PkgPath { + // If we've already seen the test variant, + // make sure to label which package it is a test variant of. + if hasTestFiles(pkg) { + testVariantOf = p + continue nextPackage + } + // If we have already seen the package of which this is a test variant. + if hasTestFiles(p) { + testVariantOf = pkg + } + } + pkg = p + if filepath.Base(f) == base { + fileExists = true + } + } + } + // The overlay could have included an entirely new package. + if pkg == nil { + // Try to find the module or gopath dir the file is contained in. + // Then for modules, add the module opath to the beginning. + pkgPath, ok := getPkgPath(cfg, dir, rootDirs) + if !ok { + break + } + isXTest := strings.HasSuffix(pkgName, "_test") + if isXTest { + pkgPath += "_test" + } + id := pkgPath + if isTestFile && !isXTest { + id = fmt.Sprintf("%s [%s.test]", pkgPath, pkgPath) + } + // Try to reclaim a package with the same id if it exists in the response. + for _, p := range response.dr.Packages { + if reclaimPackage(p, id, opath, contents) { + pkg = p + break + } + } + // Otherwise, create a new package + if pkg == nil { + pkg = &Package{PkgPath: pkgPath, ID: id, Name: pkgName, Imports: make(map[string]*Package)} + response.addPackage(pkg) + havePkgs[pkg.PkgPath] = id + // Add the production package's sources for a test variant. + if isTestFile && !isXTest && testVariantOf != nil { + pkg.GoFiles = append(pkg.GoFiles, testVariantOf.GoFiles...) + pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, testVariantOf.CompiledGoFiles...) + } + } + } + if !fileExists { + pkg.GoFiles = append(pkg.GoFiles, opath) + // TODO(matloob): Adding the file to CompiledGoFiles can exhibit the wrong behavior + // if the file will be ignored due to its build tags. + pkg.CompiledGoFiles = append(pkg.CompiledGoFiles, opath) + modifiedPkgsSet[pkg.ID] = true + } + imports, err := extractImports(opath, contents) + if err != nil { + // Let the parser or type checker report errors later. + continue + } + for _, imp := range imports { + _, found := pkg.Imports[imp] + if !found { + overlayAddsImports = true + // TODO(matloob): Handle cases when the following block isn't correct. + // These include imports of vendored packages, etc. + id, ok := havePkgs[imp] + if !ok { + id = imp + } + pkg.Imports[imp] = &Package{ID: id} + // Add dependencies to the non-test variant version of this package as wel. + if testVariantOf != nil { + testVariantOf.Imports[imp] = &Package{ID: id} + } + } + } + continue + } + + // toPkgPath tries to guess the package path given the id. + // This isn't always correct -- it's certainly wrong for + // vendored packages' paths. + toPkgPath := func(id string) string { + // TODO(matloob): Handle vendor paths. + i := strings.IndexByte(id, ' ') + if i >= 0 { + return id[:i] + } + return id + } + + // Do another pass now that new packages have been created to determine the + // set of missing packages. + for _, pkg := range response.dr.Packages { + for _, imp := range pkg.Imports { + pkgPath := toPkgPath(imp.ID) + if _, ok := havePkgs[pkgPath]; !ok { + needPkgsSet[pkgPath] = true + } + } + } + + if overlayAddsImports { + needPkgs = make([]string, 0, len(needPkgsSet)) + for pkg := range needPkgsSet { + needPkgs = append(needPkgs, pkg) + } + } + modifiedPkgs = make([]string, 0, len(modifiedPkgsSet)) + for pkg := range modifiedPkgsSet { + modifiedPkgs = append(modifiedPkgs, pkg) + } + return modifiedPkgs, needPkgs, err +} + +func hasTestFiles(p *Package) bool { + for _, f := range p.GoFiles { + if strings.HasSuffix(f, "_test.go") { + return true + } + } + return false +} + +// determineRootDirs returns a mapping from directories code can be contained in to the +// corresponding import path prefixes of those directories. +// Its result is used to try to determine the import path for a package containing +// an overlay file. +func determineRootDirs(cfg *Config) map[string]string { + // Assume modules first: + out, err := invokeGo(cfg, "list", "-m", "-json", "all") + if err != nil { + return determineRootDirsGOPATH(cfg) + } + m := map[string]string{} + type jsonMod struct{ Path, Dir string } + for dec := json.NewDecoder(out); dec.More(); { + mod := new(jsonMod) + if err := dec.Decode(mod); err != nil { + return m // Give up and return an empty map. Package won't be found for overlay. + } + if mod.Dir != "" && mod.Path != "" { + // This is a valid module; add it to the map. + m[mod.Dir] = mod.Path + } + } + return m +} + +func determineRootDirsGOPATH(cfg *Config) map[string]string { + m := map[string]string{} + out, err := invokeGo(cfg, "env", "GOPATH") + if err != nil { + // Could not determine root dir mapping. Everything is best-effort, so just return an empty map. + // When we try to find the import path for a directory, there will be no root-dir match and + // we'll give up. + return m + } + for _, p := range filepath.SplitList(string(bytes.TrimSpace(out.Bytes()))) { + m[filepath.Join(p, "src")] = "" + } + return m +} + +func extractImports(filename string, contents []byte) ([]string, error) { + f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.ImportsOnly) // TODO(matloob): reuse fileset? + if err != nil { + return nil, err + } + var res []string + for _, imp := range f.Imports { + quotedPath := imp.Path.Value + path, err := strconv.Unquote(quotedPath) + if err != nil { + return nil, err + } + res = append(res, path) + } + return res, nil +} + +// reclaimPackage attempts to reuse a package that failed to load in an overlay. +// +// If the package has errors and has no Name, GoFiles, or Imports, +// then it's possible that it doesn't yet exist on disk. +func reclaimPackage(pkg *Package, id string, filename string, contents []byte) bool { + // TODO(rstambler): Check the message of the actual error? + // It differs between $GOPATH and module mode. + if pkg.ID != id { + return false + } + if len(pkg.Errors) != 1 { + return false + } + if pkg.Name != "" || pkg.ExportFile != "" { + return false + } + if len(pkg.GoFiles) > 0 || len(pkg.CompiledGoFiles) > 0 || len(pkg.OtherFiles) > 0 { + return false + } + if len(pkg.Imports) > 0 { + return false + } + pkgName, ok := extractPackageName(filename, contents) + if !ok { + return false + } + pkg.Name = pkgName + pkg.Errors = nil + return true +} + +func extractPackageName(filename string, contents []byte) (string, bool) { + // TODO(rstambler): Check the message of the actual error? + // It differs between $GOPATH and module mode. + f, err := parser.ParseFile(token.NewFileSet(), filename, contents, parser.PackageClauseOnly) // TODO(matloob): reuse fileset? + if err != nil { + return "", false + } + return f.Name.Name, true +} diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go new file mode 100644 index 00000000000..b29c91369e1 --- /dev/null +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -0,0 +1,1113 @@ +// 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 packages + +// See doc.go for package documentation and implementation notes. + +import ( + "context" + "encoding/json" + "fmt" + "go/ast" + "go/parser" + "go/scanner" + "go/token" + "go/types" + "io/ioutil" + "log" + "os" + "path/filepath" + "strings" + "sync" + + "golang.org/x/tools/go/gcexportdata" +) + +// A LoadMode controls the amount of detail to return when loading. +// The bits below can be combined to specify which fields should be +// filled in the result packages. +// The zero value is a special case, equivalent to combining +// the NeedName, NeedFiles, and NeedCompiledGoFiles bits. +// ID and Errors (if present) will always be filled. +// Load may return more information than requested. +type LoadMode int + +const ( + // NeedName adds Name and PkgPath. + NeedName LoadMode = 1 << iota + + // NeedFiles adds GoFiles and OtherFiles. + NeedFiles + + // NeedCompiledGoFiles adds CompiledGoFiles. + NeedCompiledGoFiles + + // NeedImports adds Imports. If NeedDeps is not set, the Imports field will contain + // "placeholder" Packages with only the ID set. + NeedImports + + // NeedDeps adds the fields requested by the LoadMode in the packages in Imports. + NeedDeps + + // NeedExportsFile adds ExportsFile. + NeedExportsFile + + // NeedTypes adds Types, Fset, and IllTyped. + NeedTypes + + // NeedSyntax adds Syntax. + NeedSyntax + + // NeedTypesInfo adds TypesInfo. + NeedTypesInfo + + // NeedTypesSizes adds TypesSizes. + NeedTypesSizes +) + +const ( + // Deprecated: LoadFiles exists for historical compatibility + // and should not be used. Please directly specify the needed fields using the Need values. + LoadFiles = NeedName | NeedFiles | NeedCompiledGoFiles + + // Deprecated: LoadImports exists for historical compatibility + // and should not be used. Please directly specify the needed fields using the Need values. + LoadImports = LoadFiles | NeedImports + + // Deprecated: LoadTypes exists for historical compatibility + // and should not be used. Please directly specify the needed fields using the Need values. + LoadTypes = LoadImports | NeedTypes | NeedTypesSizes + + // Deprecated: LoadSyntax exists for historical compatibility + // and should not be used. Please directly specify the needed fields using the Need values. + LoadSyntax = LoadTypes | NeedSyntax | NeedTypesInfo + + // Deprecated: LoadAllSyntax exists for historical compatibility + // and should not be used. Please directly specify the needed fields using the Need values. + LoadAllSyntax = LoadSyntax | NeedDeps +) + +// A Config specifies details about how packages should be loaded. +// The zero value is a valid configuration. +// Calls to Load do not modify this struct. +type Config struct { + // Mode controls the level of information returned for each package. + Mode LoadMode + + // Context specifies the context for the load operation. + // If the context is cancelled, the loader may stop early + // and return an ErrCancelled error. + // If Context is nil, the load cannot be cancelled. + Context context.Context + + // Logf is the logger for the config. + // If the user provides a logger, debug logging is enabled. + // If the GOPACKAGESDEBUG environment variable is set to true, + // but the logger is nil, default to log.Printf. + Logf func(format string, args ...interface{}) + + // Dir is the directory in which to run the build system's query tool + // that provides information about the packages. + // If Dir is empty, the tool is run in the current directory. + Dir string + + // Env is the environment to use when invoking the build system's query tool. + // If Env is nil, the current environment is used. + // As in os/exec's Cmd, only the last value in the slice for + // each environment key is used. To specify the setting of only + // a few variables, append to the current environment, as in: + // + // opt.Env = append(os.Environ(), "GOOS=plan9", "GOARCH=386") + // + Env []string + + // BuildFlags is a list of command-line flags to be passed through to + // the build system's query tool. + BuildFlags []string + + // Fset provides source position information for syntax trees and types. + // If Fset is nil, Load will use a new fileset, but preserve Fset's value. + Fset *token.FileSet + + // ParseFile is called to read and parse each file + // when preparing a package's type-checked syntax tree. + // It must be safe to call ParseFile simultaneously from multiple goroutines. + // If ParseFile is nil, the loader will uses parser.ParseFile. + // + // ParseFile should parse the source from src and use filename only for + // recording position information. + // + // An application may supply a custom implementation of ParseFile + // to change the effective file contents or the behavior of the parser, + // or to modify the syntax tree. For example, selectively eliminating + // unwanted function bodies can significantly accelerate type checking. + ParseFile func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) + + // If Tests is set, the loader includes not just the packages + // matching a particular pattern but also any related test packages, + // including test-only variants of the package and the test executable. + // + // For example, when using the go command, loading "fmt" with Tests=true + // returns four packages, with IDs "fmt" (the standard package), + // "fmt [fmt.test]" (the package as compiled for the test), + // "fmt_test" (the test functions from source files in package fmt_test), + // and "fmt.test" (the test binary). + // + // In build systems with explicit names for tests, + // setting Tests may have no effect. + Tests bool + + // Overlay provides a mapping of absolute file paths to file contents. + // If the file with the given path already exists, the parser will use the + // alternative file contents provided by the map. + // + // Overlays provide incomplete support for when a given file doesn't + // already exist on disk. See the package doc above for more details. + Overlay map[string][]byte +} + +// driver is the type for functions that query the build system for the +// packages named by the patterns. +type driver func(cfg *Config, patterns ...string) (*driverResponse, error) + +// driverResponse contains the results for a driver query. +type driverResponse struct { + // Sizes, if not nil, is the types.Sizes to use when type checking. + Sizes *types.StdSizes + + // Roots is the set of package IDs that make up the root packages. + // We have to encode this separately because when we encode a single package + // we cannot know if it is one of the roots as that requires knowledge of the + // graph it is part of. + Roots []string `json:",omitempty"` + + // Packages is the full set of packages in the graph. + // The packages are not connected into a graph. + // The Imports if populated will be stubs that only have their ID set. + // Imports will be connected and then type and syntax information added in a + // later pass (see refine). + Packages []*Package +} + +// Load loads and returns the Go packages named by the given patterns. +// +// Config specifies loading options; +// nil behaves the same as an empty Config. +// +// Load returns an error if any of the patterns was invalid +// as defined by the underlying build system. +// It may return an empty list of packages without an error, +// for instance for an empty expansion of a valid wildcard. +// Errors associated with a particular package are recorded in the +// corresponding Package's Errors list, and do not cause Load to +// return an error. Clients may need to handle such errors before +// proceeding with further analysis. The PrintErrors function is +// provided for convenient display of all errors. +func Load(cfg *Config, patterns ...string) ([]*Package, error) { + l := newLoader(cfg) + response, err := defaultDriver(&l.Config, patterns...) + if err != nil { + return nil, err + } + l.sizes = response.Sizes + return l.refine(response.Roots, response.Packages...) +} + +// defaultDriver is a driver that looks for an external driver binary, and if +// it does not find it falls back to the built in go list driver. +func defaultDriver(cfg *Config, patterns ...string) (*driverResponse, error) { + driver := findExternalDriver(cfg) + if driver == nil { + driver = goListDriver + } + return driver(cfg, patterns...) +} + +// A Package describes a loaded Go package. +type Package struct { + // ID is a unique identifier for a package, + // in a syntax provided by the underlying build system. + // + // Because the syntax varies based on the build system, + // clients should treat IDs as opaque and not attempt to + // interpret them. + ID string + + // Name is the package name as it appears in the package source code. + Name string + + // PkgPath is the package path as used by the go/types package. + PkgPath string + + // Errors contains any errors encountered querying the metadata + // of the package, or while parsing or type-checking its files. + Errors []Error + + // GoFiles lists the absolute file paths of the package's Go source files. + GoFiles []string + + // CompiledGoFiles lists the absolute file paths of the package's source + // files that were presented to the compiler. + // This may differ from GoFiles if files are processed before compilation. + CompiledGoFiles []string + + // OtherFiles lists the absolute file paths of the package's non-Go source files, + // including assembly, C, C++, Fortran, Objective-C, SWIG, and so on. + OtherFiles []string + + // ExportFile is the absolute path to a file containing type + // information for the package as provided by the build system. + ExportFile string + + // Imports maps import paths appearing in the package's Go source files + // to corresponding loaded Packages. + Imports map[string]*Package + + // Types provides type information for the package. + // The NeedTypes LoadMode bit sets this field for packages matching the + // patterns; type information for dependencies may be missing or incomplete, + // unless NeedDeps and NeedImports are also set. + Types *types.Package + + // Fset provides position information for Types, TypesInfo, and Syntax. + // It is set only when Types is set. + Fset *token.FileSet + + // IllTyped indicates whether the package or any dependency contains errors. + // It is set only when Types is set. + IllTyped bool + + // Syntax is the package's syntax trees, for the files listed in CompiledGoFiles. + // + // The NeedSyntax LoadMode bit populates this field for packages matching the patterns. + // If NeedDeps and NeedImports are also set, this field will also be populated + // for dependencies. + Syntax []*ast.File + + // TypesInfo provides type information about the package's syntax trees. + // It is set only when Syntax is set. + TypesInfo *types.Info + + // TypesSizes provides the effective size function for types in TypesInfo. + TypesSizes types.Sizes +} + +// An Error describes a problem with a package's metadata, syntax, or types. +type Error struct { + Pos string // "file:line:col" or "file:line" or "" or "-" + Msg string + Kind ErrorKind +} + +// ErrorKind describes the source of the error, allowing the user to +// differentiate between errors generated by the driver, the parser, or the +// type-checker. +type ErrorKind int + +const ( + UnknownError ErrorKind = iota + ListError + ParseError + TypeError +) + +func (err Error) Error() string { + pos := err.Pos + if pos == "" { + pos = "-" // like token.Position{}.String() + } + return pos + ": " + err.Msg +} + +// flatPackage is the JSON form of Package +// It drops all the type and syntax fields, and transforms the Imports +// +// TODO(adonovan): identify this struct with Package, effectively +// publishing the JSON protocol. +type flatPackage struct { + ID string + Name string `json:",omitempty"` + PkgPath string `json:",omitempty"` + Errors []Error `json:",omitempty"` + GoFiles []string `json:",omitempty"` + CompiledGoFiles []string `json:",omitempty"` + OtherFiles []string `json:",omitempty"` + ExportFile string `json:",omitempty"` + Imports map[string]string `json:",omitempty"` +} + +// MarshalJSON returns the Package in its JSON form. +// For the most part, the structure fields are written out unmodified, and +// the type and syntax fields are skipped. +// The imports are written out as just a map of path to package id. +// The errors are written using a custom type that tries to preserve the +// structure of error types we know about. +// +// This method exists to enable support for additional build systems. It is +// not intended for use by clients of the API and we may change the format. +func (p *Package) MarshalJSON() ([]byte, error) { + flat := &flatPackage{ + ID: p.ID, + Name: p.Name, + PkgPath: p.PkgPath, + Errors: p.Errors, + GoFiles: p.GoFiles, + CompiledGoFiles: p.CompiledGoFiles, + OtherFiles: p.OtherFiles, + ExportFile: p.ExportFile, + } + if len(p.Imports) > 0 { + flat.Imports = make(map[string]string, len(p.Imports)) + for path, ipkg := range p.Imports { + flat.Imports[path] = ipkg.ID + } + } + return json.Marshal(flat) +} + +// UnmarshalJSON reads in a Package from its JSON format. +// See MarshalJSON for details about the format accepted. +func (p *Package) UnmarshalJSON(b []byte) error { + flat := &flatPackage{} + if err := json.Unmarshal(b, &flat); err != nil { + return err + } + *p = Package{ + ID: flat.ID, + Name: flat.Name, + PkgPath: flat.PkgPath, + Errors: flat.Errors, + GoFiles: flat.GoFiles, + CompiledGoFiles: flat.CompiledGoFiles, + OtherFiles: flat.OtherFiles, + ExportFile: flat.ExportFile, + } + if len(flat.Imports) > 0 { + p.Imports = make(map[string]*Package, len(flat.Imports)) + for path, id := range flat.Imports { + p.Imports[path] = &Package{ID: id} + } + } + return nil +} + +func (p *Package) String() string { return p.ID } + +// loaderPackage augments Package with state used during the loading phase +type loaderPackage struct { + *Package + importErrors map[string]error // maps each bad import to its error + loadOnce sync.Once + color uint8 // for cycle detection + needsrc bool // load from source (Mode >= LoadTypes) + needtypes bool // type information is either requested or depended on + initial bool // package was matched by a pattern +} + +// loader holds the working state of a single call to load. +type loader struct { + pkgs map[string]*loaderPackage + Config + sizes types.Sizes + parseCache map[string]*parseValue + parseCacheMu sync.Mutex + exportMu sync.Mutex // enforces mutual exclusion of exportdata operations + + // Config.Mode contains the implied mode (see impliedLoadMode). + // Implied mode contains all the fields we need the data for. + // In requestedMode there are the actually requested fields. + // We'll zero them out before returning packages to the user. + // This makes it easier for us to get the conditions where + // we need certain modes right. + requestedMode LoadMode +} + +type parseValue struct { + f *ast.File + err error + ready chan struct{} +} + +func newLoader(cfg *Config) *loader { + ld := &loader{ + parseCache: map[string]*parseValue{}, + } + if cfg != nil { + ld.Config = *cfg + // If the user has provided a logger, use it. + ld.Config.Logf = cfg.Logf + } + if ld.Config.Logf == nil { + // If the GOPACKAGESDEBUG environment variable is set to true, + // but the user has not provided a logger, default to log.Printf. + if debug { + ld.Config.Logf = log.Printf + } else { + ld.Config.Logf = func(format string, args ...interface{}) {} + } + } + if ld.Config.Mode == 0 { + ld.Config.Mode = NeedName | NeedFiles | NeedCompiledGoFiles // Preserve zero behavior of Mode for backwards compatibility. + } + if ld.Config.Env == nil { + ld.Config.Env = os.Environ() + } + if ld.Context == nil { + ld.Context = context.Background() + } + if ld.Dir == "" { + if dir, err := os.Getwd(); err == nil { + ld.Dir = dir + } + } + + // Save the actually requested fields. We'll zero them out before returning packages to the user. + ld.requestedMode = ld.Mode + ld.Mode = impliedLoadMode(ld.Mode) + + if ld.Mode&NeedTypes != 0 { + if ld.Fset == nil { + ld.Fset = token.NewFileSet() + } + + // ParseFile is required even in LoadTypes mode + // because we load source if export data is missing. + if ld.ParseFile == nil { + ld.ParseFile = func(fset *token.FileSet, filename string, src []byte) (*ast.File, error) { + const mode = parser.AllErrors | parser.ParseComments + return parser.ParseFile(fset, filename, src, mode) + } + } + } + + return ld +} + +// refine connects the supplied packages into a graph and then adds type and +// and syntax information as requested by the LoadMode. +func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { + rootMap := make(map[string]int, len(roots)) + for i, root := range roots { + rootMap[root] = i + } + ld.pkgs = make(map[string]*loaderPackage) + // first pass, fixup and build the map and roots + var initial = make([]*loaderPackage, len(roots)) + for _, pkg := range list { + rootIndex := -1 + if i, found := rootMap[pkg.ID]; found { + rootIndex = i + } + lpkg := &loaderPackage{ + Package: pkg, + needtypes: (ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && ld.Mode&NeedDeps != 0 && rootIndex < 0) || rootIndex >= 0, + needsrc: (ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && ld.Mode&NeedDeps != 0 && rootIndex < 0) || rootIndex >= 0 || + len(ld.Overlay) > 0 || // Overlays can invalidate export data. TODO(matloob): make this check fine-grained based on dependencies on overlaid files + pkg.ExportFile == "" && pkg.PkgPath != "unsafe", + } + ld.pkgs[lpkg.ID] = lpkg + if rootIndex >= 0 { + initial[rootIndex] = lpkg + lpkg.initial = true + } + } + for i, root := range roots { + if initial[i] == nil { + return nil, fmt.Errorf("root package %v is missing", root) + } + } + + // Materialize the import graph. + + const ( + white = 0 // new + grey = 1 // in progress + black = 2 // complete + ) + + // visit traverses the import graph, depth-first, + // and materializes the graph as Packages.Imports. + // + // Valid imports are saved in the Packages.Import map. + // Invalid imports (cycles and missing nodes) are saved in the importErrors map. + // Thus, even in the presence of both kinds of errors, the Import graph remains a DAG. + // + // visit returns whether the package needs src or has a transitive + // dependency on a package that does. These are the only packages + // for which we load source code. + var stack []*loaderPackage + var visit func(lpkg *loaderPackage) bool + var srcPkgs []*loaderPackage + visit = func(lpkg *loaderPackage) bool { + switch lpkg.color { + case black: + return lpkg.needsrc + case grey: + panic("internal error: grey node") + } + lpkg.color = grey + stack = append(stack, lpkg) // push + stubs := lpkg.Imports // the structure form has only stubs with the ID in the Imports + // If NeedImports isn't set, the imports fields will all be zeroed out. + if ld.Mode&NeedImports != 0 { + lpkg.Imports = make(map[string]*Package, len(stubs)) + for importPath, ipkg := range stubs { + var importErr error + imp := ld.pkgs[ipkg.ID] + if imp == nil { + // (includes package "C" when DisableCgo) + importErr = fmt.Errorf("missing package: %q", ipkg.ID) + } else if imp.color == grey { + importErr = fmt.Errorf("import cycle: %s", stack) + } + if importErr != nil { + if lpkg.importErrors == nil { + lpkg.importErrors = make(map[string]error) + } + lpkg.importErrors[importPath] = importErr + continue + } + + if visit(imp) { + lpkg.needsrc = true + } + lpkg.Imports[importPath] = imp.Package + } + } + if lpkg.needsrc { + srcPkgs = append(srcPkgs, lpkg) + } + if ld.Mode&NeedTypesSizes != 0 { + lpkg.TypesSizes = ld.sizes + } + stack = stack[:len(stack)-1] // pop + lpkg.color = black + + return lpkg.needsrc + } + + if ld.Mode&NeedImports == 0 { + // We do this to drop the stub import packages that we are not even going to try to resolve. + for _, lpkg := range initial { + lpkg.Imports = nil + } + } else { + // For each initial package, create its import DAG. + for _, lpkg := range initial { + visit(lpkg) + } + } + if ld.Mode&NeedImports != 0 && ld.Mode&NeedTypes != 0 { + for _, lpkg := range srcPkgs { + // Complete type information is required for the + // immediate dependencies of each source package. + for _, ipkg := range lpkg.Imports { + imp := ld.pkgs[ipkg.ID] + imp.needtypes = true + } + } + } + // Load type data if needed, starting at + // the initial packages (roots of the import DAG). + if ld.Mode&NeedTypes != 0 { + var wg sync.WaitGroup + for _, lpkg := range initial { + wg.Add(1) + go func(lpkg *loaderPackage) { + ld.loadRecursive(lpkg) + wg.Done() + }(lpkg) + } + wg.Wait() + } + + result := make([]*Package, len(initial)) + for i, lpkg := range initial { + result[i] = lpkg.Package + } + for i := range ld.pkgs { + // Clear all unrequested fields, for extra de-Hyrum-ization. + if ld.requestedMode&NeedName == 0 { + ld.pkgs[i].Name = "" + ld.pkgs[i].PkgPath = "" + } + if ld.requestedMode&NeedFiles == 0 { + ld.pkgs[i].GoFiles = nil + ld.pkgs[i].OtherFiles = nil + } + if ld.requestedMode&NeedCompiledGoFiles == 0 { + ld.pkgs[i].CompiledGoFiles = nil + } + if ld.requestedMode&NeedImports == 0 { + ld.pkgs[i].Imports = nil + } + if ld.requestedMode&NeedExportsFile == 0 { + ld.pkgs[i].ExportFile = "" + } + if ld.requestedMode&NeedTypes == 0 { + ld.pkgs[i].Types = nil + ld.pkgs[i].Fset = nil + ld.pkgs[i].IllTyped = false + } + if ld.requestedMode&NeedSyntax == 0 { + ld.pkgs[i].Syntax = nil + } + if ld.requestedMode&NeedTypesInfo == 0 { + ld.pkgs[i].TypesInfo = nil + } + if ld.requestedMode&NeedTypesSizes == 0 { + ld.pkgs[i].TypesSizes = nil + } + } + + return result, nil +} + +// loadRecursive loads the specified package and its dependencies, +// recursively, in parallel, in topological order. +// It is atomic and idempotent. +// Precondition: ld.Mode&NeedTypes. +func (ld *loader) loadRecursive(lpkg *loaderPackage) { + lpkg.loadOnce.Do(func() { + // Load the direct dependencies, in parallel. + var wg sync.WaitGroup + for _, ipkg := range lpkg.Imports { + imp := ld.pkgs[ipkg.ID] + wg.Add(1) + go func(imp *loaderPackage) { + ld.loadRecursive(imp) + wg.Done() + }(imp) + } + wg.Wait() + ld.loadPackage(lpkg) + }) +} + +// loadPackage loads the specified package. +// It must be called only once per Package, +// after immediate dependencies are loaded. +// Precondition: ld.Mode & NeedTypes. +func (ld *loader) loadPackage(lpkg *loaderPackage) { + if lpkg.PkgPath == "unsafe" { + // Fill in the blanks to avoid surprises. + lpkg.Types = types.Unsafe + lpkg.Fset = ld.Fset + lpkg.Syntax = []*ast.File{} + lpkg.TypesInfo = new(types.Info) + lpkg.TypesSizes = ld.sizes + return + } + + // Call NewPackage directly with explicit name. + // This avoids skew between golist and go/types when the files' + // package declarations are inconsistent. + lpkg.Types = types.NewPackage(lpkg.PkgPath, lpkg.Name) + lpkg.Fset = ld.Fset + + // Subtle: we populate all Types fields with an empty Package + // before loading export data so that export data processing + // never has to create a types.Package for an indirect dependency, + // which would then require that such created packages be explicitly + // inserted back into the Import graph as a final step after export data loading. + // The Diamond test exercises this case. + if !lpkg.needtypes { + return + } + if !lpkg.needsrc { + ld.loadFromExportData(lpkg) + return // not a source package, don't get syntax trees + } + + appendError := func(err error) { + // Convert various error types into the one true Error. + var errs []Error + switch err := err.(type) { + case Error: + // from driver + errs = append(errs, err) + + case *os.PathError: + // from parser + errs = append(errs, Error{ + Pos: err.Path + ":1", + Msg: err.Err.Error(), + Kind: ParseError, + }) + + case scanner.ErrorList: + // from parser + for _, err := range err { + errs = append(errs, Error{ + Pos: err.Pos.String(), + Msg: err.Msg, + Kind: ParseError, + }) + } + + case types.Error: + // from type checker + errs = append(errs, Error{ + Pos: err.Fset.Position(err.Pos).String(), + Msg: err.Msg, + Kind: TypeError, + }) + + default: + // unexpected impoverished error from parser? + errs = append(errs, Error{ + Pos: "-", + Msg: err.Error(), + Kind: UnknownError, + }) + + // If you see this error message, please file a bug. + log.Printf("internal error: error %q (%T) without position", err, err) + } + + lpkg.Errors = append(lpkg.Errors, errs...) + } + + if len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != "" { + // The config requested loading sources and types, but sources are missing. + // Add an error to the package and fall back to loading from export data. + appendError(Error{"-", fmt.Sprintf("sources missing for package %s", lpkg.ID), ParseError}) + ld.loadFromExportData(lpkg) + return // can't get syntax trees for this package + } + + files, errs := ld.parseFiles(lpkg.CompiledGoFiles) + for _, err := range errs { + appendError(err) + } + + lpkg.Syntax = files + + lpkg.TypesInfo = &types.Info{ + Types: make(map[ast.Expr]types.TypeAndValue), + Defs: make(map[*ast.Ident]types.Object), + Uses: make(map[*ast.Ident]types.Object), + Implicits: make(map[ast.Node]types.Object), + Scopes: make(map[ast.Node]*types.Scope), + Selections: make(map[*ast.SelectorExpr]*types.Selection), + } + lpkg.TypesSizes = ld.sizes + + importer := importerFunc(func(path string) (*types.Package, error) { + if path == "unsafe" { + return types.Unsafe, nil + } + + // The imports map is keyed by import path. + ipkg := lpkg.Imports[path] + if ipkg == nil { + if err := lpkg.importErrors[path]; err != nil { + return nil, err + } + // There was skew between the metadata and the + // import declarations, likely due to an edit + // race, or because the ParseFile feature was + // used to supply alternative file contents. + return nil, fmt.Errorf("no metadata for %s", path) + } + + if ipkg.Types != nil && ipkg.Types.Complete() { + return ipkg.Types, nil + } + log.Fatalf("internal error: package %q without types was imported from %q", path, lpkg) + panic("unreachable") + }) + + // type-check + tc := &types.Config{ + Importer: importer, + + // Type-check bodies of functions only in non-initial packages. + // Example: for import graph A->B->C and initial packages {A,C}, + // we can ignore function bodies in B. + IgnoreFuncBodies: ld.Mode&NeedDeps == 0 && !lpkg.initial, + + Error: appendError, + Sizes: ld.sizes, + } + types.NewChecker(tc, ld.Fset, lpkg.Types, lpkg.TypesInfo).Files(lpkg.Syntax) + + lpkg.importErrors = nil // no longer needed + + // If !Cgo, the type-checker uses FakeImportC mode, so + // it doesn't invoke the importer for import "C", + // nor report an error for the import, + // or for any undefined C.f reference. + // We must detect this explicitly and correctly + // mark the package as IllTyped (by reporting an error). + // TODO(adonovan): if these errors are annoying, + // we could just set IllTyped quietly. + if tc.FakeImportC { + outer: + for _, f := range lpkg.Syntax { + for _, imp := range f.Imports { + if imp.Path.Value == `"C"` { + err := types.Error{Fset: ld.Fset, Pos: imp.Pos(), Msg: `import "C" ignored`} + appendError(err) + break outer + } + } + } + } + + // Record accumulated errors. + illTyped := len(lpkg.Errors) > 0 + if !illTyped { + for _, imp := range lpkg.Imports { + if imp.IllTyped { + illTyped = true + break + } + } + } + lpkg.IllTyped = illTyped +} + +// An importFunc is an implementation of the single-method +// types.Importer interface based on a function value. +type importerFunc func(path string) (*types.Package, error) + +func (f importerFunc) Import(path string) (*types.Package, error) { return f(path) } + +// We use a counting semaphore to limit +// the number of parallel I/O calls per process. +var ioLimit = make(chan bool, 20) + +func (ld *loader) parseFile(filename string) (*ast.File, error) { + ld.parseCacheMu.Lock() + v, ok := ld.parseCache[filename] + if ok { + // cache hit + ld.parseCacheMu.Unlock() + <-v.ready + } else { + // cache miss + v = &parseValue{ready: make(chan struct{})} + ld.parseCache[filename] = v + ld.parseCacheMu.Unlock() + + var src []byte + for f, contents := range ld.Config.Overlay { + if sameFile(f, filename) { + src = contents + } + } + var err error + if src == nil { + ioLimit <- true // wait + src, err = ioutil.ReadFile(filename) + <-ioLimit // signal + } + if err != nil { + v.err = err + } else { + v.f, v.err = ld.ParseFile(ld.Fset, filename, src) + } + + close(v.ready) + } + return v.f, v.err +} + +// parseFiles reads and parses the Go source files and returns the ASTs +// of the ones that could be at least partially parsed, along with a +// list of I/O and parse errors encountered. +// +// Because files are scanned in parallel, the token.Pos +// positions of the resulting ast.Files are not ordered. +// +func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { + var wg sync.WaitGroup + n := len(filenames) + parsed := make([]*ast.File, n) + errors := make([]error, n) + for i, file := range filenames { + if ld.Config.Context.Err() != nil { + parsed[i] = nil + errors[i] = ld.Config.Context.Err() + continue + } + wg.Add(1) + go func(i int, filename string) { + parsed[i], errors[i] = ld.parseFile(filename) + wg.Done() + }(i, file) + } + wg.Wait() + + // Eliminate nils, preserving order. + var o int + for _, f := range parsed { + if f != nil { + parsed[o] = f + o++ + } + } + parsed = parsed[:o] + + o = 0 + for _, err := range errors { + if err != nil { + errors[o] = err + o++ + } + } + errors = errors[:o] + + return parsed, errors +} + +// sameFile returns true if x and y have the same basename and denote +// the same file. +// +func sameFile(x, y string) bool { + if x == y { + // It could be the case that y doesn't exist. + // For instance, it may be an overlay file that + // hasn't been written to disk. To handle that case + // let x == y through. (We added the exact absolute path + // string to the CompiledGoFiles list, so the unwritten + // overlay case implies x==y.) + return true + } + if strings.EqualFold(filepath.Base(x), filepath.Base(y)) { // (optimisation) + if xi, err := os.Stat(x); err == nil { + if yi, err := os.Stat(y); err == nil { + return os.SameFile(xi, yi) + } + } + } + return false +} + +// loadFromExportData returns type information for the specified +// package, loading it from an export data file on the first request. +func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error) { + if lpkg.PkgPath == "" { + log.Fatalf("internal error: Package %s has no PkgPath", lpkg) + } + + // Because gcexportdata.Read has the potential to create or + // modify the types.Package for each node in the transitive + // closure of dependencies of lpkg, all exportdata operations + // must be sequential. (Finer-grained locking would require + // changes to the gcexportdata API.) + // + // The exportMu lock guards the Package.Pkg field and the + // types.Package it points to, for each Package in the graph. + // + // Not all accesses to Package.Pkg need to be protected by exportMu: + // graph ordering ensures that direct dependencies of source + // packages are fully loaded before the importer reads their Pkg field. + ld.exportMu.Lock() + defer ld.exportMu.Unlock() + + if tpkg := lpkg.Types; tpkg != nil && tpkg.Complete() { + return tpkg, nil // cache hit + } + + lpkg.IllTyped = true // fail safe + + if lpkg.ExportFile == "" { + // Errors while building export data will have been printed to stderr. + return nil, fmt.Errorf("no export data file") + } + f, err := os.Open(lpkg.ExportFile) + if err != nil { + return nil, err + } + defer f.Close() + + // Read gc export data. + // + // We don't currently support gccgo export data because all + // underlying workspaces use the gc toolchain. (Even build + // systems that support gccgo don't use it for workspace + // queries.) + r, err := gcexportdata.NewReader(f) + if err != nil { + return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) + } + + // Build the view. + // + // The gcexportdata machinery has no concept of package ID. + // It identifies packages by their PkgPath, which although not + // globally unique is unique within the scope of one invocation + // of the linker, type-checker, or gcexportdata. + // + // So, we must build a PkgPath-keyed view of the global + // (conceptually ID-keyed) cache of packages and pass it to + // gcexportdata. The view must contain every existing + // package that might possibly be mentioned by the + // current package---its transitive closure. + // + // In loadPackage, we unconditionally create a types.Package for + // each dependency so that export data loading does not + // create new ones. + // + // TODO(adonovan): it would be simpler and more efficient + // if the export data machinery invoked a callback to + // get-or-create a package instead of a map. + // + view := make(map[string]*types.Package) // view seen by gcexportdata + seen := make(map[*loaderPackage]bool) // all visited packages + var visit func(pkgs map[string]*Package) + visit = func(pkgs map[string]*Package) { + for _, p := range pkgs { + lpkg := ld.pkgs[p.ID] + if !seen[lpkg] { + seen[lpkg] = true + view[lpkg.PkgPath] = lpkg.Types + visit(lpkg.Imports) + } + } + } + visit(lpkg.Imports) + + viewLen := len(view) + 1 // adding the self package + // Parse the export data. + // (May modify incomplete packages in view but not create new ones.) + tpkg, err := gcexportdata.Read(r, ld.Fset, view, lpkg.PkgPath) + if err != nil { + return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) + } + if viewLen != len(view) { + log.Fatalf("Unexpected package creation during export data loading") + } + + lpkg.Types = tpkg + lpkg.IllTyped = false + + return tpkg, nil +} + +// impliedLoadMode returns loadMode with its dependencies. +func impliedLoadMode(loadMode LoadMode) LoadMode { + if loadMode&NeedTypesInfo != 0 && loadMode&NeedImports == 0 { + // If NeedTypesInfo, go/packages needs to do typechecking itself so it can + // associate type info with the AST. To do so, we need the export data + // for dependencies, which means we need to ask for the direct dependencies. + // NeedImports is used to ask for the direct dependencies. + loadMode |= NeedImports + } + + if loadMode&NeedDeps != 0 && loadMode&NeedImports == 0 { + // With NeedDeps we need to load at least direct dependencies. + // NeedImports is used to ask for the direct dependencies. + loadMode |= NeedImports + } + + return loadMode +} + +func usesExportData(cfg *Config) bool { + return cfg.Mode&NeedExportsFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 +} diff --git a/vendor/golang.org/x/tools/go/packages/visit.go b/vendor/golang.org/x/tools/go/packages/visit.go new file mode 100644 index 00000000000..b13cb081fcb --- /dev/null +++ b/vendor/golang.org/x/tools/go/packages/visit.go @@ -0,0 +1,55 @@ +package packages + +import ( + "fmt" + "os" + "sort" +) + +// Visit visits all the packages in the import graph whose roots are +// pkgs, calling the optional pre function the first time each package +// is encountered (preorder), and the optional post function after a +// package's dependencies have been visited (postorder). +// The boolean result of pre(pkg) determines whether +// the imports of package pkg are visited. +func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) { + seen := make(map[*Package]bool) + var visit func(*Package) + visit = func(pkg *Package) { + if !seen[pkg] { + seen[pkg] = true + + if pre == nil || pre(pkg) { + paths := make([]string, 0, len(pkg.Imports)) + for path := range pkg.Imports { + paths = append(paths, path) + } + sort.Strings(paths) // Imports is a map, this makes visit stable + for _, path := range paths { + visit(pkg.Imports[path]) + } + } + + if post != nil { + post(pkg) + } + } + } + for _, pkg := range pkgs { + visit(pkg) + } +} + +// PrintErrors prints to os.Stderr the accumulated errors of all +// packages in the import graph rooted at pkgs, dependencies first. +// PrintErrors returns the number of errors printed. +func PrintErrors(pkgs []*Package) int { + var n int + Visit(pkgs, nil, func(pkg *Package) { + for _, err := range pkg.Errors { + fmt.Fprintln(os.Stderr, err) + n++ + } + }) + return n +} diff --git a/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go new file mode 100644 index 00000000000..882e3b3d8a9 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/objectpath/objectpath.go @@ -0,0 +1,523 @@ +// 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 objectpath defines a naming scheme for types.Objects +// (that is, named entities in Go programs) relative to their enclosing +// package. +// +// Type-checker objects are canonical, so they are usually identified by +// their address in memory (a pointer), but a pointer has meaning only +// within one address space. By contrast, objectpath names allow the +// identity of an object to be sent from one program to another, +// establishing a correspondence between types.Object variables that are +// distinct but logically equivalent. +// +// A single object may have multiple paths. In this example, +// type A struct{ X int } +// type B A +// the field X has two paths due to its membership of both A and B. +// The For(obj) function always returns one of these paths, arbitrarily +// but consistently. +package objectpath + +import ( + "fmt" + "strconv" + "strings" + + "go/types" +) + +// A Path is an opaque name that identifies a types.Object +// relative to its package. Conceptually, the name consists of a +// sequence of destructuring operations applied to the package scope +// to obtain the original object. +// The name does not include the package itself. +type Path string + +// Encoding +// +// An object path is a textual and (with training) human-readable encoding +// of a sequence of destructuring operators, starting from a types.Package. +// The sequences represent a path through the package/object/type graph. +// We classify these operators by their type: +// +// PO package->object Package.Scope.Lookup +// OT object->type Object.Type +// TT type->type Type.{Elem,Key,Params,Results,Underlying} [EKPRU] +// TO type->object Type.{At,Field,Method,Obj} [AFMO] +// +// All valid paths start with a package and end at an object +// and thus may be defined by the regular language: +// +// objectpath = PO (OT TT* TO)* +// +// The concrete encoding follows directly: +// - The only PO operator is Package.Scope.Lookup, which requires an identifier. +// - The only OT operator is Object.Type, +// which we encode as '.' because dot cannot appear in an identifier. +// - The TT operators are encoded as [EKPRU]. +// - The OT operators are encoded as [AFMO]; +// three of these (At,Field,Method) require an integer operand, +// which is encoded as a string of decimal digits. +// These indices are stable across different representations +// of the same package, even source and export data. +// +// In the example below, +// +// package p +// +// type T interface { +// f() (a string, b struct{ X int }) +// } +// +// field X has the path "T.UM0.RA1.F0", +// representing the following sequence of operations: +// +// p.Lookup("T") T +// .Type().Underlying().Method(0). f +// .Type().Results().At(1) b +// .Type().Field(0) X +// +// The encoding is not maximally compact---every R or P is +// followed by an A, for example---but this simplifies the +// encoder and decoder. +// +const ( + // object->type operators + opType = '.' // .Type() (Object) + + // type->type operators + opElem = 'E' // .Elem() (Pointer, Slice, Array, Chan, Map) + opKey = 'K' // .Key() (Map) + opParams = 'P' // .Params() (Signature) + opResults = 'R' // .Results() (Signature) + opUnderlying = 'U' // .Underlying() (Named) + + // type->object operators + opAt = 'A' // .At(i) (Tuple) + opField = 'F' // .Field(i) (Struct) + opMethod = 'M' // .Method(i) (Named or Interface; not Struct: "promoted" names are ignored) + opObj = 'O' // .Obj() (Named) +) + +// The For function returns the path to an object relative to its package, +// or an error if the object is not accessible from the package's Scope. +// +// The For function guarantees to return a path only for the following objects: +// - package-level types +// - exported package-level non-types +// - methods +// - parameter and result variables +// - struct fields +// These objects are sufficient to define the API of their package. +// The objects described by a package's export data are drawn from this set. +// +// For does not return a path for predeclared names, imported package +// names, local names, and unexported package-level names (except +// types). +// +// Example: given this definition, +// +// package p +// +// type T interface { +// f() (a string, b struct{ X int }) +// } +// +// For(X) would return a path that denotes the following sequence of operations: +// +// p.Scope().Lookup("T") (TypeName T) +// .Type().Underlying().Method(0). (method Func f) +// .Type().Results().At(1) (field Var b) +// .Type().Field(0) (field Var X) +// +// where p is the package (*types.Package) to which X belongs. +func For(obj types.Object) (Path, error) { + pkg := obj.Pkg() + + // This table lists the cases of interest. + // + // Object Action + // ------ ------ + // nil reject + // builtin reject + // pkgname reject + // label reject + // var + // package-level accept + // func param/result accept + // local reject + // struct field accept + // const + // package-level accept + // local reject + // func + // package-level accept + // init functions reject + // concrete method accept + // interface method accept + // type + // package-level accept + // local reject + // + // The only accessible package-level objects are members of pkg itself. + // + // The cases are handled in four steps: + // + // 1. reject nil and builtin + // 2. accept package-level objects + // 3. reject obviously invalid objects + // 4. search the API for the path to the param/result/field/method. + + // 1. reference to nil or builtin? + if pkg == nil { + return "", fmt.Errorf("predeclared %s has no path", obj) + } + scope := pkg.Scope() + + // 2. package-level object? + if scope.Lookup(obj.Name()) == obj { + // Only exported objects (and non-exported types) have a path. + // Non-exported types may be referenced by other objects. + if _, ok := obj.(*types.TypeName); !ok && !obj.Exported() { + return "", fmt.Errorf("no path for non-exported %v", obj) + } + return Path(obj.Name()), nil + } + + // 3. Not a package-level object. + // Reject obviously non-viable cases. + switch obj := obj.(type) { + case *types.Const, // Only package-level constants have a path. + *types.TypeName, // Only package-level types have a path. + *types.Label, // Labels are function-local. + *types.PkgName: // PkgNames are file-local. + return "", fmt.Errorf("no path for %v", obj) + + case *types.Var: + // Could be: + // - a field (obj.IsField()) + // - a func parameter or result + // - a local var. + // Sadly there is no way to distinguish + // a param/result from a local + // so we must proceed to the find. + + case *types.Func: + // A func, if not package-level, must be a method. + if recv := obj.Type().(*types.Signature).Recv(); recv == nil { + return "", fmt.Errorf("func is not a method: %v", obj) + } + // TODO(adonovan): opt: if the method is concrete, + // do a specialized version of the rest of this function so + // that it's O(1) not O(|scope|). Basically 'find' is needed + // only for struct fields and interface methods. + + default: + panic(obj) + } + + // 4. Search the API for the path to the var (field/param/result) or method. + + // First inspect package-level named types. + // In the presence of path aliases, these give + // the best paths because non-types may + // refer to types, but not the reverse. + empty := make([]byte, 0, 48) // initial space + for _, name := range scope.Names() { + o := scope.Lookup(name) + tname, ok := o.(*types.TypeName) + if !ok { + continue // handle non-types in second pass + } + + path := append(empty, name...) + path = append(path, opType) + + T := o.Type() + + if tname.IsAlias() { + // type alias + if r := find(obj, T, path); r != nil { + return Path(r), nil + } + } else { + // defined (named) type + if r := find(obj, T.Underlying(), append(path, opUnderlying)); r != nil { + return Path(r), nil + } + } + } + + // Then inspect everything else: + // non-types, and declared methods of defined types. + for _, name := range scope.Names() { + o := scope.Lookup(name) + path := append(empty, name...) + if _, ok := o.(*types.TypeName); !ok { + if o.Exported() { + // exported non-type (const, var, func) + if r := find(obj, o.Type(), append(path, opType)); r != nil { + return Path(r), nil + } + } + continue + } + + // Inspect declared methods of defined types. + if T, ok := o.Type().(*types.Named); ok { + path = append(path, opType) + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + path2 := appendOpArg(path, opMethod, i) + if m == obj { + return Path(path2), nil // found declared method + } + if r := find(obj, m.Type(), append(path2, opType)); r != nil { + return Path(r), nil + } + } + } + } + + return "", fmt.Errorf("can't find path for %v in %s", obj, pkg.Path()) +} + +func appendOpArg(path []byte, op byte, arg int) []byte { + path = append(path, op) + path = strconv.AppendInt(path, int64(arg), 10) + return path +} + +// find finds obj within type T, returning the path to it, or nil if not found. +func find(obj types.Object, T types.Type, path []byte) []byte { + switch T := T.(type) { + case *types.Basic, *types.Named: + // Named types belonging to pkg were handled already, + // so T must belong to another package. No path. + return nil + case *types.Pointer: + return find(obj, T.Elem(), append(path, opElem)) + case *types.Slice: + return find(obj, T.Elem(), append(path, opElem)) + case *types.Array: + return find(obj, T.Elem(), append(path, opElem)) + case *types.Chan: + return find(obj, T.Elem(), append(path, opElem)) + case *types.Map: + if r := find(obj, T.Key(), append(path, opKey)); r != nil { + return r + } + return find(obj, T.Elem(), append(path, opElem)) + case *types.Signature: + if r := find(obj, T.Params(), append(path, opParams)); r != nil { + return r + } + return find(obj, T.Results(), append(path, opResults)) + case *types.Struct: + for i := 0; i < T.NumFields(); i++ { + f := T.Field(i) + path2 := appendOpArg(path, opField, i) + if f == obj { + return path2 // found field var + } + if r := find(obj, f.Type(), append(path2, opType)); r != nil { + return r + } + } + return nil + case *types.Tuple: + for i := 0; i < T.Len(); i++ { + v := T.At(i) + path2 := appendOpArg(path, opAt, i) + if v == obj { + return path2 // found param/result var + } + if r := find(obj, v.Type(), append(path2, opType)); r != nil { + return r + } + } + return nil + case *types.Interface: + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + path2 := appendOpArg(path, opMethod, i) + if m == obj { + return path2 // found interface method + } + if r := find(obj, m.Type(), append(path2, opType)); r != nil { + return r + } + } + return nil + } + panic(T) +} + +// Object returns the object denoted by path p within the package pkg. +func Object(pkg *types.Package, p Path) (types.Object, error) { + if p == "" { + return nil, fmt.Errorf("empty path") + } + + pathstr := string(p) + var pkgobj, suffix string + if dot := strings.IndexByte(pathstr, opType); dot < 0 { + pkgobj = pathstr + } else { + pkgobj = pathstr[:dot] + suffix = pathstr[dot:] // suffix starts with "." + } + + obj := pkg.Scope().Lookup(pkgobj) + if obj == nil { + return nil, fmt.Errorf("package %s does not contain %q", pkg.Path(), pkgobj) + } + + // abstraction of *types.{Pointer,Slice,Array,Chan,Map} + type hasElem interface { + Elem() types.Type + } + // abstraction of *types.{Interface,Named} + type hasMethods interface { + Method(int) *types.Func + NumMethods() int + } + + // The loop state is the pair (t, obj), + // exactly one of which is non-nil, initially obj. + // All suffixes start with '.' (the only object->type operation), + // followed by optional type->type operations, + // then a type->object operation. + // The cycle then repeats. + var t types.Type + for suffix != "" { + code := suffix[0] + suffix = suffix[1:] + + // Codes [AFM] have an integer operand. + var index int + switch code { + case opAt, opField, opMethod: + rest := strings.TrimLeft(suffix, "0123456789") + numerals := suffix[:len(suffix)-len(rest)] + suffix = rest + i, err := strconv.Atoi(numerals) + if err != nil { + return nil, fmt.Errorf("invalid path: bad numeric operand %q for code %q", numerals, code) + } + index = int(i) + case opObj: + // no operand + default: + // The suffix must end with a type->object operation. + if suffix == "" { + return nil, fmt.Errorf("invalid path: ends with %q, want [AFMO]", code) + } + } + + if code == opType { + if t != nil { + return nil, fmt.Errorf("invalid path: unexpected %q in type context", opType) + } + t = obj.Type() + obj = nil + continue + } + + if t == nil { + return nil, fmt.Errorf("invalid path: code %q in object context", code) + } + + // Inv: t != nil, obj == nil + + switch code { + case opElem: + hasElem, ok := t.(hasElem) // Pointer, Slice, Array, Chan, Map + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %T, want pointer, slice, array, chan or map)", code, t, t) + } + t = hasElem.Elem() + + case opKey: + mapType, ok := t.(*types.Map) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %T, want map)", code, t, t) + } + t = mapType.Key() + + case opParams: + sig, ok := t.(*types.Signature) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %T, want signature)", code, t, t) + } + t = sig.Params() + + case opResults: + sig, ok := t.(*types.Signature) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %T, want signature)", code, t, t) + } + t = sig.Results() + + case opUnderlying: + named, ok := t.(*types.Named) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %s, want named)", code, t, t) + } + t = named.Underlying() + + case opAt: + tuple, ok := t.(*types.Tuple) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %s, want tuple)", code, t, t) + } + if n := tuple.Len(); index >= n { + return nil, fmt.Errorf("tuple index %d out of range [0-%d)", index, n) + } + obj = tuple.At(index) + t = nil + + case opField: + structType, ok := t.(*types.Struct) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %T, want struct)", code, t, t) + } + if n := structType.NumFields(); index >= n { + return nil, fmt.Errorf("field index %d out of range [0-%d)", index, n) + } + obj = structType.Field(index) + t = nil + + case opMethod: + hasMethods, ok := t.(hasMethods) // Interface or Named + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %s, want interface or named)", code, t, t) + } + if n := hasMethods.NumMethods(); index >= n { + return nil, fmt.Errorf("method index %d out of range [0-%d)", index, n) + } + obj = hasMethods.Method(index) + t = nil + + case opObj: + named, ok := t.(*types.Named) + if !ok { + return nil, fmt.Errorf("cannot apply %q to %s (got %s, want named)", code, t, t) + } + obj = named.Obj() + t = nil + + default: + return nil, fmt.Errorf("invalid path: unknown code %q", code) + } + } + + if obj.Pkg() != pkg { + return nil, fmt.Errorf("path denotes %s, which belongs to a different package", obj) + } + + return obj, nil // success +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/callee.go b/vendor/golang.org/x/tools/go/types/typeutil/callee.go new file mode 100644 index 00000000000..38f596daf9e --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/callee.go @@ -0,0 +1,46 @@ +// 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 typeutil + +import ( + "go/ast" + "go/types" + + "golang.org/x/tools/go/ast/astutil" +) + +// Callee returns the named target of a function call, if any: +// a function, method, builtin, or variable. +func Callee(info *types.Info, call *ast.CallExpr) types.Object { + var obj types.Object + switch fun := astutil.Unparen(call.Fun).(type) { + case *ast.Ident: + obj = info.Uses[fun] // type, var, builtin, or declared func + case *ast.SelectorExpr: + if sel, ok := info.Selections[fun]; ok { + obj = sel.Obj() // method or field + } else { + obj = info.Uses[fun.Sel] // qualified identifier? + } + } + if _, ok := obj.(*types.TypeName); ok { + return nil // T(x) is a conversion, not a call + } + return obj +} + +// StaticCallee returns the target (function or method) of a static +// function call, if any. It returns nil for calls to builtins. +func StaticCallee(info *types.Info, call *ast.CallExpr) *types.Func { + if f, ok := Callee(info, call).(*types.Func); ok && !interfaceMethod(f) { + return f + } + return nil +} + +func interfaceMethod(f *types.Func) bool { + recv := f.Type().(*types.Signature).Recv() + return recv != nil && types.IsInterface(recv.Type()) +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/imports.go b/vendor/golang.org/x/tools/go/types/typeutil/imports.go new file mode 100644 index 00000000000..9c441dba9c0 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/imports.go @@ -0,0 +1,31 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +import "go/types" + +// Dependencies returns all dependencies of the specified packages. +// +// Dependent packages appear in topological order: if package P imports +// package Q, Q appears earlier than P in the result. +// The algorithm follows import statements in the order they +// appear in the source code, so the result is a total order. +// +func Dependencies(pkgs ...*types.Package) []*types.Package { + var result []*types.Package + seen := make(map[*types.Package]bool) + var visit func(pkgs []*types.Package) + visit = func(pkgs []*types.Package) { + for _, p := range pkgs { + if !seen[p] { + seen[p] = true + visit(p.Imports()) + result = append(result, p) + } + } + } + visit(pkgs) + return result +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/map.go b/vendor/golang.org/x/tools/go/types/typeutil/map.go new file mode 100644 index 00000000000..c7f75450064 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/map.go @@ -0,0 +1,313 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package typeutil defines various utilities for types, such as Map, +// a mapping from types.Type to interface{} values. +package typeutil // import "golang.org/x/tools/go/types/typeutil" + +import ( + "bytes" + "fmt" + "go/types" + "reflect" +) + +// Map is a hash-table-based mapping from types (types.Type) to +// arbitrary interface{} values. The concrete types that implement +// the Type interface are pointers. Since they are not canonicalized, +// == cannot be used to check for equivalence, and thus we cannot +// simply use a Go map. +// +// Just as with map[K]V, a nil *Map is a valid empty map. +// +// Not thread-safe. +// +type Map struct { + hasher Hasher // shared by many Maps + table map[uint32][]entry // maps hash to bucket; entry.key==nil means unused + length int // number of map entries +} + +// entry is an entry (key/value association) in a hash bucket. +type entry struct { + key types.Type + value interface{} +} + +// SetHasher sets the hasher used by Map. +// +// All Hashers are functionally equivalent but contain internal state +// used to cache the results of hashing previously seen types. +// +// A single Hasher created by MakeHasher() may be shared among many +// Maps. This is recommended if the instances have many keys in +// common, as it will amortize the cost of hash computation. +// +// A Hasher may grow without bound as new types are seen. Even when a +// type is deleted from the map, the Hasher never shrinks, since other +// types in the map may reference the deleted type indirectly. +// +// Hashers are not thread-safe, and read-only operations such as +// Map.Lookup require updates to the hasher, so a full Mutex lock (not a +// read-lock) is require around all Map operations if a shared +// hasher is accessed from multiple threads. +// +// If SetHasher is not called, the Map will create a private hasher at +// the first call to Insert. +// +func (m *Map) SetHasher(hasher Hasher) { + m.hasher = hasher +} + +// Delete removes the entry with the given key, if any. +// It returns true if the entry was found. +// +func (m *Map) Delete(key types.Type) bool { + if m != nil && m.table != nil { + hash := m.hasher.Hash(key) + bucket := m.table[hash] + for i, e := range bucket { + if e.key != nil && types.Identical(key, e.key) { + // We can't compact the bucket as it + // would disturb iterators. + bucket[i] = entry{} + m.length-- + return true + } + } + } + return false +} + +// At returns the map entry for the given key. +// The result is nil if the entry is not present. +// +func (m *Map) At(key types.Type) interface{} { + if m != nil && m.table != nil { + for _, e := range m.table[m.hasher.Hash(key)] { + if e.key != nil && types.Identical(key, e.key) { + return e.value + } + } + } + return nil +} + +// Set sets the map entry for key to val, +// and returns the previous entry, if any. +func (m *Map) Set(key types.Type, value interface{}) (prev interface{}) { + if m.table != nil { + hash := m.hasher.Hash(key) + bucket := m.table[hash] + var hole *entry + for i, e := range bucket { + if e.key == nil { + hole = &bucket[i] + } else if types.Identical(key, e.key) { + prev = e.value + bucket[i].value = value + return + } + } + + if hole != nil { + *hole = entry{key, value} // overwrite deleted entry + } else { + m.table[hash] = append(bucket, entry{key, value}) + } + } else { + if m.hasher.memo == nil { + m.hasher = MakeHasher() + } + hash := m.hasher.Hash(key) + m.table = map[uint32][]entry{hash: {entry{key, value}}} + } + + m.length++ + return +} + +// Len returns the number of map entries. +func (m *Map) Len() int { + if m != nil { + return m.length + } + return 0 +} + +// Iterate calls function f on each entry in the map in unspecified order. +// +// If f should mutate the map, Iterate provides the same guarantees as +// Go maps: if f deletes a map entry that Iterate has not yet reached, +// f will not be invoked for it, but if f inserts a map entry that +// Iterate has not yet reached, whether or not f will be invoked for +// it is unspecified. +// +func (m *Map) Iterate(f func(key types.Type, value interface{})) { + if m != nil { + for _, bucket := range m.table { + for _, e := range bucket { + if e.key != nil { + f(e.key, e.value) + } + } + } + } +} + +// Keys returns a new slice containing the set of map keys. +// The order is unspecified. +func (m *Map) Keys() []types.Type { + keys := make([]types.Type, 0, m.Len()) + m.Iterate(func(key types.Type, _ interface{}) { + keys = append(keys, key) + }) + return keys +} + +func (m *Map) toString(values bool) string { + if m == nil { + return "{}" + } + var buf bytes.Buffer + fmt.Fprint(&buf, "{") + sep := "" + m.Iterate(func(key types.Type, value interface{}) { + fmt.Fprint(&buf, sep) + sep = ", " + fmt.Fprint(&buf, key) + if values { + fmt.Fprintf(&buf, ": %q", value) + } + }) + fmt.Fprint(&buf, "}") + return buf.String() +} + +// String returns a string representation of the map's entries. +// Values are printed using fmt.Sprintf("%v", v). +// Order is unspecified. +// +func (m *Map) String() string { + return m.toString(true) +} + +// KeysString returns a string representation of the map's key set. +// Order is unspecified. +// +func (m *Map) KeysString() string { + return m.toString(false) +} + +//////////////////////////////////////////////////////////////////////// +// Hasher + +// A Hasher maps each type to its hash value. +// For efficiency, a hasher uses memoization; thus its memory +// footprint grows monotonically over time. +// Hashers are not thread-safe. +// Hashers have reference semantics. +// Call MakeHasher to create a Hasher. +type Hasher struct { + memo map[types.Type]uint32 +} + +// MakeHasher returns a new Hasher instance. +func MakeHasher() Hasher { + return Hasher{make(map[types.Type]uint32)} +} + +// Hash computes a hash value for the given type t such that +// Identical(t, t') => Hash(t) == Hash(t'). +func (h Hasher) Hash(t types.Type) uint32 { + hash, ok := h.memo[t] + if !ok { + hash = h.hashFor(t) + h.memo[t] = hash + } + return hash +} + +// hashString computes the Fowler–Noll–Vo hash of s. +func hashString(s string) uint32 { + var h uint32 + for i := 0; i < len(s); i++ { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +// hashFor computes the hash of t. +func (h Hasher) hashFor(t types.Type) uint32 { + // See Identical for rationale. + switch t := t.(type) { + case *types.Basic: + return uint32(t.Kind()) + + case *types.Array: + return 9043 + 2*uint32(t.Len()) + 3*h.Hash(t.Elem()) + + case *types.Slice: + return 9049 + 2*h.Hash(t.Elem()) + + case *types.Struct: + var hash uint32 = 9059 + for i, n := 0, t.NumFields(); i < n; i++ { + f := t.Field(i) + if f.Anonymous() { + hash += 8861 + } + hash += hashString(t.Tag(i)) + hash += hashString(f.Name()) // (ignore f.Pkg) + hash += h.Hash(f.Type()) + } + return hash + + case *types.Pointer: + return 9067 + 2*h.Hash(t.Elem()) + + case *types.Signature: + var hash uint32 = 9091 + if t.Variadic() { + hash *= 8863 + } + return hash + 3*h.hashTuple(t.Params()) + 5*h.hashTuple(t.Results()) + + case *types.Interface: + var hash uint32 = 9103 + for i, n := 0, t.NumMethods(); i < n; i++ { + // See go/types.identicalMethods for rationale. + // Method order is not significant. + // Ignore m.Pkg(). + m := t.Method(i) + hash += 3*hashString(m.Name()) + 5*h.Hash(m.Type()) + } + return hash + + case *types.Map: + return 9109 + 2*h.Hash(t.Key()) + 3*h.Hash(t.Elem()) + + case *types.Chan: + return 9127 + 2*uint32(t.Dir()) + 3*h.Hash(t.Elem()) + + case *types.Named: + // Not safe with a copying GC; objects may move. + return uint32(reflect.ValueOf(t.Obj()).Pointer()) + + case *types.Tuple: + return h.hashTuple(t) + } + panic(t) +} + +func (h Hasher) hashTuple(tuple *types.Tuple) uint32 { + // See go/types.identicalTypes for rationale. + n := tuple.Len() + var hash uint32 = 9137 + 2*uint32(n) + for i := 0; i < n; i++ { + hash += 3 * h.Hash(tuple.At(i).Type()) + } + return hash +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go b/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go new file mode 100644 index 00000000000..32084610f49 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go @@ -0,0 +1,72 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file implements a cache of method sets. + +package typeutil + +import ( + "go/types" + "sync" +) + +// A MethodSetCache records the method set of each type T for which +// MethodSet(T) is called so that repeat queries are fast. +// The zero value is a ready-to-use cache instance. +type MethodSetCache struct { + mu sync.Mutex + named map[*types.Named]struct{ value, pointer *types.MethodSet } // method sets for named N and *N + others map[types.Type]*types.MethodSet // all other types +} + +// MethodSet returns the method set of type T. It is thread-safe. +// +// If cache is nil, this function is equivalent to types.NewMethodSet(T). +// Utility functions can thus expose an optional *MethodSetCache +// parameter to clients that care about performance. +// +func (cache *MethodSetCache) MethodSet(T types.Type) *types.MethodSet { + if cache == nil { + return types.NewMethodSet(T) + } + cache.mu.Lock() + defer cache.mu.Unlock() + + switch T := T.(type) { + case *types.Named: + return cache.lookupNamed(T).value + + case *types.Pointer: + if N, ok := T.Elem().(*types.Named); ok { + return cache.lookupNamed(N).pointer + } + } + + // all other types + // (The map uses pointer equivalence, not type identity.) + mset := cache.others[T] + if mset == nil { + mset = types.NewMethodSet(T) + if cache.others == nil { + cache.others = make(map[types.Type]*types.MethodSet) + } + cache.others[T] = mset + } + return mset +} + +func (cache *MethodSetCache) lookupNamed(named *types.Named) struct{ value, pointer *types.MethodSet } { + if cache.named == nil { + cache.named = make(map[*types.Named]struct{ value, pointer *types.MethodSet }) + } + // Avoid recomputing mset(*T) for each distinct Pointer + // instance whose underlying type is a named type. + msets, ok := cache.named[named] + if !ok { + msets.value = types.NewMethodSet(named) + msets.pointer = types.NewMethodSet(types.NewPointer(named)) + cache.named[named] = msets + } + return msets +} diff --git a/vendor/golang.org/x/tools/go/types/typeutil/ui.go b/vendor/golang.org/x/tools/go/types/typeutil/ui.go new file mode 100644 index 00000000000..9849c24cef3 --- /dev/null +++ b/vendor/golang.org/x/tools/go/types/typeutil/ui.go @@ -0,0 +1,52 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +// This file defines utilities for user interfaces that display types. + +import "go/types" + +// IntuitiveMethodSet returns the intuitive method set of a type T, +// which is the set of methods you can call on an addressable value of +// that type. +// +// The result always contains MethodSet(T), and is exactly MethodSet(T) +// for interface types and for pointer-to-concrete types. +// For all other concrete types T, the result additionally +// contains each method belonging to *T if there is no identically +// named method on T itself. +// +// This corresponds to user intuition about method sets; +// this function is intended only for user interfaces. +// +// The order of the result is as for types.MethodSet(T). +// +func IntuitiveMethodSet(T types.Type, msets *MethodSetCache) []*types.Selection { + isPointerToConcrete := func(T types.Type) bool { + ptr, ok := T.(*types.Pointer) + return ok && !types.IsInterface(ptr.Elem()) + } + + var result []*types.Selection + mset := msets.MethodSet(T) + if types.IsInterface(T) || isPointerToConcrete(T) { + for i, n := 0, mset.Len(); i < n; i++ { + result = append(result, mset.At(i)) + } + } else { + // T is some other concrete type. + // Report methods of T and *T, preferring those of T. + pmset := msets.MethodSet(types.NewPointer(T)) + for i, n := 0, pmset.Len(); i < n; i++ { + meth := pmset.At(i) + if m := mset.Lookup(meth.Obj().Pkg(), meth.Obj().Name()); m != nil { + meth = m + } + result = append(result, meth) + } + + } + return result +} diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go new file mode 100644 index 00000000000..7219c8e9ff1 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go @@ -0,0 +1,196 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package fastwalk provides a faster version of filepath.Walk for file system +// scanning tools. +package fastwalk + +import ( + "errors" + "os" + "path/filepath" + "runtime" + "sync" +) + +// TraverseLink is used as a return value from WalkFuncs to indicate that the +// symlink named in the call may be traversed. +var TraverseLink = errors.New("fastwalk: traverse symlink, assuming target is a directory") + +// SkipFiles is a used as a return value from WalkFuncs to indicate that the +// callback should not be called for any other files in the current directory. +// Child directories will still be traversed. +var SkipFiles = errors.New("fastwalk: skip remaining files in directory") + +// Walk is a faster implementation of filepath.Walk. +// +// filepath.Walk's design necessarily calls os.Lstat on each file, +// even if the caller needs less info. +// Many tools need only the type of each file. +// On some platforms, this information is provided directly by the readdir +// system call, avoiding the need to stat each file individually. +// fastwalk_unix.go contains a fork of the syscall routines. +// +// See golang.org/issue/16399 +// +// Walk walks the file tree rooted at root, calling walkFn for +// each file or directory in the tree, including root. +// +// If fastWalk returns filepath.SkipDir, the directory is skipped. +// +// Unlike filepath.Walk: +// * file stat calls must be done by the user. +// The only provided metadata is the file type, which does not include +// any permission bits. +// * multiple goroutines stat the filesystem concurrently. The provided +// walkFn must be safe for concurrent use. +// * fastWalk can follow symlinks if walkFn returns the TraverseLink +// sentinel error. It is the walkFn's responsibility to prevent +// fastWalk from going into symlink cycles. +func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { + // TODO(bradfitz): make numWorkers configurable? We used a + // minimum of 4 to give the kernel more info about multiple + // things we want, in hopes its I/O scheduling can take + // advantage of that. Hopefully most are in cache. Maybe 4 is + // even too low of a minimum. Profile more. + numWorkers := 4 + if n := runtime.NumCPU(); n > numWorkers { + numWorkers = n + } + + // Make sure to wait for all workers to finish, otherwise + // walkFn could still be called after returning. This Wait call + // runs after close(e.donec) below. + var wg sync.WaitGroup + defer wg.Wait() + + w := &walker{ + fn: walkFn, + enqueuec: make(chan walkItem, numWorkers), // buffered for performance + workc: make(chan walkItem, numWorkers), // buffered for performance + donec: make(chan struct{}), + + // buffered for correctness & not leaking goroutines: + resc: make(chan error, numWorkers), + } + defer close(w.donec) + + for i := 0; i < numWorkers; i++ { + wg.Add(1) + go w.doWork(&wg) + } + todo := []walkItem{{dir: root}} + out := 0 + for { + workc := w.workc + var workItem walkItem + if len(todo) == 0 { + workc = nil + } else { + workItem = todo[len(todo)-1] + } + select { + case workc <- workItem: + todo = todo[:len(todo)-1] + out++ + case it := <-w.enqueuec: + todo = append(todo, it) + case err := <-w.resc: + out-- + if err != nil { + return err + } + if out == 0 && len(todo) == 0 { + // It's safe to quit here, as long as the buffered + // enqueue channel isn't also readable, which might + // happen if the worker sends both another unit of + // work and its result before the other select was + // scheduled and both w.resc and w.enqueuec were + // readable. + select { + case it := <-w.enqueuec: + todo = append(todo, it) + default: + return nil + } + } + } + } +} + +// doWork reads directories as instructed (via workc) and runs the +// user's callback function. +func (w *walker) doWork(wg *sync.WaitGroup) { + defer wg.Done() + for { + select { + case <-w.donec: + return + case it := <-w.workc: + select { + case <-w.donec: + return + case w.resc <- w.walk(it.dir, !it.callbackDone): + } + } + } +} + +type walker struct { + fn func(path string, typ os.FileMode) error + + donec chan struct{} // closed on fastWalk's return + workc chan walkItem // to workers + enqueuec chan walkItem // from workers + resc chan error // from workers +} + +type walkItem struct { + dir string + callbackDone bool // callback already called; don't do it again +} + +func (w *walker) enqueue(it walkItem) { + select { + case w.enqueuec <- it: + case <-w.donec: + } +} + +func (w *walker) onDirEnt(dirName, baseName string, typ os.FileMode) error { + joined := dirName + string(os.PathSeparator) + baseName + if typ == os.ModeDir { + w.enqueue(walkItem{dir: joined}) + return nil + } + + err := w.fn(joined, typ) + if typ == os.ModeSymlink { + if err == TraverseLink { + // Set callbackDone so we don't call it twice for both the + // symlink-as-symlink and the symlink-as-directory later: + w.enqueue(walkItem{dir: joined, callbackDone: true}) + return nil + } + if err == filepath.SkipDir { + // Permit SkipDir on symlinks too. + return nil + } + } + return err +} + +func (w *walker) walk(root string, runUserCallback bool) error { + if runUserCallback { + err := w.fn(root, os.ModeDir) + if err == filepath.SkipDir { + return nil + } + if err != nil { + return err + } + } + + return readDir(root, w.onDirEnt) +} diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_fileno.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_fileno.go new file mode 100644 index 00000000000..ccffec5adc1 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_fileno.go @@ -0,0 +1,13 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd openbsd netbsd + +package fastwalk + +import "syscall" + +func direntInode(dirent *syscall.Dirent) uint64 { + return uint64(dirent.Fileno) +} diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_ino.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_ino.go new file mode 100644 index 00000000000..ab7fbc0a9a3 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_ino.go @@ -0,0 +1,14 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux darwin +// +build !appengine + +package fastwalk + +import "syscall" + +func direntInode(dirent *syscall.Dirent) uint64 { + return uint64(dirent.Ino) +} diff --git a/vendor/golang.org/x/sys/windows/asm_windows_arm.s b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_bsd.go similarity index 50% rename from vendor/golang.org/x/sys/windows/asm_windows_arm.s rename to vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_bsd.go index 55d8b91a286..a3b26a7bae0 100644 --- a/vendor/golang.org/x/sys/windows/asm_windows_arm.s +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_bsd.go @@ -2,10 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -#include "textflag.h" +// +build darwin freebsd openbsd netbsd -TEXT ·getprocaddress(SB),NOSPLIT,$0 - B syscall·getprocaddress(SB) +package fastwalk -TEXT ·loadlibrary(SB),NOSPLIT,$0 - B syscall·loadlibrary(SB) +import "syscall" + +func direntNamlen(dirent *syscall.Dirent) uint64 { + return uint64(dirent.Namlen) +} diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_linux.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_linux.go new file mode 100644 index 00000000000..e880d358b13 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_dirent_namlen_linux.go @@ -0,0 +1,29 @@ +// 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 linux +// +build !appengine + +package fastwalk + +import ( + "bytes" + "syscall" + "unsafe" +) + +func direntNamlen(dirent *syscall.Dirent) uint64 { + const fixedHdr = uint16(unsafe.Offsetof(syscall.Dirent{}.Name)) + nameBuf := (*[unsafe.Sizeof(dirent.Name)]byte)(unsafe.Pointer(&dirent.Name[0])) + const nameBufLen = uint16(len(nameBuf)) + limit := dirent.Reclen - fixedHdr + if limit > nameBufLen { + limit = nameBufLen + } + nameLen := bytes.IndexByte(nameBuf[:limit], 0) + if nameLen < 0 { + panic("failed to find terminating 0 byte in dirent") + } + return uint64(nameLen) +} diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_portable.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_portable.go new file mode 100644 index 00000000000..a906b87595b --- /dev/null +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_portable.go @@ -0,0 +1,37 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build appengine !linux,!darwin,!freebsd,!openbsd,!netbsd + +package fastwalk + +import ( + "io/ioutil" + "os" +) + +// readDir calls fn for each directory entry in dirName. +// It does not descend into directories or follow symlinks. +// If fn returns a non-nil error, readDir returns with that error +// immediately. +func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error { + fis, err := ioutil.ReadDir(dirName) + if err != nil { + return err + } + skipFiles := false + for _, fi := range fis { + if fi.Mode().IsRegular() && skipFiles { + continue + } + if err := fn(dirName, fi.Name(), fi.Mode()&os.ModeType); err != nil { + if err == SkipFiles { + skipFiles = true + continue + } + return err + } + } + return nil +} diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_unix.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_unix.go new file mode 100644 index 00000000000..3369b1a0b2d --- /dev/null +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk_unix.go @@ -0,0 +1,127 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux darwin freebsd openbsd netbsd +// +build !appengine + +package fastwalk + +import ( + "fmt" + "os" + "syscall" + "unsafe" +) + +const blockSize = 8 << 10 + +// unknownFileMode is a sentinel (and bogus) os.FileMode +// value used to represent a syscall.DT_UNKNOWN Dirent.Type. +const unknownFileMode os.FileMode = os.ModeNamedPipe | os.ModeSocket | os.ModeDevice + +func readDir(dirName string, fn func(dirName, entName string, typ os.FileMode) error) error { + fd, err := syscall.Open(dirName, 0, 0) + if err != nil { + return &os.PathError{Op: "open", Path: dirName, Err: err} + } + defer syscall.Close(fd) + + // The buffer must be at least a block long. + buf := make([]byte, blockSize) // stack-allocated; doesn't escape + bufp := 0 // starting read position in buf + nbuf := 0 // end valid data in buf + skipFiles := false + for { + if bufp >= nbuf { + bufp = 0 + nbuf, err = syscall.ReadDirent(fd, buf) + if err != nil { + return os.NewSyscallError("readdirent", err) + } + if nbuf <= 0 { + return nil + } + } + consumed, name, typ := parseDirEnt(buf[bufp:nbuf]) + bufp += consumed + if name == "" || name == "." || name == ".." { + continue + } + // Fallback for filesystems (like old XFS) that don't + // support Dirent.Type and have DT_UNKNOWN (0) there + // instead. + if typ == unknownFileMode { + fi, err := os.Lstat(dirName + "/" + name) + if err != nil { + // It got deleted in the meantime. + if os.IsNotExist(err) { + continue + } + return err + } + typ = fi.Mode() & os.ModeType + } + if skipFiles && typ.IsRegular() { + continue + } + if err := fn(dirName, name, typ); err != nil { + if err == SkipFiles { + skipFiles = true + continue + } + return err + } + } +} + +func parseDirEnt(buf []byte) (consumed int, name string, typ os.FileMode) { + // golang.org/issue/15653 + dirent := (*syscall.Dirent)(unsafe.Pointer(&buf[0])) + if v := unsafe.Offsetof(dirent.Reclen) + unsafe.Sizeof(dirent.Reclen); uintptr(len(buf)) < v { + panic(fmt.Sprintf("buf size of %d smaller than dirent header size %d", len(buf), v)) + } + if len(buf) < int(dirent.Reclen) { + panic(fmt.Sprintf("buf size %d < record length %d", len(buf), dirent.Reclen)) + } + consumed = int(dirent.Reclen) + if direntInode(dirent) == 0 { // File absent in directory. + return + } + switch dirent.Type { + case syscall.DT_REG: + typ = 0 + case syscall.DT_DIR: + typ = os.ModeDir + case syscall.DT_LNK: + typ = os.ModeSymlink + case syscall.DT_BLK: + typ = os.ModeDevice + case syscall.DT_FIFO: + typ = os.ModeNamedPipe + case syscall.DT_SOCK: + typ = os.ModeSocket + case syscall.DT_UNKNOWN: + typ = unknownFileMode + default: + // Skip weird things. + // It's probably a DT_WHT (http://lwn.net/Articles/325369/) + // or something. Revisit if/when this package is moved outside + // of goimports. goimports only cares about regular files, + // symlinks, and directories. + return + } + + nameBuf := (*[unsafe.Sizeof(dirent.Name)]byte)(unsafe.Pointer(&dirent.Name[0])) + nameLen := direntNamlen(dirent) + + // Special cases for common things: + if nameLen == 1 && nameBuf[0] == '.' { + name = "." + } else if nameLen == 2 && nameBuf[0] == '.' && nameBuf[1] == '.' { + name = ".." + } else { + name = string(nameBuf[:nameLen]) + } + return +} diff --git a/vendor/golang.org/x/tools/internal/gopathwalk/walk.go b/vendor/golang.org/x/tools/internal/gopathwalk/walk.go new file mode 100644 index 00000000000..60eb67b697c --- /dev/null +++ b/vendor/golang.org/x/tools/internal/gopathwalk/walk.go @@ -0,0 +1,268 @@ +// 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 gopathwalk is like filepath.Walk but specialized for finding Go +// packages, particularly in $GOPATH and $GOROOT. +package gopathwalk + +import ( + "bufio" + "bytes" + "fmt" + "go/build" + "io/ioutil" + "log" + "os" + "path/filepath" + "strings" + + "golang.org/x/tools/internal/fastwalk" +) + +// Options controls the behavior of a Walk call. +type Options struct { + Debug bool // Enable debug logging + ModulesEnabled bool // Search module caches. Also disables legacy goimports ignore rules. +} + +// RootType indicates the type of a Root. +type RootType int + +const ( + RootUnknown RootType = iota + RootGOROOT + RootGOPATH + RootCurrentModule + RootModuleCache + RootOther +) + +// A Root is a starting point for a Walk. +type Root struct { + Path string + Type RootType +} + +// SrcDirsRoots returns the roots from build.Default.SrcDirs(). Not modules-compatible. +func SrcDirsRoots(ctx *build.Context) []Root { + var roots []Root + roots = append(roots, Root{filepath.Join(ctx.GOROOT, "src"), RootGOROOT}) + for _, p := range filepath.SplitList(ctx.GOPATH) { + roots = append(roots, Root{filepath.Join(p, "src"), RootGOPATH}) + } + return roots +} + +// Walk walks Go source directories ($GOROOT, $GOPATH, etc) to find packages. +// For each package found, add will be called (concurrently) with the absolute +// paths of the containing source directory and the package directory. +// add will be called concurrently. +func Walk(roots []Root, add func(root Root, dir string), opts Options) { + WalkSkip(roots, add, func(Root, string) bool { return false }, opts) +} + +// WalkSkip walks Go source directories ($GOROOT, $GOPATH, etc) to find packages. +// For each package found, add will be called (concurrently) with the absolute +// paths of the containing source directory and the package directory. +// For each directory that will be scanned, skip will be called (concurrently) +// with the absolute paths of the containing source directory and the directory. +// If skip returns false on a directory it will be processed. +// add will be called concurrently. +// skip will be called concurrently. +func WalkSkip(roots []Root, add func(root Root, dir string), skip func(root Root, dir string) bool, opts Options) { + for _, root := range roots { + walkDir(root, add, skip, opts) + } +} + +func walkDir(root Root, add func(Root, string), skip func(root Root, dir string) bool, opts Options) { + if _, err := os.Stat(root.Path); os.IsNotExist(err) { + if opts.Debug { + log.Printf("skipping nonexistent directory: %v", root.Path) + } + return + } + if opts.Debug { + log.Printf("scanning %s", root.Path) + } + w := &walker{ + root: root, + add: add, + skip: skip, + opts: opts, + } + w.init() + if err := fastwalk.Walk(root.Path, w.walk); err != nil { + log.Printf("gopathwalk: scanning directory %v: %v", root.Path, err) + } + + if opts.Debug { + log.Printf("scanned %s", root.Path) + } +} + +// walker is the callback for fastwalk.Walk. +type walker struct { + root Root // The source directory to scan. + add func(Root, string) // The callback that will be invoked for every possible Go package dir. + skip func(Root, string) bool // The callback that will be invoked for every dir. dir is skipped if it returns true. + opts Options // Options passed to Walk by the user. + + ignoredDirs []os.FileInfo // The ignored directories, loaded from .goimportsignore files. +} + +// init initializes the walker based on its Options. +func (w *walker) init() { + var ignoredPaths []string + if w.root.Type == RootModuleCache { + ignoredPaths = []string{"cache"} + } + if !w.opts.ModulesEnabled && w.root.Type == RootGOPATH { + ignoredPaths = w.getIgnoredDirs(w.root.Path) + ignoredPaths = append(ignoredPaths, "v", "mod") + } + + for _, p := range ignoredPaths { + full := filepath.Join(w.root.Path, p) + if fi, err := os.Stat(full); err == nil { + w.ignoredDirs = append(w.ignoredDirs, fi) + if w.opts.Debug { + log.Printf("Directory added to ignore list: %s", full) + } + } else if w.opts.Debug { + log.Printf("Error statting ignored directory: %v", err) + } + } +} + +// getIgnoredDirs reads an optional config file at /.goimportsignore +// of relative directories to ignore when scanning for go files. +// The provided path is one of the $GOPATH entries with "src" appended. +func (w *walker) getIgnoredDirs(path string) []string { + file := filepath.Join(path, ".goimportsignore") + slurp, err := ioutil.ReadFile(file) + if w.opts.Debug { + if err != nil { + log.Print(err) + } else { + log.Printf("Read %s", file) + } + } + if err != nil { + return nil + } + + var ignoredDirs []string + bs := bufio.NewScanner(bytes.NewReader(slurp)) + for bs.Scan() { + line := strings.TrimSpace(bs.Text()) + if line == "" || strings.HasPrefix(line, "#") { + continue + } + ignoredDirs = append(ignoredDirs, line) + } + return ignoredDirs +} + +func (w *walker) shouldSkipDir(fi os.FileInfo, dir string) bool { + for _, ignoredDir := range w.ignoredDirs { + if os.SameFile(fi, ignoredDir) { + return true + } + } + if w.skip != nil { + // Check with the user specified callback. + return w.skip(w.root, dir) + } + return false +} + +func (w *walker) walk(path string, typ os.FileMode) error { + dir := filepath.Dir(path) + if typ.IsRegular() { + if dir == w.root.Path && (w.root.Type == RootGOROOT || w.root.Type == RootGOPATH) { + // Doesn't make sense to have regular files + // directly in your $GOPATH/src or $GOROOT/src. + return fastwalk.SkipFiles + } + if !strings.HasSuffix(path, ".go") { + return nil + } + + w.add(w.root, dir) + return fastwalk.SkipFiles + } + if typ == os.ModeDir { + base := filepath.Base(path) + if base == "" || base[0] == '.' || base[0] == '_' || + base == "testdata" || + (w.root.Type == RootGOROOT && w.opts.ModulesEnabled && base == "vendor") || + (!w.opts.ModulesEnabled && base == "node_modules") { + return filepath.SkipDir + } + fi, err := os.Lstat(path) + if err == nil && w.shouldSkipDir(fi, path) { + return filepath.SkipDir + } + return nil + } + if typ == os.ModeSymlink { + base := filepath.Base(path) + if strings.HasPrefix(base, ".#") { + // Emacs noise. + return nil + } + fi, err := os.Lstat(path) + if err != nil { + // Just ignore it. + return nil + } + if w.shouldTraverse(dir, fi) { + return fastwalk.TraverseLink + } + } + return nil +} + +// shouldTraverse reports whether the symlink fi, found in dir, +// should be followed. It makes sure symlinks were never visited +// before to avoid symlink loops. +func (w *walker) shouldTraverse(dir string, fi os.FileInfo) bool { + path := filepath.Join(dir, fi.Name()) + target, err := filepath.EvalSymlinks(path) + if err != nil { + return false + } + ts, err := os.Stat(target) + if err != nil { + fmt.Fprintln(os.Stderr, err) + return false + } + if !ts.IsDir() { + return false + } + if w.shouldSkipDir(ts, dir) { + return false + } + // Check for symlink loops by statting each directory component + // and seeing if any are the same file as ts. + for { + parent := filepath.Dir(path) + if parent == path { + // Made it to the root without seeing a cycle. + // Use this symlink. + return true + } + parentInfo, err := os.Stat(parent) + if err != nil { + return false + } + if os.SameFile(ts, parentInfo) { + // Cycle. Don't traverse. + return false + } + path = parent + } + +} diff --git a/vendor/golang.org/x/tools/internal/imports/fix.go b/vendor/golang.org/x/tools/internal/imports/fix.go new file mode 100644 index 00000000000..bcfbb07ed87 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/fix.go @@ -0,0 +1,1385 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package imports + +import ( + "bytes" + "context" + "fmt" + "go/ast" + "go/build" + "go/parser" + "go/token" + "io/ioutil" + "os" + "os/exec" + "path" + "path/filepath" + "sort" + "strconv" + "strings" + "sync" + "time" + "unicode" + "unicode/utf8" + + "golang.org/x/tools/go/ast/astutil" + "golang.org/x/tools/go/packages" + "golang.org/x/tools/internal/gopathwalk" +) + +// importToGroup is a list of functions which map from an import path to +// a group number. +var importToGroup = []func(env *ProcessEnv, importPath string) (num int, ok bool){ + func(env *ProcessEnv, importPath string) (num int, ok bool) { + if env.LocalPrefix == "" { + return + } + for _, p := range strings.Split(env.LocalPrefix, ",") { + if strings.HasPrefix(importPath, p) || strings.TrimSuffix(p, "/") == importPath { + return 3, true + } + } + return + }, + func(_ *ProcessEnv, importPath string) (num int, ok bool) { + if strings.HasPrefix(importPath, "appengine") { + return 2, true + } + return + }, + func(_ *ProcessEnv, importPath string) (num int, ok bool) { + if strings.Contains(importPath, ".") { + return 1, true + } + return + }, +} + +func importGroup(env *ProcessEnv, importPath string) int { + for _, fn := range importToGroup { + if n, ok := fn(env, importPath); ok { + return n + } + } + return 0 +} + +type ImportFixType int + +const ( + AddImport ImportFixType = iota + DeleteImport + SetImportName +) + +type ImportFix struct { + // StmtInfo represents the import statement this fix will add, remove, or change. + StmtInfo ImportInfo + // IdentName is the identifier that this fix will add or remove. + IdentName string + // FixType is the type of fix this is (AddImport, DeleteImport, SetImportName). + FixType ImportFixType +} + +// An ImportInfo represents a single import statement. +type ImportInfo struct { + ImportPath string // import path, e.g. "crypto/rand". + Name string // import name, e.g. "crand", or "" if none. +} + +// A packageInfo represents what's known about a package. +type packageInfo struct { + name string // real package name, if known. + exports map[string]bool // known exports. +} + +// parseOtherFiles parses all the Go files in srcDir except filename, including +// test files if filename looks like a test. +func parseOtherFiles(fset *token.FileSet, srcDir, filename string) []*ast.File { + // This could use go/packages but it doesn't buy much, and it fails + // with https://golang.org/issue/26296 in LoadFiles mode in some cases. + considerTests := strings.HasSuffix(filename, "_test.go") + + fileBase := filepath.Base(filename) + packageFileInfos, err := ioutil.ReadDir(srcDir) + if err != nil { + return nil + } + + var files []*ast.File + for _, fi := range packageFileInfos { + if fi.Name() == fileBase || !strings.HasSuffix(fi.Name(), ".go") { + continue + } + if !considerTests && strings.HasSuffix(fi.Name(), "_test.go") { + continue + } + + f, err := parser.ParseFile(fset, filepath.Join(srcDir, fi.Name()), nil, 0) + if err != nil { + continue + } + + files = append(files, f) + } + + return files +} + +// addGlobals puts the names of package vars into the provided map. +func addGlobals(f *ast.File, globals map[string]bool) { + for _, decl := range f.Decls { + genDecl, ok := decl.(*ast.GenDecl) + if !ok { + continue + } + + for _, spec := range genDecl.Specs { + valueSpec, ok := spec.(*ast.ValueSpec) + if !ok { + continue + } + globals[valueSpec.Names[0].Name] = true + } + } +} + +// collectReferences builds a map of selector expressions, from +// left hand side (X) to a set of right hand sides (Sel). +func collectReferences(f *ast.File) references { + refs := references{} + + var visitor visitFn + visitor = func(node ast.Node) ast.Visitor { + if node == nil { + return visitor + } + switch v := node.(type) { + case *ast.SelectorExpr: + xident, ok := v.X.(*ast.Ident) + if !ok { + break + } + if xident.Obj != nil { + // If the parser can resolve it, it's not a package ref. + break + } + if !ast.IsExported(v.Sel.Name) { + // Whatever this is, it's not exported from a package. + break + } + pkgName := xident.Name + r := refs[pkgName] + if r == nil { + r = make(map[string]bool) + refs[pkgName] = r + } + r[v.Sel.Name] = true + } + return visitor + } + ast.Walk(visitor, f) + return refs +} + +// collectImports returns all the imports in f. +// Unnamed imports (., _) and "C" are ignored. +func collectImports(f *ast.File) []*ImportInfo { + var imports []*ImportInfo + for _, imp := range f.Imports { + var name string + if imp.Name != nil { + name = imp.Name.Name + } + if imp.Path.Value == `"C"` || name == "_" || name == "." { + continue + } + path := strings.Trim(imp.Path.Value, `"`) + imports = append(imports, &ImportInfo{ + Name: name, + ImportPath: path, + }) + } + return imports +} + +// findMissingImport searches pass's candidates for an import that provides +// pkg, containing all of syms. +func (p *pass) findMissingImport(pkg string, syms map[string]bool) *ImportInfo { + for _, candidate := range p.candidates { + pkgInfo, ok := p.knownPackages[candidate.ImportPath] + if !ok { + continue + } + if p.importIdentifier(candidate) != pkg { + continue + } + + allFound := true + for right := range syms { + if !pkgInfo.exports[right] { + allFound = false + break + } + } + + if allFound { + return candidate + } + } + return nil +} + +// references is set of references found in a Go file. The first map key is the +// left hand side of a selector expression, the second key is the right hand +// side, and the value should always be true. +type references map[string]map[string]bool + +// A pass contains all the inputs and state necessary to fix a file's imports. +// It can be modified in some ways during use; see comments below. +type pass struct { + // Inputs. These must be set before a call to load, and not modified after. + fset *token.FileSet // fset used to parse f and its siblings. + f *ast.File // the file being fixed. + srcDir string // the directory containing f. + env *ProcessEnv // the environment to use for go commands, etc. + loadRealPackageNames bool // if true, load package names from disk rather than guessing them. + otherFiles []*ast.File // sibling files. + + // Intermediate state, generated by load. + existingImports map[string]*ImportInfo + allRefs references + missingRefs references + + // Inputs to fix. These can be augmented between successive fix calls. + lastTry bool // indicates that this is the last call and fix should clean up as best it can. + candidates []*ImportInfo // candidate imports in priority order. + knownPackages map[string]*packageInfo // information about all known packages. +} + +// loadPackageNames saves the package names for everything referenced by imports. +func (p *pass) loadPackageNames(imports []*ImportInfo) error { + if p.env.Debug { + p.env.Logf("loading package names for %v packages", len(imports)) + defer func() { + p.env.Logf("done loading package names for %v packages", len(imports)) + }() + } + var unknown []string + for _, imp := range imports { + if _, ok := p.knownPackages[imp.ImportPath]; ok { + continue + } + unknown = append(unknown, imp.ImportPath) + } + + names, err := p.env.GetResolver().loadPackageNames(unknown, p.srcDir) + if err != nil { + return err + } + + for path, name := range names { + p.knownPackages[path] = &packageInfo{ + name: name, + exports: map[string]bool{}, + } + } + return nil +} + +// importIdentifier returns the identifier that imp will introduce. It will +// guess if the package name has not been loaded, e.g. because the source +// is not available. +func (p *pass) importIdentifier(imp *ImportInfo) string { + if imp.Name != "" { + return imp.Name + } + known := p.knownPackages[imp.ImportPath] + if known != nil && known.name != "" { + return known.name + } + return importPathToAssumedName(imp.ImportPath) +} + +// load reads in everything necessary to run a pass, and reports whether the +// file already has all the imports it needs. It fills in p.missingRefs with the +// file's missing symbols, if any, or removes unused imports if not. +func (p *pass) load() ([]*ImportFix, bool) { + p.knownPackages = map[string]*packageInfo{} + p.missingRefs = references{} + p.existingImports = map[string]*ImportInfo{} + + // Load basic information about the file in question. + p.allRefs = collectReferences(p.f) + + // Load stuff from other files in the same package: + // global variables so we know they don't need resolving, and imports + // that we might want to mimic. + globals := map[string]bool{} + for _, otherFile := range p.otherFiles { + // Don't load globals from files that are in the same directory + // but a different package. Using them to suggest imports is OK. + if p.f.Name.Name == otherFile.Name.Name { + addGlobals(otherFile, globals) + } + p.candidates = append(p.candidates, collectImports(otherFile)...) + } + + // Resolve all the import paths we've seen to package names, and store + // f's imports by the identifier they introduce. + imports := collectImports(p.f) + if p.loadRealPackageNames { + err := p.loadPackageNames(append(imports, p.candidates...)) + if err != nil { + if p.env.Debug { + p.env.Logf("loading package names: %v", err) + } + return nil, false + } + } + for _, imp := range imports { + p.existingImports[p.importIdentifier(imp)] = imp + } + + // Find missing references. + for left, rights := range p.allRefs { + if globals[left] { + continue + } + _, ok := p.existingImports[left] + if !ok { + p.missingRefs[left] = rights + continue + } + } + if len(p.missingRefs) != 0 { + return nil, false + } + + return p.fix() +} + +// fix attempts to satisfy missing imports using p.candidates. If it finds +// everything, or if p.lastTry is true, it updates fixes to add the imports it found, +// delete anything unused, and update import names, and returns true. +func (p *pass) fix() ([]*ImportFix, bool) { + // Find missing imports. + var selected []*ImportInfo + for left, rights := range p.missingRefs { + if imp := p.findMissingImport(left, rights); imp != nil { + selected = append(selected, imp) + } + } + + if !p.lastTry && len(selected) != len(p.missingRefs) { + return nil, false + } + + // Found everything, or giving up. Add the new imports and remove any unused. + var fixes []*ImportFix + for _, imp := range p.existingImports { + // We deliberately ignore globals here, because we can't be sure + // they're in the same package. People do things like put multiple + // main packages in the same directory, and we don't want to + // remove imports if they happen to have the same name as a var in + // a different package. + if _, ok := p.allRefs[p.importIdentifier(imp)]; !ok { + fixes = append(fixes, &ImportFix{ + StmtInfo: *imp, + IdentName: p.importIdentifier(imp), + FixType: DeleteImport, + }) + continue + } + + // An existing import may need to update its import name to be correct. + if name := p.importSpecName(imp); name != imp.Name { + fixes = append(fixes, &ImportFix{ + StmtInfo: ImportInfo{ + Name: name, + ImportPath: imp.ImportPath, + }, + IdentName: p.importIdentifier(imp), + FixType: SetImportName, + }) + } + } + + for _, imp := range selected { + fixes = append(fixes, &ImportFix{ + StmtInfo: ImportInfo{ + Name: p.importSpecName(imp), + ImportPath: imp.ImportPath, + }, + IdentName: p.importIdentifier(imp), + FixType: AddImport, + }) + } + + return fixes, true +} + +// importSpecName gets the import name of imp in the import spec. +// +// When the import identifier matches the assumed import name, the import name does +// not appear in the import spec. +func (p *pass) importSpecName(imp *ImportInfo) string { + // If we did not load the real package names, or the name is already set, + // we just return the existing name. + if !p.loadRealPackageNames || imp.Name != "" { + return imp.Name + } + + ident := p.importIdentifier(imp) + if ident == importPathToAssumedName(imp.ImportPath) { + return "" // ident not needed since the assumed and real names are the same. + } + return ident +} + +// apply will perform the fixes on f in order. +func apply(fset *token.FileSet, f *ast.File, fixes []*ImportFix) { + for _, fix := range fixes { + switch fix.FixType { + case DeleteImport: + astutil.DeleteNamedImport(fset, f, fix.StmtInfo.Name, fix.StmtInfo.ImportPath) + case AddImport: + astutil.AddNamedImport(fset, f, fix.StmtInfo.Name, fix.StmtInfo.ImportPath) + case SetImportName: + // Find the matching import path and change the name. + for _, spec := range f.Imports { + path := strings.Trim(spec.Path.Value, `"`) + if path == fix.StmtInfo.ImportPath { + spec.Name = &ast.Ident{ + Name: fix.StmtInfo.Name, + NamePos: spec.Pos(), + } + } + } + } + } +} + +// assumeSiblingImportsValid assumes that siblings' use of packages is valid, +// adding the exports they use. +func (p *pass) assumeSiblingImportsValid() { + for _, f := range p.otherFiles { + refs := collectReferences(f) + imports := collectImports(f) + importsByName := map[string]*ImportInfo{} + for _, imp := range imports { + importsByName[p.importIdentifier(imp)] = imp + } + for left, rights := range refs { + if imp, ok := importsByName[left]; ok { + if _, ok := stdlib[imp.ImportPath]; ok { + // We have the stdlib in memory; no need to guess. + rights = stdlib[imp.ImportPath] + } + p.addCandidate(imp, &packageInfo{ + // no name; we already know it. + exports: rights, + }) + } + } + } +} + +// addCandidate adds a candidate import to p, and merges in the information +// in pkg. +func (p *pass) addCandidate(imp *ImportInfo, pkg *packageInfo) { + p.candidates = append(p.candidates, imp) + if existing, ok := p.knownPackages[imp.ImportPath]; ok { + if existing.name == "" { + existing.name = pkg.name + } + for export := range pkg.exports { + existing.exports[export] = true + } + } else { + p.knownPackages[imp.ImportPath] = pkg + } +} + +// fixImports adds and removes imports from f so that all its references are +// satisfied and there are no unused imports. +// +// This is declared as a variable rather than a function so goimports can +// easily be extended by adding a file with an init function. +var fixImports = fixImportsDefault + +func fixImportsDefault(fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv) error { + fixes, err := getFixes(fset, f, filename, env) + if err != nil { + return err + } + apply(fset, f, fixes) + return err +} + +// getFixes gets the import fixes that need to be made to f in order to fix the imports. +// It does not modify the ast. +func getFixes(fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv) ([]*ImportFix, error) { + abs, err := filepath.Abs(filename) + if err != nil { + return nil, err + } + srcDir := filepath.Dir(abs) + if env.Debug { + env.Logf("fixImports(filename=%q), abs=%q, srcDir=%q ...", filename, abs, srcDir) + } + + // First pass: looking only at f, and using the naive algorithm to + // derive package names from import paths, see if the file is already + // complete. We can't add any imports yet, because we don't know + // if missing references are actually package vars. + p := &pass{fset: fset, f: f, srcDir: srcDir} + if fixes, done := p.load(); done { + return fixes, nil + } + + otherFiles := parseOtherFiles(fset, srcDir, filename) + + // Second pass: add information from other files in the same package, + // like their package vars and imports. + p.otherFiles = otherFiles + if fixes, done := p.load(); done { + return fixes, nil + } + + // Now we can try adding imports from the stdlib. + p.assumeSiblingImportsValid() + addStdlibCandidates(p, p.missingRefs) + if fixes, done := p.fix(); done { + return fixes, nil + } + + // Third pass: get real package names where we had previously used + // the naive algorithm. This is the first step that will use the + // environment, so we provide it here for the first time. + p = &pass{fset: fset, f: f, srcDir: srcDir, env: env} + p.loadRealPackageNames = true + p.otherFiles = otherFiles + if fixes, done := p.load(); done { + return fixes, nil + } + + addStdlibCandidates(p, p.missingRefs) + p.assumeSiblingImportsValid() + if fixes, done := p.fix(); done { + return fixes, nil + } + + // Go look for candidates in $GOPATH, etc. We don't necessarily load + // the real exports of sibling imports, so keep assuming their contents. + if err := addExternalCandidates(p, p.missingRefs, filename); err != nil { + return nil, err + } + + p.lastTry = true + fixes, _ := p.fix() + return fixes, nil +} + +// getAllCandidates gets all of the candidates to be imported, regardless of if they are needed. +func getAllCandidates(filename string, env *ProcessEnv) ([]ImportFix, error) { + // TODO(suzmue): scan for additional candidates and filter out + // current package. + + // Get the stdlib candidates and sort by import path. + var paths []string + for importPath := range stdlib { + paths = append(paths, importPath) + } + sort.Strings(paths) + + var imports []ImportFix + for _, importPath := range paths { + imports = append(imports, ImportFix{ + StmtInfo: ImportInfo{ + ImportPath: importPath, + }, + IdentName: path.Base(importPath), + FixType: AddImport, + }) + } + return imports, nil +} + +// ProcessEnv contains environment variables and settings that affect the use of +// the go command, the go/build package, etc. +type ProcessEnv struct { + LocalPrefix string + Debug bool + + // If non-empty, these will be used instead of the + // process-wide values. + GOPATH, GOROOT, GO111MODULE, GOPROXY, GOFLAGS, GOSUMDB string + WorkingDir string + + // If true, use go/packages regardless of the environment. + ForceGoPackages bool + + // Logf is the default logger for the ProcessEnv. + Logf func(format string, args ...interface{}) + + resolver Resolver +} + +func (e *ProcessEnv) env() []string { + env := os.Environ() + add := func(k, v string) { + if v != "" { + env = append(env, k+"="+v) + } + } + add("GOPATH", e.GOPATH) + add("GOROOT", e.GOROOT) + add("GO111MODULE", e.GO111MODULE) + add("GOPROXY", e.GOPROXY) + add("GOFLAGS", e.GOFLAGS) + add("GOSUMDB", e.GOSUMDB) + if e.WorkingDir != "" { + add("PWD", e.WorkingDir) + } + return env +} + +func (e *ProcessEnv) GetResolver() Resolver { + if e.resolver != nil { + return e.resolver + } + if e.ForceGoPackages { + e.resolver = &goPackagesResolver{env: e} + return e.resolver + } + + out, err := e.invokeGo("env", "GOMOD") + if err != nil || len(bytes.TrimSpace(out.Bytes())) == 0 { + e.resolver = &gopathResolver{env: e} + return e.resolver + } + e.resolver = &ModuleResolver{env: e} + return e.resolver +} + +func (e *ProcessEnv) newPackagesConfig(mode packages.LoadMode) *packages.Config { + return &packages.Config{ + Mode: mode, + Dir: e.WorkingDir, + Env: e.env(), + } +} + +func (e *ProcessEnv) buildContext() *build.Context { + ctx := build.Default + ctx.GOROOT = e.GOROOT + ctx.GOPATH = e.GOPATH + return &ctx +} + +func (e *ProcessEnv) invokeGo(args ...string) (*bytes.Buffer, error) { + cmd := exec.Command("go", args...) + stdout := &bytes.Buffer{} + stderr := &bytes.Buffer{} + cmd.Stdout = stdout + cmd.Stderr = stderr + cmd.Env = e.env() + cmd.Dir = e.WorkingDir + + if e.Debug { + defer func(start time.Time) { e.Logf("%s for %v", time.Since(start), cmdDebugStr(cmd)) }(time.Now()) + } + if err := cmd.Run(); err != nil { + return nil, fmt.Errorf("running go: %v (stderr:\n%s)", err, stderr) + } + return stdout, nil +} + +func cmdDebugStr(cmd *exec.Cmd) string { + env := make(map[string]string) + for _, kv := range cmd.Env { + split := strings.Split(kv, "=") + k, v := split[0], split[1] + env[k] = v + } + + return fmt.Sprintf("GOROOT=%v GOPATH=%v GO111MODULE=%v GOPROXY=%v PWD=%v go %v", env["GOROOT"], env["GOPATH"], env["GO111MODULE"], env["GOPROXY"], env["PWD"], cmd.Args) +} + +func addStdlibCandidates(pass *pass, refs references) { + add := func(pkg string) { + pass.addCandidate( + &ImportInfo{ImportPath: pkg}, + &packageInfo{name: path.Base(pkg), exports: stdlib[pkg]}) + } + for left := range refs { + if left == "rand" { + // Make sure we try crypto/rand before math/rand. + add("crypto/rand") + add("math/rand") + continue + } + for importPath := range stdlib { + if path.Base(importPath) == left { + add(importPath) + } + } + } +} + +// A Resolver does the build-system-specific parts of goimports. +type Resolver interface { + // loadPackageNames loads the package names in importPaths. + loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) + // scan finds (at least) the packages satisfying refs. The returned slice is unordered. + scan(refs references) ([]*pkg, error) + // loadExports returns the set of exported symbols in the package at dir. + // It returns an error if the package name in dir does not match expectPackage. + // loadExports may be called concurrently. + loadExports(ctx context.Context, expectPackage string, pkg *pkg) (map[string]bool, error) +} + +// gopackagesResolver implements resolver for GOPATH and module workspaces using go/packages. +type goPackagesResolver struct { + env *ProcessEnv +} + +func (r *goPackagesResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) { + if len(importPaths) == 0 { + return nil, nil + } + cfg := r.env.newPackagesConfig(packages.LoadFiles) + pkgs, err := packages.Load(cfg, importPaths...) + if err != nil { + return nil, err + } + names := map[string]string{} + for _, pkg := range pkgs { + names[VendorlessPath(pkg.PkgPath)] = pkg.Name + } + // We may not have found all the packages. Guess the rest. + for _, path := range importPaths { + if _, ok := names[path]; ok { + continue + } + names[path] = importPathToAssumedName(path) + } + return names, nil + +} + +func (r *goPackagesResolver) scan(refs references) ([]*pkg, error) { + var loadQueries []string + for pkgName := range refs { + loadQueries = append(loadQueries, "iamashamedtousethedisabledqueryname="+pkgName) + } + sort.Strings(loadQueries) + cfg := r.env.newPackagesConfig(packages.LoadFiles) + goPackages, err := packages.Load(cfg, loadQueries...) + if err != nil { + return nil, err + } + + var scan []*pkg + for _, goPackage := range goPackages { + scan = append(scan, &pkg{ + dir: filepath.Dir(goPackage.CompiledGoFiles[0]), + importPathShort: VendorlessPath(goPackage.PkgPath), + goPackage: goPackage, + }) + } + return scan, nil +} + +func (r *goPackagesResolver) loadExports(ctx context.Context, expectPackage string, pkg *pkg) (map[string]bool, error) { + if pkg.goPackage == nil { + return nil, fmt.Errorf("goPackage not set") + } + exports := map[string]bool{} + fset := token.NewFileSet() + for _, fname := range pkg.goPackage.CompiledGoFiles { + f, err := parser.ParseFile(fset, fname, nil, 0) + if err != nil { + return nil, fmt.Errorf("parsing %s: %v", fname, err) + } + for name := range f.Scope.Objects { + if ast.IsExported(name) { + exports[name] = true + } + } + } + return exports, nil +} + +func addExternalCandidates(pass *pass, refs references, filename string) error { + dirScan, err := pass.env.GetResolver().scan(refs) + if err != nil { + return err + } + + // Search for imports matching potential package references. + type result struct { + imp *ImportInfo + pkg *packageInfo + } + results := make(chan result, len(refs)) + + ctx, cancel := context.WithCancel(context.TODO()) + var wg sync.WaitGroup + defer func() { + cancel() + wg.Wait() + }() + var ( + firstErr error + firstErrOnce sync.Once + ) + for pkgName, symbols := range refs { + wg.Add(1) + go func(pkgName string, symbols map[string]bool) { + defer wg.Done() + + found, err := findImport(ctx, pass, dirScan, pkgName, symbols, filename) + + if err != nil { + firstErrOnce.Do(func() { + firstErr = err + cancel() + }) + return + } + + if found == nil { + return // No matching package. + } + + imp := &ImportInfo{ + ImportPath: found.importPathShort, + } + + pkg := &packageInfo{ + name: pkgName, + exports: symbols, + } + results <- result{imp, pkg} + }(pkgName, symbols) + } + go func() { + wg.Wait() + close(results) + }() + + for result := range results { + pass.addCandidate(result.imp, result.pkg) + } + return firstErr +} + +// notIdentifier reports whether ch is an invalid identifier character. +func notIdentifier(ch rune) bool { + return !('a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || + '0' <= ch && ch <= '9' || + ch == '_' || + ch >= utf8.RuneSelf && (unicode.IsLetter(ch) || unicode.IsDigit(ch))) +} + +// importPathToAssumedName returns the assumed package name of an import path. +// It does this using only string parsing of the import path. +// It picks the last element of the path that does not look like a major +// version, and then picks the valid identifier off the start of that element. +// It is used to determine if a local rename should be added to an import for +// clarity. +// This function could be moved to a standard package and exported if we want +// for use in other tools. +func importPathToAssumedName(importPath string) string { + base := path.Base(importPath) + if strings.HasPrefix(base, "v") { + if _, err := strconv.Atoi(base[1:]); err == nil { + dir := path.Dir(importPath) + if dir != "." { + base = path.Base(dir) + } + } + } + base = strings.TrimPrefix(base, "go-") + if i := strings.IndexFunc(base, notIdentifier); i >= 0 { + base = base[:i] + } + return base +} + +// gopathResolver implements resolver for GOPATH workspaces. +type gopathResolver struct { + env *ProcessEnv +} + +func (r *gopathResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) { + names := map[string]string{} + for _, path := range importPaths { + names[path] = importPathToName(r.env, path, srcDir) + } + return names, nil +} + +// importPathToName finds out the actual package name, as declared in its .go files. +// If there's a problem, it returns "". +func importPathToName(env *ProcessEnv, importPath, srcDir string) (packageName string) { + // Fast path for standard library without going to disk. + if _, ok := stdlib[importPath]; ok { + return path.Base(importPath) // stdlib packages always match their paths. + } + + buildPkg, err := env.buildContext().Import(importPath, srcDir, build.FindOnly) + if err != nil { + return "" + } + pkgName, err := packageDirToName(buildPkg.Dir) + if err != nil { + return "" + } + return pkgName +} + +// packageDirToName is a faster version of build.Import if +// the only thing desired is the package name. Given a directory, +// packageDirToName then only parses one file in the package, +// trusting that the files in the directory are consistent. +func packageDirToName(dir string) (packageName string, err error) { + d, err := os.Open(dir) + if err != nil { + return "", err + } + names, err := d.Readdirnames(-1) + d.Close() + if err != nil { + return "", err + } + sort.Strings(names) // to have predictable behavior + var lastErr error + var nfile int + for _, name := range names { + if !strings.HasSuffix(name, ".go") { + continue + } + if strings.HasSuffix(name, "_test.go") { + continue + } + nfile++ + fullFile := filepath.Join(dir, name) + + fset := token.NewFileSet() + f, err := parser.ParseFile(fset, fullFile, nil, parser.PackageClauseOnly) + if err != nil { + lastErr = err + continue + } + pkgName := f.Name.Name + if pkgName == "documentation" { + // Special case from go/build.ImportDir, not + // handled by ctx.MatchFile. + continue + } + if pkgName == "main" { + // Also skip package main, assuming it's a +build ignore generator or example. + // Since you can't import a package main anyway, there's no harm here. + continue + } + return pkgName, nil + } + if lastErr != nil { + return "", lastErr + } + return "", fmt.Errorf("no importable package found in %d Go files", nfile) +} + +type pkg struct { + goPackage *packages.Package + dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http") + importPathShort string // vendorless import path ("net/http", "a/b") +} + +type pkgDistance struct { + pkg *pkg + distance int // relative distance to target +} + +// byDistanceOrImportPathShortLength sorts by relative distance breaking ties +// on the short import path length and then the import string itself. +type byDistanceOrImportPathShortLength []pkgDistance + +func (s byDistanceOrImportPathShortLength) Len() int { return len(s) } +func (s byDistanceOrImportPathShortLength) Less(i, j int) bool { + di, dj := s[i].distance, s[j].distance + if di == -1 { + return false + } + if dj == -1 { + return true + } + if di != dj { + return di < dj + } + + vi, vj := s[i].pkg.importPathShort, s[j].pkg.importPathShort + if len(vi) != len(vj) { + return len(vi) < len(vj) + } + return vi < vj +} +func (s byDistanceOrImportPathShortLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] } + +func distance(basepath, targetpath string) int { + p, err := filepath.Rel(basepath, targetpath) + if err != nil { + return -1 + } + if p == "." { + return 0 + } + return strings.Count(p, string(filepath.Separator)) + 1 +} + +func (r *gopathResolver) scan(_ references) ([]*pkg, error) { + dupCheck := make(map[string]bool) + var result []*pkg + + var mu sync.Mutex + + add := func(root gopathwalk.Root, dir string) { + mu.Lock() + defer mu.Unlock() + + if _, dup := dupCheck[dir]; dup { + return + } + dupCheck[dir] = true + importpath := filepath.ToSlash(dir[len(root.Path)+len("/"):]) + result = append(result, &pkg{ + importPathShort: VendorlessPath(importpath), + dir: dir, + }) + } + gopathwalk.Walk(gopathwalk.SrcDirsRoots(r.env.buildContext()), add, gopathwalk.Options{Debug: r.env.Debug, ModulesEnabled: false}) + return result, nil +} + +func (r *gopathResolver) loadExports(ctx context.Context, expectPackage string, pkg *pkg) (map[string]bool, error) { + return loadExportsFromFiles(ctx, r.env, expectPackage, pkg.dir) +} + +// VendorlessPath returns the devendorized version of the import path ipath. +// For example, VendorlessPath("foo/bar/vendor/a/b") returns "a/b". +func VendorlessPath(ipath string) string { + // Devendorize for use in import statement. + if i := strings.LastIndex(ipath, "/vendor/"); i >= 0 { + return ipath[i+len("/vendor/"):] + } + if strings.HasPrefix(ipath, "vendor/") { + return ipath[len("vendor/"):] + } + return ipath +} + +func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, expectPackage string, dir string) (map[string]bool, error) { + exports := make(map[string]bool) + + // Look for non-test, buildable .go files which could provide exports. + all, err := ioutil.ReadDir(dir) + if err != nil { + return nil, err + } + var files []os.FileInfo + for _, fi := range all { + name := fi.Name() + if !strings.HasSuffix(name, ".go") || strings.HasSuffix(name, "_test.go") { + continue + } + match, err := env.buildContext().MatchFile(dir, fi.Name()) + if err != nil || !match { + continue + } + files = append(files, fi) + } + + if len(files) == 0 { + return nil, fmt.Errorf("dir %v contains no buildable, non-test .go files", dir) + } + + fset := token.NewFileSet() + for _, fi := range files { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + } + + fullFile := filepath.Join(dir, fi.Name()) + f, err := parser.ParseFile(fset, fullFile, nil, 0) + if err != nil { + return nil, fmt.Errorf("parsing %s: %v", fullFile, err) + } + pkgName := f.Name.Name + if pkgName == "documentation" { + // Special case from go/build.ImportDir, not + // handled by MatchFile above. + continue + } + if pkgName != expectPackage { + return nil, fmt.Errorf("scan of dir %v is not expected package %v (actually %v)", dir, expectPackage, pkgName) + } + for name := range f.Scope.Objects { + if ast.IsExported(name) { + exports[name] = true + } + } + } + + if env.Debug { + exportList := make([]string, 0, len(exports)) + for k := range exports { + exportList = append(exportList, k) + } + sort.Strings(exportList) + env.Logf("loaded exports in dir %v (package %v): %v", dir, expectPackage, strings.Join(exportList, ", ")) + } + return exports, nil +} + +// findImport searches for a package with the given symbols. +// If no package is found, findImport returns ("", false, nil) +func findImport(ctx context.Context, pass *pass, dirScan []*pkg, pkgName string, symbols map[string]bool, filename string) (*pkg, error) { + pkgDir, err := filepath.Abs(filename) + if err != nil { + return nil, err + } + pkgDir = filepath.Dir(pkgDir) + + // Find candidate packages, looking only at their directory names first. + var candidates []pkgDistance + for _, pkg := range dirScan { + if pkg.dir == pkgDir && pass.f.Name.Name == pkgName { + // The candidate is in the same directory and has the + // same package name. Don't try to import ourselves. + continue + } + if pkgIsCandidate(filename, pkgName, pkg) { + candidates = append(candidates, pkgDistance{ + pkg: pkg, + distance: distance(pkgDir, pkg.dir), + }) + } + } + + // Sort the candidates by their import package length, + // assuming that shorter package names are better than long + // ones. Note that this sorts by the de-vendored name, so + // there's no "penalty" for vendoring. + sort.Sort(byDistanceOrImportPathShortLength(candidates)) + if pass.env.Debug { + for i, c := range candidates { + pass.env.Logf("%s candidate %d/%d: %v in %v", pkgName, i+1, len(candidates), c.pkg.importPathShort, c.pkg.dir) + } + } + + // Collect exports for packages with matching names. + + rescv := make([]chan *pkg, len(candidates)) + for i := range candidates { + rescv[i] = make(chan *pkg, 1) + } + const maxConcurrentPackageImport = 4 + loadExportsSem := make(chan struct{}, maxConcurrentPackageImport) + + ctx, cancel := context.WithCancel(ctx) + var wg sync.WaitGroup + defer func() { + cancel() + wg.Wait() + }() + + wg.Add(1) + go func() { + defer wg.Done() + for i, c := range candidates { + select { + case loadExportsSem <- struct{}{}: + case <-ctx.Done(): + return + } + + wg.Add(1) + go func(c pkgDistance, resc chan<- *pkg) { + defer func() { + <-loadExportsSem + wg.Done() + }() + + if pass.env.Debug { + pass.env.Logf("loading exports in dir %s (seeking package %s)", c.pkg.dir, pkgName) + } + exports, err := pass.env.GetResolver().loadExports(ctx, pkgName, c.pkg) + if err != nil { + if pass.env.Debug { + pass.env.Logf("loading exports in dir %s (seeking package %s): %v", c.pkg.dir, pkgName, err) + } + resc <- nil + return + } + + // If it doesn't have the right + // symbols, send nil to mean no match. + for symbol := range symbols { + if !exports[symbol] { + resc <- nil + return + } + } + resc <- c.pkg + }(c, rescv[i]) + } + }() + + for _, resc := range rescv { + pkg := <-resc + if pkg == nil { + continue + } + return pkg, nil + } + return nil, nil +} + +// pkgIsCandidate reports whether pkg is a candidate for satisfying the +// finding which package pkgIdent in the file named by filename is trying +// to refer to. +// +// This check is purely lexical and is meant to be as fast as possible +// because it's run over all $GOPATH directories to filter out poor +// candidates in order to limit the CPU and I/O later parsing the +// exports in candidate packages. +// +// filename is the file being formatted. +// pkgIdent is the package being searched for, like "client" (if +// searching for "client.New") +func pkgIsCandidate(filename, pkgIdent string, pkg *pkg) bool { + // Check "internal" and "vendor" visibility: + if !canUse(filename, pkg.dir) { + return false + } + + // Speed optimization to minimize disk I/O: + // the last two components on disk must contain the + // package name somewhere. + // + // This permits mismatch naming like directory + // "go-foo" being package "foo", or "pkg.v3" being "pkg", + // or directory "google.golang.org/api/cloudbilling/v1" + // being package "cloudbilling", but doesn't + // permit a directory "foo" to be package + // "bar", which is strongly discouraged + // anyway. There's no reason goimports needs + // to be slow just to accommodate that. + lastTwo := lastTwoComponents(pkg.importPathShort) + if strings.Contains(lastTwo, pkgIdent) { + return true + } + if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(pkgIdent) { + lastTwo = lowerASCIIAndRemoveHyphen(lastTwo) + if strings.Contains(lastTwo, pkgIdent) { + return true + } + } + + return false +} + +func hasHyphenOrUpperASCII(s string) bool { + for i := 0; i < len(s); i++ { + b := s[i] + if b == '-' || ('A' <= b && b <= 'Z') { + return true + } + } + return false +} + +func lowerASCIIAndRemoveHyphen(s string) (ret string) { + buf := make([]byte, 0, len(s)) + for i := 0; i < len(s); i++ { + b := s[i] + switch { + case b == '-': + continue + case 'A' <= b && b <= 'Z': + buf = append(buf, b+('a'-'A')) + default: + buf = append(buf, b) + } + } + return string(buf) +} + +// canUse reports whether the package in dir is usable from filename, +// respecting the Go "internal" and "vendor" visibility rules. +func canUse(filename, dir string) bool { + // Fast path check, before any allocations. If it doesn't contain vendor + // or internal, it's not tricky: + // Note that this can false-negative on directories like "notinternal", + // but we check it correctly below. This is just a fast path. + if !strings.Contains(dir, "vendor") && !strings.Contains(dir, "internal") { + return true + } + + dirSlash := filepath.ToSlash(dir) + if !strings.Contains(dirSlash, "/vendor/") && !strings.Contains(dirSlash, "/internal/") && !strings.HasSuffix(dirSlash, "/internal") { + return true + } + // Vendor or internal directory only visible from children of parent. + // That means the path from the current directory to the target directory + // can contain ../vendor or ../internal but not ../foo/vendor or ../foo/internal + // or bar/vendor or bar/internal. + // After stripping all the leading ../, the only okay place to see vendor or internal + // is at the very beginning of the path. + absfile, err := filepath.Abs(filename) + if err != nil { + return false + } + absdir, err := filepath.Abs(dir) + if err != nil { + return false + } + rel, err := filepath.Rel(absfile, absdir) + if err != nil { + return false + } + relSlash := filepath.ToSlash(rel) + if i := strings.LastIndex(relSlash, "../"); i >= 0 { + relSlash = relSlash[i+len("../"):] + } + return !strings.Contains(relSlash, "/vendor/") && !strings.Contains(relSlash, "/internal/") && !strings.HasSuffix(relSlash, "/internal") +} + +// lastTwoComponents returns at most the last two path components +// of v, using either / or \ as the path separator. +func lastTwoComponents(v string) string { + nslash := 0 + for i := len(v) - 1; i >= 0; i-- { + if v[i] == '/' || v[i] == '\\' { + nslash++ + if nslash == 2 { + return v[i:] + } + } + } + return v +} + +type visitFn func(node ast.Node) ast.Visitor + +func (fn visitFn) Visit(node ast.Node) ast.Visitor { + return fn(node) +} diff --git a/vendor/golang.org/x/tools/internal/imports/imports.go b/vendor/golang.org/x/tools/internal/imports/imports.go new file mode 100644 index 00000000000..2c074cb2db3 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/imports.go @@ -0,0 +1,388 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run mkstdlib.go + +// Package imports implements a Go pretty-printer (like package "go/format") +// that also adds or removes import statements as necessary. +package imports + +import ( + "bufio" + "bytes" + "fmt" + "go/ast" + "go/build" + "go/format" + "go/parser" + "go/printer" + "go/token" + "io" + "io/ioutil" + "log" + "regexp" + "strconv" + "strings" + + "golang.org/x/tools/go/ast/astutil" +) + +// Options is golang.org/x/tools/imports.Options with extra internal-only options. +type Options struct { + Env *ProcessEnv // The environment to use. Note: this contains the cached module and filesystem state. + + Fragment bool // Accept fragment of a source file (no package statement) + AllErrors bool // Report all errors (not just the first 10 on different lines) + + Comments bool // Print comments (true if nil *Options provided) + TabIndent bool // Use tabs for indent (true if nil *Options provided) + TabWidth int // Tab width (8 if nil *Options provided) + + FormatOnly bool // Disable the insertion and deletion of imports +} + +// Process implements golang.org/x/tools/imports.Process with explicit context in env. +func Process(filename string, src []byte, opt *Options) (formatted []byte, err error) { + src, opt, err = initialize(filename, src, opt) + if err != nil { + return nil, err + } + + fileSet := token.NewFileSet() + file, adjust, err := parse(fileSet, filename, src, opt) + if err != nil { + return nil, err + } + + if !opt.FormatOnly { + if err := fixImports(fileSet, file, filename, opt.Env); err != nil { + return nil, err + } + } + return formatFile(fileSet, file, src, adjust, opt) +} + +// FixImports returns a list of fixes to the imports that, when applied, +// will leave the imports in the same state as Process. +// +// Note that filename's directory influences which imports can be chosen, +// so it is important that filename be accurate. +func FixImports(filename string, src []byte, opt *Options) (fixes []*ImportFix, err error) { + src, opt, err = initialize(filename, src, opt) + if err != nil { + return nil, err + } + + fileSet := token.NewFileSet() + file, _, err := parse(fileSet, filename, src, opt) + if err != nil { + return nil, err + } + + return getFixes(fileSet, file, filename, opt.Env) +} + +// ApplyFix will apply all of the fixes to the file and format it. +func ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options) (formatted []byte, err error) { + src, opt, err = initialize(filename, src, opt) + if err != nil { + return nil, err + } + + fileSet := token.NewFileSet() + file, adjust, err := parse(fileSet, filename, src, opt) + if err != nil { + return nil, err + } + + // Apply the fixes to the file. + apply(fileSet, file, fixes) + + return formatFile(fileSet, file, src, adjust, opt) +} + +// GetAllCandidates gets all of the standard library candidate packages to import in +// sorted order on import path. +func GetAllCandidates(filename string, opt *Options) (pkgs []ImportFix, err error) { + _, opt, err = initialize(filename, []byte{}, opt) + if err != nil { + return nil, err + } + return getAllCandidates(filename, opt.Env) +} + +// initialize sets the values for opt and src. +// If they are provided, they are not changed. Otherwise opt is set to the +// default values and src is read from the file system. +func initialize(filename string, src []byte, opt *Options) ([]byte, *Options, error) { + // Use defaults if opt is nil. + if opt == nil { + opt = &Options{Comments: true, TabIndent: true, TabWidth: 8} + } + + // Set the env if the user has not provided it. + if opt.Env == nil { + opt.Env = &ProcessEnv{ + GOPATH: build.Default.GOPATH, + GOROOT: build.Default.GOROOT, + } + } + + // Set the logger if the user has not provided it. + if opt.Env.Logf == nil { + opt.Env.Logf = log.Printf + } + + if src == nil { + b, err := ioutil.ReadFile(filename) + if err != nil { + return nil, nil, err + } + src = b + } + + return src, opt, nil +} + +func formatFile(fileSet *token.FileSet, file *ast.File, src []byte, adjust func(orig []byte, src []byte) []byte, opt *Options) ([]byte, error) { + mergeImports(opt.Env, fileSet, file) + sortImports(opt.Env, fileSet, file) + imps := astutil.Imports(fileSet, file) + var spacesBefore []string // import paths we need spaces before + for _, impSection := range imps { + // Within each block of contiguous imports, see if any + // import lines are in different group numbers. If so, + // we'll need to put a space between them so it's + // compatible with gofmt. + lastGroup := -1 + for _, importSpec := range impSection { + importPath, _ := strconv.Unquote(importSpec.Path.Value) + groupNum := importGroup(opt.Env, importPath) + if groupNum != lastGroup && lastGroup != -1 { + spacesBefore = append(spacesBefore, importPath) + } + lastGroup = groupNum + } + + } + + printerMode := printer.UseSpaces + if opt.TabIndent { + printerMode |= printer.TabIndent + } + printConfig := &printer.Config{Mode: printerMode, Tabwidth: opt.TabWidth} + + var buf bytes.Buffer + err := printConfig.Fprint(&buf, fileSet, file) + if err != nil { + return nil, err + } + out := buf.Bytes() + if adjust != nil { + out = adjust(src, out) + } + if len(spacesBefore) > 0 { + out, err = addImportSpaces(bytes.NewReader(out), spacesBefore) + if err != nil { + return nil, err + } + } + + out, err = format.Source(out) + if err != nil { + return nil, err + } + return out, nil +} + +// parse parses src, which was read from filename, +// as a Go source file or statement list. +func parse(fset *token.FileSet, filename string, src []byte, opt *Options) (*ast.File, func(orig, src []byte) []byte, error) { + parserMode := parser.Mode(0) + if opt.Comments { + parserMode |= parser.ParseComments + } + if opt.AllErrors { + parserMode |= parser.AllErrors + } + + // Try as whole source file. + file, err := parser.ParseFile(fset, filename, src, parserMode) + if err == nil { + return file, nil, nil + } + // If the error is that the source file didn't begin with a + // package line and we accept fragmented input, fall through to + // try as a source fragment. Stop and return on any other error. + if !opt.Fragment || !strings.Contains(err.Error(), "expected 'package'") { + return nil, nil, err + } + + // If this is a declaration list, make it a source file + // by inserting a package clause. + // Insert using a ;, not a newline, so that parse errors are on + // the correct line. + const prefix = "package main;" + psrc := append([]byte(prefix), src...) + file, err = parser.ParseFile(fset, filename, psrc, parserMode) + if err == nil { + // Gofmt will turn the ; into a \n. + // Do that ourselves now and update the file contents, + // so that positions and line numbers are correct going forward. + psrc[len(prefix)-1] = '\n' + fset.File(file.Package).SetLinesForContent(psrc) + + // If a main function exists, we will assume this is a main + // package and leave the file. + if containsMainFunc(file) { + return file, nil, nil + } + + adjust := func(orig, src []byte) []byte { + // Remove the package clause. + src = src[len(prefix):] + return matchSpace(orig, src) + } + return file, adjust, nil + } + // If the error is that the source file didn't begin with a + // declaration, fall through to try as a statement list. + // Stop and return on any other error. + if !strings.Contains(err.Error(), "expected declaration") { + return nil, nil, err + } + + // If this is a statement list, make it a source file + // by inserting a package clause and turning the list + // into a function body. This handles expressions too. + // Insert using a ;, not a newline, so that the line numbers + // in fsrc match the ones in src. + fsrc := append(append([]byte("package p; func _() {"), src...), '}') + file, err = parser.ParseFile(fset, filename, fsrc, parserMode) + if err == nil { + adjust := func(orig, src []byte) []byte { + // Remove the wrapping. + // Gofmt has turned the ; into a \n\n. + src = src[len("package p\n\nfunc _() {"):] + src = src[:len(src)-len("}\n")] + // Gofmt has also indented the function body one level. + // Remove that indent. + src = bytes.Replace(src, []byte("\n\t"), []byte("\n"), -1) + return matchSpace(orig, src) + } + return file, adjust, nil + } + + // Failed, and out of options. + return nil, nil, err +} + +// containsMainFunc checks if a file contains a function declaration with the +// function signature 'func main()' +func containsMainFunc(file *ast.File) bool { + for _, decl := range file.Decls { + if f, ok := decl.(*ast.FuncDecl); ok { + if f.Name.Name != "main" { + continue + } + + if len(f.Type.Params.List) != 0 { + continue + } + + if f.Type.Results != nil && len(f.Type.Results.List) != 0 { + continue + } + + return true + } + } + + return false +} + +func cutSpace(b []byte) (before, middle, after []byte) { + i := 0 + for i < len(b) && (b[i] == ' ' || b[i] == '\t' || b[i] == '\n') { + i++ + } + j := len(b) + for j > 0 && (b[j-1] == ' ' || b[j-1] == '\t' || b[j-1] == '\n') { + j-- + } + if i <= j { + return b[:i], b[i:j], b[j:] + } + return nil, nil, b[j:] +} + +// matchSpace reformats src to use the same space context as orig. +// 1) If orig begins with blank lines, matchSpace inserts them at the beginning of src. +// 2) matchSpace copies the indentation of the first non-blank line in orig +// to every non-blank line in src. +// 3) matchSpace copies the trailing space from orig and uses it in place +// of src's trailing space. +func matchSpace(orig []byte, src []byte) []byte { + before, _, after := cutSpace(orig) + i := bytes.LastIndex(before, []byte{'\n'}) + before, indent := before[:i+1], before[i+1:] + + _, src, _ = cutSpace(src) + + var b bytes.Buffer + b.Write(before) + for len(src) > 0 { + line := src + if i := bytes.IndexByte(line, '\n'); i >= 0 { + line, src = line[:i+1], line[i+1:] + } else { + src = nil + } + if len(line) > 0 && line[0] != '\n' { // not blank + b.Write(indent) + } + b.Write(line) + } + b.Write(after) + return b.Bytes() +} + +var impLine = regexp.MustCompile(`^\s+(?:[\w\.]+\s+)?"(.+)"`) + +func addImportSpaces(r io.Reader, breaks []string) ([]byte, error) { + var out bytes.Buffer + in := bufio.NewReader(r) + inImports := false + done := false + for { + s, err := in.ReadString('\n') + if err == io.EOF { + break + } else if err != nil { + return nil, err + } + + if !inImports && !done && strings.HasPrefix(s, "import") { + inImports = true + } + if inImports && (strings.HasPrefix(s, "var") || + strings.HasPrefix(s, "func") || + strings.HasPrefix(s, "const") || + strings.HasPrefix(s, "type")) { + done = true + inImports = false + } + if inImports && len(breaks) > 0 { + if m := impLine.FindStringSubmatch(s); m != nil { + if m[1] == breaks[0] { + out.WriteByte('\n') + breaks = breaks[1:] + } + } + } + + fmt.Fprint(&out, s) + } + return out.Bytes(), nil +} diff --git a/vendor/golang.org/x/tools/internal/imports/mod.go b/vendor/golang.org/x/tools/internal/imports/mod.go new file mode 100644 index 00000000000..387799bdacf --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/mod.go @@ -0,0 +1,500 @@ +package imports + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "regexp" + "sort" + "strconv" + "strings" + "sync" + "time" + + "golang.org/x/tools/internal/gopathwalk" + "golang.org/x/tools/internal/module" +) + +// ModuleResolver implements resolver for modules using the go command as little +// as feasible. +type ModuleResolver struct { + env *ProcessEnv + moduleCacheDir string + + Initialized bool + Main *ModuleJSON + ModsByModPath []*ModuleJSON // All modules, ordered by # of path components in module Path... + ModsByDir []*ModuleJSON // ...or Dir. + + // moduleCacheInfo stores information about the module cache. + moduleCacheInfo *moduleCacheInfo +} + +type ModuleJSON struct { + Path string // module path + Version string // module version + Versions []string // available module versions (with -versions) + Replace *ModuleJSON // replaced by this module + Time *time.Time // time version was created + Update *ModuleJSON // available update, if any (with -u) + Main bool // is this the main module? + Indirect bool // is this module only an indirect dependency of main module? + Dir string // directory holding files for this module, if any + GoMod string // path to go.mod file for this module, if any + Error *ModuleErrorJSON // error loading module +} + +type ModuleErrorJSON struct { + Err string // the error itself +} + +func (r *ModuleResolver) init() error { + if r.Initialized { + return nil + } + stdout, err := r.env.invokeGo("list", "-m", "-json", "...") + if err != nil { + return err + } + for dec := json.NewDecoder(stdout); dec.More(); { + mod := &ModuleJSON{} + if err := dec.Decode(mod); err != nil { + return err + } + if mod.Dir == "" { + if r.env.Debug { + r.env.Logf("module %v has not been downloaded and will be ignored", mod.Path) + } + // Can't do anything with a module that's not downloaded. + continue + } + r.ModsByModPath = append(r.ModsByModPath, mod) + r.ModsByDir = append(r.ModsByDir, mod) + if mod.Main { + r.Main = mod + } + } + + sort.Slice(r.ModsByModPath, func(i, j int) bool { + count := func(x int) int { + return strings.Count(r.ModsByModPath[x].Path, "/") + } + return count(j) < count(i) // descending order + }) + sort.Slice(r.ModsByDir, func(i, j int) bool { + count := func(x int) int { + return strings.Count(r.ModsByDir[x].Dir, "/") + } + return count(j) < count(i) // descending order + }) + + if r.moduleCacheInfo == nil { + r.moduleCacheInfo = &moduleCacheInfo{ + modCacheDirInfo: make(map[string]*directoryPackageInfo), + } + } + + r.Initialized = true + return nil +} + +// findPackage returns the module and directory that contains the package at +// the given import path, or returns nil, "" if no module is in scope. +func (r *ModuleResolver) findPackage(importPath string) (*ModuleJSON, string) { + // This can't find packages in the stdlib, but that's harmless for all + // the existing code paths. + for _, m := range r.ModsByModPath { + if !strings.HasPrefix(importPath, m.Path) { + continue + } + pathInModule := importPath[len(m.Path):] + pkgDir := filepath.Join(m.Dir, pathInModule) + if r.dirIsNestedModule(pkgDir, m) { + continue + } + + if info, ok := r.moduleCacheInfo.Load(pkgDir); ok { + if packageScanned, err := info.reachedStatus(directoryScanned); packageScanned { + if err != nil { + // There was some error with scanning this directory. + // It does not contain a valid package. + continue + } + return m, pkgDir + } + } + + pkgFiles, err := ioutil.ReadDir(pkgDir) + if err != nil { + continue + } + + // A module only contains a package if it has buildable go + // files in that directory. If not, it could be provided by an + // outer module. See #29736. + for _, fi := range pkgFiles { + if ok, _ := r.env.buildContext().MatchFile(pkgDir, fi.Name()); ok { + return m, pkgDir + } + } + } + return nil, "" +} + +// findModuleByDir returns the module that contains dir, or nil if no such +// module is in scope. +func (r *ModuleResolver) findModuleByDir(dir string) *ModuleJSON { + // This is quite tricky and may not be correct. dir could be: + // - a package in the main module. + // - a replace target underneath the main module's directory. + // - a nested module in the above. + // - a replace target somewhere totally random. + // - a nested module in the above. + // - in the mod cache. + // - in /vendor/ in -mod=vendor mode. + // - nested module? Dunno. + // Rumor has it that replace targets cannot contain other replace targets. + for _, m := range r.ModsByDir { + if !strings.HasPrefix(dir, m.Dir) { + continue + } + + if r.dirIsNestedModule(dir, m) { + continue + } + + return m + } + return nil +} + +// dirIsNestedModule reports if dir is contained in a nested module underneath +// mod, not actually in mod. +func (r *ModuleResolver) dirIsNestedModule(dir string, mod *ModuleJSON) bool { + if !strings.HasPrefix(dir, mod.Dir) { + return false + } + if r.dirInModuleCache(dir) { + // Nested modules in the module cache are pruned, + // so it cannot be a nested module. + return false + } + mf := r.findModFile(dir) + if mf == "" { + return false + } + return filepath.Dir(mf) != mod.Dir +} + +func (r *ModuleResolver) findModFile(dir string) string { + if r.dirInModuleCache(dir) { + matches := modCacheRegexp.FindStringSubmatch(dir) + index := strings.Index(dir, matches[1]+"@"+matches[2]) + return filepath.Join(dir[:index], matches[1]+"@"+matches[2], "go.mod") + } + for { + f := filepath.Join(dir, "go.mod") + info, err := os.Stat(f) + if err == nil && !info.IsDir() { + return f + } + d := filepath.Dir(dir) + if len(d) >= len(dir) { + return "" // reached top of file system, no go.mod + } + dir = d + } +} + +func (r *ModuleResolver) dirInModuleCache(dir string) bool { + if r.moduleCacheDir == "" { + return false + } + return strings.HasPrefix(dir, r.moduleCacheDir) +} + +func (r *ModuleResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) { + if err := r.init(); err != nil { + return nil, err + } + names := map[string]string{} + for _, path := range importPaths { + _, packageDir := r.findPackage(path) + if packageDir == "" { + continue + } + name, err := packageDirToName(packageDir) + if err != nil { + continue + } + names[path] = name + } + return names, nil +} + +func (r *ModuleResolver) scan(_ references) ([]*pkg, error) { + if err := r.init(); err != nil { + return nil, err + } + + // Walk GOROOT, GOPATH/pkg/mod, and the main module. + roots := []gopathwalk.Root{ + {filepath.Join(r.env.GOROOT, "/src"), gopathwalk.RootGOROOT}, + } + if r.Main != nil { + roots = append(roots, gopathwalk.Root{r.Main.Dir, gopathwalk.RootCurrentModule}) + } + if r.moduleCacheDir == "" { + r.moduleCacheDir = filepath.Join(filepath.SplitList(r.env.GOPATH)[0], "/pkg/mod") + } + roots = append(roots, gopathwalk.Root{r.moduleCacheDir, gopathwalk.RootModuleCache}) + + // Walk replace targets, just in case they're not in any of the above. + for _, mod := range r.ModsByModPath { + if mod.Replace != nil { + roots = append(roots, gopathwalk.Root{mod.Dir, gopathwalk.RootOther}) + } + } + + var result []*pkg + dupCheck := make(map[string]bool) + var mu sync.Mutex + + // Packages in the module cache are immutable. If we have + // already seen this package on a previous scan of the module + // cache, return that result. + skip := func(root gopathwalk.Root, dir string) bool { + mu.Lock() + defer mu.Unlock() + // If we have already processed this directory on this walk, skip it. + if _, dup := dupCheck[dir]; dup { + return true + } + + // If we have saved this directory information, skip it. + info, ok := r.moduleCacheInfo.Load(dir) + if !ok { + return false + } + // This directory can be skipped as long as we have already scanned it. + // Packages with errors will continue to have errors, so there is no need + // to rescan them. + packageScanned, _ := info.reachedStatus(directoryScanned) + return packageScanned + } + + add := func(root gopathwalk.Root, dir string) { + mu.Lock() + defer mu.Unlock() + if _, dup := dupCheck[dir]; dup { + return + } + + info, err := r.scanDirForPackage(root, dir) + if err != nil { + return + } + if root.Type == gopathwalk.RootModuleCache { + // Save this package information in the cache and return. + // Packages from the module cache are added after Walk. + r.moduleCacheInfo.Store(dir, info) + return + } + + // Skip this package if there was an error loading package info. + if info.err != nil { + return + } + + // The rest of this function canonicalizes the packages using the results + // of initializing the resolver from 'go list -m'. + res, err := r.canonicalize(root.Type, info.nonCanonicalImportPath, info.dir, info.needsReplace) + if err != nil { + return + } + + result = append(result, res) + } + + gopathwalk.WalkSkip(roots, add, skip, gopathwalk.Options{Debug: r.env.Debug, ModulesEnabled: true}) + + // Add the packages from the modules in the mod cache that were skipped. + for _, dir := range r.moduleCacheInfo.Keys() { + info, ok := r.moduleCacheInfo.Load(dir) + if !ok { + continue + } + + // Skip this directory if we were not able to get the package information successfully. + if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil { + continue + } + + res, err := r.canonicalize(gopathwalk.RootModuleCache, info.nonCanonicalImportPath, info.dir, info.needsReplace) + if err != nil { + continue + } + result = append(result, res) + } + + return result, nil +} + +// canonicalize gets the result of canonicalizing the packages using the results +// of initializing the resolver from 'go list -m'. +func (r *ModuleResolver) canonicalize(rootType gopathwalk.RootType, importPath, dir string, needsReplace bool) (res *pkg, err error) { + // Packages in GOROOT are already canonical, regardless of the std/cmd modules. + if rootType == gopathwalk.RootGOROOT { + return &pkg{ + importPathShort: importPath, + dir: dir, + }, nil + } + + // Check if the directory is underneath a module that's in scope. + if mod := r.findModuleByDir(dir); mod != nil { + // It is. If dir is the target of a replace directive, + // our guessed import path is wrong. Use the real one. + if mod.Dir == dir { + importPath = mod.Path + } else { + dirInMod := dir[len(mod.Dir)+len("/"):] + importPath = path.Join(mod.Path, filepath.ToSlash(dirInMod)) + } + } else if needsReplace { + return nil, fmt.Errorf("needed this package to be in scope: %s", dir) + } + + // We may have discovered a package that has a different version + // in scope already. Canonicalize to that one if possible. + if _, canonicalDir := r.findPackage(importPath); canonicalDir != "" { + dir = canonicalDir + } + return &pkg{ + importPathShort: VendorlessPath(importPath), + dir: dir, + }, nil +} + +func (r *ModuleResolver) loadExports(ctx context.Context, expectPackage string, pkg *pkg) (map[string]bool, error) { + if err := r.init(); err != nil { + return nil, err + } + return loadExportsFromFiles(ctx, r.env, expectPackage, pkg.dir) +} + +func (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) (directoryPackageInfo, error) { + subdir := "" + if dir != root.Path { + subdir = dir[len(root.Path)+len("/"):] + } + importPath := filepath.ToSlash(subdir) + if strings.HasPrefix(importPath, "vendor/") { + // Ignore vendor dirs. If -mod=vendor is on, then things + // should mostly just work, but when it's not vendor/ + // is a mess. There's no easy way to tell if it's on. + // We can still find things in the mod cache and + // map them into /vendor when -mod=vendor is on. + return directoryPackageInfo{}, fmt.Errorf("vendor directory") + } + switch root.Type { + case gopathwalk.RootCurrentModule: + importPath = path.Join(r.Main.Path, filepath.ToSlash(subdir)) + case gopathwalk.RootModuleCache: + matches := modCacheRegexp.FindStringSubmatch(subdir) + if len(matches) == 0 { + return directoryPackageInfo{ + status: directoryScanned, + err: fmt.Errorf("invalid module cache path: %v", subdir), + }, nil + } + modPath, err := module.DecodePath(filepath.ToSlash(matches[1])) + if err != nil { + if r.env.Debug { + r.env.Logf("decoding module cache path %q: %v", subdir, err) + } + return directoryPackageInfo{ + status: directoryScanned, + err: fmt.Errorf("decoding module cache path %q: %v", subdir, err), + }, nil + } + importPath = path.Join(modPath, filepath.ToSlash(matches[3])) + case gopathwalk.RootGOROOT: + importPath = subdir + } + + result := directoryPackageInfo{ + status: directoryScanned, + dir: dir, + nonCanonicalImportPath: importPath, + needsReplace: false, + } + if root.Type == gopathwalk.RootGOROOT { + // stdlib packages are always in scope, despite the confusing go.mod + return result, nil + } + // Check that this package is not obviously impossible to import. + modFile := r.findModFile(dir) + + modBytes, err := ioutil.ReadFile(modFile) + if err == nil && !strings.HasPrefix(importPath, modulePath(modBytes)) { + // The module's declared path does not match + // its expected path. It probably needs a + // replace directive we don't have. + result.needsReplace = true + } + + return result, nil +} + +// modCacheRegexp splits a path in a module cache into module, module version, and package. +var modCacheRegexp = regexp.MustCompile(`(.*)@([^/\\]*)(.*)`) + +var ( + slashSlash = []byte("//") + moduleStr = []byte("module") +) + +// modulePath returns the module path from the gomod file text. +// If it cannot find a module path, it returns an empty string. +// It is tolerant of unrelated problems in the go.mod file. +// +// Copied from cmd/go/internal/modfile. +func modulePath(mod []byte) string { + for len(mod) > 0 { + line := mod + mod = nil + if i := bytes.IndexByte(line, '\n'); i >= 0 { + line, mod = line[:i], line[i+1:] + } + if i := bytes.Index(line, slashSlash); i >= 0 { + line = line[:i] + } + line = bytes.TrimSpace(line) + if !bytes.HasPrefix(line, moduleStr) { + continue + } + line = line[len(moduleStr):] + n := len(line) + line = bytes.TrimSpace(line) + if len(line) == n || len(line) == 0 { + continue + } + + if line[0] == '"' || line[0] == '`' { + p, err := strconv.Unquote(string(line)) + if err != nil { + return "" // malformed quoted string or multiline module path + } + return p + } + + return string(line) + } + return "" // missing module path +} diff --git a/vendor/golang.org/x/tools/internal/imports/mod_cache.go b/vendor/golang.org/x/tools/internal/imports/mod_cache.go new file mode 100644 index 00000000000..f96b92d0099 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/mod_cache.go @@ -0,0 +1,121 @@ +package imports + +import ( + "sync" +) + +// ModuleResolver implements Resolver for modules using the go command as little +// as feasible. +// +// To find packages to import, the resolver needs to know about all of the +// the packages that could be imported. This includes packages that are +// already in modules that are in (1) the current module, (2) replace targets, +// and (3) packages in the module cache. Packages in (1) and (2) may change over +// time, as the client may edit the current module and locally replaced modules. +// The module cache (which includes all of the packages in (3)) can only +// ever be added to. +// +// The resolver can thus save state about packages in the module cache +// and guarantee that this will not change over time. To obtain information +// about new modules added to the module cache, the module cache should be +// rescanned. +// +// It is OK to serve information about modules that have been deleted, +// as they do still exist. +// TODO(suzmue): can we share information with the caller about +// what module needs to be downloaded to import this package? + +type directoryPackageStatus int + +const ( + _ directoryPackageStatus = iota + directoryScanned +) + +type directoryPackageInfo struct { + // status indicates the extent to which this struct has been filled in. + status directoryPackageStatus + // err is non-nil when there was an error trying to reach status. + err error + + // Set when status > directoryScanned. + + // dir is the absolute directory of this package. + dir string + // nonCanonicalImportPath is the expected import path for this package. + // This may not be an import path that can be used to import this package. + nonCanonicalImportPath string + // needsReplace is true if the nonCanonicalImportPath does not match the + // the modules declared path, making it impossible to import without a + // replace directive. + needsReplace bool +} + +// reachedStatus returns true when info has a status at least target and any error associated with +// an attempt to reach target. +func (info *directoryPackageInfo) reachedStatus(target directoryPackageStatus) (bool, error) { + if info.err == nil { + return info.status >= target, nil + } + if info.status == target { + return true, info.err + } + return true, nil +} + +// moduleCacheInfo is a concurrency safe map for storing information about +// the directories in the module cache. +// +// The information in this cache is built incrementally. Entries are initialized in scan. +// No new keys should be added in any other functions, as all directories containing +// packages are identified in scan. +// +// Other functions, including loadExports and findPackage, may update entries in this cache +// as they discover new things about the directory. +// +// We do not need to protect the data in the cache for multiple writes, because it only stores +// module cache directories, which do not change. If two competing stores take place, there will be +// one store that wins. Although this could result in a loss of information it will not be incorrect +// and may just result in recomputing the same result later. +// +// TODO(suzmue): consider other concurrency strategies and data structures (RWLocks, sync.Map, etc) +type moduleCacheInfo struct { + mu sync.Mutex + // modCacheDirInfo stores information about packages in + // module cache directories. Keyed by absolute directory. + modCacheDirInfo map[string]*directoryPackageInfo +} + +// Store stores the package info for dir. +func (d *moduleCacheInfo) Store(dir string, info directoryPackageInfo) { + d.mu.Lock() + defer d.mu.Unlock() + d.modCacheDirInfo[dir] = &directoryPackageInfo{ + status: info.status, + err: info.err, + dir: info.dir, + nonCanonicalImportPath: info.nonCanonicalImportPath, + needsReplace: info.needsReplace, + } +} + +// Load returns a copy of the directoryPackageInfo for absolute directory dir. +func (d *moduleCacheInfo) Load(dir string) (directoryPackageInfo, bool) { + d.mu.Lock() + defer d.mu.Unlock() + info, ok := d.modCacheDirInfo[dir] + if !ok { + return directoryPackageInfo{}, false + } + return *info, true +} + +// Keys returns the keys currently present in d. +func (d *moduleCacheInfo) Keys() (keys []string) { + d.mu.Lock() + defer d.mu.Unlock() + for key := range d.modCacheDirInfo { + keys = append(keys, key) + } + return keys +} diff --git a/vendor/golang.org/x/tools/internal/imports/sortimports.go b/vendor/golang.org/x/tools/internal/imports/sortimports.go new file mode 100644 index 00000000000..226279471d3 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/sortimports.go @@ -0,0 +1,280 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Hacked up copy of go/ast/import.go + +package imports + +import ( + "go/ast" + "go/token" + "sort" + "strconv" +) + +// sortImports sorts runs of consecutive import lines in import blocks in f. +// It also removes duplicate imports when it is possible to do so without data loss. +func sortImports(env *ProcessEnv, fset *token.FileSet, f *ast.File) { + for i, d := range f.Decls { + d, ok := d.(*ast.GenDecl) + if !ok || d.Tok != token.IMPORT { + // Not an import declaration, so we're done. + // Imports are always first. + break + } + + if len(d.Specs) == 0 { + // Empty import block, remove it. + f.Decls = append(f.Decls[:i], f.Decls[i+1:]...) + } + + if !d.Lparen.IsValid() { + // Not a block: sorted by default. + continue + } + + // Identify and sort runs of specs on successive lines. + i := 0 + specs := d.Specs[:0] + for j, s := range d.Specs { + if j > i && fset.Position(s.Pos()).Line > 1+fset.Position(d.Specs[j-1].End()).Line { + // j begins a new run. End this one. + specs = append(specs, sortSpecs(env, fset, f, d.Specs[i:j])...) + i = j + } + } + specs = append(specs, sortSpecs(env, fset, f, d.Specs[i:])...) + d.Specs = specs + + // Deduping can leave a blank line before the rparen; clean that up. + if len(d.Specs) > 0 { + lastSpec := d.Specs[len(d.Specs)-1] + lastLine := fset.Position(lastSpec.Pos()).Line + if rParenLine := fset.Position(d.Rparen).Line; rParenLine > lastLine+1 { + fset.File(d.Rparen).MergeLine(rParenLine - 1) + } + } + } +} + +// mergeImports merges all the import declarations into the first one. +// Taken from golang.org/x/tools/ast/astutil. +func mergeImports(env *ProcessEnv, fset *token.FileSet, f *ast.File) { + if len(f.Decls) <= 1 { + return + } + + // Merge all the import declarations into the first one. + var first *ast.GenDecl + for i := 0; i < len(f.Decls); i++ { + decl := f.Decls[i] + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.IMPORT || declImports(gen, "C") { + continue + } + if first == nil { + first = gen + continue // Don't touch the first one. + } + // We now know there is more than one package in this import + // declaration. Ensure that it ends up parenthesized. + first.Lparen = first.Pos() + // Move the imports of the other import declaration to the first one. + for _, spec := range gen.Specs { + spec.(*ast.ImportSpec).Path.ValuePos = first.Pos() + first.Specs = append(first.Specs, spec) + } + f.Decls = append(f.Decls[:i], f.Decls[i+1:]...) + i-- + } +} + +// declImports reports whether gen contains an import of path. +// Taken from golang.org/x/tools/ast/astutil. +func declImports(gen *ast.GenDecl, path string) bool { + if gen.Tok != token.IMPORT { + return false + } + for _, spec := range gen.Specs { + impspec := spec.(*ast.ImportSpec) + if importPath(impspec) == path { + return true + } + } + return false +} + +func importPath(s ast.Spec) string { + t, err := strconv.Unquote(s.(*ast.ImportSpec).Path.Value) + if err == nil { + return t + } + return "" +} + +func importName(s ast.Spec) string { + n := s.(*ast.ImportSpec).Name + if n == nil { + return "" + } + return n.Name +} + +func importComment(s ast.Spec) string { + c := s.(*ast.ImportSpec).Comment + if c == nil { + return "" + } + return c.Text() +} + +// collapse indicates whether prev may be removed, leaving only next. +func collapse(prev, next ast.Spec) bool { + if importPath(next) != importPath(prev) || importName(next) != importName(prev) { + return false + } + return prev.(*ast.ImportSpec).Comment == nil +} + +type posSpan struct { + Start token.Pos + End token.Pos +} + +func sortSpecs(env *ProcessEnv, fset *token.FileSet, f *ast.File, specs []ast.Spec) []ast.Spec { + // Can't short-circuit here even if specs are already sorted, + // since they might yet need deduplication. + // A lone import, however, may be safely ignored. + if len(specs) <= 1 { + return specs + } + + // Record positions for specs. + pos := make([]posSpan, len(specs)) + for i, s := range specs { + pos[i] = posSpan{s.Pos(), s.End()} + } + + // Identify comments in this range. + // Any comment from pos[0].Start to the final line counts. + lastLine := fset.Position(pos[len(pos)-1].End).Line + cstart := len(f.Comments) + cend := len(f.Comments) + for i, g := range f.Comments { + if g.Pos() < pos[0].Start { + continue + } + if i < cstart { + cstart = i + } + if fset.Position(g.End()).Line > lastLine { + cend = i + break + } + } + comments := f.Comments[cstart:cend] + + // Assign each comment to the import spec preceding it. + importComment := map[*ast.ImportSpec][]*ast.CommentGroup{} + specIndex := 0 + for _, g := range comments { + for specIndex+1 < len(specs) && pos[specIndex+1].Start <= g.Pos() { + specIndex++ + } + s := specs[specIndex].(*ast.ImportSpec) + importComment[s] = append(importComment[s], g) + } + + // Sort the import specs by import path. + // Remove duplicates, when possible without data loss. + // Reassign the import paths to have the same position sequence. + // Reassign each comment to abut the end of its spec. + // Sort the comments by new position. + sort.Sort(byImportSpec{env, specs}) + + // Dedup. Thanks to our sorting, we can just consider + // adjacent pairs of imports. + deduped := specs[:0] + for i, s := range specs { + if i == len(specs)-1 || !collapse(s, specs[i+1]) { + deduped = append(deduped, s) + } else { + p := s.Pos() + fset.File(p).MergeLine(fset.Position(p).Line) + } + } + specs = deduped + + // Fix up comment positions + for i, s := range specs { + s := s.(*ast.ImportSpec) + if s.Name != nil { + s.Name.NamePos = pos[i].Start + } + s.Path.ValuePos = pos[i].Start + s.EndPos = pos[i].End + nextSpecPos := pos[i].End + + for _, g := range importComment[s] { + for _, c := range g.List { + c.Slash = pos[i].End + nextSpecPos = c.End() + } + } + if i < len(specs)-1 { + pos[i+1].Start = nextSpecPos + pos[i+1].End = nextSpecPos + } + } + + sort.Sort(byCommentPos(comments)) + + // Fixup comments can insert blank lines, because import specs are on different lines. + // We remove those blank lines here by merging import spec to the first import spec line. + firstSpecLine := fset.Position(specs[0].Pos()).Line + for _, s := range specs[1:] { + p := s.Pos() + line := fset.File(p).Line(p) + for previousLine := line - 1; previousLine >= firstSpecLine; { + fset.File(p).MergeLine(previousLine) + previousLine-- + } + } + return specs +} + +type byImportSpec struct { + env *ProcessEnv + specs []ast.Spec // slice of *ast.ImportSpec +} + +func (x byImportSpec) Len() int { return len(x.specs) } +func (x byImportSpec) Swap(i, j int) { x.specs[i], x.specs[j] = x.specs[j], x.specs[i] } +func (x byImportSpec) Less(i, j int) bool { + ipath := importPath(x.specs[i]) + jpath := importPath(x.specs[j]) + + igroup := importGroup(x.env, ipath) + jgroup := importGroup(x.env, jpath) + if igroup != jgroup { + return igroup < jgroup + } + + if ipath != jpath { + return ipath < jpath + } + iname := importName(x.specs[i]) + jname := importName(x.specs[j]) + + if iname != jname { + return iname < jname + } + return importComment(x.specs[i]) < importComment(x.specs[j]) +} + +type byCommentPos []*ast.CommentGroup + +func (x byCommentPos) Len() int { return len(x) } +func (x byCommentPos) Swap(i, j int) { x[i], x[j] = x[j], x[i] } +func (x byCommentPos) Less(i, j int) bool { return x[i].Pos() < x[j].Pos() } diff --git a/vendor/golang.org/x/tools/internal/imports/zstdlib.go b/vendor/golang.org/x/tools/internal/imports/zstdlib.go new file mode 100644 index 00000000000..544339e53b2 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/imports/zstdlib.go @@ -0,0 +1,10377 @@ +// Code generated by mkstdlib.go. DO NOT EDIT. + +package imports + +var stdlib = map[string]map[string]bool{ + "archive/tar": map[string]bool{ + "ErrFieldTooLong": true, + "ErrHeader": true, + "ErrWriteAfterClose": true, + "ErrWriteTooLong": true, + "FileInfoHeader": true, + "Format": true, + "FormatGNU": true, + "FormatPAX": true, + "FormatUSTAR": true, + "FormatUnknown": true, + "Header": true, + "NewReader": true, + "NewWriter": true, + "Reader": true, + "TypeBlock": true, + "TypeChar": true, + "TypeCont": true, + "TypeDir": true, + "TypeFifo": true, + "TypeGNULongLink": true, + "TypeGNULongName": true, + "TypeGNUSparse": true, + "TypeLink": true, + "TypeReg": true, + "TypeRegA": true, + "TypeSymlink": true, + "TypeXGlobalHeader": true, + "TypeXHeader": true, + "Writer": true, + }, + "archive/zip": map[string]bool{ + "Compressor": true, + "Decompressor": true, + "Deflate": true, + "ErrAlgorithm": true, + "ErrChecksum": true, + "ErrFormat": true, + "File": true, + "FileHeader": true, + "FileInfoHeader": true, + "NewReader": true, + "NewWriter": true, + "OpenReader": true, + "ReadCloser": true, + "Reader": true, + "RegisterCompressor": true, + "RegisterDecompressor": true, + "Store": true, + "Writer": true, + }, + "bufio": map[string]bool{ + "ErrAdvanceTooFar": true, + "ErrBufferFull": true, + "ErrFinalToken": true, + "ErrInvalidUnreadByte": true, + "ErrInvalidUnreadRune": true, + "ErrNegativeAdvance": true, + "ErrNegativeCount": true, + "ErrTooLong": true, + "MaxScanTokenSize": true, + "NewReadWriter": true, + "NewReader": true, + "NewReaderSize": true, + "NewScanner": true, + "NewWriter": true, + "NewWriterSize": true, + "ReadWriter": true, + "Reader": true, + "ScanBytes": true, + "ScanLines": true, + "ScanRunes": true, + "ScanWords": true, + "Scanner": true, + "SplitFunc": true, + "Writer": true, + }, + "bytes": map[string]bool{ + "Buffer": true, + "Compare": true, + "Contains": true, + "ContainsAny": true, + "ContainsRune": true, + "Count": true, + "Equal": true, + "EqualFold": true, + "ErrTooLarge": true, + "Fields": true, + "FieldsFunc": true, + "HasPrefix": true, + "HasSuffix": true, + "Index": true, + "IndexAny": true, + "IndexByte": true, + "IndexFunc": true, + "IndexRune": true, + "Join": true, + "LastIndex": true, + "LastIndexAny": true, + "LastIndexByte": true, + "LastIndexFunc": true, + "Map": true, + "MinRead": true, + "NewBuffer": true, + "NewBufferString": true, + "NewReader": true, + "Reader": true, + "Repeat": true, + "Replace": true, + "ReplaceAll": true, + "Runes": true, + "Split": true, + "SplitAfter": true, + "SplitAfterN": true, + "SplitN": true, + "Title": true, + "ToLower": true, + "ToLowerSpecial": true, + "ToTitle": true, + "ToTitleSpecial": true, + "ToUpper": true, + "ToUpperSpecial": true, + "ToValidUTF8": true, + "Trim": true, + "TrimFunc": true, + "TrimLeft": true, + "TrimLeftFunc": true, + "TrimPrefix": true, + "TrimRight": true, + "TrimRightFunc": true, + "TrimSpace": true, + "TrimSuffix": true, + }, + "compress/bzip2": map[string]bool{ + "NewReader": true, + "StructuralError": true, + }, + "compress/flate": map[string]bool{ + "BestCompression": true, + "BestSpeed": true, + "CorruptInputError": true, + "DefaultCompression": true, + "HuffmanOnly": true, + "InternalError": true, + "NewReader": true, + "NewReaderDict": true, + "NewWriter": true, + "NewWriterDict": true, + "NoCompression": true, + "ReadError": true, + "Reader": true, + "Resetter": true, + "WriteError": true, + "Writer": true, + }, + "compress/gzip": map[string]bool{ + "BestCompression": true, + "BestSpeed": true, + "DefaultCompression": true, + "ErrChecksum": true, + "ErrHeader": true, + "Header": true, + "HuffmanOnly": true, + "NewReader": true, + "NewWriter": true, + "NewWriterLevel": true, + "NoCompression": true, + "Reader": true, + "Writer": true, + }, + "compress/lzw": map[string]bool{ + "LSB": true, + "MSB": true, + "NewReader": true, + "NewWriter": true, + "Order": true, + }, + "compress/zlib": map[string]bool{ + "BestCompression": true, + "BestSpeed": true, + "DefaultCompression": true, + "ErrChecksum": true, + "ErrDictionary": true, + "ErrHeader": true, + "HuffmanOnly": true, + "NewReader": true, + "NewReaderDict": true, + "NewWriter": true, + "NewWriterLevel": true, + "NewWriterLevelDict": true, + "NoCompression": true, + "Resetter": true, + "Writer": true, + }, + "container/heap": map[string]bool{ + "Fix": true, + "Init": true, + "Interface": true, + "Pop": true, + "Push": true, + "Remove": true, + }, + "container/list": map[string]bool{ + "Element": true, + "List": true, + "New": true, + }, + "container/ring": map[string]bool{ + "New": true, + "Ring": true, + }, + "context": map[string]bool{ + "Background": true, + "CancelFunc": true, + "Canceled": true, + "Context": true, + "DeadlineExceeded": true, + "TODO": true, + "WithCancel": true, + "WithDeadline": true, + "WithTimeout": true, + "WithValue": true, + }, + "crypto": map[string]bool{ + "BLAKE2b_256": true, + "BLAKE2b_384": true, + "BLAKE2b_512": true, + "BLAKE2s_256": true, + "Decrypter": true, + "DecrypterOpts": true, + "Hash": true, + "MD4": true, + "MD5": true, + "MD5SHA1": true, + "PrivateKey": true, + "PublicKey": true, + "RIPEMD160": true, + "RegisterHash": true, + "SHA1": true, + "SHA224": true, + "SHA256": true, + "SHA384": true, + "SHA3_224": true, + "SHA3_256": true, + "SHA3_384": true, + "SHA3_512": true, + "SHA512": true, + "SHA512_224": true, + "SHA512_256": true, + "Signer": true, + "SignerOpts": true, + }, + "crypto/aes": map[string]bool{ + "BlockSize": true, + "KeySizeError": true, + "NewCipher": true, + }, + "crypto/cipher": map[string]bool{ + "AEAD": true, + "Block": true, + "BlockMode": true, + "NewCBCDecrypter": true, + "NewCBCEncrypter": true, + "NewCFBDecrypter": true, + "NewCFBEncrypter": true, + "NewCTR": true, + "NewGCM": true, + "NewGCMWithNonceSize": true, + "NewGCMWithTagSize": true, + "NewOFB": true, + "Stream": true, + "StreamReader": true, + "StreamWriter": true, + }, + "crypto/des": map[string]bool{ + "BlockSize": true, + "KeySizeError": true, + "NewCipher": true, + "NewTripleDESCipher": true, + }, + "crypto/dsa": map[string]bool{ + "ErrInvalidPublicKey": true, + "GenerateKey": true, + "GenerateParameters": true, + "L1024N160": true, + "L2048N224": true, + "L2048N256": true, + "L3072N256": true, + "ParameterSizes": true, + "Parameters": true, + "PrivateKey": true, + "PublicKey": true, + "Sign": true, + "Verify": true, + }, + "crypto/ecdsa": map[string]bool{ + "GenerateKey": true, + "PrivateKey": true, + "PublicKey": true, + "Sign": true, + "Verify": true, + }, + "crypto/ed25519": map[string]bool{ + "GenerateKey": true, + "NewKeyFromSeed": true, + "PrivateKey": true, + "PrivateKeySize": true, + "PublicKey": true, + "PublicKeySize": true, + "SeedSize": true, + "Sign": true, + "SignatureSize": true, + "Verify": true, + }, + "crypto/elliptic": map[string]bool{ + "Curve": true, + "CurveParams": true, + "GenerateKey": true, + "Marshal": true, + "P224": true, + "P256": true, + "P384": true, + "P521": true, + "Unmarshal": true, + }, + "crypto/hmac": map[string]bool{ + "Equal": true, + "New": true, + }, + "crypto/md5": map[string]bool{ + "BlockSize": true, + "New": true, + "Size": true, + "Sum": true, + }, + "crypto/rand": map[string]bool{ + "Int": true, + "Prime": true, + "Read": true, + "Reader": true, + }, + "crypto/rc4": map[string]bool{ + "Cipher": true, + "KeySizeError": true, + "NewCipher": true, + }, + "crypto/rsa": map[string]bool{ + "CRTValue": true, + "DecryptOAEP": true, + "DecryptPKCS1v15": true, + "DecryptPKCS1v15SessionKey": true, + "EncryptOAEP": true, + "EncryptPKCS1v15": true, + "ErrDecryption": true, + "ErrMessageTooLong": true, + "ErrVerification": true, + "GenerateKey": true, + "GenerateMultiPrimeKey": true, + "OAEPOptions": true, + "PKCS1v15DecryptOptions": true, + "PSSOptions": true, + "PSSSaltLengthAuto": true, + "PSSSaltLengthEqualsHash": true, + "PrecomputedValues": true, + "PrivateKey": true, + "PublicKey": true, + "SignPKCS1v15": true, + "SignPSS": true, + "VerifyPKCS1v15": true, + "VerifyPSS": true, + }, + "crypto/sha1": map[string]bool{ + "BlockSize": true, + "New": true, + "Size": true, + "Sum": true, + }, + "crypto/sha256": map[string]bool{ + "BlockSize": true, + "New": true, + "New224": true, + "Size": true, + "Size224": true, + "Sum224": true, + "Sum256": true, + }, + "crypto/sha512": map[string]bool{ + "BlockSize": true, + "New": true, + "New384": true, + "New512_224": true, + "New512_256": true, + "Size": true, + "Size224": true, + "Size256": true, + "Size384": true, + "Sum384": true, + "Sum512": true, + "Sum512_224": true, + "Sum512_256": true, + }, + "crypto/subtle": map[string]bool{ + "ConstantTimeByteEq": true, + "ConstantTimeCompare": true, + "ConstantTimeCopy": true, + "ConstantTimeEq": true, + "ConstantTimeLessOrEq": true, + "ConstantTimeSelect": true, + }, + "crypto/tls": map[string]bool{ + "Certificate": true, + "CertificateRequestInfo": true, + "Client": true, + "ClientAuthType": true, + "ClientHelloInfo": true, + "ClientSessionCache": true, + "ClientSessionState": true, + "Config": true, + "Conn": true, + "ConnectionState": true, + "CurveID": true, + "CurveP256": true, + "CurveP384": true, + "CurveP521": true, + "Dial": true, + "DialWithDialer": true, + "ECDSAWithP256AndSHA256": true, + "ECDSAWithP384AndSHA384": true, + "ECDSAWithP521AndSHA512": true, + "ECDSAWithSHA1": true, + "Ed25519": true, + "Listen": true, + "LoadX509KeyPair": true, + "NewLRUClientSessionCache": true, + "NewListener": true, + "NoClientCert": true, + "PKCS1WithSHA1": true, + "PKCS1WithSHA256": true, + "PKCS1WithSHA384": true, + "PKCS1WithSHA512": true, + "PSSWithSHA256": true, + "PSSWithSHA384": true, + "PSSWithSHA512": true, + "RecordHeaderError": true, + "RenegotiateFreelyAsClient": true, + "RenegotiateNever": true, + "RenegotiateOnceAsClient": true, + "RenegotiationSupport": true, + "RequestClientCert": true, + "RequireAndVerifyClientCert": true, + "RequireAnyClientCert": true, + "Server": true, + "SignatureScheme": true, + "TLS_AES_128_GCM_SHA256": true, + "TLS_AES_256_GCM_SHA384": true, + "TLS_CHACHA20_POLY1305_SHA256": true, + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": true, + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256": true, + "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": true, + "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": true, + "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": true, + "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305": true, + "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA": true, + "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": true, + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": true, + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256": true, + "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": true, + "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": true, + "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": true, + "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305": true, + "TLS_ECDHE_RSA_WITH_RC4_128_SHA": true, + "TLS_FALLBACK_SCSV": true, + "TLS_RSA_WITH_3DES_EDE_CBC_SHA": true, + "TLS_RSA_WITH_AES_128_CBC_SHA": true, + "TLS_RSA_WITH_AES_128_CBC_SHA256": true, + "TLS_RSA_WITH_AES_128_GCM_SHA256": true, + "TLS_RSA_WITH_AES_256_CBC_SHA": true, + "TLS_RSA_WITH_AES_256_GCM_SHA384": true, + "TLS_RSA_WITH_RC4_128_SHA": true, + "VerifyClientCertIfGiven": true, + "VersionSSL30": true, + "VersionTLS10": true, + "VersionTLS11": true, + "VersionTLS12": true, + "VersionTLS13": true, + "X25519": true, + "X509KeyPair": true, + }, + "crypto/x509": map[string]bool{ + "CANotAuthorizedForExtKeyUsage": true, + "CANotAuthorizedForThisName": true, + "CertPool": true, + "Certificate": true, + "CertificateInvalidError": true, + "CertificateRequest": true, + "ConstraintViolationError": true, + "CreateCertificate": true, + "CreateCertificateRequest": true, + "DSA": true, + "DSAWithSHA1": true, + "DSAWithSHA256": true, + "DecryptPEMBlock": true, + "ECDSA": true, + "ECDSAWithSHA1": true, + "ECDSAWithSHA256": true, + "ECDSAWithSHA384": true, + "ECDSAWithSHA512": true, + "Ed25519": true, + "EncryptPEMBlock": true, + "ErrUnsupportedAlgorithm": true, + "Expired": true, + "ExtKeyUsage": true, + "ExtKeyUsageAny": true, + "ExtKeyUsageClientAuth": true, + "ExtKeyUsageCodeSigning": true, + "ExtKeyUsageEmailProtection": true, + "ExtKeyUsageIPSECEndSystem": true, + "ExtKeyUsageIPSECTunnel": true, + "ExtKeyUsageIPSECUser": true, + "ExtKeyUsageMicrosoftCommercialCodeSigning": true, + "ExtKeyUsageMicrosoftKernelCodeSigning": true, + "ExtKeyUsageMicrosoftServerGatedCrypto": true, + "ExtKeyUsageNetscapeServerGatedCrypto": true, + "ExtKeyUsageOCSPSigning": true, + "ExtKeyUsageServerAuth": true, + "ExtKeyUsageTimeStamping": true, + "HostnameError": true, + "IncompatibleUsage": true, + "IncorrectPasswordError": true, + "InsecureAlgorithmError": true, + "InvalidReason": true, + "IsEncryptedPEMBlock": true, + "KeyUsage": true, + "KeyUsageCRLSign": true, + "KeyUsageCertSign": true, + "KeyUsageContentCommitment": true, + "KeyUsageDataEncipherment": true, + "KeyUsageDecipherOnly": true, + "KeyUsageDigitalSignature": true, + "KeyUsageEncipherOnly": true, + "KeyUsageKeyAgreement": true, + "KeyUsageKeyEncipherment": true, + "MD2WithRSA": true, + "MD5WithRSA": true, + "MarshalECPrivateKey": true, + "MarshalPKCS1PrivateKey": true, + "MarshalPKCS1PublicKey": true, + "MarshalPKCS8PrivateKey": true, + "MarshalPKIXPublicKey": true, + "NameConstraintsWithoutSANs": true, + "NameMismatch": true, + "NewCertPool": true, + "NotAuthorizedToSign": true, + "PEMCipher": true, + "PEMCipher3DES": true, + "PEMCipherAES128": true, + "PEMCipherAES192": true, + "PEMCipherAES256": true, + "PEMCipherDES": true, + "ParseCRL": true, + "ParseCertificate": true, + "ParseCertificateRequest": true, + "ParseCertificates": true, + "ParseDERCRL": true, + "ParseECPrivateKey": true, + "ParsePKCS1PrivateKey": true, + "ParsePKCS1PublicKey": true, + "ParsePKCS8PrivateKey": true, + "ParsePKIXPublicKey": true, + "PublicKeyAlgorithm": true, + "PureEd25519": true, + "RSA": true, + "SHA1WithRSA": true, + "SHA256WithRSA": true, + "SHA256WithRSAPSS": true, + "SHA384WithRSA": true, + "SHA384WithRSAPSS": true, + "SHA512WithRSA": true, + "SHA512WithRSAPSS": true, + "SignatureAlgorithm": true, + "SystemCertPool": true, + "SystemRootsError": true, + "TooManyConstraints": true, + "TooManyIntermediates": true, + "UnconstrainedName": true, + "UnhandledCriticalExtension": true, + "UnknownAuthorityError": true, + "UnknownPublicKeyAlgorithm": true, + "UnknownSignatureAlgorithm": true, + "VerifyOptions": true, + }, + "crypto/x509/pkix": map[string]bool{ + "AlgorithmIdentifier": true, + "AttributeTypeAndValue": true, + "AttributeTypeAndValueSET": true, + "CertificateList": true, + "Extension": true, + "Name": true, + "RDNSequence": true, + "RelativeDistinguishedNameSET": true, + "RevokedCertificate": true, + "TBSCertificateList": true, + }, + "database/sql": map[string]bool{ + "ColumnType": true, + "Conn": true, + "DB": true, + "DBStats": true, + "Drivers": true, + "ErrConnDone": true, + "ErrNoRows": true, + "ErrTxDone": true, + "IsolationLevel": true, + "LevelDefault": true, + "LevelLinearizable": true, + "LevelReadCommitted": true, + "LevelReadUncommitted": true, + "LevelRepeatableRead": true, + "LevelSerializable": true, + "LevelSnapshot": true, + "LevelWriteCommitted": true, + "Named": true, + "NamedArg": true, + "NullBool": true, + "NullFloat64": true, + "NullInt32": true, + "NullInt64": true, + "NullString": true, + "NullTime": true, + "Open": true, + "OpenDB": true, + "Out": true, + "RawBytes": true, + "Register": true, + "Result": true, + "Row": true, + "Rows": true, + "Scanner": true, + "Stmt": true, + "Tx": true, + "TxOptions": true, + }, + "database/sql/driver": map[string]bool{ + "Bool": true, + "ColumnConverter": true, + "Conn": true, + "ConnBeginTx": true, + "ConnPrepareContext": true, + "Connector": true, + "DefaultParameterConverter": true, + "Driver": true, + "DriverContext": true, + "ErrBadConn": true, + "ErrRemoveArgument": true, + "ErrSkip": true, + "Execer": true, + "ExecerContext": true, + "Int32": true, + "IsScanValue": true, + "IsValue": true, + "IsolationLevel": true, + "NamedValue": true, + "NamedValueChecker": true, + "NotNull": true, + "Null": true, + "Pinger": true, + "Queryer": true, + "QueryerContext": true, + "Result": true, + "ResultNoRows": true, + "Rows": true, + "RowsAffected": true, + "RowsColumnTypeDatabaseTypeName": true, + "RowsColumnTypeLength": true, + "RowsColumnTypeNullable": true, + "RowsColumnTypePrecisionScale": true, + "RowsColumnTypeScanType": true, + "RowsNextResultSet": true, + "SessionResetter": true, + "Stmt": true, + "StmtExecContext": true, + "StmtQueryContext": true, + "String": true, + "Tx": true, + "TxOptions": true, + "Value": true, + "ValueConverter": true, + "Valuer": true, + }, + "debug/dwarf": map[string]bool{ + "AddrType": true, + "ArrayType": true, + "Attr": true, + "AttrAbstractOrigin": true, + "AttrAccessibility": true, + "AttrAddrClass": true, + "AttrAllocated": true, + "AttrArtificial": true, + "AttrAssociated": true, + "AttrBaseTypes": true, + "AttrBitOffset": true, + "AttrBitSize": true, + "AttrByteSize": true, + "AttrCallColumn": true, + "AttrCallFile": true, + "AttrCallLine": true, + "AttrCalling": true, + "AttrCommonRef": true, + "AttrCompDir": true, + "AttrConstValue": true, + "AttrContainingType": true, + "AttrCount": true, + "AttrDataLocation": true, + "AttrDataMemberLoc": true, + "AttrDeclColumn": true, + "AttrDeclFile": true, + "AttrDeclLine": true, + "AttrDeclaration": true, + "AttrDefaultValue": true, + "AttrDescription": true, + "AttrDiscr": true, + "AttrDiscrList": true, + "AttrDiscrValue": true, + "AttrEncoding": true, + "AttrEntrypc": true, + "AttrExtension": true, + "AttrExternal": true, + "AttrFrameBase": true, + "AttrFriend": true, + "AttrHighpc": true, + "AttrIdentifierCase": true, + "AttrImport": true, + "AttrInline": true, + "AttrIsOptional": true, + "AttrLanguage": true, + "AttrLocation": true, + "AttrLowerBound": true, + "AttrLowpc": true, + "AttrMacroInfo": true, + "AttrName": true, + "AttrNamelistItem": true, + "AttrOrdering": true, + "AttrPriority": true, + "AttrProducer": true, + "AttrPrototyped": true, + "AttrRanges": true, + "AttrReturnAddr": true, + "AttrSegment": true, + "AttrSibling": true, + "AttrSpecification": true, + "AttrStartScope": true, + "AttrStaticLink": true, + "AttrStmtList": true, + "AttrStride": true, + "AttrStrideSize": true, + "AttrStringLength": true, + "AttrTrampoline": true, + "AttrType": true, + "AttrUpperBound": true, + "AttrUseLocation": true, + "AttrUseUTF8": true, + "AttrVarParam": true, + "AttrVirtuality": true, + "AttrVisibility": true, + "AttrVtableElemLoc": true, + "BasicType": true, + "BoolType": true, + "CharType": true, + "Class": true, + "ClassAddress": true, + "ClassBlock": true, + "ClassConstant": true, + "ClassExprLoc": true, + "ClassFlag": true, + "ClassLinePtr": true, + "ClassLocListPtr": true, + "ClassMacPtr": true, + "ClassRangeListPtr": true, + "ClassReference": true, + "ClassReferenceAlt": true, + "ClassReferenceSig": true, + "ClassString": true, + "ClassStringAlt": true, + "ClassUnknown": true, + "CommonType": true, + "ComplexType": true, + "Data": true, + "DecodeError": true, + "DotDotDotType": true, + "Entry": true, + "EnumType": true, + "EnumValue": true, + "ErrUnknownPC": true, + "Field": true, + "FloatType": true, + "FuncType": true, + "IntType": true, + "LineEntry": true, + "LineFile": true, + "LineReader": true, + "LineReaderPos": true, + "New": true, + "Offset": true, + "PtrType": true, + "QualType": true, + "Reader": true, + "StructField": true, + "StructType": true, + "Tag": true, + "TagAccessDeclaration": true, + "TagArrayType": true, + "TagBaseType": true, + "TagCatchDwarfBlock": true, + "TagClassType": true, + "TagCommonDwarfBlock": true, + "TagCommonInclusion": true, + "TagCompileUnit": true, + "TagCondition": true, + "TagConstType": true, + "TagConstant": true, + "TagDwarfProcedure": true, + "TagEntryPoint": true, + "TagEnumerationType": true, + "TagEnumerator": true, + "TagFileType": true, + "TagFormalParameter": true, + "TagFriend": true, + "TagImportedDeclaration": true, + "TagImportedModule": true, + "TagImportedUnit": true, + "TagInheritance": true, + "TagInlinedSubroutine": true, + "TagInterfaceType": true, + "TagLabel": true, + "TagLexDwarfBlock": true, + "TagMember": true, + "TagModule": true, + "TagMutableType": true, + "TagNamelist": true, + "TagNamelistItem": true, + "TagNamespace": true, + "TagPackedType": true, + "TagPartialUnit": true, + "TagPointerType": true, + "TagPtrToMemberType": true, + "TagReferenceType": true, + "TagRestrictType": true, + "TagRvalueReferenceType": true, + "TagSetType": true, + "TagSharedType": true, + "TagStringType": true, + "TagStructType": true, + "TagSubprogram": true, + "TagSubrangeType": true, + "TagSubroutineType": true, + "TagTemplateAlias": true, + "TagTemplateTypeParameter": true, + "TagTemplateValueParameter": true, + "TagThrownType": true, + "TagTryDwarfBlock": true, + "TagTypeUnit": true, + "TagTypedef": true, + "TagUnionType": true, + "TagUnspecifiedParameters": true, + "TagUnspecifiedType": true, + "TagVariable": true, + "TagVariant": true, + "TagVariantPart": true, + "TagVolatileType": true, + "TagWithStmt": true, + "Type": true, + "TypedefType": true, + "UcharType": true, + "UintType": true, + "UnspecifiedType": true, + "UnsupportedType": true, + "VoidType": true, + }, + "debug/elf": map[string]bool{ + "ARM_MAGIC_TRAMP_NUMBER": true, + "COMPRESS_HIOS": true, + "COMPRESS_HIPROC": true, + "COMPRESS_LOOS": true, + "COMPRESS_LOPROC": true, + "COMPRESS_ZLIB": true, + "Chdr32": true, + "Chdr64": true, + "Class": true, + "CompressionType": true, + "DF_BIND_NOW": true, + "DF_ORIGIN": true, + "DF_STATIC_TLS": true, + "DF_SYMBOLIC": true, + "DF_TEXTREL": true, + "DT_BIND_NOW": true, + "DT_DEBUG": true, + "DT_ENCODING": true, + "DT_FINI": true, + "DT_FINI_ARRAY": true, + "DT_FINI_ARRAYSZ": true, + "DT_FLAGS": true, + "DT_HASH": true, + "DT_HIOS": true, + "DT_HIPROC": true, + "DT_INIT": true, + "DT_INIT_ARRAY": true, + "DT_INIT_ARRAYSZ": true, + "DT_JMPREL": true, + "DT_LOOS": true, + "DT_LOPROC": true, + "DT_NEEDED": true, + "DT_NULL": true, + "DT_PLTGOT": true, + "DT_PLTREL": true, + "DT_PLTRELSZ": true, + "DT_PREINIT_ARRAY": true, + "DT_PREINIT_ARRAYSZ": true, + "DT_REL": true, + "DT_RELA": true, + "DT_RELAENT": true, + "DT_RELASZ": true, + "DT_RELENT": true, + "DT_RELSZ": true, + "DT_RPATH": true, + "DT_RUNPATH": true, + "DT_SONAME": true, + "DT_STRSZ": true, + "DT_STRTAB": true, + "DT_SYMBOLIC": true, + "DT_SYMENT": true, + "DT_SYMTAB": true, + "DT_TEXTREL": true, + "DT_VERNEED": true, + "DT_VERNEEDNUM": true, + "DT_VERSYM": true, + "Data": true, + "Dyn32": true, + "Dyn64": true, + "DynFlag": true, + "DynTag": true, + "EI_ABIVERSION": true, + "EI_CLASS": true, + "EI_DATA": true, + "EI_NIDENT": true, + "EI_OSABI": true, + "EI_PAD": true, + "EI_VERSION": true, + "ELFCLASS32": true, + "ELFCLASS64": true, + "ELFCLASSNONE": true, + "ELFDATA2LSB": true, + "ELFDATA2MSB": true, + "ELFDATANONE": true, + "ELFMAG": true, + "ELFOSABI_86OPEN": true, + "ELFOSABI_AIX": true, + "ELFOSABI_ARM": true, + "ELFOSABI_AROS": true, + "ELFOSABI_CLOUDABI": true, + "ELFOSABI_FENIXOS": true, + "ELFOSABI_FREEBSD": true, + "ELFOSABI_HPUX": true, + "ELFOSABI_HURD": true, + "ELFOSABI_IRIX": true, + "ELFOSABI_LINUX": true, + "ELFOSABI_MODESTO": true, + "ELFOSABI_NETBSD": true, + "ELFOSABI_NONE": true, + "ELFOSABI_NSK": true, + "ELFOSABI_OPENBSD": true, + "ELFOSABI_OPENVMS": true, + "ELFOSABI_SOLARIS": true, + "ELFOSABI_STANDALONE": true, + "ELFOSABI_TRU64": true, + "EM_386": true, + "EM_486": true, + "EM_56800EX": true, + "EM_68HC05": true, + "EM_68HC08": true, + "EM_68HC11": true, + "EM_68HC12": true, + "EM_68HC16": true, + "EM_68K": true, + "EM_78KOR": true, + "EM_8051": true, + "EM_860": true, + "EM_88K": true, + "EM_960": true, + "EM_AARCH64": true, + "EM_ALPHA": true, + "EM_ALPHA_STD": true, + "EM_ALTERA_NIOS2": true, + "EM_AMDGPU": true, + "EM_ARC": true, + "EM_ARCA": true, + "EM_ARC_COMPACT": true, + "EM_ARC_COMPACT2": true, + "EM_ARM": true, + "EM_AVR": true, + "EM_AVR32": true, + "EM_BA1": true, + "EM_BA2": true, + "EM_BLACKFIN": true, + "EM_BPF": true, + "EM_C166": true, + "EM_CDP": true, + "EM_CE": true, + "EM_CLOUDSHIELD": true, + "EM_COGE": true, + "EM_COLDFIRE": true, + "EM_COOL": true, + "EM_COREA_1ST": true, + "EM_COREA_2ND": true, + "EM_CR": true, + "EM_CR16": true, + "EM_CRAYNV2": true, + "EM_CRIS": true, + "EM_CRX": true, + "EM_CSR_KALIMBA": true, + "EM_CUDA": true, + "EM_CYPRESS_M8C": true, + "EM_D10V": true, + "EM_D30V": true, + "EM_DSP24": true, + "EM_DSPIC30F": true, + "EM_DXP": true, + "EM_ECOG1": true, + "EM_ECOG16": true, + "EM_ECOG1X": true, + "EM_ECOG2": true, + "EM_ETPU": true, + "EM_EXCESS": true, + "EM_F2MC16": true, + "EM_FIREPATH": true, + "EM_FR20": true, + "EM_FR30": true, + "EM_FT32": true, + "EM_FX66": true, + "EM_H8S": true, + "EM_H8_300": true, + "EM_H8_300H": true, + "EM_H8_500": true, + "EM_HUANY": true, + "EM_IA_64": true, + "EM_INTEL205": true, + "EM_INTEL206": true, + "EM_INTEL207": true, + "EM_INTEL208": true, + "EM_INTEL209": true, + "EM_IP2K": true, + "EM_JAVELIN": true, + "EM_K10M": true, + "EM_KM32": true, + "EM_KMX16": true, + "EM_KMX32": true, + "EM_KMX8": true, + "EM_KVARC": true, + "EM_L10M": true, + "EM_LANAI": true, + "EM_LATTICEMICO32": true, + "EM_M16C": true, + "EM_M32": true, + "EM_M32C": true, + "EM_M32R": true, + "EM_MANIK": true, + "EM_MAX": true, + "EM_MAXQ30": true, + "EM_MCHP_PIC": true, + "EM_MCST_ELBRUS": true, + "EM_ME16": true, + "EM_METAG": true, + "EM_MICROBLAZE": true, + "EM_MIPS": true, + "EM_MIPS_RS3_LE": true, + "EM_MIPS_RS4_BE": true, + "EM_MIPS_X": true, + "EM_MMA": true, + "EM_MMDSP_PLUS": true, + "EM_MMIX": true, + "EM_MN10200": true, + "EM_MN10300": true, + "EM_MOXIE": true, + "EM_MSP430": true, + "EM_NCPU": true, + "EM_NDR1": true, + "EM_NDS32": true, + "EM_NONE": true, + "EM_NORC": true, + "EM_NS32K": true, + "EM_OPEN8": true, + "EM_OPENRISC": true, + "EM_PARISC": true, + "EM_PCP": true, + "EM_PDP10": true, + "EM_PDP11": true, + "EM_PDSP": true, + "EM_PJ": true, + "EM_PPC": true, + "EM_PPC64": true, + "EM_PRISM": true, + "EM_QDSP6": true, + "EM_R32C": true, + "EM_RCE": true, + "EM_RH32": true, + "EM_RISCV": true, + "EM_RL78": true, + "EM_RS08": true, + "EM_RX": true, + "EM_S370": true, + "EM_S390": true, + "EM_SCORE7": true, + "EM_SEP": true, + "EM_SE_C17": true, + "EM_SE_C33": true, + "EM_SH": true, + "EM_SHARC": true, + "EM_SLE9X": true, + "EM_SNP1K": true, + "EM_SPARC": true, + "EM_SPARC32PLUS": true, + "EM_SPARCV9": true, + "EM_ST100": true, + "EM_ST19": true, + "EM_ST200": true, + "EM_ST7": true, + "EM_ST9PLUS": true, + "EM_STARCORE": true, + "EM_STM8": true, + "EM_STXP7X": true, + "EM_SVX": true, + "EM_TILE64": true, + "EM_TILEGX": true, + "EM_TILEPRO": true, + "EM_TINYJ": true, + "EM_TI_ARP32": true, + "EM_TI_C2000": true, + "EM_TI_C5500": true, + "EM_TI_C6000": true, + "EM_TI_PRU": true, + "EM_TMM_GPP": true, + "EM_TPC": true, + "EM_TRICORE": true, + "EM_TRIMEDIA": true, + "EM_TSK3000": true, + "EM_UNICORE": true, + "EM_V800": true, + "EM_V850": true, + "EM_VAX": true, + "EM_VIDEOCORE": true, + "EM_VIDEOCORE3": true, + "EM_VIDEOCORE5": true, + "EM_VISIUM": true, + "EM_VPP500": true, + "EM_X86_64": true, + "EM_XCORE": true, + "EM_XGATE": true, + "EM_XIMO16": true, + "EM_XTENSA": true, + "EM_Z80": true, + "EM_ZSP": true, + "ET_CORE": true, + "ET_DYN": true, + "ET_EXEC": true, + "ET_HIOS": true, + "ET_HIPROC": true, + "ET_LOOS": true, + "ET_LOPROC": true, + "ET_NONE": true, + "ET_REL": true, + "EV_CURRENT": true, + "EV_NONE": true, + "ErrNoSymbols": true, + "File": true, + "FileHeader": true, + "FormatError": true, + "Header32": true, + "Header64": true, + "ImportedSymbol": true, + "Machine": true, + "NT_FPREGSET": true, + "NT_PRPSINFO": true, + "NT_PRSTATUS": true, + "NType": true, + "NewFile": true, + "OSABI": true, + "Open": true, + "PF_MASKOS": true, + "PF_MASKPROC": true, + "PF_R": true, + "PF_W": true, + "PF_X": true, + "PT_DYNAMIC": true, + "PT_HIOS": true, + "PT_HIPROC": true, + "PT_INTERP": true, + "PT_LOAD": true, + "PT_LOOS": true, + "PT_LOPROC": true, + "PT_NOTE": true, + "PT_NULL": true, + "PT_PHDR": true, + "PT_SHLIB": true, + "PT_TLS": true, + "Prog": true, + "Prog32": true, + "Prog64": true, + "ProgFlag": true, + "ProgHeader": true, + "ProgType": true, + "R_386": true, + "R_386_16": true, + "R_386_32": true, + "R_386_32PLT": true, + "R_386_8": true, + "R_386_COPY": true, + "R_386_GLOB_DAT": true, + "R_386_GOT32": true, + "R_386_GOT32X": true, + "R_386_GOTOFF": true, + "R_386_GOTPC": true, + "R_386_IRELATIVE": true, + "R_386_JMP_SLOT": true, + "R_386_NONE": true, + "R_386_PC16": true, + "R_386_PC32": true, + "R_386_PC8": true, + "R_386_PLT32": true, + "R_386_RELATIVE": true, + "R_386_SIZE32": true, + "R_386_TLS_DESC": true, + "R_386_TLS_DESC_CALL": true, + "R_386_TLS_DTPMOD32": true, + "R_386_TLS_DTPOFF32": true, + "R_386_TLS_GD": true, + "R_386_TLS_GD_32": true, + "R_386_TLS_GD_CALL": true, + "R_386_TLS_GD_POP": true, + "R_386_TLS_GD_PUSH": true, + "R_386_TLS_GOTDESC": true, + "R_386_TLS_GOTIE": true, + "R_386_TLS_IE": true, + "R_386_TLS_IE_32": true, + "R_386_TLS_LDM": true, + "R_386_TLS_LDM_32": true, + "R_386_TLS_LDM_CALL": true, + "R_386_TLS_LDM_POP": true, + "R_386_TLS_LDM_PUSH": true, + "R_386_TLS_LDO_32": true, + "R_386_TLS_LE": true, + "R_386_TLS_LE_32": true, + "R_386_TLS_TPOFF": true, + "R_386_TLS_TPOFF32": true, + "R_390": true, + "R_390_12": true, + "R_390_16": true, + "R_390_20": true, + "R_390_32": true, + "R_390_64": true, + "R_390_8": true, + "R_390_COPY": true, + "R_390_GLOB_DAT": true, + "R_390_GOT12": true, + "R_390_GOT16": true, + "R_390_GOT20": true, + "R_390_GOT32": true, + "R_390_GOT64": true, + "R_390_GOTENT": true, + "R_390_GOTOFF": true, + "R_390_GOTOFF16": true, + "R_390_GOTOFF64": true, + "R_390_GOTPC": true, + "R_390_GOTPCDBL": true, + "R_390_GOTPLT12": true, + "R_390_GOTPLT16": true, + "R_390_GOTPLT20": true, + "R_390_GOTPLT32": true, + "R_390_GOTPLT64": true, + "R_390_GOTPLTENT": true, + "R_390_GOTPLTOFF16": true, + "R_390_GOTPLTOFF32": true, + "R_390_GOTPLTOFF64": true, + "R_390_JMP_SLOT": true, + "R_390_NONE": true, + "R_390_PC16": true, + "R_390_PC16DBL": true, + "R_390_PC32": true, + "R_390_PC32DBL": true, + "R_390_PC64": true, + "R_390_PLT16DBL": true, + "R_390_PLT32": true, + "R_390_PLT32DBL": true, + "R_390_PLT64": true, + "R_390_RELATIVE": true, + "R_390_TLS_DTPMOD": true, + "R_390_TLS_DTPOFF": true, + "R_390_TLS_GD32": true, + "R_390_TLS_GD64": true, + "R_390_TLS_GDCALL": true, + "R_390_TLS_GOTIE12": true, + "R_390_TLS_GOTIE20": true, + "R_390_TLS_GOTIE32": true, + "R_390_TLS_GOTIE64": true, + "R_390_TLS_IE32": true, + "R_390_TLS_IE64": true, + "R_390_TLS_IEENT": true, + "R_390_TLS_LDCALL": true, + "R_390_TLS_LDM32": true, + "R_390_TLS_LDM64": true, + "R_390_TLS_LDO32": true, + "R_390_TLS_LDO64": true, + "R_390_TLS_LE32": true, + "R_390_TLS_LE64": true, + "R_390_TLS_LOAD": true, + "R_390_TLS_TPOFF": true, + "R_AARCH64": true, + "R_AARCH64_ABS16": true, + "R_AARCH64_ABS32": true, + "R_AARCH64_ABS64": true, + "R_AARCH64_ADD_ABS_LO12_NC": true, + "R_AARCH64_ADR_GOT_PAGE": true, + "R_AARCH64_ADR_PREL_LO21": true, + "R_AARCH64_ADR_PREL_PG_HI21": true, + "R_AARCH64_ADR_PREL_PG_HI21_NC": true, + "R_AARCH64_CALL26": true, + "R_AARCH64_CONDBR19": true, + "R_AARCH64_COPY": true, + "R_AARCH64_GLOB_DAT": true, + "R_AARCH64_GOT_LD_PREL19": true, + "R_AARCH64_IRELATIVE": true, + "R_AARCH64_JUMP26": true, + "R_AARCH64_JUMP_SLOT": true, + "R_AARCH64_LD64_GOTOFF_LO15": true, + "R_AARCH64_LD64_GOTPAGE_LO15": true, + "R_AARCH64_LD64_GOT_LO12_NC": true, + "R_AARCH64_LDST128_ABS_LO12_NC": true, + "R_AARCH64_LDST16_ABS_LO12_NC": true, + "R_AARCH64_LDST32_ABS_LO12_NC": true, + "R_AARCH64_LDST64_ABS_LO12_NC": true, + "R_AARCH64_LDST8_ABS_LO12_NC": true, + "R_AARCH64_LD_PREL_LO19": true, + "R_AARCH64_MOVW_SABS_G0": true, + "R_AARCH64_MOVW_SABS_G1": true, + "R_AARCH64_MOVW_SABS_G2": true, + "R_AARCH64_MOVW_UABS_G0": true, + "R_AARCH64_MOVW_UABS_G0_NC": true, + "R_AARCH64_MOVW_UABS_G1": true, + "R_AARCH64_MOVW_UABS_G1_NC": true, + "R_AARCH64_MOVW_UABS_G2": true, + "R_AARCH64_MOVW_UABS_G2_NC": true, + "R_AARCH64_MOVW_UABS_G3": true, + "R_AARCH64_NONE": true, + "R_AARCH64_NULL": true, + "R_AARCH64_P32_ABS16": true, + "R_AARCH64_P32_ABS32": true, + "R_AARCH64_P32_ADD_ABS_LO12_NC": true, + "R_AARCH64_P32_ADR_GOT_PAGE": true, + "R_AARCH64_P32_ADR_PREL_LO21": true, + "R_AARCH64_P32_ADR_PREL_PG_HI21": true, + "R_AARCH64_P32_CALL26": true, + "R_AARCH64_P32_CONDBR19": true, + "R_AARCH64_P32_COPY": true, + "R_AARCH64_P32_GLOB_DAT": true, + "R_AARCH64_P32_GOT_LD_PREL19": true, + "R_AARCH64_P32_IRELATIVE": true, + "R_AARCH64_P32_JUMP26": true, + "R_AARCH64_P32_JUMP_SLOT": true, + "R_AARCH64_P32_LD32_GOT_LO12_NC": true, + "R_AARCH64_P32_LDST128_ABS_LO12_NC": true, + "R_AARCH64_P32_LDST16_ABS_LO12_NC": true, + "R_AARCH64_P32_LDST32_ABS_LO12_NC": true, + "R_AARCH64_P32_LDST64_ABS_LO12_NC": true, + "R_AARCH64_P32_LDST8_ABS_LO12_NC": true, + "R_AARCH64_P32_LD_PREL_LO19": true, + "R_AARCH64_P32_MOVW_SABS_G0": true, + "R_AARCH64_P32_MOVW_UABS_G0": true, + "R_AARCH64_P32_MOVW_UABS_G0_NC": true, + "R_AARCH64_P32_MOVW_UABS_G1": true, + "R_AARCH64_P32_PREL16": true, + "R_AARCH64_P32_PREL32": true, + "R_AARCH64_P32_RELATIVE": true, + "R_AARCH64_P32_TLSDESC": true, + "R_AARCH64_P32_TLSDESC_ADD_LO12_NC": true, + "R_AARCH64_P32_TLSDESC_ADR_PAGE21": true, + "R_AARCH64_P32_TLSDESC_ADR_PREL21": true, + "R_AARCH64_P32_TLSDESC_CALL": true, + "R_AARCH64_P32_TLSDESC_LD32_LO12_NC": true, + "R_AARCH64_P32_TLSDESC_LD_PREL19": true, + "R_AARCH64_P32_TLSGD_ADD_LO12_NC": true, + "R_AARCH64_P32_TLSGD_ADR_PAGE21": true, + "R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21": true, + "R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC": true, + "R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19": true, + "R_AARCH64_P32_TLSLE_ADD_TPREL_HI12": true, + "R_AARCH64_P32_TLSLE_ADD_TPREL_LO12": true, + "R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC": true, + "R_AARCH64_P32_TLSLE_MOVW_TPREL_G0": true, + "R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC": true, + "R_AARCH64_P32_TLSLE_MOVW_TPREL_G1": true, + "R_AARCH64_P32_TLS_DTPMOD": true, + "R_AARCH64_P32_TLS_DTPREL": true, + "R_AARCH64_P32_TLS_TPREL": true, + "R_AARCH64_P32_TSTBR14": true, + "R_AARCH64_PREL16": true, + "R_AARCH64_PREL32": true, + "R_AARCH64_PREL64": true, + "R_AARCH64_RELATIVE": true, + "R_AARCH64_TLSDESC": true, + "R_AARCH64_TLSDESC_ADD": true, + "R_AARCH64_TLSDESC_ADD_LO12_NC": true, + "R_AARCH64_TLSDESC_ADR_PAGE21": true, + "R_AARCH64_TLSDESC_ADR_PREL21": true, + "R_AARCH64_TLSDESC_CALL": true, + "R_AARCH64_TLSDESC_LD64_LO12_NC": true, + "R_AARCH64_TLSDESC_LDR": true, + "R_AARCH64_TLSDESC_LD_PREL19": true, + "R_AARCH64_TLSDESC_OFF_G0_NC": true, + "R_AARCH64_TLSDESC_OFF_G1": true, + "R_AARCH64_TLSGD_ADD_LO12_NC": true, + "R_AARCH64_TLSGD_ADR_PAGE21": true, + "R_AARCH64_TLSGD_ADR_PREL21": true, + "R_AARCH64_TLSGD_MOVW_G0_NC": true, + "R_AARCH64_TLSGD_MOVW_G1": true, + "R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21": true, + "R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC": true, + "R_AARCH64_TLSIE_LD_GOTTPREL_PREL19": true, + "R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC": true, + "R_AARCH64_TLSIE_MOVW_GOTTPREL_G1": true, + "R_AARCH64_TLSLD_ADR_PAGE21": true, + "R_AARCH64_TLSLD_ADR_PREL21": true, + "R_AARCH64_TLSLD_LDST128_DTPREL_LO12": true, + "R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC": true, + "R_AARCH64_TLSLE_ADD_TPREL_HI12": true, + "R_AARCH64_TLSLE_ADD_TPREL_LO12": true, + "R_AARCH64_TLSLE_ADD_TPREL_LO12_NC": true, + "R_AARCH64_TLSLE_LDST128_TPREL_LO12": true, + "R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC": true, + "R_AARCH64_TLSLE_MOVW_TPREL_G0": true, + "R_AARCH64_TLSLE_MOVW_TPREL_G0_NC": true, + "R_AARCH64_TLSLE_MOVW_TPREL_G1": true, + "R_AARCH64_TLSLE_MOVW_TPREL_G1_NC": true, + "R_AARCH64_TLSLE_MOVW_TPREL_G2": true, + "R_AARCH64_TLS_DTPMOD64": true, + "R_AARCH64_TLS_DTPREL64": true, + "R_AARCH64_TLS_TPREL64": true, + "R_AARCH64_TSTBR14": true, + "R_ALPHA": true, + "R_ALPHA_BRADDR": true, + "R_ALPHA_COPY": true, + "R_ALPHA_GLOB_DAT": true, + "R_ALPHA_GPDISP": true, + "R_ALPHA_GPREL32": true, + "R_ALPHA_GPRELHIGH": true, + "R_ALPHA_GPRELLOW": true, + "R_ALPHA_GPVALUE": true, + "R_ALPHA_HINT": true, + "R_ALPHA_IMMED_BR_HI32": true, + "R_ALPHA_IMMED_GP_16": true, + "R_ALPHA_IMMED_GP_HI32": true, + "R_ALPHA_IMMED_LO32": true, + "R_ALPHA_IMMED_SCN_HI32": true, + "R_ALPHA_JMP_SLOT": true, + "R_ALPHA_LITERAL": true, + "R_ALPHA_LITUSE": true, + "R_ALPHA_NONE": true, + "R_ALPHA_OP_PRSHIFT": true, + "R_ALPHA_OP_PSUB": true, + "R_ALPHA_OP_PUSH": true, + "R_ALPHA_OP_STORE": true, + "R_ALPHA_REFLONG": true, + "R_ALPHA_REFQUAD": true, + "R_ALPHA_RELATIVE": true, + "R_ALPHA_SREL16": true, + "R_ALPHA_SREL32": true, + "R_ALPHA_SREL64": true, + "R_ARM": true, + "R_ARM_ABS12": true, + "R_ARM_ABS16": true, + "R_ARM_ABS32": true, + "R_ARM_ABS32_NOI": true, + "R_ARM_ABS8": true, + "R_ARM_ALU_PCREL_15_8": true, + "R_ARM_ALU_PCREL_23_15": true, + "R_ARM_ALU_PCREL_7_0": true, + "R_ARM_ALU_PC_G0": true, + "R_ARM_ALU_PC_G0_NC": true, + "R_ARM_ALU_PC_G1": true, + "R_ARM_ALU_PC_G1_NC": true, + "R_ARM_ALU_PC_G2": true, + "R_ARM_ALU_SBREL_19_12_NC": true, + "R_ARM_ALU_SBREL_27_20_CK": true, + "R_ARM_ALU_SB_G0": true, + "R_ARM_ALU_SB_G0_NC": true, + "R_ARM_ALU_SB_G1": true, + "R_ARM_ALU_SB_G1_NC": true, + "R_ARM_ALU_SB_G2": true, + "R_ARM_AMP_VCALL9": true, + "R_ARM_BASE_ABS": true, + "R_ARM_CALL": true, + "R_ARM_COPY": true, + "R_ARM_GLOB_DAT": true, + "R_ARM_GNU_VTENTRY": true, + "R_ARM_GNU_VTINHERIT": true, + "R_ARM_GOT32": true, + "R_ARM_GOTOFF": true, + "R_ARM_GOTOFF12": true, + "R_ARM_GOTPC": true, + "R_ARM_GOTRELAX": true, + "R_ARM_GOT_ABS": true, + "R_ARM_GOT_BREL12": true, + "R_ARM_GOT_PREL": true, + "R_ARM_IRELATIVE": true, + "R_ARM_JUMP24": true, + "R_ARM_JUMP_SLOT": true, + "R_ARM_LDC_PC_G0": true, + "R_ARM_LDC_PC_G1": true, + "R_ARM_LDC_PC_G2": true, + "R_ARM_LDC_SB_G0": true, + "R_ARM_LDC_SB_G1": true, + "R_ARM_LDC_SB_G2": true, + "R_ARM_LDRS_PC_G0": true, + "R_ARM_LDRS_PC_G1": true, + "R_ARM_LDRS_PC_G2": true, + "R_ARM_LDRS_SB_G0": true, + "R_ARM_LDRS_SB_G1": true, + "R_ARM_LDRS_SB_G2": true, + "R_ARM_LDR_PC_G1": true, + "R_ARM_LDR_PC_G2": true, + "R_ARM_LDR_SBREL_11_10_NC": true, + "R_ARM_LDR_SB_G0": true, + "R_ARM_LDR_SB_G1": true, + "R_ARM_LDR_SB_G2": true, + "R_ARM_ME_TOO": true, + "R_ARM_MOVT_ABS": true, + "R_ARM_MOVT_BREL": true, + "R_ARM_MOVT_PREL": true, + "R_ARM_MOVW_ABS_NC": true, + "R_ARM_MOVW_BREL": true, + "R_ARM_MOVW_BREL_NC": true, + "R_ARM_MOVW_PREL_NC": true, + "R_ARM_NONE": true, + "R_ARM_PC13": true, + "R_ARM_PC24": true, + "R_ARM_PLT32": true, + "R_ARM_PLT32_ABS": true, + "R_ARM_PREL31": true, + "R_ARM_PRIVATE_0": true, + "R_ARM_PRIVATE_1": true, + "R_ARM_PRIVATE_10": true, + "R_ARM_PRIVATE_11": true, + "R_ARM_PRIVATE_12": true, + "R_ARM_PRIVATE_13": true, + "R_ARM_PRIVATE_14": true, + "R_ARM_PRIVATE_15": true, + "R_ARM_PRIVATE_2": true, + "R_ARM_PRIVATE_3": true, + "R_ARM_PRIVATE_4": true, + "R_ARM_PRIVATE_5": true, + "R_ARM_PRIVATE_6": true, + "R_ARM_PRIVATE_7": true, + "R_ARM_PRIVATE_8": true, + "R_ARM_PRIVATE_9": true, + "R_ARM_RABS32": true, + "R_ARM_RBASE": true, + "R_ARM_REL32": true, + "R_ARM_REL32_NOI": true, + "R_ARM_RELATIVE": true, + "R_ARM_RPC24": true, + "R_ARM_RREL32": true, + "R_ARM_RSBREL32": true, + "R_ARM_RXPC25": true, + "R_ARM_SBREL31": true, + "R_ARM_SBREL32": true, + "R_ARM_SWI24": true, + "R_ARM_TARGET1": true, + "R_ARM_TARGET2": true, + "R_ARM_THM_ABS5": true, + "R_ARM_THM_ALU_ABS_G0_NC": true, + "R_ARM_THM_ALU_ABS_G1_NC": true, + "R_ARM_THM_ALU_ABS_G2_NC": true, + "R_ARM_THM_ALU_ABS_G3": true, + "R_ARM_THM_ALU_PREL_11_0": true, + "R_ARM_THM_GOT_BREL12": true, + "R_ARM_THM_JUMP11": true, + "R_ARM_THM_JUMP19": true, + "R_ARM_THM_JUMP24": true, + "R_ARM_THM_JUMP6": true, + "R_ARM_THM_JUMP8": true, + "R_ARM_THM_MOVT_ABS": true, + "R_ARM_THM_MOVT_BREL": true, + "R_ARM_THM_MOVT_PREL": true, + "R_ARM_THM_MOVW_ABS_NC": true, + "R_ARM_THM_MOVW_BREL": true, + "R_ARM_THM_MOVW_BREL_NC": true, + "R_ARM_THM_MOVW_PREL_NC": true, + "R_ARM_THM_PC12": true, + "R_ARM_THM_PC22": true, + "R_ARM_THM_PC8": true, + "R_ARM_THM_RPC22": true, + "R_ARM_THM_SWI8": true, + "R_ARM_THM_TLS_CALL": true, + "R_ARM_THM_TLS_DESCSEQ16": true, + "R_ARM_THM_TLS_DESCSEQ32": true, + "R_ARM_THM_XPC22": true, + "R_ARM_TLS_CALL": true, + "R_ARM_TLS_DESCSEQ": true, + "R_ARM_TLS_DTPMOD32": true, + "R_ARM_TLS_DTPOFF32": true, + "R_ARM_TLS_GD32": true, + "R_ARM_TLS_GOTDESC": true, + "R_ARM_TLS_IE12GP": true, + "R_ARM_TLS_IE32": true, + "R_ARM_TLS_LDM32": true, + "R_ARM_TLS_LDO12": true, + "R_ARM_TLS_LDO32": true, + "R_ARM_TLS_LE12": true, + "R_ARM_TLS_LE32": true, + "R_ARM_TLS_TPOFF32": true, + "R_ARM_V4BX": true, + "R_ARM_XPC25": true, + "R_INFO": true, + "R_INFO32": true, + "R_MIPS": true, + "R_MIPS_16": true, + "R_MIPS_26": true, + "R_MIPS_32": true, + "R_MIPS_64": true, + "R_MIPS_ADD_IMMEDIATE": true, + "R_MIPS_CALL16": true, + "R_MIPS_CALL_HI16": true, + "R_MIPS_CALL_LO16": true, + "R_MIPS_DELETE": true, + "R_MIPS_GOT16": true, + "R_MIPS_GOT_DISP": true, + "R_MIPS_GOT_HI16": true, + "R_MIPS_GOT_LO16": true, + "R_MIPS_GOT_OFST": true, + "R_MIPS_GOT_PAGE": true, + "R_MIPS_GPREL16": true, + "R_MIPS_GPREL32": true, + "R_MIPS_HI16": true, + "R_MIPS_HIGHER": true, + "R_MIPS_HIGHEST": true, + "R_MIPS_INSERT_A": true, + "R_MIPS_INSERT_B": true, + "R_MIPS_JALR": true, + "R_MIPS_LITERAL": true, + "R_MIPS_LO16": true, + "R_MIPS_NONE": true, + "R_MIPS_PC16": true, + "R_MIPS_PJUMP": true, + "R_MIPS_REL16": true, + "R_MIPS_REL32": true, + "R_MIPS_RELGOT": true, + "R_MIPS_SCN_DISP": true, + "R_MIPS_SHIFT5": true, + "R_MIPS_SHIFT6": true, + "R_MIPS_SUB": true, + "R_MIPS_TLS_DTPMOD32": true, + "R_MIPS_TLS_DTPMOD64": true, + "R_MIPS_TLS_DTPREL32": true, + "R_MIPS_TLS_DTPREL64": true, + "R_MIPS_TLS_DTPREL_HI16": true, + "R_MIPS_TLS_DTPREL_LO16": true, + "R_MIPS_TLS_GD": true, + "R_MIPS_TLS_GOTTPREL": true, + "R_MIPS_TLS_LDM": true, + "R_MIPS_TLS_TPREL32": true, + "R_MIPS_TLS_TPREL64": true, + "R_MIPS_TLS_TPREL_HI16": true, + "R_MIPS_TLS_TPREL_LO16": true, + "R_PPC": true, + "R_PPC64": true, + "R_PPC64_ADDR14": true, + "R_PPC64_ADDR14_BRNTAKEN": true, + "R_PPC64_ADDR14_BRTAKEN": true, + "R_PPC64_ADDR16": true, + "R_PPC64_ADDR16_DS": true, + "R_PPC64_ADDR16_HA": true, + "R_PPC64_ADDR16_HI": true, + "R_PPC64_ADDR16_HIGH": true, + "R_PPC64_ADDR16_HIGHA": true, + "R_PPC64_ADDR16_HIGHER": true, + "R_PPC64_ADDR16_HIGHERA": true, + "R_PPC64_ADDR16_HIGHEST": true, + "R_PPC64_ADDR16_HIGHESTA": true, + "R_PPC64_ADDR16_LO": true, + "R_PPC64_ADDR16_LO_DS": true, + "R_PPC64_ADDR24": true, + "R_PPC64_ADDR32": true, + "R_PPC64_ADDR64": true, + "R_PPC64_ADDR64_LOCAL": true, + "R_PPC64_DTPMOD64": true, + "R_PPC64_DTPREL16": true, + "R_PPC64_DTPREL16_DS": true, + "R_PPC64_DTPREL16_HA": true, + "R_PPC64_DTPREL16_HI": true, + "R_PPC64_DTPREL16_HIGH": true, + "R_PPC64_DTPREL16_HIGHA": true, + "R_PPC64_DTPREL16_HIGHER": true, + "R_PPC64_DTPREL16_HIGHERA": true, + "R_PPC64_DTPREL16_HIGHEST": true, + "R_PPC64_DTPREL16_HIGHESTA": true, + "R_PPC64_DTPREL16_LO": true, + "R_PPC64_DTPREL16_LO_DS": true, + "R_PPC64_DTPREL64": true, + "R_PPC64_ENTRY": true, + "R_PPC64_GOT16": true, + "R_PPC64_GOT16_DS": true, + "R_PPC64_GOT16_HA": true, + "R_PPC64_GOT16_HI": true, + "R_PPC64_GOT16_LO": true, + "R_PPC64_GOT16_LO_DS": true, + "R_PPC64_GOT_DTPREL16_DS": true, + "R_PPC64_GOT_DTPREL16_HA": true, + "R_PPC64_GOT_DTPREL16_HI": true, + "R_PPC64_GOT_DTPREL16_LO_DS": true, + "R_PPC64_GOT_TLSGD16": true, + "R_PPC64_GOT_TLSGD16_HA": true, + "R_PPC64_GOT_TLSGD16_HI": true, + "R_PPC64_GOT_TLSGD16_LO": true, + "R_PPC64_GOT_TLSLD16": true, + "R_PPC64_GOT_TLSLD16_HA": true, + "R_PPC64_GOT_TLSLD16_HI": true, + "R_PPC64_GOT_TLSLD16_LO": true, + "R_PPC64_GOT_TPREL16_DS": true, + "R_PPC64_GOT_TPREL16_HA": true, + "R_PPC64_GOT_TPREL16_HI": true, + "R_PPC64_GOT_TPREL16_LO_DS": true, + "R_PPC64_IRELATIVE": true, + "R_PPC64_JMP_IREL": true, + "R_PPC64_JMP_SLOT": true, + "R_PPC64_NONE": true, + "R_PPC64_PLT16_LO_DS": true, + "R_PPC64_PLTGOT16": true, + "R_PPC64_PLTGOT16_DS": true, + "R_PPC64_PLTGOT16_HA": true, + "R_PPC64_PLTGOT16_HI": true, + "R_PPC64_PLTGOT16_LO": true, + "R_PPC64_PLTGOT_LO_DS": true, + "R_PPC64_REL14": true, + "R_PPC64_REL14_BRNTAKEN": true, + "R_PPC64_REL14_BRTAKEN": true, + "R_PPC64_REL16": true, + "R_PPC64_REL16DX_HA": true, + "R_PPC64_REL16_HA": true, + "R_PPC64_REL16_HI": true, + "R_PPC64_REL16_LO": true, + "R_PPC64_REL24": true, + "R_PPC64_REL24_NOTOC": true, + "R_PPC64_REL32": true, + "R_PPC64_REL64": true, + "R_PPC64_SECTOFF_DS": true, + "R_PPC64_SECTOFF_LO_DS": true, + "R_PPC64_TLS": true, + "R_PPC64_TLSGD": true, + "R_PPC64_TLSLD": true, + "R_PPC64_TOC": true, + "R_PPC64_TOC16": true, + "R_PPC64_TOC16_DS": true, + "R_PPC64_TOC16_HA": true, + "R_PPC64_TOC16_HI": true, + "R_PPC64_TOC16_LO": true, + "R_PPC64_TOC16_LO_DS": true, + "R_PPC64_TOCSAVE": true, + "R_PPC64_TPREL16": true, + "R_PPC64_TPREL16_DS": true, + "R_PPC64_TPREL16_HA": true, + "R_PPC64_TPREL16_HI": true, + "R_PPC64_TPREL16_HIGH": true, + "R_PPC64_TPREL16_HIGHA": true, + "R_PPC64_TPREL16_HIGHER": true, + "R_PPC64_TPREL16_HIGHERA": true, + "R_PPC64_TPREL16_HIGHEST": true, + "R_PPC64_TPREL16_HIGHESTA": true, + "R_PPC64_TPREL16_LO": true, + "R_PPC64_TPREL16_LO_DS": true, + "R_PPC64_TPREL64": true, + "R_PPC_ADDR14": true, + "R_PPC_ADDR14_BRNTAKEN": true, + "R_PPC_ADDR14_BRTAKEN": true, + "R_PPC_ADDR16": true, + "R_PPC_ADDR16_HA": true, + "R_PPC_ADDR16_HI": true, + "R_PPC_ADDR16_LO": true, + "R_PPC_ADDR24": true, + "R_PPC_ADDR32": true, + "R_PPC_COPY": true, + "R_PPC_DTPMOD32": true, + "R_PPC_DTPREL16": true, + "R_PPC_DTPREL16_HA": true, + "R_PPC_DTPREL16_HI": true, + "R_PPC_DTPREL16_LO": true, + "R_PPC_DTPREL32": true, + "R_PPC_EMB_BIT_FLD": true, + "R_PPC_EMB_MRKREF": true, + "R_PPC_EMB_NADDR16": true, + "R_PPC_EMB_NADDR16_HA": true, + "R_PPC_EMB_NADDR16_HI": true, + "R_PPC_EMB_NADDR16_LO": true, + "R_PPC_EMB_NADDR32": true, + "R_PPC_EMB_RELSDA": true, + "R_PPC_EMB_RELSEC16": true, + "R_PPC_EMB_RELST_HA": true, + "R_PPC_EMB_RELST_HI": true, + "R_PPC_EMB_RELST_LO": true, + "R_PPC_EMB_SDA21": true, + "R_PPC_EMB_SDA2I16": true, + "R_PPC_EMB_SDA2REL": true, + "R_PPC_EMB_SDAI16": true, + "R_PPC_GLOB_DAT": true, + "R_PPC_GOT16": true, + "R_PPC_GOT16_HA": true, + "R_PPC_GOT16_HI": true, + "R_PPC_GOT16_LO": true, + "R_PPC_GOT_TLSGD16": true, + "R_PPC_GOT_TLSGD16_HA": true, + "R_PPC_GOT_TLSGD16_HI": true, + "R_PPC_GOT_TLSGD16_LO": true, + "R_PPC_GOT_TLSLD16": true, + "R_PPC_GOT_TLSLD16_HA": true, + "R_PPC_GOT_TLSLD16_HI": true, + "R_PPC_GOT_TLSLD16_LO": true, + "R_PPC_GOT_TPREL16": true, + "R_PPC_GOT_TPREL16_HA": true, + "R_PPC_GOT_TPREL16_HI": true, + "R_PPC_GOT_TPREL16_LO": true, + "R_PPC_JMP_SLOT": true, + "R_PPC_LOCAL24PC": true, + "R_PPC_NONE": true, + "R_PPC_PLT16_HA": true, + "R_PPC_PLT16_HI": true, + "R_PPC_PLT16_LO": true, + "R_PPC_PLT32": true, + "R_PPC_PLTREL24": true, + "R_PPC_PLTREL32": true, + "R_PPC_REL14": true, + "R_PPC_REL14_BRNTAKEN": true, + "R_PPC_REL14_BRTAKEN": true, + "R_PPC_REL24": true, + "R_PPC_REL32": true, + "R_PPC_RELATIVE": true, + "R_PPC_SDAREL16": true, + "R_PPC_SECTOFF": true, + "R_PPC_SECTOFF_HA": true, + "R_PPC_SECTOFF_HI": true, + "R_PPC_SECTOFF_LO": true, + "R_PPC_TLS": true, + "R_PPC_TPREL16": true, + "R_PPC_TPREL16_HA": true, + "R_PPC_TPREL16_HI": true, + "R_PPC_TPREL16_LO": true, + "R_PPC_TPREL32": true, + "R_PPC_UADDR16": true, + "R_PPC_UADDR32": true, + "R_RISCV": true, + "R_RISCV_32": true, + "R_RISCV_32_PCREL": true, + "R_RISCV_64": true, + "R_RISCV_ADD16": true, + "R_RISCV_ADD32": true, + "R_RISCV_ADD64": true, + "R_RISCV_ADD8": true, + "R_RISCV_ALIGN": true, + "R_RISCV_BRANCH": true, + "R_RISCV_CALL": true, + "R_RISCV_CALL_PLT": true, + "R_RISCV_COPY": true, + "R_RISCV_GNU_VTENTRY": true, + "R_RISCV_GNU_VTINHERIT": true, + "R_RISCV_GOT_HI20": true, + "R_RISCV_GPREL_I": true, + "R_RISCV_GPREL_S": true, + "R_RISCV_HI20": true, + "R_RISCV_JAL": true, + "R_RISCV_JUMP_SLOT": true, + "R_RISCV_LO12_I": true, + "R_RISCV_LO12_S": true, + "R_RISCV_NONE": true, + "R_RISCV_PCREL_HI20": true, + "R_RISCV_PCREL_LO12_I": true, + "R_RISCV_PCREL_LO12_S": true, + "R_RISCV_RELATIVE": true, + "R_RISCV_RELAX": true, + "R_RISCV_RVC_BRANCH": true, + "R_RISCV_RVC_JUMP": true, + "R_RISCV_RVC_LUI": true, + "R_RISCV_SET16": true, + "R_RISCV_SET32": true, + "R_RISCV_SET6": true, + "R_RISCV_SET8": true, + "R_RISCV_SUB16": true, + "R_RISCV_SUB32": true, + "R_RISCV_SUB6": true, + "R_RISCV_SUB64": true, + "R_RISCV_SUB8": true, + "R_RISCV_TLS_DTPMOD32": true, + "R_RISCV_TLS_DTPMOD64": true, + "R_RISCV_TLS_DTPREL32": true, + "R_RISCV_TLS_DTPREL64": true, + "R_RISCV_TLS_GD_HI20": true, + "R_RISCV_TLS_GOT_HI20": true, + "R_RISCV_TLS_TPREL32": true, + "R_RISCV_TLS_TPREL64": true, + "R_RISCV_TPREL_ADD": true, + "R_RISCV_TPREL_HI20": true, + "R_RISCV_TPREL_I": true, + "R_RISCV_TPREL_LO12_I": true, + "R_RISCV_TPREL_LO12_S": true, + "R_RISCV_TPREL_S": true, + "R_SPARC": true, + "R_SPARC_10": true, + "R_SPARC_11": true, + "R_SPARC_13": true, + "R_SPARC_16": true, + "R_SPARC_22": true, + "R_SPARC_32": true, + "R_SPARC_5": true, + "R_SPARC_6": true, + "R_SPARC_64": true, + "R_SPARC_7": true, + "R_SPARC_8": true, + "R_SPARC_COPY": true, + "R_SPARC_DISP16": true, + "R_SPARC_DISP32": true, + "R_SPARC_DISP64": true, + "R_SPARC_DISP8": true, + "R_SPARC_GLOB_DAT": true, + "R_SPARC_GLOB_JMP": true, + "R_SPARC_GOT10": true, + "R_SPARC_GOT13": true, + "R_SPARC_GOT22": true, + "R_SPARC_H44": true, + "R_SPARC_HH22": true, + "R_SPARC_HI22": true, + "R_SPARC_HIPLT22": true, + "R_SPARC_HIX22": true, + "R_SPARC_HM10": true, + "R_SPARC_JMP_SLOT": true, + "R_SPARC_L44": true, + "R_SPARC_LM22": true, + "R_SPARC_LO10": true, + "R_SPARC_LOPLT10": true, + "R_SPARC_LOX10": true, + "R_SPARC_M44": true, + "R_SPARC_NONE": true, + "R_SPARC_OLO10": true, + "R_SPARC_PC10": true, + "R_SPARC_PC22": true, + "R_SPARC_PCPLT10": true, + "R_SPARC_PCPLT22": true, + "R_SPARC_PCPLT32": true, + "R_SPARC_PC_HH22": true, + "R_SPARC_PC_HM10": true, + "R_SPARC_PC_LM22": true, + "R_SPARC_PLT32": true, + "R_SPARC_PLT64": true, + "R_SPARC_REGISTER": true, + "R_SPARC_RELATIVE": true, + "R_SPARC_UA16": true, + "R_SPARC_UA32": true, + "R_SPARC_UA64": true, + "R_SPARC_WDISP16": true, + "R_SPARC_WDISP19": true, + "R_SPARC_WDISP22": true, + "R_SPARC_WDISP30": true, + "R_SPARC_WPLT30": true, + "R_SYM32": true, + "R_SYM64": true, + "R_TYPE32": true, + "R_TYPE64": true, + "R_X86_64": true, + "R_X86_64_16": true, + "R_X86_64_32": true, + "R_X86_64_32S": true, + "R_X86_64_64": true, + "R_X86_64_8": true, + "R_X86_64_COPY": true, + "R_X86_64_DTPMOD64": true, + "R_X86_64_DTPOFF32": true, + "R_X86_64_DTPOFF64": true, + "R_X86_64_GLOB_DAT": true, + "R_X86_64_GOT32": true, + "R_X86_64_GOT64": true, + "R_X86_64_GOTOFF64": true, + "R_X86_64_GOTPC32": true, + "R_X86_64_GOTPC32_TLSDESC": true, + "R_X86_64_GOTPC64": true, + "R_X86_64_GOTPCREL": true, + "R_X86_64_GOTPCREL64": true, + "R_X86_64_GOTPCRELX": true, + "R_X86_64_GOTPLT64": true, + "R_X86_64_GOTTPOFF": true, + "R_X86_64_IRELATIVE": true, + "R_X86_64_JMP_SLOT": true, + "R_X86_64_NONE": true, + "R_X86_64_PC16": true, + "R_X86_64_PC32": true, + "R_X86_64_PC32_BND": true, + "R_X86_64_PC64": true, + "R_X86_64_PC8": true, + "R_X86_64_PLT32": true, + "R_X86_64_PLT32_BND": true, + "R_X86_64_PLTOFF64": true, + "R_X86_64_RELATIVE": true, + "R_X86_64_RELATIVE64": true, + "R_X86_64_REX_GOTPCRELX": true, + "R_X86_64_SIZE32": true, + "R_X86_64_SIZE64": true, + "R_X86_64_TLSDESC": true, + "R_X86_64_TLSDESC_CALL": true, + "R_X86_64_TLSGD": true, + "R_X86_64_TLSLD": true, + "R_X86_64_TPOFF32": true, + "R_X86_64_TPOFF64": true, + "Rel32": true, + "Rel64": true, + "Rela32": true, + "Rela64": true, + "SHF_ALLOC": true, + "SHF_COMPRESSED": true, + "SHF_EXECINSTR": true, + "SHF_GROUP": true, + "SHF_INFO_LINK": true, + "SHF_LINK_ORDER": true, + "SHF_MASKOS": true, + "SHF_MASKPROC": true, + "SHF_MERGE": true, + "SHF_OS_NONCONFORMING": true, + "SHF_STRINGS": true, + "SHF_TLS": true, + "SHF_WRITE": true, + "SHN_ABS": true, + "SHN_COMMON": true, + "SHN_HIOS": true, + "SHN_HIPROC": true, + "SHN_HIRESERVE": true, + "SHN_LOOS": true, + "SHN_LOPROC": true, + "SHN_LORESERVE": true, + "SHN_UNDEF": true, + "SHN_XINDEX": true, + "SHT_DYNAMIC": true, + "SHT_DYNSYM": true, + "SHT_FINI_ARRAY": true, + "SHT_GNU_ATTRIBUTES": true, + "SHT_GNU_HASH": true, + "SHT_GNU_LIBLIST": true, + "SHT_GNU_VERDEF": true, + "SHT_GNU_VERNEED": true, + "SHT_GNU_VERSYM": true, + "SHT_GROUP": true, + "SHT_HASH": true, + "SHT_HIOS": true, + "SHT_HIPROC": true, + "SHT_HIUSER": true, + "SHT_INIT_ARRAY": true, + "SHT_LOOS": true, + "SHT_LOPROC": true, + "SHT_LOUSER": true, + "SHT_NOBITS": true, + "SHT_NOTE": true, + "SHT_NULL": true, + "SHT_PREINIT_ARRAY": true, + "SHT_PROGBITS": true, + "SHT_REL": true, + "SHT_RELA": true, + "SHT_SHLIB": true, + "SHT_STRTAB": true, + "SHT_SYMTAB": true, + "SHT_SYMTAB_SHNDX": true, + "STB_GLOBAL": true, + "STB_HIOS": true, + "STB_HIPROC": true, + "STB_LOCAL": true, + "STB_LOOS": true, + "STB_LOPROC": true, + "STB_WEAK": true, + "STT_COMMON": true, + "STT_FILE": true, + "STT_FUNC": true, + "STT_HIOS": true, + "STT_HIPROC": true, + "STT_LOOS": true, + "STT_LOPROC": true, + "STT_NOTYPE": true, + "STT_OBJECT": true, + "STT_SECTION": true, + "STT_TLS": true, + "STV_DEFAULT": true, + "STV_HIDDEN": true, + "STV_INTERNAL": true, + "STV_PROTECTED": true, + "ST_BIND": true, + "ST_INFO": true, + "ST_TYPE": true, + "ST_VISIBILITY": true, + "Section": true, + "Section32": true, + "Section64": true, + "SectionFlag": true, + "SectionHeader": true, + "SectionIndex": true, + "SectionType": true, + "Sym32": true, + "Sym32Size": true, + "Sym64": true, + "Sym64Size": true, + "SymBind": true, + "SymType": true, + "SymVis": true, + "Symbol": true, + "Type": true, + "Version": true, + }, + "debug/gosym": map[string]bool{ + "DecodingError": true, + "Func": true, + "LineTable": true, + "NewLineTable": true, + "NewTable": true, + "Obj": true, + "Sym": true, + "Table": true, + "UnknownFileError": true, + "UnknownLineError": true, + }, + "debug/macho": map[string]bool{ + "ARM64_RELOC_ADDEND": true, + "ARM64_RELOC_BRANCH26": true, + "ARM64_RELOC_GOT_LOAD_PAGE21": true, + "ARM64_RELOC_GOT_LOAD_PAGEOFF12": true, + "ARM64_RELOC_PAGE21": true, + "ARM64_RELOC_PAGEOFF12": true, + "ARM64_RELOC_POINTER_TO_GOT": true, + "ARM64_RELOC_SUBTRACTOR": true, + "ARM64_RELOC_TLVP_LOAD_PAGE21": true, + "ARM64_RELOC_TLVP_LOAD_PAGEOFF12": true, + "ARM64_RELOC_UNSIGNED": true, + "ARM_RELOC_BR24": true, + "ARM_RELOC_HALF": true, + "ARM_RELOC_HALF_SECTDIFF": true, + "ARM_RELOC_LOCAL_SECTDIFF": true, + "ARM_RELOC_PAIR": true, + "ARM_RELOC_PB_LA_PTR": true, + "ARM_RELOC_SECTDIFF": true, + "ARM_RELOC_VANILLA": true, + "ARM_THUMB_32BIT_BRANCH": true, + "ARM_THUMB_RELOC_BR22": true, + "Cpu": true, + "Cpu386": true, + "CpuAmd64": true, + "CpuArm": true, + "CpuArm64": true, + "CpuPpc": true, + "CpuPpc64": true, + "Dylib": true, + "DylibCmd": true, + "Dysymtab": true, + "DysymtabCmd": true, + "ErrNotFat": true, + "FatArch": true, + "FatArchHeader": true, + "FatFile": true, + "File": true, + "FileHeader": true, + "FlagAllModsBound": true, + "FlagAllowStackExecution": true, + "FlagAppExtensionSafe": true, + "FlagBindAtLoad": true, + "FlagBindsToWeak": true, + "FlagCanonical": true, + "FlagDeadStrippableDylib": true, + "FlagDyldLink": true, + "FlagForceFlat": true, + "FlagHasTLVDescriptors": true, + "FlagIncrLink": true, + "FlagLazyInit": true, + "FlagNoFixPrebinding": true, + "FlagNoHeapExecution": true, + "FlagNoMultiDefs": true, + "FlagNoReexportedDylibs": true, + "FlagNoUndefs": true, + "FlagPIE": true, + "FlagPrebindable": true, + "FlagPrebound": true, + "FlagRootSafe": true, + "FlagSetuidSafe": true, + "FlagSplitSegs": true, + "FlagSubsectionsViaSymbols": true, + "FlagTwoLevel": true, + "FlagWeakDefines": true, + "FormatError": true, + "GENERIC_RELOC_LOCAL_SECTDIFF": true, + "GENERIC_RELOC_PAIR": true, + "GENERIC_RELOC_PB_LA_PTR": true, + "GENERIC_RELOC_SECTDIFF": true, + "GENERIC_RELOC_TLV": true, + "GENERIC_RELOC_VANILLA": true, + "Load": true, + "LoadBytes": true, + "LoadCmd": true, + "LoadCmdDylib": true, + "LoadCmdDylinker": true, + "LoadCmdDysymtab": true, + "LoadCmdRpath": true, + "LoadCmdSegment": true, + "LoadCmdSegment64": true, + "LoadCmdSymtab": true, + "LoadCmdThread": true, + "LoadCmdUnixThread": true, + "Magic32": true, + "Magic64": true, + "MagicFat": true, + "NewFatFile": true, + "NewFile": true, + "Nlist32": true, + "Nlist64": true, + "Open": true, + "OpenFat": true, + "Regs386": true, + "RegsAMD64": true, + "Reloc": true, + "RelocTypeARM": true, + "RelocTypeARM64": true, + "RelocTypeGeneric": true, + "RelocTypeX86_64": true, + "Rpath": true, + "RpathCmd": true, + "Section": true, + "Section32": true, + "Section64": true, + "SectionHeader": true, + "Segment": true, + "Segment32": true, + "Segment64": true, + "SegmentHeader": true, + "Symbol": true, + "Symtab": true, + "SymtabCmd": true, + "Thread": true, + "Type": true, + "TypeBundle": true, + "TypeDylib": true, + "TypeExec": true, + "TypeObj": true, + "X86_64_RELOC_BRANCH": true, + "X86_64_RELOC_GOT": true, + "X86_64_RELOC_GOT_LOAD": true, + "X86_64_RELOC_SIGNED": true, + "X86_64_RELOC_SIGNED_1": true, + "X86_64_RELOC_SIGNED_2": true, + "X86_64_RELOC_SIGNED_4": true, + "X86_64_RELOC_SUBTRACTOR": true, + "X86_64_RELOC_TLV": true, + "X86_64_RELOC_UNSIGNED": true, + }, + "debug/pe": map[string]bool{ + "COFFSymbol": true, + "COFFSymbolSize": true, + "DataDirectory": true, + "File": true, + "FileHeader": true, + "FormatError": true, + "IMAGE_DIRECTORY_ENTRY_ARCHITECTURE": true, + "IMAGE_DIRECTORY_ENTRY_BASERELOC": true, + "IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT": true, + "IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR": true, + "IMAGE_DIRECTORY_ENTRY_DEBUG": true, + "IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT": true, + "IMAGE_DIRECTORY_ENTRY_EXCEPTION": true, + "IMAGE_DIRECTORY_ENTRY_EXPORT": true, + "IMAGE_DIRECTORY_ENTRY_GLOBALPTR": true, + "IMAGE_DIRECTORY_ENTRY_IAT": true, + "IMAGE_DIRECTORY_ENTRY_IMPORT": true, + "IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG": true, + "IMAGE_DIRECTORY_ENTRY_RESOURCE": true, + "IMAGE_DIRECTORY_ENTRY_SECURITY": true, + "IMAGE_DIRECTORY_ENTRY_TLS": true, + "IMAGE_FILE_MACHINE_AM33": true, + "IMAGE_FILE_MACHINE_AMD64": true, + "IMAGE_FILE_MACHINE_ARM": true, + "IMAGE_FILE_MACHINE_ARM64": true, + "IMAGE_FILE_MACHINE_ARMNT": true, + "IMAGE_FILE_MACHINE_EBC": true, + "IMAGE_FILE_MACHINE_I386": true, + "IMAGE_FILE_MACHINE_IA64": true, + "IMAGE_FILE_MACHINE_M32R": true, + "IMAGE_FILE_MACHINE_MIPS16": true, + "IMAGE_FILE_MACHINE_MIPSFPU": true, + "IMAGE_FILE_MACHINE_MIPSFPU16": true, + "IMAGE_FILE_MACHINE_POWERPC": true, + "IMAGE_FILE_MACHINE_POWERPCFP": true, + "IMAGE_FILE_MACHINE_R4000": true, + "IMAGE_FILE_MACHINE_SH3": true, + "IMAGE_FILE_MACHINE_SH3DSP": true, + "IMAGE_FILE_MACHINE_SH4": true, + "IMAGE_FILE_MACHINE_SH5": true, + "IMAGE_FILE_MACHINE_THUMB": true, + "IMAGE_FILE_MACHINE_UNKNOWN": true, + "IMAGE_FILE_MACHINE_WCEMIPSV2": true, + "ImportDirectory": true, + "NewFile": true, + "Open": true, + "OptionalHeader32": true, + "OptionalHeader64": true, + "Reloc": true, + "Section": true, + "SectionHeader": true, + "SectionHeader32": true, + "StringTable": true, + "Symbol": true, + }, + "debug/plan9obj": map[string]bool{ + "File": true, + "FileHeader": true, + "Magic386": true, + "Magic64": true, + "MagicAMD64": true, + "MagicARM": true, + "NewFile": true, + "Open": true, + "Section": true, + "SectionHeader": true, + "Sym": true, + }, + "encoding": map[string]bool{ + "BinaryMarshaler": true, + "BinaryUnmarshaler": true, + "TextMarshaler": true, + "TextUnmarshaler": true, + }, + "encoding/ascii85": map[string]bool{ + "CorruptInputError": true, + "Decode": true, + "Encode": true, + "MaxEncodedLen": true, + "NewDecoder": true, + "NewEncoder": true, + }, + "encoding/asn1": map[string]bool{ + "BitString": true, + "ClassApplication": true, + "ClassContextSpecific": true, + "ClassPrivate": true, + "ClassUniversal": true, + "Enumerated": true, + "Flag": true, + "Marshal": true, + "MarshalWithParams": true, + "NullBytes": true, + "NullRawValue": true, + "ObjectIdentifier": true, + "RawContent": true, + "RawValue": true, + "StructuralError": true, + "SyntaxError": true, + "TagBitString": true, + "TagBoolean": true, + "TagEnum": true, + "TagGeneralString": true, + "TagGeneralizedTime": true, + "TagIA5String": true, + "TagInteger": true, + "TagNull": true, + "TagNumericString": true, + "TagOID": true, + "TagOctetString": true, + "TagPrintableString": true, + "TagSequence": true, + "TagSet": true, + "TagT61String": true, + "TagUTCTime": true, + "TagUTF8String": true, + "Unmarshal": true, + "UnmarshalWithParams": true, + }, + "encoding/base32": map[string]bool{ + "CorruptInputError": true, + "Encoding": true, + "HexEncoding": true, + "NewDecoder": true, + "NewEncoder": true, + "NewEncoding": true, + "NoPadding": true, + "StdEncoding": true, + "StdPadding": true, + }, + "encoding/base64": map[string]bool{ + "CorruptInputError": true, + "Encoding": true, + "NewDecoder": true, + "NewEncoder": true, + "NewEncoding": true, + "NoPadding": true, + "RawStdEncoding": true, + "RawURLEncoding": true, + "StdEncoding": true, + "StdPadding": true, + "URLEncoding": true, + }, + "encoding/binary": map[string]bool{ + "BigEndian": true, + "ByteOrder": true, + "LittleEndian": true, + "MaxVarintLen16": true, + "MaxVarintLen32": true, + "MaxVarintLen64": true, + "PutUvarint": true, + "PutVarint": true, + "Read": true, + "ReadUvarint": true, + "ReadVarint": true, + "Size": true, + "Uvarint": true, + "Varint": true, + "Write": true, + }, + "encoding/csv": map[string]bool{ + "ErrBareQuote": true, + "ErrFieldCount": true, + "ErrQuote": true, + "ErrTrailingComma": true, + "NewReader": true, + "NewWriter": true, + "ParseError": true, + "Reader": true, + "Writer": true, + }, + "encoding/gob": map[string]bool{ + "CommonType": true, + "Decoder": true, + "Encoder": true, + "GobDecoder": true, + "GobEncoder": true, + "NewDecoder": true, + "NewEncoder": true, + "Register": true, + "RegisterName": true, + }, + "encoding/hex": map[string]bool{ + "Decode": true, + "DecodeString": true, + "DecodedLen": true, + "Dump": true, + "Dumper": true, + "Encode": true, + "EncodeToString": true, + "EncodedLen": true, + "ErrLength": true, + "InvalidByteError": true, + "NewDecoder": true, + "NewEncoder": true, + }, + "encoding/json": map[string]bool{ + "Compact": true, + "Decoder": true, + "Delim": true, + "Encoder": true, + "HTMLEscape": true, + "Indent": true, + "InvalidUTF8Error": true, + "InvalidUnmarshalError": true, + "Marshal": true, + "MarshalIndent": true, + "Marshaler": true, + "MarshalerError": true, + "NewDecoder": true, + "NewEncoder": true, + "Number": true, + "RawMessage": true, + "SyntaxError": true, + "Token": true, + "Unmarshal": true, + "UnmarshalFieldError": true, + "UnmarshalTypeError": true, + "Unmarshaler": true, + "UnsupportedTypeError": true, + "UnsupportedValueError": true, + "Valid": true, + }, + "encoding/pem": map[string]bool{ + "Block": true, + "Decode": true, + "Encode": true, + "EncodeToMemory": true, + }, + "encoding/xml": map[string]bool{ + "Attr": true, + "CharData": true, + "Comment": true, + "CopyToken": true, + "Decoder": true, + "Directive": true, + "Encoder": true, + "EndElement": true, + "Escape": true, + "EscapeText": true, + "HTMLAutoClose": true, + "HTMLEntity": true, + "Header": true, + "Marshal": true, + "MarshalIndent": true, + "Marshaler": true, + "MarshalerAttr": true, + "Name": true, + "NewDecoder": true, + "NewEncoder": true, + "NewTokenDecoder": true, + "ProcInst": true, + "StartElement": true, + "SyntaxError": true, + "TagPathError": true, + "Token": true, + "TokenReader": true, + "Unmarshal": true, + "UnmarshalError": true, + "Unmarshaler": true, + "UnmarshalerAttr": true, + "UnsupportedTypeError": true, + }, + "errors": map[string]bool{ + "As": true, + "Is": true, + "New": true, + "Unwrap": true, + }, + "expvar": map[string]bool{ + "Do": true, + "Float": true, + "Func": true, + "Get": true, + "Handler": true, + "Int": true, + "KeyValue": true, + "Map": true, + "NewFloat": true, + "NewInt": true, + "NewMap": true, + "NewString": true, + "Publish": true, + "String": true, + "Var": true, + }, + "flag": map[string]bool{ + "Arg": true, + "Args": true, + "Bool": true, + "BoolVar": true, + "CommandLine": true, + "ContinueOnError": true, + "Duration": true, + "DurationVar": true, + "ErrHelp": true, + "ErrorHandling": true, + "ExitOnError": true, + "Flag": true, + "FlagSet": true, + "Float64": true, + "Float64Var": true, + "Getter": true, + "Int": true, + "Int64": true, + "Int64Var": true, + "IntVar": true, + "Lookup": true, + "NArg": true, + "NFlag": true, + "NewFlagSet": true, + "PanicOnError": true, + "Parse": true, + "Parsed": true, + "PrintDefaults": true, + "Set": true, + "String": true, + "StringVar": true, + "Uint": true, + "Uint64": true, + "Uint64Var": true, + "UintVar": true, + "UnquoteUsage": true, + "Usage": true, + "Value": true, + "Var": true, + "Visit": true, + "VisitAll": true, + }, + "fmt": map[string]bool{ + "Errorf": true, + "Formatter": true, + "Fprint": true, + "Fprintf": true, + "Fprintln": true, + "Fscan": true, + "Fscanf": true, + "Fscanln": true, + "GoStringer": true, + "Print": true, + "Printf": true, + "Println": true, + "Scan": true, + "ScanState": true, + "Scanf": true, + "Scanln": true, + "Scanner": true, + "Sprint": true, + "Sprintf": true, + "Sprintln": true, + "Sscan": true, + "Sscanf": true, + "Sscanln": true, + "State": true, + "Stringer": true, + }, + "go/ast": map[string]bool{ + "ArrayType": true, + "AssignStmt": true, + "Bad": true, + "BadDecl": true, + "BadExpr": true, + "BadStmt": true, + "BasicLit": true, + "BinaryExpr": true, + "BlockStmt": true, + "BranchStmt": true, + "CallExpr": true, + "CaseClause": true, + "ChanDir": true, + "ChanType": true, + "CommClause": true, + "Comment": true, + "CommentGroup": true, + "CommentMap": true, + "CompositeLit": true, + "Con": true, + "Decl": true, + "DeclStmt": true, + "DeferStmt": true, + "Ellipsis": true, + "EmptyStmt": true, + "Expr": true, + "ExprStmt": true, + "Field": true, + "FieldFilter": true, + "FieldList": true, + "File": true, + "FileExports": true, + "Filter": true, + "FilterDecl": true, + "FilterFile": true, + "FilterFuncDuplicates": true, + "FilterImportDuplicates": true, + "FilterPackage": true, + "FilterUnassociatedComments": true, + "ForStmt": true, + "Fprint": true, + "Fun": true, + "FuncDecl": true, + "FuncLit": true, + "FuncType": true, + "GenDecl": true, + "GoStmt": true, + "Ident": true, + "IfStmt": true, + "ImportSpec": true, + "Importer": true, + "IncDecStmt": true, + "IndexExpr": true, + "Inspect": true, + "InterfaceType": true, + "IsExported": true, + "KeyValueExpr": true, + "LabeledStmt": true, + "Lbl": true, + "MapType": true, + "MergeMode": true, + "MergePackageFiles": true, + "NewCommentMap": true, + "NewIdent": true, + "NewObj": true, + "NewPackage": true, + "NewScope": true, + "Node": true, + "NotNilFilter": true, + "ObjKind": true, + "Object": true, + "Package": true, + "PackageExports": true, + "ParenExpr": true, + "Pkg": true, + "Print": true, + "RECV": true, + "RangeStmt": true, + "ReturnStmt": true, + "SEND": true, + "Scope": true, + "SelectStmt": true, + "SelectorExpr": true, + "SendStmt": true, + "SliceExpr": true, + "SortImports": true, + "Spec": true, + "StarExpr": true, + "Stmt": true, + "StructType": true, + "SwitchStmt": true, + "Typ": true, + "TypeAssertExpr": true, + "TypeSpec": true, + "TypeSwitchStmt": true, + "UnaryExpr": true, + "ValueSpec": true, + "Var": true, + "Visitor": true, + "Walk": true, + }, + "go/build": map[string]bool{ + "AllowBinary": true, + "ArchChar": true, + "Context": true, + "Default": true, + "FindOnly": true, + "IgnoreVendor": true, + "Import": true, + "ImportComment": true, + "ImportDir": true, + "ImportMode": true, + "IsLocalImport": true, + "MultiplePackageError": true, + "NoGoError": true, + "Package": true, + "ToolDir": true, + }, + "go/constant": map[string]bool{ + "BinaryOp": true, + "BitLen": true, + "Bool": true, + "BoolVal": true, + "Bytes": true, + "Compare": true, + "Complex": true, + "Denom": true, + "Float": true, + "Float32Val": true, + "Float64Val": true, + "Imag": true, + "Int": true, + "Int64Val": true, + "Kind": true, + "Make": true, + "MakeBool": true, + "MakeFloat64": true, + "MakeFromBytes": true, + "MakeFromLiteral": true, + "MakeImag": true, + "MakeInt64": true, + "MakeString": true, + "MakeUint64": true, + "MakeUnknown": true, + "Num": true, + "Real": true, + "Shift": true, + "Sign": true, + "String": true, + "StringVal": true, + "ToComplex": true, + "ToFloat": true, + "ToInt": true, + "Uint64Val": true, + "UnaryOp": true, + "Unknown": true, + "Val": true, + "Value": true, + }, + "go/doc": map[string]bool{ + "AllDecls": true, + "AllMethods": true, + "Example": true, + "Examples": true, + "Filter": true, + "Func": true, + "IllegalPrefixes": true, + "IsPredeclared": true, + "Mode": true, + "New": true, + "Note": true, + "Package": true, + "PreserveAST": true, + "Synopsis": true, + "ToHTML": true, + "ToText": true, + "Type": true, + "Value": true, + }, + "go/format": map[string]bool{ + "Node": true, + "Source": true, + }, + "go/importer": map[string]bool{ + "Default": true, + "For": true, + "ForCompiler": true, + "Lookup": true, + }, + "go/parser": map[string]bool{ + "AllErrors": true, + "DeclarationErrors": true, + "ImportsOnly": true, + "Mode": true, + "PackageClauseOnly": true, + "ParseComments": true, + "ParseDir": true, + "ParseExpr": true, + "ParseExprFrom": true, + "ParseFile": true, + "SpuriousErrors": true, + "Trace": true, + }, + "go/printer": map[string]bool{ + "CommentedNode": true, + "Config": true, + "Fprint": true, + "Mode": true, + "RawFormat": true, + "SourcePos": true, + "TabIndent": true, + "UseSpaces": true, + }, + "go/scanner": map[string]bool{ + "Error": true, + "ErrorHandler": true, + "ErrorList": true, + "Mode": true, + "PrintError": true, + "ScanComments": true, + "Scanner": true, + }, + "go/token": map[string]bool{ + "ADD": true, + "ADD_ASSIGN": true, + "AND": true, + "AND_ASSIGN": true, + "AND_NOT": true, + "AND_NOT_ASSIGN": true, + "ARROW": true, + "ASSIGN": true, + "BREAK": true, + "CASE": true, + "CHAN": true, + "CHAR": true, + "COLON": true, + "COMMA": true, + "COMMENT": true, + "CONST": true, + "CONTINUE": true, + "DEC": true, + "DEFAULT": true, + "DEFER": true, + "DEFINE": true, + "ELLIPSIS": true, + "ELSE": true, + "EOF": true, + "EQL": true, + "FALLTHROUGH": true, + "FLOAT": true, + "FOR": true, + "FUNC": true, + "File": true, + "FileSet": true, + "GEQ": true, + "GO": true, + "GOTO": true, + "GTR": true, + "HighestPrec": true, + "IDENT": true, + "IF": true, + "ILLEGAL": true, + "IMAG": true, + "IMPORT": true, + "INC": true, + "INT": true, + "INTERFACE": true, + "IsExported": true, + "IsIdentifier": true, + "IsKeyword": true, + "LAND": true, + "LBRACE": true, + "LBRACK": true, + "LEQ": true, + "LOR": true, + "LPAREN": true, + "LSS": true, + "Lookup": true, + "LowestPrec": true, + "MAP": true, + "MUL": true, + "MUL_ASSIGN": true, + "NEQ": true, + "NOT": true, + "NewFileSet": true, + "NoPos": true, + "OR": true, + "OR_ASSIGN": true, + "PACKAGE": true, + "PERIOD": true, + "Pos": true, + "Position": true, + "QUO": true, + "QUO_ASSIGN": true, + "RANGE": true, + "RBRACE": true, + "RBRACK": true, + "REM": true, + "REM_ASSIGN": true, + "RETURN": true, + "RPAREN": true, + "SELECT": true, + "SEMICOLON": true, + "SHL": true, + "SHL_ASSIGN": true, + "SHR": true, + "SHR_ASSIGN": true, + "STRING": true, + "STRUCT": true, + "SUB": true, + "SUB_ASSIGN": true, + "SWITCH": true, + "TYPE": true, + "Token": true, + "UnaryPrec": true, + "VAR": true, + "XOR": true, + "XOR_ASSIGN": true, + }, + "go/types": map[string]bool{ + "Array": true, + "AssertableTo": true, + "AssignableTo": true, + "Basic": true, + "BasicInfo": true, + "BasicKind": true, + "Bool": true, + "Builtin": true, + "Byte": true, + "Chan": true, + "ChanDir": true, + "CheckExpr": true, + "Checker": true, + "Comparable": true, + "Complex128": true, + "Complex64": true, + "Config": true, + "Const": true, + "ConvertibleTo": true, + "DefPredeclaredTestFuncs": true, + "Default": true, + "Error": true, + "Eval": true, + "ExprString": true, + "FieldVal": true, + "Float32": true, + "Float64": true, + "Func": true, + "Id": true, + "Identical": true, + "IdenticalIgnoreTags": true, + "Implements": true, + "ImportMode": true, + "Importer": true, + "ImporterFrom": true, + "Info": true, + "Initializer": true, + "Int": true, + "Int16": true, + "Int32": true, + "Int64": true, + "Int8": true, + "Interface": true, + "Invalid": true, + "IsBoolean": true, + "IsComplex": true, + "IsConstType": true, + "IsFloat": true, + "IsInteger": true, + "IsInterface": true, + "IsNumeric": true, + "IsOrdered": true, + "IsString": true, + "IsUnsigned": true, + "IsUntyped": true, + "Label": true, + "LookupFieldOrMethod": true, + "Map": true, + "MethodExpr": true, + "MethodSet": true, + "MethodVal": true, + "MissingMethod": true, + "Named": true, + "NewArray": true, + "NewChan": true, + "NewChecker": true, + "NewConst": true, + "NewField": true, + "NewFunc": true, + "NewInterface": true, + "NewInterfaceType": true, + "NewLabel": true, + "NewMap": true, + "NewMethodSet": true, + "NewNamed": true, + "NewPackage": true, + "NewParam": true, + "NewPkgName": true, + "NewPointer": true, + "NewScope": true, + "NewSignature": true, + "NewSlice": true, + "NewStruct": true, + "NewTuple": true, + "NewTypeName": true, + "NewVar": true, + "Nil": true, + "Object": true, + "ObjectString": true, + "Package": true, + "PkgName": true, + "Pointer": true, + "Qualifier": true, + "RecvOnly": true, + "RelativeTo": true, + "Rune": true, + "Scope": true, + "Selection": true, + "SelectionKind": true, + "SelectionString": true, + "SendOnly": true, + "SendRecv": true, + "Signature": true, + "Sizes": true, + "SizesFor": true, + "Slice": true, + "StdSizes": true, + "String": true, + "Struct": true, + "Tuple": true, + "Typ": true, + "Type": true, + "TypeAndValue": true, + "TypeName": true, + "TypeString": true, + "Uint": true, + "Uint16": true, + "Uint32": true, + "Uint64": true, + "Uint8": true, + "Uintptr": true, + "Universe": true, + "Unsafe": true, + "UnsafePointer": true, + "UntypedBool": true, + "UntypedComplex": true, + "UntypedFloat": true, + "UntypedInt": true, + "UntypedNil": true, + "UntypedRune": true, + "UntypedString": true, + "Var": true, + "WriteExpr": true, + "WriteSignature": true, + "WriteType": true, + }, + "hash": map[string]bool{ + "Hash": true, + "Hash32": true, + "Hash64": true, + }, + "hash/adler32": map[string]bool{ + "Checksum": true, + "New": true, + "Size": true, + }, + "hash/crc32": map[string]bool{ + "Castagnoli": true, + "Checksum": true, + "ChecksumIEEE": true, + "IEEE": true, + "IEEETable": true, + "Koopman": true, + "MakeTable": true, + "New": true, + "NewIEEE": true, + "Size": true, + "Table": true, + "Update": true, + }, + "hash/crc64": map[string]bool{ + "Checksum": true, + "ECMA": true, + "ISO": true, + "MakeTable": true, + "New": true, + "Size": true, + "Table": true, + "Update": true, + }, + "hash/fnv": map[string]bool{ + "New128": true, + "New128a": true, + "New32": true, + "New32a": true, + "New64": true, + "New64a": true, + }, + "html": map[string]bool{ + "EscapeString": true, + "UnescapeString": true, + }, + "html/template": map[string]bool{ + "CSS": true, + "ErrAmbigContext": true, + "ErrBadHTML": true, + "ErrBranchEnd": true, + "ErrEndContext": true, + "ErrNoSuchTemplate": true, + "ErrOutputContext": true, + "ErrPartialCharset": true, + "ErrPartialEscape": true, + "ErrPredefinedEscaper": true, + "ErrRangeLoopReentry": true, + "ErrSlashAmbig": true, + "Error": true, + "ErrorCode": true, + "FuncMap": true, + "HTML": true, + "HTMLAttr": true, + "HTMLEscape": true, + "HTMLEscapeString": true, + "HTMLEscaper": true, + "IsTrue": true, + "JS": true, + "JSEscape": true, + "JSEscapeString": true, + "JSEscaper": true, + "JSStr": true, + "Must": true, + "New": true, + "OK": true, + "ParseFiles": true, + "ParseGlob": true, + "Srcset": true, + "Template": true, + "URL": true, + "URLQueryEscaper": true, + }, + "image": map[string]bool{ + "Alpha": true, + "Alpha16": true, + "Black": true, + "CMYK": true, + "Config": true, + "Decode": true, + "DecodeConfig": true, + "ErrFormat": true, + "Gray": true, + "Gray16": true, + "Image": true, + "NRGBA": true, + "NRGBA64": true, + "NYCbCrA": true, + "NewAlpha": true, + "NewAlpha16": true, + "NewCMYK": true, + "NewGray": true, + "NewGray16": true, + "NewNRGBA": true, + "NewNRGBA64": true, + "NewNYCbCrA": true, + "NewPaletted": true, + "NewRGBA": true, + "NewRGBA64": true, + "NewUniform": true, + "NewYCbCr": true, + "Opaque": true, + "Paletted": true, + "PalettedImage": true, + "Point": true, + "Pt": true, + "RGBA": true, + "RGBA64": true, + "Rect": true, + "Rectangle": true, + "RegisterFormat": true, + "Transparent": true, + "Uniform": true, + "White": true, + "YCbCr": true, + "YCbCrSubsampleRatio": true, + "YCbCrSubsampleRatio410": true, + "YCbCrSubsampleRatio411": true, + "YCbCrSubsampleRatio420": true, + "YCbCrSubsampleRatio422": true, + "YCbCrSubsampleRatio440": true, + "YCbCrSubsampleRatio444": true, + "ZP": true, + "ZR": true, + }, + "image/color": map[string]bool{ + "Alpha": true, + "Alpha16": true, + "Alpha16Model": true, + "AlphaModel": true, + "Black": true, + "CMYK": true, + "CMYKModel": true, + "CMYKToRGB": true, + "Color": true, + "Gray": true, + "Gray16": true, + "Gray16Model": true, + "GrayModel": true, + "Model": true, + "ModelFunc": true, + "NRGBA": true, + "NRGBA64": true, + "NRGBA64Model": true, + "NRGBAModel": true, + "NYCbCrA": true, + "NYCbCrAModel": true, + "Opaque": true, + "Palette": true, + "RGBA": true, + "RGBA64": true, + "RGBA64Model": true, + "RGBAModel": true, + "RGBToCMYK": true, + "RGBToYCbCr": true, + "Transparent": true, + "White": true, + "YCbCr": true, + "YCbCrModel": true, + "YCbCrToRGB": true, + }, + "image/color/palette": map[string]bool{ + "Plan9": true, + "WebSafe": true, + }, + "image/draw": map[string]bool{ + "Draw": true, + "DrawMask": true, + "Drawer": true, + "FloydSteinberg": true, + "Image": true, + "Op": true, + "Over": true, + "Quantizer": true, + "Src": true, + }, + "image/gif": map[string]bool{ + "Decode": true, + "DecodeAll": true, + "DecodeConfig": true, + "DisposalBackground": true, + "DisposalNone": true, + "DisposalPrevious": true, + "Encode": true, + "EncodeAll": true, + "GIF": true, + "Options": true, + }, + "image/jpeg": map[string]bool{ + "Decode": true, + "DecodeConfig": true, + "DefaultQuality": true, + "Encode": true, + "FormatError": true, + "Options": true, + "Reader": true, + "UnsupportedError": true, + }, + "image/png": map[string]bool{ + "BestCompression": true, + "BestSpeed": true, + "CompressionLevel": true, + "Decode": true, + "DecodeConfig": true, + "DefaultCompression": true, + "Encode": true, + "Encoder": true, + "EncoderBuffer": true, + "EncoderBufferPool": true, + "FormatError": true, + "NoCompression": true, + "UnsupportedError": true, + }, + "index/suffixarray": map[string]bool{ + "Index": true, + "New": true, + }, + "io": map[string]bool{ + "ByteReader": true, + "ByteScanner": true, + "ByteWriter": true, + "Closer": true, + "Copy": true, + "CopyBuffer": true, + "CopyN": true, + "EOF": true, + "ErrClosedPipe": true, + "ErrNoProgress": true, + "ErrShortBuffer": true, + "ErrShortWrite": true, + "ErrUnexpectedEOF": true, + "LimitReader": true, + "LimitedReader": true, + "MultiReader": true, + "MultiWriter": true, + "NewSectionReader": true, + "Pipe": true, + "PipeReader": true, + "PipeWriter": true, + "ReadAtLeast": true, + "ReadCloser": true, + "ReadFull": true, + "ReadSeeker": true, + "ReadWriteCloser": true, + "ReadWriteSeeker": true, + "ReadWriter": true, + "Reader": true, + "ReaderAt": true, + "ReaderFrom": true, + "RuneReader": true, + "RuneScanner": true, + "SectionReader": true, + "SeekCurrent": true, + "SeekEnd": true, + "SeekStart": true, + "Seeker": true, + "StringWriter": true, + "TeeReader": true, + "WriteCloser": true, + "WriteSeeker": true, + "WriteString": true, + "Writer": true, + "WriterAt": true, + "WriterTo": true, + }, + "io/ioutil": map[string]bool{ + "Discard": true, + "NopCloser": true, + "ReadAll": true, + "ReadDir": true, + "ReadFile": true, + "TempDir": true, + "TempFile": true, + "WriteFile": true, + }, + "log": map[string]bool{ + "Fatal": true, + "Fatalf": true, + "Fatalln": true, + "Flags": true, + "LUTC": true, + "Ldate": true, + "Llongfile": true, + "Lmicroseconds": true, + "Logger": true, + "Lshortfile": true, + "LstdFlags": true, + "Ltime": true, + "New": true, + "Output": true, + "Panic": true, + "Panicf": true, + "Panicln": true, + "Prefix": true, + "Print": true, + "Printf": true, + "Println": true, + "SetFlags": true, + "SetOutput": true, + "SetPrefix": true, + "Writer": true, + }, + "log/syslog": map[string]bool{ + "Dial": true, + "LOG_ALERT": true, + "LOG_AUTH": true, + "LOG_AUTHPRIV": true, + "LOG_CRIT": true, + "LOG_CRON": true, + "LOG_DAEMON": true, + "LOG_DEBUG": true, + "LOG_EMERG": true, + "LOG_ERR": true, + "LOG_FTP": true, + "LOG_INFO": true, + "LOG_KERN": true, + "LOG_LOCAL0": true, + "LOG_LOCAL1": true, + "LOG_LOCAL2": true, + "LOG_LOCAL3": true, + "LOG_LOCAL4": true, + "LOG_LOCAL5": true, + "LOG_LOCAL6": true, + "LOG_LOCAL7": true, + "LOG_LPR": true, + "LOG_MAIL": true, + "LOG_NEWS": true, + "LOG_NOTICE": true, + "LOG_SYSLOG": true, + "LOG_USER": true, + "LOG_UUCP": true, + "LOG_WARNING": true, + "New": true, + "NewLogger": true, + "Priority": true, + "Writer": true, + }, + "math": map[string]bool{ + "Abs": true, + "Acos": true, + "Acosh": true, + "Asin": true, + "Asinh": true, + "Atan": true, + "Atan2": true, + "Atanh": true, + "Cbrt": true, + "Ceil": true, + "Copysign": true, + "Cos": true, + "Cosh": true, + "Dim": true, + "E": true, + "Erf": true, + "Erfc": true, + "Erfcinv": true, + "Erfinv": true, + "Exp": true, + "Exp2": true, + "Expm1": true, + "Float32bits": true, + "Float32frombits": true, + "Float64bits": true, + "Float64frombits": true, + "Floor": true, + "Frexp": true, + "Gamma": true, + "Hypot": true, + "Ilogb": true, + "Inf": true, + "IsInf": true, + "IsNaN": true, + "J0": true, + "J1": true, + "Jn": true, + "Ldexp": true, + "Lgamma": true, + "Ln10": true, + "Ln2": true, + "Log": true, + "Log10": true, + "Log10E": true, + "Log1p": true, + "Log2": true, + "Log2E": true, + "Logb": true, + "Max": true, + "MaxFloat32": true, + "MaxFloat64": true, + "MaxInt16": true, + "MaxInt32": true, + "MaxInt64": true, + "MaxInt8": true, + "MaxUint16": true, + "MaxUint32": true, + "MaxUint64": true, + "MaxUint8": true, + "Min": true, + "MinInt16": true, + "MinInt32": true, + "MinInt64": true, + "MinInt8": true, + "Mod": true, + "Modf": true, + "NaN": true, + "Nextafter": true, + "Nextafter32": true, + "Phi": true, + "Pi": true, + "Pow": true, + "Pow10": true, + "Remainder": true, + "Round": true, + "RoundToEven": true, + "Signbit": true, + "Sin": true, + "Sincos": true, + "Sinh": true, + "SmallestNonzeroFloat32": true, + "SmallestNonzeroFloat64": true, + "Sqrt": true, + "Sqrt2": true, + "SqrtE": true, + "SqrtPhi": true, + "SqrtPi": true, + "Tan": true, + "Tanh": true, + "Trunc": true, + "Y0": true, + "Y1": true, + "Yn": true, + }, + "math/big": map[string]bool{ + "Above": true, + "Accuracy": true, + "AwayFromZero": true, + "Below": true, + "ErrNaN": true, + "Exact": true, + "Float": true, + "Int": true, + "Jacobi": true, + "MaxBase": true, + "MaxExp": true, + "MaxPrec": true, + "MinExp": true, + "NewFloat": true, + "NewInt": true, + "NewRat": true, + "ParseFloat": true, + "Rat": true, + "RoundingMode": true, + "ToNearestAway": true, + "ToNearestEven": true, + "ToNegativeInf": true, + "ToPositiveInf": true, + "ToZero": true, + "Word": true, + }, + "math/bits": map[string]bool{ + "Add": true, + "Add32": true, + "Add64": true, + "Div": true, + "Div32": true, + "Div64": true, + "LeadingZeros": true, + "LeadingZeros16": true, + "LeadingZeros32": true, + "LeadingZeros64": true, + "LeadingZeros8": true, + "Len": true, + "Len16": true, + "Len32": true, + "Len64": true, + "Len8": true, + "Mul": true, + "Mul32": true, + "Mul64": true, + "OnesCount": true, + "OnesCount16": true, + "OnesCount32": true, + "OnesCount64": true, + "OnesCount8": true, + "Reverse": true, + "Reverse16": true, + "Reverse32": true, + "Reverse64": true, + "Reverse8": true, + "ReverseBytes": true, + "ReverseBytes16": true, + "ReverseBytes32": true, + "ReverseBytes64": true, + "RotateLeft": true, + "RotateLeft16": true, + "RotateLeft32": true, + "RotateLeft64": true, + "RotateLeft8": true, + "Sub": true, + "Sub32": true, + "Sub64": true, + "TrailingZeros": true, + "TrailingZeros16": true, + "TrailingZeros32": true, + "TrailingZeros64": true, + "TrailingZeros8": true, + "UintSize": true, + }, + "math/cmplx": map[string]bool{ + "Abs": true, + "Acos": true, + "Acosh": true, + "Asin": true, + "Asinh": true, + "Atan": true, + "Atanh": true, + "Conj": true, + "Cos": true, + "Cosh": true, + "Cot": true, + "Exp": true, + "Inf": true, + "IsInf": true, + "IsNaN": true, + "Log": true, + "Log10": true, + "NaN": true, + "Phase": true, + "Polar": true, + "Pow": true, + "Rect": true, + "Sin": true, + "Sinh": true, + "Sqrt": true, + "Tan": true, + "Tanh": true, + }, + "math/rand": map[string]bool{ + "ExpFloat64": true, + "Float32": true, + "Float64": true, + "Int": true, + "Int31": true, + "Int31n": true, + "Int63": true, + "Int63n": true, + "Intn": true, + "New": true, + "NewSource": true, + "NewZipf": true, + "NormFloat64": true, + "Perm": true, + "Rand": true, + "Read": true, + "Seed": true, + "Shuffle": true, + "Source": true, + "Source64": true, + "Uint32": true, + "Uint64": true, + "Zipf": true, + }, + "mime": map[string]bool{ + "AddExtensionType": true, + "BEncoding": true, + "ErrInvalidMediaParameter": true, + "ExtensionsByType": true, + "FormatMediaType": true, + "ParseMediaType": true, + "QEncoding": true, + "TypeByExtension": true, + "WordDecoder": true, + "WordEncoder": true, + }, + "mime/multipart": map[string]bool{ + "ErrMessageTooLarge": true, + "File": true, + "FileHeader": true, + "Form": true, + "NewReader": true, + "NewWriter": true, + "Part": true, + "Reader": true, + "Writer": true, + }, + "mime/quotedprintable": map[string]bool{ + "NewReader": true, + "NewWriter": true, + "Reader": true, + "Writer": true, + }, + "net": map[string]bool{ + "Addr": true, + "AddrError": true, + "Buffers": true, + "CIDRMask": true, + "Conn": true, + "DNSConfigError": true, + "DNSError": true, + "DefaultResolver": true, + "Dial": true, + "DialIP": true, + "DialTCP": true, + "DialTimeout": true, + "DialUDP": true, + "DialUnix": true, + "Dialer": true, + "ErrWriteToConnected": true, + "Error": true, + "FileConn": true, + "FileListener": true, + "FilePacketConn": true, + "FlagBroadcast": true, + "FlagLoopback": true, + "FlagMulticast": true, + "FlagPointToPoint": true, + "FlagUp": true, + "Flags": true, + "HardwareAddr": true, + "IP": true, + "IPAddr": true, + "IPConn": true, + "IPMask": true, + "IPNet": true, + "IPv4": true, + "IPv4Mask": true, + "IPv4allrouter": true, + "IPv4allsys": true, + "IPv4bcast": true, + "IPv4len": true, + "IPv4zero": true, + "IPv6interfacelocalallnodes": true, + "IPv6len": true, + "IPv6linklocalallnodes": true, + "IPv6linklocalallrouters": true, + "IPv6loopback": true, + "IPv6unspecified": true, + "IPv6zero": true, + "Interface": true, + "InterfaceAddrs": true, + "InterfaceByIndex": true, + "InterfaceByName": true, + "Interfaces": true, + "InvalidAddrError": true, + "JoinHostPort": true, + "Listen": true, + "ListenConfig": true, + "ListenIP": true, + "ListenMulticastUDP": true, + "ListenPacket": true, + "ListenTCP": true, + "ListenUDP": true, + "ListenUnix": true, + "ListenUnixgram": true, + "Listener": true, + "LookupAddr": true, + "LookupCNAME": true, + "LookupHost": true, + "LookupIP": true, + "LookupMX": true, + "LookupNS": true, + "LookupPort": true, + "LookupSRV": true, + "LookupTXT": true, + "MX": true, + "NS": true, + "OpError": true, + "PacketConn": true, + "ParseCIDR": true, + "ParseError": true, + "ParseIP": true, + "ParseMAC": true, + "Pipe": true, + "ResolveIPAddr": true, + "ResolveTCPAddr": true, + "ResolveUDPAddr": true, + "ResolveUnixAddr": true, + "Resolver": true, + "SRV": true, + "SplitHostPort": true, + "TCPAddr": true, + "TCPConn": true, + "TCPListener": true, + "UDPAddr": true, + "UDPConn": true, + "UnixAddr": true, + "UnixConn": true, + "UnixListener": true, + "UnknownNetworkError": true, + }, + "net/http": map[string]bool{ + "CanonicalHeaderKey": true, + "Client": true, + "CloseNotifier": true, + "ConnState": true, + "Cookie": true, + "CookieJar": true, + "DefaultClient": true, + "DefaultMaxHeaderBytes": true, + "DefaultMaxIdleConnsPerHost": true, + "DefaultServeMux": true, + "DefaultTransport": true, + "DetectContentType": true, + "Dir": true, + "ErrAbortHandler": true, + "ErrBodyNotAllowed": true, + "ErrBodyReadAfterClose": true, + "ErrContentLength": true, + "ErrHandlerTimeout": true, + "ErrHeaderTooLong": true, + "ErrHijacked": true, + "ErrLineTooLong": true, + "ErrMissingBoundary": true, + "ErrMissingContentLength": true, + "ErrMissingFile": true, + "ErrNoCookie": true, + "ErrNoLocation": true, + "ErrNotMultipart": true, + "ErrNotSupported": true, + "ErrServerClosed": true, + "ErrShortBody": true, + "ErrSkipAltProtocol": true, + "ErrUnexpectedTrailer": true, + "ErrUseLastResponse": true, + "ErrWriteAfterFlush": true, + "Error": true, + "File": true, + "FileServer": true, + "FileSystem": true, + "Flusher": true, + "Get": true, + "Handle": true, + "HandleFunc": true, + "Handler": true, + "HandlerFunc": true, + "Head": true, + "Header": true, + "Hijacker": true, + "ListenAndServe": true, + "ListenAndServeTLS": true, + "LocalAddrContextKey": true, + "MaxBytesReader": true, + "MethodConnect": true, + "MethodDelete": true, + "MethodGet": true, + "MethodHead": true, + "MethodOptions": true, + "MethodPatch": true, + "MethodPost": true, + "MethodPut": true, + "MethodTrace": true, + "NewFileTransport": true, + "NewRequest": true, + "NewRequestWithContext": true, + "NewServeMux": true, + "NoBody": true, + "NotFound": true, + "NotFoundHandler": true, + "ParseHTTPVersion": true, + "ParseTime": true, + "Post": true, + "PostForm": true, + "ProtocolError": true, + "ProxyFromEnvironment": true, + "ProxyURL": true, + "PushOptions": true, + "Pusher": true, + "ReadRequest": true, + "ReadResponse": true, + "Redirect": true, + "RedirectHandler": true, + "Request": true, + "Response": true, + "ResponseWriter": true, + "RoundTripper": true, + "SameSite": true, + "SameSiteDefaultMode": true, + "SameSiteLaxMode": true, + "SameSiteNoneMode": true, + "SameSiteStrictMode": true, + "Serve": true, + "ServeContent": true, + "ServeFile": true, + "ServeMux": true, + "ServeTLS": true, + "Server": true, + "ServerContextKey": true, + "SetCookie": true, + "StateActive": true, + "StateClosed": true, + "StateHijacked": true, + "StateIdle": true, + "StateNew": true, + "StatusAccepted": true, + "StatusAlreadyReported": true, + "StatusBadGateway": true, + "StatusBadRequest": true, + "StatusConflict": true, + "StatusContinue": true, + "StatusCreated": true, + "StatusEarlyHints": true, + "StatusExpectationFailed": true, + "StatusFailedDependency": true, + "StatusForbidden": true, + "StatusFound": true, + "StatusGatewayTimeout": true, + "StatusGone": true, + "StatusHTTPVersionNotSupported": true, + "StatusIMUsed": true, + "StatusInsufficientStorage": true, + "StatusInternalServerError": true, + "StatusLengthRequired": true, + "StatusLocked": true, + "StatusLoopDetected": true, + "StatusMethodNotAllowed": true, + "StatusMisdirectedRequest": true, + "StatusMovedPermanently": true, + "StatusMultiStatus": true, + "StatusMultipleChoices": true, + "StatusNetworkAuthenticationRequired": true, + "StatusNoContent": true, + "StatusNonAuthoritativeInfo": true, + "StatusNotAcceptable": true, + "StatusNotExtended": true, + "StatusNotFound": true, + "StatusNotImplemented": true, + "StatusNotModified": true, + "StatusOK": true, + "StatusPartialContent": true, + "StatusPaymentRequired": true, + "StatusPermanentRedirect": true, + "StatusPreconditionFailed": true, + "StatusPreconditionRequired": true, + "StatusProcessing": true, + "StatusProxyAuthRequired": true, + "StatusRequestEntityTooLarge": true, + "StatusRequestHeaderFieldsTooLarge": true, + "StatusRequestTimeout": true, + "StatusRequestURITooLong": true, + "StatusRequestedRangeNotSatisfiable": true, + "StatusResetContent": true, + "StatusSeeOther": true, + "StatusServiceUnavailable": true, + "StatusSwitchingProtocols": true, + "StatusTeapot": true, + "StatusTemporaryRedirect": true, + "StatusText": true, + "StatusTooEarly": true, + "StatusTooManyRequests": true, + "StatusUnauthorized": true, + "StatusUnavailableForLegalReasons": true, + "StatusUnprocessableEntity": true, + "StatusUnsupportedMediaType": true, + "StatusUpgradeRequired": true, + "StatusUseProxy": true, + "StatusVariantAlsoNegotiates": true, + "StripPrefix": true, + "TimeFormat": true, + "TimeoutHandler": true, + "TrailerPrefix": true, + "Transport": true, + }, + "net/http/cgi": map[string]bool{ + "Handler": true, + "Request": true, + "RequestFromMap": true, + "Serve": true, + }, + "net/http/cookiejar": map[string]bool{ + "Jar": true, + "New": true, + "Options": true, + "PublicSuffixList": true, + }, + "net/http/fcgi": map[string]bool{ + "ErrConnClosed": true, + "ErrRequestAborted": true, + "ProcessEnv": true, + "Serve": true, + }, + "net/http/httptest": map[string]bool{ + "DefaultRemoteAddr": true, + "NewRecorder": true, + "NewRequest": true, + "NewServer": true, + "NewTLSServer": true, + "NewUnstartedServer": true, + "ResponseRecorder": true, + "Server": true, + }, + "net/http/httptrace": map[string]bool{ + "ClientTrace": true, + "ContextClientTrace": true, + "DNSDoneInfo": true, + "DNSStartInfo": true, + "GotConnInfo": true, + "WithClientTrace": true, + "WroteRequestInfo": true, + }, + "net/http/httputil": map[string]bool{ + "BufferPool": true, + "ClientConn": true, + "DumpRequest": true, + "DumpRequestOut": true, + "DumpResponse": true, + "ErrClosed": true, + "ErrLineTooLong": true, + "ErrPersistEOF": true, + "ErrPipeline": true, + "NewChunkedReader": true, + "NewChunkedWriter": true, + "NewClientConn": true, + "NewProxyClientConn": true, + "NewServerConn": true, + "NewSingleHostReverseProxy": true, + "ReverseProxy": true, + "ServerConn": true, + }, + "net/http/pprof": map[string]bool{ + "Cmdline": true, + "Handler": true, + "Index": true, + "Profile": true, + "Symbol": true, + "Trace": true, + }, + "net/mail": map[string]bool{ + "Address": true, + "AddressParser": true, + "ErrHeaderNotPresent": true, + "Header": true, + "Message": true, + "ParseAddress": true, + "ParseAddressList": true, + "ParseDate": true, + "ReadMessage": true, + }, + "net/rpc": map[string]bool{ + "Accept": true, + "Call": true, + "Client": true, + "ClientCodec": true, + "DefaultDebugPath": true, + "DefaultRPCPath": true, + "DefaultServer": true, + "Dial": true, + "DialHTTP": true, + "DialHTTPPath": true, + "ErrShutdown": true, + "HandleHTTP": true, + "NewClient": true, + "NewClientWithCodec": true, + "NewServer": true, + "Register": true, + "RegisterName": true, + "Request": true, + "Response": true, + "ServeCodec": true, + "ServeConn": true, + "ServeRequest": true, + "Server": true, + "ServerCodec": true, + "ServerError": true, + }, + "net/rpc/jsonrpc": map[string]bool{ + "Dial": true, + "NewClient": true, + "NewClientCodec": true, + "NewServerCodec": true, + "ServeConn": true, + }, + "net/smtp": map[string]bool{ + "Auth": true, + "CRAMMD5Auth": true, + "Client": true, + "Dial": true, + "NewClient": true, + "PlainAuth": true, + "SendMail": true, + "ServerInfo": true, + }, + "net/textproto": map[string]bool{ + "CanonicalMIMEHeaderKey": true, + "Conn": true, + "Dial": true, + "Error": true, + "MIMEHeader": true, + "NewConn": true, + "NewReader": true, + "NewWriter": true, + "Pipeline": true, + "ProtocolError": true, + "Reader": true, + "TrimBytes": true, + "TrimString": true, + "Writer": true, + }, + "net/url": map[string]bool{ + "Error": true, + "EscapeError": true, + "InvalidHostError": true, + "Parse": true, + "ParseQuery": true, + "ParseRequestURI": true, + "PathEscape": true, + "PathUnescape": true, + "QueryEscape": true, + "QueryUnescape": true, + "URL": true, + "User": true, + "UserPassword": true, + "Userinfo": true, + "Values": true, + }, + "os": map[string]bool{ + "Args": true, + "Chdir": true, + "Chmod": true, + "Chown": true, + "Chtimes": true, + "Clearenv": true, + "Create": true, + "DevNull": true, + "Environ": true, + "ErrClosed": true, + "ErrExist": true, + "ErrInvalid": true, + "ErrNoDeadline": true, + "ErrNotExist": true, + "ErrPermission": true, + "Executable": true, + "Exit": true, + "Expand": true, + "ExpandEnv": true, + "File": true, + "FileInfo": true, + "FileMode": true, + "FindProcess": true, + "Getegid": true, + "Getenv": true, + "Geteuid": true, + "Getgid": true, + "Getgroups": true, + "Getpagesize": true, + "Getpid": true, + "Getppid": true, + "Getuid": true, + "Getwd": true, + "Hostname": true, + "Interrupt": true, + "IsExist": true, + "IsNotExist": true, + "IsPathSeparator": true, + "IsPermission": true, + "IsTimeout": true, + "Kill": true, + "Lchown": true, + "Link": true, + "LinkError": true, + "LookupEnv": true, + "Lstat": true, + "Mkdir": true, + "MkdirAll": true, + "ModeAppend": true, + "ModeCharDevice": true, + "ModeDevice": true, + "ModeDir": true, + "ModeExclusive": true, + "ModeIrregular": true, + "ModeNamedPipe": true, + "ModePerm": true, + "ModeSetgid": true, + "ModeSetuid": true, + "ModeSocket": true, + "ModeSticky": true, + "ModeSymlink": true, + "ModeTemporary": true, + "ModeType": true, + "NewFile": true, + "NewSyscallError": true, + "O_APPEND": true, + "O_CREATE": true, + "O_EXCL": true, + "O_RDONLY": true, + "O_RDWR": true, + "O_SYNC": true, + "O_TRUNC": true, + "O_WRONLY": true, + "Open": true, + "OpenFile": true, + "PathError": true, + "PathListSeparator": true, + "PathSeparator": true, + "Pipe": true, + "ProcAttr": true, + "Process": true, + "ProcessState": true, + "Readlink": true, + "Remove": true, + "RemoveAll": true, + "Rename": true, + "SEEK_CUR": true, + "SEEK_END": true, + "SEEK_SET": true, + "SameFile": true, + "Setenv": true, + "Signal": true, + "StartProcess": true, + "Stat": true, + "Stderr": true, + "Stdin": true, + "Stdout": true, + "Symlink": true, + "SyscallError": true, + "TempDir": true, + "Truncate": true, + "Unsetenv": true, + "UserCacheDir": true, + "UserConfigDir": true, + "UserHomeDir": true, + }, + "os/exec": map[string]bool{ + "Cmd": true, + "Command": true, + "CommandContext": true, + "ErrNotFound": true, + "Error": true, + "ExitError": true, + "LookPath": true, + }, + "os/signal": map[string]bool{ + "Ignore": true, + "Ignored": true, + "Notify": true, + "Reset": true, + "Stop": true, + }, + "os/user": map[string]bool{ + "Current": true, + "Group": true, + "Lookup": true, + "LookupGroup": true, + "LookupGroupId": true, + "LookupId": true, + "UnknownGroupError": true, + "UnknownGroupIdError": true, + "UnknownUserError": true, + "UnknownUserIdError": true, + "User": true, + }, + "path": map[string]bool{ + "Base": true, + "Clean": true, + "Dir": true, + "ErrBadPattern": true, + "Ext": true, + "IsAbs": true, + "Join": true, + "Match": true, + "Split": true, + }, + "path/filepath": map[string]bool{ + "Abs": true, + "Base": true, + "Clean": true, + "Dir": true, + "ErrBadPattern": true, + "EvalSymlinks": true, + "Ext": true, + "FromSlash": true, + "Glob": true, + "HasPrefix": true, + "IsAbs": true, + "Join": true, + "ListSeparator": true, + "Match": true, + "Rel": true, + "Separator": true, + "SkipDir": true, + "Split": true, + "SplitList": true, + "ToSlash": true, + "VolumeName": true, + "Walk": true, + "WalkFunc": true, + }, + "plugin": map[string]bool{ + "Open": true, + "Plugin": true, + "Symbol": true, + }, + "reflect": map[string]bool{ + "Append": true, + "AppendSlice": true, + "Array": true, + "ArrayOf": true, + "Bool": true, + "BothDir": true, + "Chan": true, + "ChanDir": true, + "ChanOf": true, + "Complex128": true, + "Complex64": true, + "Copy": true, + "DeepEqual": true, + "Float32": true, + "Float64": true, + "Func": true, + "FuncOf": true, + "Indirect": true, + "Int": true, + "Int16": true, + "Int32": true, + "Int64": true, + "Int8": true, + "Interface": true, + "Invalid": true, + "Kind": true, + "MakeChan": true, + "MakeFunc": true, + "MakeMap": true, + "MakeMapWithSize": true, + "MakeSlice": true, + "Map": true, + "MapIter": true, + "MapOf": true, + "Method": true, + "New": true, + "NewAt": true, + "Ptr": true, + "PtrTo": true, + "RecvDir": true, + "Select": true, + "SelectCase": true, + "SelectDefault": true, + "SelectDir": true, + "SelectRecv": true, + "SelectSend": true, + "SendDir": true, + "Slice": true, + "SliceHeader": true, + "SliceOf": true, + "String": true, + "StringHeader": true, + "Struct": true, + "StructField": true, + "StructOf": true, + "StructTag": true, + "Swapper": true, + "Type": true, + "TypeOf": true, + "Uint": true, + "Uint16": true, + "Uint32": true, + "Uint64": true, + "Uint8": true, + "Uintptr": true, + "UnsafePointer": true, + "Value": true, + "ValueError": true, + "ValueOf": true, + "Zero": true, + }, + "regexp": map[string]bool{ + "Compile": true, + "CompilePOSIX": true, + "Match": true, + "MatchReader": true, + "MatchString": true, + "MustCompile": true, + "MustCompilePOSIX": true, + "QuoteMeta": true, + "Regexp": true, + }, + "regexp/syntax": map[string]bool{ + "ClassNL": true, + "Compile": true, + "DotNL": true, + "EmptyBeginLine": true, + "EmptyBeginText": true, + "EmptyEndLine": true, + "EmptyEndText": true, + "EmptyNoWordBoundary": true, + "EmptyOp": true, + "EmptyOpContext": true, + "EmptyWordBoundary": true, + "ErrInternalError": true, + "ErrInvalidCharClass": true, + "ErrInvalidCharRange": true, + "ErrInvalidEscape": true, + "ErrInvalidNamedCapture": true, + "ErrInvalidPerlOp": true, + "ErrInvalidRepeatOp": true, + "ErrInvalidRepeatSize": true, + "ErrInvalidUTF8": true, + "ErrMissingBracket": true, + "ErrMissingParen": true, + "ErrMissingRepeatArgument": true, + "ErrTrailingBackslash": true, + "ErrUnexpectedParen": true, + "Error": true, + "ErrorCode": true, + "Flags": true, + "FoldCase": true, + "Inst": true, + "InstAlt": true, + "InstAltMatch": true, + "InstCapture": true, + "InstEmptyWidth": true, + "InstFail": true, + "InstMatch": true, + "InstNop": true, + "InstOp": true, + "InstRune": true, + "InstRune1": true, + "InstRuneAny": true, + "InstRuneAnyNotNL": true, + "IsWordChar": true, + "Literal": true, + "MatchNL": true, + "NonGreedy": true, + "OneLine": true, + "Op": true, + "OpAlternate": true, + "OpAnyChar": true, + "OpAnyCharNotNL": true, + "OpBeginLine": true, + "OpBeginText": true, + "OpCapture": true, + "OpCharClass": true, + "OpConcat": true, + "OpEmptyMatch": true, + "OpEndLine": true, + "OpEndText": true, + "OpLiteral": true, + "OpNoMatch": true, + "OpNoWordBoundary": true, + "OpPlus": true, + "OpQuest": true, + "OpRepeat": true, + "OpStar": true, + "OpWordBoundary": true, + "POSIX": true, + "Parse": true, + "Perl": true, + "PerlX": true, + "Prog": true, + "Regexp": true, + "Simple": true, + "UnicodeGroups": true, + "WasDollar": true, + }, + "runtime": map[string]bool{ + "BlockProfile": true, + "BlockProfileRecord": true, + "Breakpoint": true, + "CPUProfile": true, + "Caller": true, + "Callers": true, + "CallersFrames": true, + "Compiler": true, + "Error": true, + "Frame": true, + "Frames": true, + "Func": true, + "FuncForPC": true, + "GC": true, + "GOARCH": true, + "GOMAXPROCS": true, + "GOOS": true, + "GOROOT": true, + "Goexit": true, + "GoroutineProfile": true, + "Gosched": true, + "KeepAlive": true, + "LockOSThread": true, + "MemProfile": true, + "MemProfileRate": true, + "MemProfileRecord": true, + "MemStats": true, + "MutexProfile": true, + "NumCPU": true, + "NumCgoCall": true, + "NumGoroutine": true, + "ReadMemStats": true, + "ReadTrace": true, + "SetBlockProfileRate": true, + "SetCPUProfileRate": true, + "SetCgoTraceback": true, + "SetFinalizer": true, + "SetMutexProfileFraction": true, + "Stack": true, + "StackRecord": true, + "StartTrace": true, + "StopTrace": true, + "ThreadCreateProfile": true, + "TypeAssertionError": true, + "UnlockOSThread": true, + "Version": true, + }, + "runtime/debug": map[string]bool{ + "BuildInfo": true, + "FreeOSMemory": true, + "GCStats": true, + "Module": true, + "PrintStack": true, + "ReadBuildInfo": true, + "ReadGCStats": true, + "SetGCPercent": true, + "SetMaxStack": true, + "SetMaxThreads": true, + "SetPanicOnFault": true, + "SetTraceback": true, + "Stack": true, + "WriteHeapDump": true, + }, + "runtime/pprof": map[string]bool{ + "Do": true, + "ForLabels": true, + "Label": true, + "LabelSet": true, + "Labels": true, + "Lookup": true, + "NewProfile": true, + "Profile": true, + "Profiles": true, + "SetGoroutineLabels": true, + "StartCPUProfile": true, + "StopCPUProfile": true, + "WithLabels": true, + "WriteHeapProfile": true, + }, + "runtime/trace": map[string]bool{ + "IsEnabled": true, + "Log": true, + "Logf": true, + "NewTask": true, + "Region": true, + "Start": true, + "StartRegion": true, + "Stop": true, + "Task": true, + "WithRegion": true, + }, + "sort": map[string]bool{ + "Float64Slice": true, + "Float64s": true, + "Float64sAreSorted": true, + "IntSlice": true, + "Interface": true, + "Ints": true, + "IntsAreSorted": true, + "IsSorted": true, + "Reverse": true, + "Search": true, + "SearchFloat64s": true, + "SearchInts": true, + "SearchStrings": true, + "Slice": true, + "SliceIsSorted": true, + "SliceStable": true, + "Sort": true, + "Stable": true, + "StringSlice": true, + "Strings": true, + "StringsAreSorted": true, + }, + "strconv": map[string]bool{ + "AppendBool": true, + "AppendFloat": true, + "AppendInt": true, + "AppendQuote": true, + "AppendQuoteRune": true, + "AppendQuoteRuneToASCII": true, + "AppendQuoteRuneToGraphic": true, + "AppendQuoteToASCII": true, + "AppendQuoteToGraphic": true, + "AppendUint": true, + "Atoi": true, + "CanBackquote": true, + "ErrRange": true, + "ErrSyntax": true, + "FormatBool": true, + "FormatFloat": true, + "FormatInt": true, + "FormatUint": true, + "IntSize": true, + "IsGraphic": true, + "IsPrint": true, + "Itoa": true, + "NumError": true, + "ParseBool": true, + "ParseFloat": true, + "ParseInt": true, + "ParseUint": true, + "Quote": true, + "QuoteRune": true, + "QuoteRuneToASCII": true, + "QuoteRuneToGraphic": true, + "QuoteToASCII": true, + "QuoteToGraphic": true, + "Unquote": true, + "UnquoteChar": true, + }, + "strings": map[string]bool{ + "Builder": true, + "Compare": true, + "Contains": true, + "ContainsAny": true, + "ContainsRune": true, + "Count": true, + "EqualFold": true, + "Fields": true, + "FieldsFunc": true, + "HasPrefix": true, + "HasSuffix": true, + "Index": true, + "IndexAny": true, + "IndexByte": true, + "IndexFunc": true, + "IndexRune": true, + "Join": true, + "LastIndex": true, + "LastIndexAny": true, + "LastIndexByte": true, + "LastIndexFunc": true, + "Map": true, + "NewReader": true, + "NewReplacer": true, + "Reader": true, + "Repeat": true, + "Replace": true, + "ReplaceAll": true, + "Replacer": true, + "Split": true, + "SplitAfter": true, + "SplitAfterN": true, + "SplitN": true, + "Title": true, + "ToLower": true, + "ToLowerSpecial": true, + "ToTitle": true, + "ToTitleSpecial": true, + "ToUpper": true, + "ToUpperSpecial": true, + "ToValidUTF8": true, + "Trim": true, + "TrimFunc": true, + "TrimLeft": true, + "TrimLeftFunc": true, + "TrimPrefix": true, + "TrimRight": true, + "TrimRightFunc": true, + "TrimSpace": true, + "TrimSuffix": true, + }, + "sync": map[string]bool{ + "Cond": true, + "Locker": true, + "Map": true, + "Mutex": true, + "NewCond": true, + "Once": true, + "Pool": true, + "RWMutex": true, + "WaitGroup": true, + }, + "sync/atomic": map[string]bool{ + "AddInt32": true, + "AddInt64": true, + "AddUint32": true, + "AddUint64": true, + "AddUintptr": true, + "CompareAndSwapInt32": true, + "CompareAndSwapInt64": true, + "CompareAndSwapPointer": true, + "CompareAndSwapUint32": true, + "CompareAndSwapUint64": true, + "CompareAndSwapUintptr": true, + "LoadInt32": true, + "LoadInt64": true, + "LoadPointer": true, + "LoadUint32": true, + "LoadUint64": true, + "LoadUintptr": true, + "StoreInt32": true, + "StoreInt64": true, + "StorePointer": true, + "StoreUint32": true, + "StoreUint64": true, + "StoreUintptr": true, + "SwapInt32": true, + "SwapInt64": true, + "SwapPointer": true, + "SwapUint32": true, + "SwapUint64": true, + "SwapUintptr": true, + "Value": true, + }, + "syscall": map[string]bool{ + "AF_ALG": true, + "AF_APPLETALK": true, + "AF_ARP": true, + "AF_ASH": true, + "AF_ATM": true, + "AF_ATMPVC": true, + "AF_ATMSVC": true, + "AF_AX25": true, + "AF_BLUETOOTH": true, + "AF_BRIDGE": true, + "AF_CAIF": true, + "AF_CAN": true, + "AF_CCITT": true, + "AF_CHAOS": true, + "AF_CNT": true, + "AF_COIP": true, + "AF_DATAKIT": true, + "AF_DECnet": true, + "AF_DLI": true, + "AF_E164": true, + "AF_ECMA": true, + "AF_ECONET": true, + "AF_ENCAP": true, + "AF_FILE": true, + "AF_HYLINK": true, + "AF_IEEE80211": true, + "AF_IEEE802154": true, + "AF_IMPLINK": true, + "AF_INET": true, + "AF_INET6": true, + "AF_INET6_SDP": true, + "AF_INET_SDP": true, + "AF_IPX": true, + "AF_IRDA": true, + "AF_ISDN": true, + "AF_ISO": true, + "AF_IUCV": true, + "AF_KEY": true, + "AF_LAT": true, + "AF_LINK": true, + "AF_LLC": true, + "AF_LOCAL": true, + "AF_MAX": true, + "AF_MPLS": true, + "AF_NATM": true, + "AF_NDRV": true, + "AF_NETBEUI": true, + "AF_NETBIOS": true, + "AF_NETGRAPH": true, + "AF_NETLINK": true, + "AF_NETROM": true, + "AF_NS": true, + "AF_OROUTE": true, + "AF_OSI": true, + "AF_PACKET": true, + "AF_PHONET": true, + "AF_PPP": true, + "AF_PPPOX": true, + "AF_PUP": true, + "AF_RDS": true, + "AF_RESERVED_36": true, + "AF_ROSE": true, + "AF_ROUTE": true, + "AF_RXRPC": true, + "AF_SCLUSTER": true, + "AF_SECURITY": true, + "AF_SIP": true, + "AF_SLOW": true, + "AF_SNA": true, + "AF_SYSTEM": true, + "AF_TIPC": true, + "AF_UNIX": true, + "AF_UNSPEC": true, + "AF_VENDOR00": true, + "AF_VENDOR01": true, + "AF_VENDOR02": true, + "AF_VENDOR03": true, + "AF_VENDOR04": true, + "AF_VENDOR05": true, + "AF_VENDOR06": true, + "AF_VENDOR07": true, + "AF_VENDOR08": true, + "AF_VENDOR09": true, + "AF_VENDOR10": true, + "AF_VENDOR11": true, + "AF_VENDOR12": true, + "AF_VENDOR13": true, + "AF_VENDOR14": true, + "AF_VENDOR15": true, + "AF_VENDOR16": true, + "AF_VENDOR17": true, + "AF_VENDOR18": true, + "AF_VENDOR19": true, + "AF_VENDOR20": true, + "AF_VENDOR21": true, + "AF_VENDOR22": true, + "AF_VENDOR23": true, + "AF_VENDOR24": true, + "AF_VENDOR25": true, + "AF_VENDOR26": true, + "AF_VENDOR27": true, + "AF_VENDOR28": true, + "AF_VENDOR29": true, + "AF_VENDOR30": true, + "AF_VENDOR31": true, + "AF_VENDOR32": true, + "AF_VENDOR33": true, + "AF_VENDOR34": true, + "AF_VENDOR35": true, + "AF_VENDOR36": true, + "AF_VENDOR37": true, + "AF_VENDOR38": true, + "AF_VENDOR39": true, + "AF_VENDOR40": true, + "AF_VENDOR41": true, + "AF_VENDOR42": true, + "AF_VENDOR43": true, + "AF_VENDOR44": true, + "AF_VENDOR45": true, + "AF_VENDOR46": true, + "AF_VENDOR47": true, + "AF_WANPIPE": true, + "AF_X25": true, + "AI_CANONNAME": true, + "AI_NUMERICHOST": true, + "AI_PASSIVE": true, + "APPLICATION_ERROR": true, + "ARPHRD_ADAPT": true, + "ARPHRD_APPLETLK": true, + "ARPHRD_ARCNET": true, + "ARPHRD_ASH": true, + "ARPHRD_ATM": true, + "ARPHRD_AX25": true, + "ARPHRD_BIF": true, + "ARPHRD_CHAOS": true, + "ARPHRD_CISCO": true, + "ARPHRD_CSLIP": true, + "ARPHRD_CSLIP6": true, + "ARPHRD_DDCMP": true, + "ARPHRD_DLCI": true, + "ARPHRD_ECONET": true, + "ARPHRD_EETHER": true, + "ARPHRD_ETHER": true, + "ARPHRD_EUI64": true, + "ARPHRD_FCAL": true, + "ARPHRD_FCFABRIC": true, + "ARPHRD_FCPL": true, + "ARPHRD_FCPP": true, + "ARPHRD_FDDI": true, + "ARPHRD_FRAD": true, + "ARPHRD_FRELAY": true, + "ARPHRD_HDLC": true, + "ARPHRD_HIPPI": true, + "ARPHRD_HWX25": true, + "ARPHRD_IEEE1394": true, + "ARPHRD_IEEE802": true, + "ARPHRD_IEEE80211": true, + "ARPHRD_IEEE80211_PRISM": true, + "ARPHRD_IEEE80211_RADIOTAP": true, + "ARPHRD_IEEE802154": true, + "ARPHRD_IEEE802154_PHY": true, + "ARPHRD_IEEE802_TR": true, + "ARPHRD_INFINIBAND": true, + "ARPHRD_IPDDP": true, + "ARPHRD_IPGRE": true, + "ARPHRD_IRDA": true, + "ARPHRD_LAPB": true, + "ARPHRD_LOCALTLK": true, + "ARPHRD_LOOPBACK": true, + "ARPHRD_METRICOM": true, + "ARPHRD_NETROM": true, + "ARPHRD_NONE": true, + "ARPHRD_PIMREG": true, + "ARPHRD_PPP": true, + "ARPHRD_PRONET": true, + "ARPHRD_RAWHDLC": true, + "ARPHRD_ROSE": true, + "ARPHRD_RSRVD": true, + "ARPHRD_SIT": true, + "ARPHRD_SKIP": true, + "ARPHRD_SLIP": true, + "ARPHRD_SLIP6": true, + "ARPHRD_STRIP": true, + "ARPHRD_TUNNEL": true, + "ARPHRD_TUNNEL6": true, + "ARPHRD_VOID": true, + "ARPHRD_X25": true, + "AUTHTYPE_CLIENT": true, + "AUTHTYPE_SERVER": true, + "Accept": true, + "Accept4": true, + "AcceptEx": true, + "Access": true, + "Acct": true, + "AddrinfoW": true, + "Adjtime": true, + "Adjtimex": true, + "AttachLsf": true, + "B0": true, + "B1000000": true, + "B110": true, + "B115200": true, + "B1152000": true, + "B1200": true, + "B134": true, + "B14400": true, + "B150": true, + "B1500000": true, + "B1800": true, + "B19200": true, + "B200": true, + "B2000000": true, + "B230400": true, + "B2400": true, + "B2500000": true, + "B28800": true, + "B300": true, + "B3000000": true, + "B3500000": true, + "B38400": true, + "B4000000": true, + "B460800": true, + "B4800": true, + "B50": true, + "B500000": true, + "B57600": true, + "B576000": true, + "B600": true, + "B7200": true, + "B75": true, + "B76800": true, + "B921600": true, + "B9600": true, + "BASE_PROTOCOL": true, + "BIOCFEEDBACK": true, + "BIOCFLUSH": true, + "BIOCGBLEN": true, + "BIOCGDIRECTION": true, + "BIOCGDIRFILT": true, + "BIOCGDLT": true, + "BIOCGDLTLIST": true, + "BIOCGETBUFMODE": true, + "BIOCGETIF": true, + "BIOCGETZMAX": true, + "BIOCGFEEDBACK": true, + "BIOCGFILDROP": true, + "BIOCGHDRCMPLT": true, + "BIOCGRSIG": true, + "BIOCGRTIMEOUT": true, + "BIOCGSEESENT": true, + "BIOCGSTATS": true, + "BIOCGSTATSOLD": true, + "BIOCGTSTAMP": true, + "BIOCIMMEDIATE": true, + "BIOCLOCK": true, + "BIOCPROMISC": true, + "BIOCROTZBUF": true, + "BIOCSBLEN": true, + "BIOCSDIRECTION": true, + "BIOCSDIRFILT": true, + "BIOCSDLT": true, + "BIOCSETBUFMODE": true, + "BIOCSETF": true, + "BIOCSETFNR": true, + "BIOCSETIF": true, + "BIOCSETWF": true, + "BIOCSETZBUF": true, + "BIOCSFEEDBACK": true, + "BIOCSFILDROP": true, + "BIOCSHDRCMPLT": true, + "BIOCSRSIG": true, + "BIOCSRTIMEOUT": true, + "BIOCSSEESENT": true, + "BIOCSTCPF": true, + "BIOCSTSTAMP": true, + "BIOCSUDPF": true, + "BIOCVERSION": true, + "BPF_A": true, + "BPF_ABS": true, + "BPF_ADD": true, + "BPF_ALIGNMENT": true, + "BPF_ALIGNMENT32": true, + "BPF_ALU": true, + "BPF_AND": true, + "BPF_B": true, + "BPF_BUFMODE_BUFFER": true, + "BPF_BUFMODE_ZBUF": true, + "BPF_DFLTBUFSIZE": true, + "BPF_DIRECTION_IN": true, + "BPF_DIRECTION_OUT": true, + "BPF_DIV": true, + "BPF_H": true, + "BPF_IMM": true, + "BPF_IND": true, + "BPF_JA": true, + "BPF_JEQ": true, + "BPF_JGE": true, + "BPF_JGT": true, + "BPF_JMP": true, + "BPF_JSET": true, + "BPF_K": true, + "BPF_LD": true, + "BPF_LDX": true, + "BPF_LEN": true, + "BPF_LSH": true, + "BPF_MAJOR_VERSION": true, + "BPF_MAXBUFSIZE": true, + "BPF_MAXINSNS": true, + "BPF_MEM": true, + "BPF_MEMWORDS": true, + "BPF_MINBUFSIZE": true, + "BPF_MINOR_VERSION": true, + "BPF_MISC": true, + "BPF_MSH": true, + "BPF_MUL": true, + "BPF_NEG": true, + "BPF_OR": true, + "BPF_RELEASE": true, + "BPF_RET": true, + "BPF_RSH": true, + "BPF_ST": true, + "BPF_STX": true, + "BPF_SUB": true, + "BPF_TAX": true, + "BPF_TXA": true, + "BPF_T_BINTIME": true, + "BPF_T_BINTIME_FAST": true, + "BPF_T_BINTIME_MONOTONIC": true, + "BPF_T_BINTIME_MONOTONIC_FAST": true, + "BPF_T_FAST": true, + "BPF_T_FLAG_MASK": true, + "BPF_T_FORMAT_MASK": true, + "BPF_T_MICROTIME": true, + "BPF_T_MICROTIME_FAST": true, + "BPF_T_MICROTIME_MONOTONIC": true, + "BPF_T_MICROTIME_MONOTONIC_FAST": true, + "BPF_T_MONOTONIC": true, + "BPF_T_MONOTONIC_FAST": true, + "BPF_T_NANOTIME": true, + "BPF_T_NANOTIME_FAST": true, + "BPF_T_NANOTIME_MONOTONIC": true, + "BPF_T_NANOTIME_MONOTONIC_FAST": true, + "BPF_T_NONE": true, + "BPF_T_NORMAL": true, + "BPF_W": true, + "BPF_X": true, + "BRKINT": true, + "Bind": true, + "BindToDevice": true, + "BpfBuflen": true, + "BpfDatalink": true, + "BpfHdr": true, + "BpfHeadercmpl": true, + "BpfInsn": true, + "BpfInterface": true, + "BpfJump": true, + "BpfProgram": true, + "BpfStat": true, + "BpfStats": true, + "BpfStmt": true, + "BpfTimeout": true, + "BpfTimeval": true, + "BpfVersion": true, + "BpfZbuf": true, + "BpfZbufHeader": true, + "ByHandleFileInformation": true, + "BytePtrFromString": true, + "ByteSliceFromString": true, + "CCR0_FLUSH": true, + "CERT_CHAIN_POLICY_AUTHENTICODE": true, + "CERT_CHAIN_POLICY_AUTHENTICODE_TS": true, + "CERT_CHAIN_POLICY_BASE": true, + "CERT_CHAIN_POLICY_BASIC_CONSTRAINTS": true, + "CERT_CHAIN_POLICY_EV": true, + "CERT_CHAIN_POLICY_MICROSOFT_ROOT": true, + "CERT_CHAIN_POLICY_NT_AUTH": true, + "CERT_CHAIN_POLICY_SSL": true, + "CERT_E_CN_NO_MATCH": true, + "CERT_E_EXPIRED": true, + "CERT_E_PURPOSE": true, + "CERT_E_ROLE": true, + "CERT_E_UNTRUSTEDROOT": true, + "CERT_STORE_ADD_ALWAYS": true, + "CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG": true, + "CERT_STORE_PROV_MEMORY": true, + "CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT": true, + "CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT": true, + "CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT": true, + "CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT": true, + "CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT": true, + "CERT_TRUST_INVALID_BASIC_CONSTRAINTS": true, + "CERT_TRUST_INVALID_EXTENSION": true, + "CERT_TRUST_INVALID_NAME_CONSTRAINTS": true, + "CERT_TRUST_INVALID_POLICY_CONSTRAINTS": true, + "CERT_TRUST_IS_CYCLIC": true, + "CERT_TRUST_IS_EXPLICIT_DISTRUST": true, + "CERT_TRUST_IS_NOT_SIGNATURE_VALID": true, + "CERT_TRUST_IS_NOT_TIME_VALID": true, + "CERT_TRUST_IS_NOT_VALID_FOR_USAGE": true, + "CERT_TRUST_IS_OFFLINE_REVOCATION": true, + "CERT_TRUST_IS_REVOKED": true, + "CERT_TRUST_IS_UNTRUSTED_ROOT": true, + "CERT_TRUST_NO_ERROR": true, + "CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY": true, + "CERT_TRUST_REVOCATION_STATUS_UNKNOWN": true, + "CFLUSH": true, + "CLOCAL": true, + "CLONE_CHILD_CLEARTID": true, + "CLONE_CHILD_SETTID": true, + "CLONE_CSIGNAL": true, + "CLONE_DETACHED": true, + "CLONE_FILES": true, + "CLONE_FS": true, + "CLONE_IO": true, + "CLONE_NEWIPC": true, + "CLONE_NEWNET": true, + "CLONE_NEWNS": true, + "CLONE_NEWPID": true, + "CLONE_NEWUSER": true, + "CLONE_NEWUTS": true, + "CLONE_PARENT": true, + "CLONE_PARENT_SETTID": true, + "CLONE_PID": true, + "CLONE_PTRACE": true, + "CLONE_SETTLS": true, + "CLONE_SIGHAND": true, + "CLONE_SYSVSEM": true, + "CLONE_THREAD": true, + "CLONE_UNTRACED": true, + "CLONE_VFORK": true, + "CLONE_VM": true, + "CPUID_CFLUSH": true, + "CREAD": true, + "CREATE_ALWAYS": true, + "CREATE_NEW": true, + "CREATE_NEW_PROCESS_GROUP": true, + "CREATE_UNICODE_ENVIRONMENT": true, + "CRYPT_DEFAULT_CONTAINER_OPTIONAL": true, + "CRYPT_DELETEKEYSET": true, + "CRYPT_MACHINE_KEYSET": true, + "CRYPT_NEWKEYSET": true, + "CRYPT_SILENT": true, + "CRYPT_VERIFYCONTEXT": true, + "CS5": true, + "CS6": true, + "CS7": true, + "CS8": true, + "CSIZE": true, + "CSTART": true, + "CSTATUS": true, + "CSTOP": true, + "CSTOPB": true, + "CSUSP": true, + "CTL_MAXNAME": true, + "CTL_NET": true, + "CTL_QUERY": true, + "CTRL_BREAK_EVENT": true, + "CTRL_C_EVENT": true, + "CancelIo": true, + "CancelIoEx": true, + "CertAddCertificateContextToStore": true, + "CertChainContext": true, + "CertChainElement": true, + "CertChainPara": true, + "CertChainPolicyPara": true, + "CertChainPolicyStatus": true, + "CertCloseStore": true, + "CertContext": true, + "CertCreateCertificateContext": true, + "CertEnhKeyUsage": true, + "CertEnumCertificatesInStore": true, + "CertFreeCertificateChain": true, + "CertFreeCertificateContext": true, + "CertGetCertificateChain": true, + "CertInfo": true, + "CertOpenStore": true, + "CertOpenSystemStore": true, + "CertRevocationCrlInfo": true, + "CertRevocationInfo": true, + "CertSimpleChain": true, + "CertTrustListInfo": true, + "CertTrustStatus": true, + "CertUsageMatch": true, + "CertVerifyCertificateChainPolicy": true, + "Chdir": true, + "CheckBpfVersion": true, + "Chflags": true, + "Chmod": true, + "Chown": true, + "Chroot": true, + "Clearenv": true, + "Close": true, + "CloseHandle": true, + "CloseOnExec": true, + "Closesocket": true, + "CmsgLen": true, + "CmsgSpace": true, + "Cmsghdr": true, + "CommandLineToArgv": true, + "ComputerName": true, + "Conn": true, + "Connect": true, + "ConnectEx": true, + "ConvertSidToStringSid": true, + "ConvertStringSidToSid": true, + "CopySid": true, + "Creat": true, + "CreateDirectory": true, + "CreateFile": true, + "CreateFileMapping": true, + "CreateHardLink": true, + "CreateIoCompletionPort": true, + "CreatePipe": true, + "CreateProcess": true, + "CreateProcessAsUser": true, + "CreateSymbolicLink": true, + "CreateToolhelp32Snapshot": true, + "Credential": true, + "CryptAcquireContext": true, + "CryptGenRandom": true, + "CryptReleaseContext": true, + "DIOCBSFLUSH": true, + "DIOCOSFPFLUSH": true, + "DLL": true, + "DLLError": true, + "DLT_A429": true, + "DLT_A653_ICM": true, + "DLT_AIRONET_HEADER": true, + "DLT_AOS": true, + "DLT_APPLE_IP_OVER_IEEE1394": true, + "DLT_ARCNET": true, + "DLT_ARCNET_LINUX": true, + "DLT_ATM_CLIP": true, + "DLT_ATM_RFC1483": true, + "DLT_AURORA": true, + "DLT_AX25": true, + "DLT_AX25_KISS": true, + "DLT_BACNET_MS_TP": true, + "DLT_BLUETOOTH_HCI_H4": true, + "DLT_BLUETOOTH_HCI_H4_WITH_PHDR": true, + "DLT_CAN20B": true, + "DLT_CAN_SOCKETCAN": true, + "DLT_CHAOS": true, + "DLT_CHDLC": true, + "DLT_CISCO_IOS": true, + "DLT_C_HDLC": true, + "DLT_C_HDLC_WITH_DIR": true, + "DLT_DBUS": true, + "DLT_DECT": true, + "DLT_DOCSIS": true, + "DLT_DVB_CI": true, + "DLT_ECONET": true, + "DLT_EN10MB": true, + "DLT_EN3MB": true, + "DLT_ENC": true, + "DLT_ERF": true, + "DLT_ERF_ETH": true, + "DLT_ERF_POS": true, + "DLT_FC_2": true, + "DLT_FC_2_WITH_FRAME_DELIMS": true, + "DLT_FDDI": true, + "DLT_FLEXRAY": true, + "DLT_FRELAY": true, + "DLT_FRELAY_WITH_DIR": true, + "DLT_GCOM_SERIAL": true, + "DLT_GCOM_T1E1": true, + "DLT_GPF_F": true, + "DLT_GPF_T": true, + "DLT_GPRS_LLC": true, + "DLT_GSMTAP_ABIS": true, + "DLT_GSMTAP_UM": true, + "DLT_HDLC": true, + "DLT_HHDLC": true, + "DLT_HIPPI": true, + "DLT_IBM_SN": true, + "DLT_IBM_SP": true, + "DLT_IEEE802": true, + "DLT_IEEE802_11": true, + "DLT_IEEE802_11_RADIO": true, + "DLT_IEEE802_11_RADIO_AVS": true, + "DLT_IEEE802_15_4": true, + "DLT_IEEE802_15_4_LINUX": true, + "DLT_IEEE802_15_4_NOFCS": true, + "DLT_IEEE802_15_4_NONASK_PHY": true, + "DLT_IEEE802_16_MAC_CPS": true, + "DLT_IEEE802_16_MAC_CPS_RADIO": true, + "DLT_IPFILTER": true, + "DLT_IPMB": true, + "DLT_IPMB_LINUX": true, + "DLT_IPNET": true, + "DLT_IPOIB": true, + "DLT_IPV4": true, + "DLT_IPV6": true, + "DLT_IP_OVER_FC": true, + "DLT_JUNIPER_ATM1": true, + "DLT_JUNIPER_ATM2": true, + "DLT_JUNIPER_ATM_CEMIC": true, + "DLT_JUNIPER_CHDLC": true, + "DLT_JUNIPER_ES": true, + "DLT_JUNIPER_ETHER": true, + "DLT_JUNIPER_FIBRECHANNEL": true, + "DLT_JUNIPER_FRELAY": true, + "DLT_JUNIPER_GGSN": true, + "DLT_JUNIPER_ISM": true, + "DLT_JUNIPER_MFR": true, + "DLT_JUNIPER_MLFR": true, + "DLT_JUNIPER_MLPPP": true, + "DLT_JUNIPER_MONITOR": true, + "DLT_JUNIPER_PIC_PEER": true, + "DLT_JUNIPER_PPP": true, + "DLT_JUNIPER_PPPOE": true, + "DLT_JUNIPER_PPPOE_ATM": true, + "DLT_JUNIPER_SERVICES": true, + "DLT_JUNIPER_SRX_E2E": true, + "DLT_JUNIPER_ST": true, + "DLT_JUNIPER_VP": true, + "DLT_JUNIPER_VS": true, + "DLT_LAPB_WITH_DIR": true, + "DLT_LAPD": true, + "DLT_LIN": true, + "DLT_LINUX_EVDEV": true, + "DLT_LINUX_IRDA": true, + "DLT_LINUX_LAPD": true, + "DLT_LINUX_PPP_WITHDIRECTION": true, + "DLT_LINUX_SLL": true, + "DLT_LOOP": true, + "DLT_LTALK": true, + "DLT_MATCHING_MAX": true, + "DLT_MATCHING_MIN": true, + "DLT_MFR": true, + "DLT_MOST": true, + "DLT_MPEG_2_TS": true, + "DLT_MPLS": true, + "DLT_MTP2": true, + "DLT_MTP2_WITH_PHDR": true, + "DLT_MTP3": true, + "DLT_MUX27010": true, + "DLT_NETANALYZER": true, + "DLT_NETANALYZER_TRANSPARENT": true, + "DLT_NFC_LLCP": true, + "DLT_NFLOG": true, + "DLT_NG40": true, + "DLT_NULL": true, + "DLT_PCI_EXP": true, + "DLT_PFLOG": true, + "DLT_PFSYNC": true, + "DLT_PPI": true, + "DLT_PPP": true, + "DLT_PPP_BSDOS": true, + "DLT_PPP_ETHER": true, + "DLT_PPP_PPPD": true, + "DLT_PPP_SERIAL": true, + "DLT_PPP_WITH_DIR": true, + "DLT_PPP_WITH_DIRECTION": true, + "DLT_PRISM_HEADER": true, + "DLT_PRONET": true, + "DLT_RAIF1": true, + "DLT_RAW": true, + "DLT_RAWAF_MASK": true, + "DLT_RIO": true, + "DLT_SCCP": true, + "DLT_SITA": true, + "DLT_SLIP": true, + "DLT_SLIP_BSDOS": true, + "DLT_STANAG_5066_D_PDU": true, + "DLT_SUNATM": true, + "DLT_SYMANTEC_FIREWALL": true, + "DLT_TZSP": true, + "DLT_USB": true, + "DLT_USB_LINUX": true, + "DLT_USB_LINUX_MMAPPED": true, + "DLT_USER0": true, + "DLT_USER1": true, + "DLT_USER10": true, + "DLT_USER11": true, + "DLT_USER12": true, + "DLT_USER13": true, + "DLT_USER14": true, + "DLT_USER15": true, + "DLT_USER2": true, + "DLT_USER3": true, + "DLT_USER4": true, + "DLT_USER5": true, + "DLT_USER6": true, + "DLT_USER7": true, + "DLT_USER8": true, + "DLT_USER9": true, + "DLT_WIHART": true, + "DLT_X2E_SERIAL": true, + "DLT_X2E_XORAYA": true, + "DNSMXData": true, + "DNSPTRData": true, + "DNSRecord": true, + "DNSSRVData": true, + "DNSTXTData": true, + "DNS_INFO_NO_RECORDS": true, + "DNS_TYPE_A": true, + "DNS_TYPE_A6": true, + "DNS_TYPE_AAAA": true, + "DNS_TYPE_ADDRS": true, + "DNS_TYPE_AFSDB": true, + "DNS_TYPE_ALL": true, + "DNS_TYPE_ANY": true, + "DNS_TYPE_ATMA": true, + "DNS_TYPE_AXFR": true, + "DNS_TYPE_CERT": true, + "DNS_TYPE_CNAME": true, + "DNS_TYPE_DHCID": true, + "DNS_TYPE_DNAME": true, + "DNS_TYPE_DNSKEY": true, + "DNS_TYPE_DS": true, + "DNS_TYPE_EID": true, + "DNS_TYPE_GID": true, + "DNS_TYPE_GPOS": true, + "DNS_TYPE_HINFO": true, + "DNS_TYPE_ISDN": true, + "DNS_TYPE_IXFR": true, + "DNS_TYPE_KEY": true, + "DNS_TYPE_KX": true, + "DNS_TYPE_LOC": true, + "DNS_TYPE_MAILA": true, + "DNS_TYPE_MAILB": true, + "DNS_TYPE_MB": true, + "DNS_TYPE_MD": true, + "DNS_TYPE_MF": true, + "DNS_TYPE_MG": true, + "DNS_TYPE_MINFO": true, + "DNS_TYPE_MR": true, + "DNS_TYPE_MX": true, + "DNS_TYPE_NAPTR": true, + "DNS_TYPE_NBSTAT": true, + "DNS_TYPE_NIMLOC": true, + "DNS_TYPE_NS": true, + "DNS_TYPE_NSAP": true, + "DNS_TYPE_NSAPPTR": true, + "DNS_TYPE_NSEC": true, + "DNS_TYPE_NULL": true, + "DNS_TYPE_NXT": true, + "DNS_TYPE_OPT": true, + "DNS_TYPE_PTR": true, + "DNS_TYPE_PX": true, + "DNS_TYPE_RP": true, + "DNS_TYPE_RRSIG": true, + "DNS_TYPE_RT": true, + "DNS_TYPE_SIG": true, + "DNS_TYPE_SINK": true, + "DNS_TYPE_SOA": true, + "DNS_TYPE_SRV": true, + "DNS_TYPE_TEXT": true, + "DNS_TYPE_TKEY": true, + "DNS_TYPE_TSIG": true, + "DNS_TYPE_UID": true, + "DNS_TYPE_UINFO": true, + "DNS_TYPE_UNSPEC": true, + "DNS_TYPE_WINS": true, + "DNS_TYPE_WINSR": true, + "DNS_TYPE_WKS": true, + "DNS_TYPE_X25": true, + "DT_BLK": true, + "DT_CHR": true, + "DT_DIR": true, + "DT_FIFO": true, + "DT_LNK": true, + "DT_REG": true, + "DT_SOCK": true, + "DT_UNKNOWN": true, + "DT_WHT": true, + "DUPLICATE_CLOSE_SOURCE": true, + "DUPLICATE_SAME_ACCESS": true, + "DeleteFile": true, + "DetachLsf": true, + "DeviceIoControl": true, + "Dirent": true, + "DnsNameCompare": true, + "DnsQuery": true, + "DnsRecordListFree": true, + "DnsSectionAdditional": true, + "DnsSectionAnswer": true, + "DnsSectionAuthority": true, + "DnsSectionQuestion": true, + "Dup": true, + "Dup2": true, + "Dup3": true, + "DuplicateHandle": true, + "E2BIG": true, + "EACCES": true, + "EADDRINUSE": true, + "EADDRNOTAVAIL": true, + "EADV": true, + "EAFNOSUPPORT": true, + "EAGAIN": true, + "EALREADY": true, + "EAUTH": true, + "EBADARCH": true, + "EBADE": true, + "EBADEXEC": true, + "EBADF": true, + "EBADFD": true, + "EBADMACHO": true, + "EBADMSG": true, + "EBADR": true, + "EBADRPC": true, + "EBADRQC": true, + "EBADSLT": true, + "EBFONT": true, + "EBUSY": true, + "ECANCELED": true, + "ECAPMODE": true, + "ECHILD": true, + "ECHO": true, + "ECHOCTL": true, + "ECHOE": true, + "ECHOK": true, + "ECHOKE": true, + "ECHONL": true, + "ECHOPRT": true, + "ECHRNG": true, + "ECOMM": true, + "ECONNABORTED": true, + "ECONNREFUSED": true, + "ECONNRESET": true, + "EDEADLK": true, + "EDEADLOCK": true, + "EDESTADDRREQ": true, + "EDEVERR": true, + "EDOM": true, + "EDOOFUS": true, + "EDOTDOT": true, + "EDQUOT": true, + "EEXIST": true, + "EFAULT": true, + "EFBIG": true, + "EFER_LMA": true, + "EFER_LME": true, + "EFER_NXE": true, + "EFER_SCE": true, + "EFTYPE": true, + "EHOSTDOWN": true, + "EHOSTUNREACH": true, + "EHWPOISON": true, + "EIDRM": true, + "EILSEQ": true, + "EINPROGRESS": true, + "EINTR": true, + "EINVAL": true, + "EIO": true, + "EIPSEC": true, + "EISCONN": true, + "EISDIR": true, + "EISNAM": true, + "EKEYEXPIRED": true, + "EKEYREJECTED": true, + "EKEYREVOKED": true, + "EL2HLT": true, + "EL2NSYNC": true, + "EL3HLT": true, + "EL3RST": true, + "ELAST": true, + "ELF_NGREG": true, + "ELF_PRARGSZ": true, + "ELIBACC": true, + "ELIBBAD": true, + "ELIBEXEC": true, + "ELIBMAX": true, + "ELIBSCN": true, + "ELNRNG": true, + "ELOOP": true, + "EMEDIUMTYPE": true, + "EMFILE": true, + "EMLINK": true, + "EMSGSIZE": true, + "EMT_TAGOVF": true, + "EMULTIHOP": true, + "EMUL_ENABLED": true, + "EMUL_LINUX": true, + "EMUL_LINUX32": true, + "EMUL_MAXID": true, + "EMUL_NATIVE": true, + "ENAMETOOLONG": true, + "ENAVAIL": true, + "ENDRUNDISC": true, + "ENEEDAUTH": true, + "ENETDOWN": true, + "ENETRESET": true, + "ENETUNREACH": true, + "ENFILE": true, + "ENOANO": true, + "ENOATTR": true, + "ENOBUFS": true, + "ENOCSI": true, + "ENODATA": true, + "ENODEV": true, + "ENOENT": true, + "ENOEXEC": true, + "ENOKEY": true, + "ENOLCK": true, + "ENOLINK": true, + "ENOMEDIUM": true, + "ENOMEM": true, + "ENOMSG": true, + "ENONET": true, + "ENOPKG": true, + "ENOPOLICY": true, + "ENOPROTOOPT": true, + "ENOSPC": true, + "ENOSR": true, + "ENOSTR": true, + "ENOSYS": true, + "ENOTBLK": true, + "ENOTCAPABLE": true, + "ENOTCONN": true, + "ENOTDIR": true, + "ENOTEMPTY": true, + "ENOTNAM": true, + "ENOTRECOVERABLE": true, + "ENOTSOCK": true, + "ENOTSUP": true, + "ENOTTY": true, + "ENOTUNIQ": true, + "ENXIO": true, + "EN_SW_CTL_INF": true, + "EN_SW_CTL_PREC": true, + "EN_SW_CTL_ROUND": true, + "EN_SW_DATACHAIN": true, + "EN_SW_DENORM": true, + "EN_SW_INVOP": true, + "EN_SW_OVERFLOW": true, + "EN_SW_PRECLOSS": true, + "EN_SW_UNDERFLOW": true, + "EN_SW_ZERODIV": true, + "EOPNOTSUPP": true, + "EOVERFLOW": true, + "EOWNERDEAD": true, + "EPERM": true, + "EPFNOSUPPORT": true, + "EPIPE": true, + "EPOLLERR": true, + "EPOLLET": true, + "EPOLLHUP": true, + "EPOLLIN": true, + "EPOLLMSG": true, + "EPOLLONESHOT": true, + "EPOLLOUT": true, + "EPOLLPRI": true, + "EPOLLRDBAND": true, + "EPOLLRDHUP": true, + "EPOLLRDNORM": true, + "EPOLLWRBAND": true, + "EPOLLWRNORM": true, + "EPOLL_CLOEXEC": true, + "EPOLL_CTL_ADD": true, + "EPOLL_CTL_DEL": true, + "EPOLL_CTL_MOD": true, + "EPOLL_NONBLOCK": true, + "EPROCLIM": true, + "EPROCUNAVAIL": true, + "EPROGMISMATCH": true, + "EPROGUNAVAIL": true, + "EPROTO": true, + "EPROTONOSUPPORT": true, + "EPROTOTYPE": true, + "EPWROFF": true, + "ERANGE": true, + "EREMCHG": true, + "EREMOTE": true, + "EREMOTEIO": true, + "ERESTART": true, + "ERFKILL": true, + "EROFS": true, + "ERPCMISMATCH": true, + "ERROR_ACCESS_DENIED": true, + "ERROR_ALREADY_EXISTS": true, + "ERROR_BROKEN_PIPE": true, + "ERROR_BUFFER_OVERFLOW": true, + "ERROR_DIR_NOT_EMPTY": true, + "ERROR_ENVVAR_NOT_FOUND": true, + "ERROR_FILE_EXISTS": true, + "ERROR_FILE_NOT_FOUND": true, + "ERROR_HANDLE_EOF": true, + "ERROR_INSUFFICIENT_BUFFER": true, + "ERROR_IO_PENDING": true, + "ERROR_MOD_NOT_FOUND": true, + "ERROR_MORE_DATA": true, + "ERROR_NETNAME_DELETED": true, + "ERROR_NOT_FOUND": true, + "ERROR_NO_MORE_FILES": true, + "ERROR_OPERATION_ABORTED": true, + "ERROR_PATH_NOT_FOUND": true, + "ERROR_PRIVILEGE_NOT_HELD": true, + "ERROR_PROC_NOT_FOUND": true, + "ESHLIBVERS": true, + "ESHUTDOWN": true, + "ESOCKTNOSUPPORT": true, + "ESPIPE": true, + "ESRCH": true, + "ESRMNT": true, + "ESTALE": true, + "ESTRPIPE": true, + "ETHERCAP_JUMBO_MTU": true, + "ETHERCAP_VLAN_HWTAGGING": true, + "ETHERCAP_VLAN_MTU": true, + "ETHERMIN": true, + "ETHERMTU": true, + "ETHERMTU_JUMBO": true, + "ETHERTYPE_8023": true, + "ETHERTYPE_AARP": true, + "ETHERTYPE_ACCTON": true, + "ETHERTYPE_AEONIC": true, + "ETHERTYPE_ALPHA": true, + "ETHERTYPE_AMBER": true, + "ETHERTYPE_AMOEBA": true, + "ETHERTYPE_AOE": true, + "ETHERTYPE_APOLLO": true, + "ETHERTYPE_APOLLODOMAIN": true, + "ETHERTYPE_APPLETALK": true, + "ETHERTYPE_APPLITEK": true, + "ETHERTYPE_ARGONAUT": true, + "ETHERTYPE_ARP": true, + "ETHERTYPE_AT": true, + "ETHERTYPE_ATALK": true, + "ETHERTYPE_ATOMIC": true, + "ETHERTYPE_ATT": true, + "ETHERTYPE_ATTSTANFORD": true, + "ETHERTYPE_AUTOPHON": true, + "ETHERTYPE_AXIS": true, + "ETHERTYPE_BCLOOP": true, + "ETHERTYPE_BOFL": true, + "ETHERTYPE_CABLETRON": true, + "ETHERTYPE_CHAOS": true, + "ETHERTYPE_COMDESIGN": true, + "ETHERTYPE_COMPUGRAPHIC": true, + "ETHERTYPE_COUNTERPOINT": true, + "ETHERTYPE_CRONUS": true, + "ETHERTYPE_CRONUSVLN": true, + "ETHERTYPE_DCA": true, + "ETHERTYPE_DDE": true, + "ETHERTYPE_DEBNI": true, + "ETHERTYPE_DECAM": true, + "ETHERTYPE_DECCUST": true, + "ETHERTYPE_DECDIAG": true, + "ETHERTYPE_DECDNS": true, + "ETHERTYPE_DECDTS": true, + "ETHERTYPE_DECEXPER": true, + "ETHERTYPE_DECLAST": true, + "ETHERTYPE_DECLTM": true, + "ETHERTYPE_DECMUMPS": true, + "ETHERTYPE_DECNETBIOS": true, + "ETHERTYPE_DELTACON": true, + "ETHERTYPE_DIDDLE": true, + "ETHERTYPE_DLOG1": true, + "ETHERTYPE_DLOG2": true, + "ETHERTYPE_DN": true, + "ETHERTYPE_DOGFIGHT": true, + "ETHERTYPE_DSMD": true, + "ETHERTYPE_ECMA": true, + "ETHERTYPE_ENCRYPT": true, + "ETHERTYPE_ES": true, + "ETHERTYPE_EXCELAN": true, + "ETHERTYPE_EXPERDATA": true, + "ETHERTYPE_FLIP": true, + "ETHERTYPE_FLOWCONTROL": true, + "ETHERTYPE_FRARP": true, + "ETHERTYPE_GENDYN": true, + "ETHERTYPE_HAYES": true, + "ETHERTYPE_HIPPI_FP": true, + "ETHERTYPE_HITACHI": true, + "ETHERTYPE_HP": true, + "ETHERTYPE_IEEEPUP": true, + "ETHERTYPE_IEEEPUPAT": true, + "ETHERTYPE_IMLBL": true, + "ETHERTYPE_IMLBLDIAG": true, + "ETHERTYPE_IP": true, + "ETHERTYPE_IPAS": true, + "ETHERTYPE_IPV6": true, + "ETHERTYPE_IPX": true, + "ETHERTYPE_IPXNEW": true, + "ETHERTYPE_KALPANA": true, + "ETHERTYPE_LANBRIDGE": true, + "ETHERTYPE_LANPROBE": true, + "ETHERTYPE_LAT": true, + "ETHERTYPE_LBACK": true, + "ETHERTYPE_LITTLE": true, + "ETHERTYPE_LLDP": true, + "ETHERTYPE_LOGICRAFT": true, + "ETHERTYPE_LOOPBACK": true, + "ETHERTYPE_MATRA": true, + "ETHERTYPE_MAX": true, + "ETHERTYPE_MERIT": true, + "ETHERTYPE_MICP": true, + "ETHERTYPE_MOPDL": true, + "ETHERTYPE_MOPRC": true, + "ETHERTYPE_MOTOROLA": true, + "ETHERTYPE_MPLS": true, + "ETHERTYPE_MPLS_MCAST": true, + "ETHERTYPE_MUMPS": true, + "ETHERTYPE_NBPCC": true, + "ETHERTYPE_NBPCLAIM": true, + "ETHERTYPE_NBPCLREQ": true, + "ETHERTYPE_NBPCLRSP": true, + "ETHERTYPE_NBPCREQ": true, + "ETHERTYPE_NBPCRSP": true, + "ETHERTYPE_NBPDG": true, + "ETHERTYPE_NBPDGB": true, + "ETHERTYPE_NBPDLTE": true, + "ETHERTYPE_NBPRAR": true, + "ETHERTYPE_NBPRAS": true, + "ETHERTYPE_NBPRST": true, + "ETHERTYPE_NBPSCD": true, + "ETHERTYPE_NBPVCD": true, + "ETHERTYPE_NBS": true, + "ETHERTYPE_NCD": true, + "ETHERTYPE_NESTAR": true, + "ETHERTYPE_NETBEUI": true, + "ETHERTYPE_NOVELL": true, + "ETHERTYPE_NS": true, + "ETHERTYPE_NSAT": true, + "ETHERTYPE_NSCOMPAT": true, + "ETHERTYPE_NTRAILER": true, + "ETHERTYPE_OS9": true, + "ETHERTYPE_OS9NET": true, + "ETHERTYPE_PACER": true, + "ETHERTYPE_PAE": true, + "ETHERTYPE_PCS": true, + "ETHERTYPE_PLANNING": true, + "ETHERTYPE_PPP": true, + "ETHERTYPE_PPPOE": true, + "ETHERTYPE_PPPOEDISC": true, + "ETHERTYPE_PRIMENTS": true, + "ETHERTYPE_PUP": true, + "ETHERTYPE_PUPAT": true, + "ETHERTYPE_QINQ": true, + "ETHERTYPE_RACAL": true, + "ETHERTYPE_RATIONAL": true, + "ETHERTYPE_RAWFR": true, + "ETHERTYPE_RCL": true, + "ETHERTYPE_RDP": true, + "ETHERTYPE_RETIX": true, + "ETHERTYPE_REVARP": true, + "ETHERTYPE_SCA": true, + "ETHERTYPE_SECTRA": true, + "ETHERTYPE_SECUREDATA": true, + "ETHERTYPE_SGITW": true, + "ETHERTYPE_SG_BOUNCE": true, + "ETHERTYPE_SG_DIAG": true, + "ETHERTYPE_SG_NETGAMES": true, + "ETHERTYPE_SG_RESV": true, + "ETHERTYPE_SIMNET": true, + "ETHERTYPE_SLOW": true, + "ETHERTYPE_SLOWPROTOCOLS": true, + "ETHERTYPE_SNA": true, + "ETHERTYPE_SNMP": true, + "ETHERTYPE_SONIX": true, + "ETHERTYPE_SPIDER": true, + "ETHERTYPE_SPRITE": true, + "ETHERTYPE_STP": true, + "ETHERTYPE_TALARIS": true, + "ETHERTYPE_TALARISMC": true, + "ETHERTYPE_TCPCOMP": true, + "ETHERTYPE_TCPSM": true, + "ETHERTYPE_TEC": true, + "ETHERTYPE_TIGAN": true, + "ETHERTYPE_TRAIL": true, + "ETHERTYPE_TRANSETHER": true, + "ETHERTYPE_TYMSHARE": true, + "ETHERTYPE_UBBST": true, + "ETHERTYPE_UBDEBUG": true, + "ETHERTYPE_UBDIAGLOOP": true, + "ETHERTYPE_UBDL": true, + "ETHERTYPE_UBNIU": true, + "ETHERTYPE_UBNMC": true, + "ETHERTYPE_VALID": true, + "ETHERTYPE_VARIAN": true, + "ETHERTYPE_VAXELN": true, + "ETHERTYPE_VEECO": true, + "ETHERTYPE_VEXP": true, + "ETHERTYPE_VGLAB": true, + "ETHERTYPE_VINES": true, + "ETHERTYPE_VINESECHO": true, + "ETHERTYPE_VINESLOOP": true, + "ETHERTYPE_VITAL": true, + "ETHERTYPE_VLAN": true, + "ETHERTYPE_VLTLMAN": true, + "ETHERTYPE_VPROD": true, + "ETHERTYPE_VURESERVED": true, + "ETHERTYPE_WATERLOO": true, + "ETHERTYPE_WELLFLEET": true, + "ETHERTYPE_X25": true, + "ETHERTYPE_X75": true, + "ETHERTYPE_XNSSM": true, + "ETHERTYPE_XTP": true, + "ETHER_ADDR_LEN": true, + "ETHER_ALIGN": true, + "ETHER_CRC_LEN": true, + "ETHER_CRC_POLY_BE": true, + "ETHER_CRC_POLY_LE": true, + "ETHER_HDR_LEN": true, + "ETHER_MAX_DIX_LEN": true, + "ETHER_MAX_LEN": true, + "ETHER_MAX_LEN_JUMBO": true, + "ETHER_MIN_LEN": true, + "ETHER_PPPOE_ENCAP_LEN": true, + "ETHER_TYPE_LEN": true, + "ETHER_VLAN_ENCAP_LEN": true, + "ETH_P_1588": true, + "ETH_P_8021Q": true, + "ETH_P_802_2": true, + "ETH_P_802_3": true, + "ETH_P_AARP": true, + "ETH_P_ALL": true, + "ETH_P_AOE": true, + "ETH_P_ARCNET": true, + "ETH_P_ARP": true, + "ETH_P_ATALK": true, + "ETH_P_ATMFATE": true, + "ETH_P_ATMMPOA": true, + "ETH_P_AX25": true, + "ETH_P_BPQ": true, + "ETH_P_CAIF": true, + "ETH_P_CAN": true, + "ETH_P_CONTROL": true, + "ETH_P_CUST": true, + "ETH_P_DDCMP": true, + "ETH_P_DEC": true, + "ETH_P_DIAG": true, + "ETH_P_DNA_DL": true, + "ETH_P_DNA_RC": true, + "ETH_P_DNA_RT": true, + "ETH_P_DSA": true, + "ETH_P_ECONET": true, + "ETH_P_EDSA": true, + "ETH_P_FCOE": true, + "ETH_P_FIP": true, + "ETH_P_HDLC": true, + "ETH_P_IEEE802154": true, + "ETH_P_IEEEPUP": true, + "ETH_P_IEEEPUPAT": true, + "ETH_P_IP": true, + "ETH_P_IPV6": true, + "ETH_P_IPX": true, + "ETH_P_IRDA": true, + "ETH_P_LAT": true, + "ETH_P_LINK_CTL": true, + "ETH_P_LOCALTALK": true, + "ETH_P_LOOP": true, + "ETH_P_MOBITEX": true, + "ETH_P_MPLS_MC": true, + "ETH_P_MPLS_UC": true, + "ETH_P_PAE": true, + "ETH_P_PAUSE": true, + "ETH_P_PHONET": true, + "ETH_P_PPPTALK": true, + "ETH_P_PPP_DISC": true, + "ETH_P_PPP_MP": true, + "ETH_P_PPP_SES": true, + "ETH_P_PUP": true, + "ETH_P_PUPAT": true, + "ETH_P_RARP": true, + "ETH_P_SCA": true, + "ETH_P_SLOW": true, + "ETH_P_SNAP": true, + "ETH_P_TEB": true, + "ETH_P_TIPC": true, + "ETH_P_TRAILER": true, + "ETH_P_TR_802_2": true, + "ETH_P_WAN_PPP": true, + "ETH_P_WCCP": true, + "ETH_P_X25": true, + "ETIME": true, + "ETIMEDOUT": true, + "ETOOMANYREFS": true, + "ETXTBSY": true, + "EUCLEAN": true, + "EUNATCH": true, + "EUSERS": true, + "EVFILT_AIO": true, + "EVFILT_FS": true, + "EVFILT_LIO": true, + "EVFILT_MACHPORT": true, + "EVFILT_PROC": true, + "EVFILT_READ": true, + "EVFILT_SIGNAL": true, + "EVFILT_SYSCOUNT": true, + "EVFILT_THREADMARKER": true, + "EVFILT_TIMER": true, + "EVFILT_USER": true, + "EVFILT_VM": true, + "EVFILT_VNODE": true, + "EVFILT_WRITE": true, + "EV_ADD": true, + "EV_CLEAR": true, + "EV_DELETE": true, + "EV_DISABLE": true, + "EV_DISPATCH": true, + "EV_DROP": true, + "EV_ENABLE": true, + "EV_EOF": true, + "EV_ERROR": true, + "EV_FLAG0": true, + "EV_FLAG1": true, + "EV_ONESHOT": true, + "EV_OOBAND": true, + "EV_POLL": true, + "EV_RECEIPT": true, + "EV_SYSFLAGS": true, + "EWINDOWS": true, + "EWOULDBLOCK": true, + "EXDEV": true, + "EXFULL": true, + "EXTA": true, + "EXTB": true, + "EXTPROC": true, + "Environ": true, + "EpollCreate": true, + "EpollCreate1": true, + "EpollCtl": true, + "EpollEvent": true, + "EpollWait": true, + "Errno": true, + "EscapeArg": true, + "Exchangedata": true, + "Exec": true, + "Exit": true, + "ExitProcess": true, + "FD_CLOEXEC": true, + "FD_SETSIZE": true, + "FILE_ACTION_ADDED": true, + "FILE_ACTION_MODIFIED": true, + "FILE_ACTION_REMOVED": true, + "FILE_ACTION_RENAMED_NEW_NAME": true, + "FILE_ACTION_RENAMED_OLD_NAME": true, + "FILE_APPEND_DATA": true, + "FILE_ATTRIBUTE_ARCHIVE": true, + "FILE_ATTRIBUTE_DIRECTORY": true, + "FILE_ATTRIBUTE_HIDDEN": true, + "FILE_ATTRIBUTE_NORMAL": true, + "FILE_ATTRIBUTE_READONLY": true, + "FILE_ATTRIBUTE_REPARSE_POINT": true, + "FILE_ATTRIBUTE_SYSTEM": true, + "FILE_BEGIN": true, + "FILE_CURRENT": true, + "FILE_END": true, + "FILE_FLAG_BACKUP_SEMANTICS": true, + "FILE_FLAG_OPEN_REPARSE_POINT": true, + "FILE_FLAG_OVERLAPPED": true, + "FILE_LIST_DIRECTORY": true, + "FILE_MAP_COPY": true, + "FILE_MAP_EXECUTE": true, + "FILE_MAP_READ": true, + "FILE_MAP_WRITE": true, + "FILE_NOTIFY_CHANGE_ATTRIBUTES": true, + "FILE_NOTIFY_CHANGE_CREATION": true, + "FILE_NOTIFY_CHANGE_DIR_NAME": true, + "FILE_NOTIFY_CHANGE_FILE_NAME": true, + "FILE_NOTIFY_CHANGE_LAST_ACCESS": true, + "FILE_NOTIFY_CHANGE_LAST_WRITE": true, + "FILE_NOTIFY_CHANGE_SIZE": true, + "FILE_SHARE_DELETE": true, + "FILE_SHARE_READ": true, + "FILE_SHARE_WRITE": true, + "FILE_SKIP_COMPLETION_PORT_ON_SUCCESS": true, + "FILE_SKIP_SET_EVENT_ON_HANDLE": true, + "FILE_TYPE_CHAR": true, + "FILE_TYPE_DISK": true, + "FILE_TYPE_PIPE": true, + "FILE_TYPE_REMOTE": true, + "FILE_TYPE_UNKNOWN": true, + "FILE_WRITE_ATTRIBUTES": true, + "FLUSHO": true, + "FORMAT_MESSAGE_ALLOCATE_BUFFER": true, + "FORMAT_MESSAGE_ARGUMENT_ARRAY": true, + "FORMAT_MESSAGE_FROM_HMODULE": true, + "FORMAT_MESSAGE_FROM_STRING": true, + "FORMAT_MESSAGE_FROM_SYSTEM": true, + "FORMAT_MESSAGE_IGNORE_INSERTS": true, + "FORMAT_MESSAGE_MAX_WIDTH_MASK": true, + "FSCTL_GET_REPARSE_POINT": true, + "F_ADDFILESIGS": true, + "F_ADDSIGS": true, + "F_ALLOCATEALL": true, + "F_ALLOCATECONTIG": true, + "F_CANCEL": true, + "F_CHKCLEAN": true, + "F_CLOSEM": true, + "F_DUP2FD": true, + "F_DUP2FD_CLOEXEC": true, + "F_DUPFD": true, + "F_DUPFD_CLOEXEC": true, + "F_EXLCK": true, + "F_FLUSH_DATA": true, + "F_FREEZE_FS": true, + "F_FSCTL": true, + "F_FSDIRMASK": true, + "F_FSIN": true, + "F_FSINOUT": true, + "F_FSOUT": true, + "F_FSPRIV": true, + "F_FSVOID": true, + "F_FULLFSYNC": true, + "F_GETFD": true, + "F_GETFL": true, + "F_GETLEASE": true, + "F_GETLK": true, + "F_GETLK64": true, + "F_GETLKPID": true, + "F_GETNOSIGPIPE": true, + "F_GETOWN": true, + "F_GETOWN_EX": true, + "F_GETPATH": true, + "F_GETPATH_MTMINFO": true, + "F_GETPIPE_SZ": true, + "F_GETPROTECTIONCLASS": true, + "F_GETSIG": true, + "F_GLOBAL_NOCACHE": true, + "F_LOCK": true, + "F_LOG2PHYS": true, + "F_LOG2PHYS_EXT": true, + "F_MARKDEPENDENCY": true, + "F_MAXFD": true, + "F_NOCACHE": true, + "F_NODIRECT": true, + "F_NOTIFY": true, + "F_OGETLK": true, + "F_OK": true, + "F_OSETLK": true, + "F_OSETLKW": true, + "F_PARAM_MASK": true, + "F_PARAM_MAX": true, + "F_PATHPKG_CHECK": true, + "F_PEOFPOSMODE": true, + "F_PREALLOCATE": true, + "F_RDADVISE": true, + "F_RDAHEAD": true, + "F_RDLCK": true, + "F_READAHEAD": true, + "F_READBOOTSTRAP": true, + "F_SETBACKINGSTORE": true, + "F_SETFD": true, + "F_SETFL": true, + "F_SETLEASE": true, + "F_SETLK": true, + "F_SETLK64": true, + "F_SETLKW": true, + "F_SETLKW64": true, + "F_SETLK_REMOTE": true, + "F_SETNOSIGPIPE": true, + "F_SETOWN": true, + "F_SETOWN_EX": true, + "F_SETPIPE_SZ": true, + "F_SETPROTECTIONCLASS": true, + "F_SETSIG": true, + "F_SETSIZE": true, + "F_SHLCK": true, + "F_TEST": true, + "F_THAW_FS": true, + "F_TLOCK": true, + "F_ULOCK": true, + "F_UNLCK": true, + "F_UNLCKSYS": true, + "F_VOLPOSMODE": true, + "F_WRITEBOOTSTRAP": true, + "F_WRLCK": true, + "Faccessat": true, + "Fallocate": true, + "Fbootstraptransfer_t": true, + "Fchdir": true, + "Fchflags": true, + "Fchmod": true, + "Fchmodat": true, + "Fchown": true, + "Fchownat": true, + "FcntlFlock": true, + "FdSet": true, + "Fdatasync": true, + "FileNotifyInformation": true, + "Filetime": true, + "FindClose": true, + "FindFirstFile": true, + "FindNextFile": true, + "Flock": true, + "Flock_t": true, + "FlushBpf": true, + "FlushFileBuffers": true, + "FlushViewOfFile": true, + "ForkExec": true, + "ForkLock": true, + "FormatMessage": true, + "Fpathconf": true, + "FreeAddrInfoW": true, + "FreeEnvironmentStrings": true, + "FreeLibrary": true, + "Fsid": true, + "Fstat": true, + "Fstatat": true, + "Fstatfs": true, + "Fstore_t": true, + "Fsync": true, + "Ftruncate": true, + "FullPath": true, + "Futimes": true, + "Futimesat": true, + "GENERIC_ALL": true, + "GENERIC_EXECUTE": true, + "GENERIC_READ": true, + "GENERIC_WRITE": true, + "GUID": true, + "GetAcceptExSockaddrs": true, + "GetAdaptersInfo": true, + "GetAddrInfoW": true, + "GetCommandLine": true, + "GetComputerName": true, + "GetConsoleMode": true, + "GetCurrentDirectory": true, + "GetCurrentProcess": true, + "GetEnvironmentStrings": true, + "GetEnvironmentVariable": true, + "GetExitCodeProcess": true, + "GetFileAttributes": true, + "GetFileAttributesEx": true, + "GetFileExInfoStandard": true, + "GetFileExMaxInfoLevel": true, + "GetFileInformationByHandle": true, + "GetFileType": true, + "GetFullPathName": true, + "GetHostByName": true, + "GetIfEntry": true, + "GetLastError": true, + "GetLengthSid": true, + "GetLongPathName": true, + "GetProcAddress": true, + "GetProcessTimes": true, + "GetProtoByName": true, + "GetQueuedCompletionStatus": true, + "GetServByName": true, + "GetShortPathName": true, + "GetStartupInfo": true, + "GetStdHandle": true, + "GetSystemTimeAsFileTime": true, + "GetTempPath": true, + "GetTimeZoneInformation": true, + "GetTokenInformation": true, + "GetUserNameEx": true, + "GetUserProfileDirectory": true, + "GetVersion": true, + "Getcwd": true, + "Getdents": true, + "Getdirentries": true, + "Getdtablesize": true, + "Getegid": true, + "Getenv": true, + "Geteuid": true, + "Getfsstat": true, + "Getgid": true, + "Getgroups": true, + "Getpagesize": true, + "Getpeername": true, + "Getpgid": true, + "Getpgrp": true, + "Getpid": true, + "Getppid": true, + "Getpriority": true, + "Getrlimit": true, + "Getrusage": true, + "Getsid": true, + "Getsockname": true, + "Getsockopt": true, + "GetsockoptByte": true, + "GetsockoptICMPv6Filter": true, + "GetsockoptIPMreq": true, + "GetsockoptIPMreqn": true, + "GetsockoptIPv6MTUInfo": true, + "GetsockoptIPv6Mreq": true, + "GetsockoptInet4Addr": true, + "GetsockoptInt": true, + "GetsockoptUcred": true, + "Gettid": true, + "Gettimeofday": true, + "Getuid": true, + "Getwd": true, + "Getxattr": true, + "HANDLE_FLAG_INHERIT": true, + "HKEY_CLASSES_ROOT": true, + "HKEY_CURRENT_CONFIG": true, + "HKEY_CURRENT_USER": true, + "HKEY_DYN_DATA": true, + "HKEY_LOCAL_MACHINE": true, + "HKEY_PERFORMANCE_DATA": true, + "HKEY_USERS": true, + "HUPCL": true, + "Handle": true, + "Hostent": true, + "ICANON": true, + "ICMP6_FILTER": true, + "ICMPV6_FILTER": true, + "ICMPv6Filter": true, + "ICRNL": true, + "IEXTEN": true, + "IFAN_ARRIVAL": true, + "IFAN_DEPARTURE": true, + "IFA_ADDRESS": true, + "IFA_ANYCAST": true, + "IFA_BROADCAST": true, + "IFA_CACHEINFO": true, + "IFA_F_DADFAILED": true, + "IFA_F_DEPRECATED": true, + "IFA_F_HOMEADDRESS": true, + "IFA_F_NODAD": true, + "IFA_F_OPTIMISTIC": true, + "IFA_F_PERMANENT": true, + "IFA_F_SECONDARY": true, + "IFA_F_TEMPORARY": true, + "IFA_F_TENTATIVE": true, + "IFA_LABEL": true, + "IFA_LOCAL": true, + "IFA_MAX": true, + "IFA_MULTICAST": true, + "IFA_ROUTE": true, + "IFA_UNSPEC": true, + "IFF_ALLMULTI": true, + "IFF_ALTPHYS": true, + "IFF_AUTOMEDIA": true, + "IFF_BROADCAST": true, + "IFF_CANTCHANGE": true, + "IFF_CANTCONFIG": true, + "IFF_DEBUG": true, + "IFF_DRV_OACTIVE": true, + "IFF_DRV_RUNNING": true, + "IFF_DYING": true, + "IFF_DYNAMIC": true, + "IFF_LINK0": true, + "IFF_LINK1": true, + "IFF_LINK2": true, + "IFF_LOOPBACK": true, + "IFF_MASTER": true, + "IFF_MONITOR": true, + "IFF_MULTICAST": true, + "IFF_NOARP": true, + "IFF_NOTRAILERS": true, + "IFF_NO_PI": true, + "IFF_OACTIVE": true, + "IFF_ONE_QUEUE": true, + "IFF_POINTOPOINT": true, + "IFF_POINTTOPOINT": true, + "IFF_PORTSEL": true, + "IFF_PPROMISC": true, + "IFF_PROMISC": true, + "IFF_RENAMING": true, + "IFF_RUNNING": true, + "IFF_SIMPLEX": true, + "IFF_SLAVE": true, + "IFF_SMART": true, + "IFF_STATICARP": true, + "IFF_TAP": true, + "IFF_TUN": true, + "IFF_TUN_EXCL": true, + "IFF_UP": true, + "IFF_VNET_HDR": true, + "IFLA_ADDRESS": true, + "IFLA_BROADCAST": true, + "IFLA_COST": true, + "IFLA_IFALIAS": true, + "IFLA_IFNAME": true, + "IFLA_LINK": true, + "IFLA_LINKINFO": true, + "IFLA_LINKMODE": true, + "IFLA_MAP": true, + "IFLA_MASTER": true, + "IFLA_MAX": true, + "IFLA_MTU": true, + "IFLA_NET_NS_PID": true, + "IFLA_OPERSTATE": true, + "IFLA_PRIORITY": true, + "IFLA_PROTINFO": true, + "IFLA_QDISC": true, + "IFLA_STATS": true, + "IFLA_TXQLEN": true, + "IFLA_UNSPEC": true, + "IFLA_WEIGHT": true, + "IFLA_WIRELESS": true, + "IFNAMSIZ": true, + "IFT_1822": true, + "IFT_A12MPPSWITCH": true, + "IFT_AAL2": true, + "IFT_AAL5": true, + "IFT_ADSL": true, + "IFT_AFLANE8023": true, + "IFT_AFLANE8025": true, + "IFT_ARAP": true, + "IFT_ARCNET": true, + "IFT_ARCNETPLUS": true, + "IFT_ASYNC": true, + "IFT_ATM": true, + "IFT_ATMDXI": true, + "IFT_ATMFUNI": true, + "IFT_ATMIMA": true, + "IFT_ATMLOGICAL": true, + "IFT_ATMRADIO": true, + "IFT_ATMSUBINTERFACE": true, + "IFT_ATMVCIENDPT": true, + "IFT_ATMVIRTUAL": true, + "IFT_BGPPOLICYACCOUNTING": true, + "IFT_BLUETOOTH": true, + "IFT_BRIDGE": true, + "IFT_BSC": true, + "IFT_CARP": true, + "IFT_CCTEMUL": true, + "IFT_CELLULAR": true, + "IFT_CEPT": true, + "IFT_CES": true, + "IFT_CHANNEL": true, + "IFT_CNR": true, + "IFT_COFFEE": true, + "IFT_COMPOSITELINK": true, + "IFT_DCN": true, + "IFT_DIGITALPOWERLINE": true, + "IFT_DIGITALWRAPPEROVERHEADCHANNEL": true, + "IFT_DLSW": true, + "IFT_DOCSCABLEDOWNSTREAM": true, + "IFT_DOCSCABLEMACLAYER": true, + "IFT_DOCSCABLEUPSTREAM": true, + "IFT_DOCSCABLEUPSTREAMCHANNEL": true, + "IFT_DS0": true, + "IFT_DS0BUNDLE": true, + "IFT_DS1FDL": true, + "IFT_DS3": true, + "IFT_DTM": true, + "IFT_DUMMY": true, + "IFT_DVBASILN": true, + "IFT_DVBASIOUT": true, + "IFT_DVBRCCDOWNSTREAM": true, + "IFT_DVBRCCMACLAYER": true, + "IFT_DVBRCCUPSTREAM": true, + "IFT_ECONET": true, + "IFT_ENC": true, + "IFT_EON": true, + "IFT_EPLRS": true, + "IFT_ESCON": true, + "IFT_ETHER": true, + "IFT_FAITH": true, + "IFT_FAST": true, + "IFT_FASTETHER": true, + "IFT_FASTETHERFX": true, + "IFT_FDDI": true, + "IFT_FIBRECHANNEL": true, + "IFT_FRAMERELAYINTERCONNECT": true, + "IFT_FRAMERELAYMPI": true, + "IFT_FRDLCIENDPT": true, + "IFT_FRELAY": true, + "IFT_FRELAYDCE": true, + "IFT_FRF16MFRBUNDLE": true, + "IFT_FRFORWARD": true, + "IFT_G703AT2MB": true, + "IFT_G703AT64K": true, + "IFT_GIF": true, + "IFT_GIGABITETHERNET": true, + "IFT_GR303IDT": true, + "IFT_GR303RDT": true, + "IFT_H323GATEKEEPER": true, + "IFT_H323PROXY": true, + "IFT_HDH1822": true, + "IFT_HDLC": true, + "IFT_HDSL2": true, + "IFT_HIPERLAN2": true, + "IFT_HIPPI": true, + "IFT_HIPPIINTERFACE": true, + "IFT_HOSTPAD": true, + "IFT_HSSI": true, + "IFT_HY": true, + "IFT_IBM370PARCHAN": true, + "IFT_IDSL": true, + "IFT_IEEE1394": true, + "IFT_IEEE80211": true, + "IFT_IEEE80212": true, + "IFT_IEEE8023ADLAG": true, + "IFT_IFGSN": true, + "IFT_IMT": true, + "IFT_INFINIBAND": true, + "IFT_INTERLEAVE": true, + "IFT_IP": true, + "IFT_IPFORWARD": true, + "IFT_IPOVERATM": true, + "IFT_IPOVERCDLC": true, + "IFT_IPOVERCLAW": true, + "IFT_IPSWITCH": true, + "IFT_IPXIP": true, + "IFT_ISDN": true, + "IFT_ISDNBASIC": true, + "IFT_ISDNPRIMARY": true, + "IFT_ISDNS": true, + "IFT_ISDNU": true, + "IFT_ISO88022LLC": true, + "IFT_ISO88023": true, + "IFT_ISO88024": true, + "IFT_ISO88025": true, + "IFT_ISO88025CRFPINT": true, + "IFT_ISO88025DTR": true, + "IFT_ISO88025FIBER": true, + "IFT_ISO88026": true, + "IFT_ISUP": true, + "IFT_L2VLAN": true, + "IFT_L3IPVLAN": true, + "IFT_L3IPXVLAN": true, + "IFT_LAPB": true, + "IFT_LAPD": true, + "IFT_LAPF": true, + "IFT_LINEGROUP": true, + "IFT_LOCALTALK": true, + "IFT_LOOP": true, + "IFT_MEDIAMAILOVERIP": true, + "IFT_MFSIGLINK": true, + "IFT_MIOX25": true, + "IFT_MODEM": true, + "IFT_MPC": true, + "IFT_MPLS": true, + "IFT_MPLSTUNNEL": true, + "IFT_MSDSL": true, + "IFT_MVL": true, + "IFT_MYRINET": true, + "IFT_NFAS": true, + "IFT_NSIP": true, + "IFT_OPTICALCHANNEL": true, + "IFT_OPTICALTRANSPORT": true, + "IFT_OTHER": true, + "IFT_P10": true, + "IFT_P80": true, + "IFT_PARA": true, + "IFT_PDP": true, + "IFT_PFLOG": true, + "IFT_PFLOW": true, + "IFT_PFSYNC": true, + "IFT_PLC": true, + "IFT_PON155": true, + "IFT_PON622": true, + "IFT_POS": true, + "IFT_PPP": true, + "IFT_PPPMULTILINKBUNDLE": true, + "IFT_PROPATM": true, + "IFT_PROPBWAP2MP": true, + "IFT_PROPCNLS": true, + "IFT_PROPDOCSWIRELESSDOWNSTREAM": true, + "IFT_PROPDOCSWIRELESSMACLAYER": true, + "IFT_PROPDOCSWIRELESSUPSTREAM": true, + "IFT_PROPMUX": true, + "IFT_PROPVIRTUAL": true, + "IFT_PROPWIRELESSP2P": true, + "IFT_PTPSERIAL": true, + "IFT_PVC": true, + "IFT_Q2931": true, + "IFT_QLLC": true, + "IFT_RADIOMAC": true, + "IFT_RADSL": true, + "IFT_REACHDSL": true, + "IFT_RFC1483": true, + "IFT_RS232": true, + "IFT_RSRB": true, + "IFT_SDLC": true, + "IFT_SDSL": true, + "IFT_SHDSL": true, + "IFT_SIP": true, + "IFT_SIPSIG": true, + "IFT_SIPTG": true, + "IFT_SLIP": true, + "IFT_SMDSDXI": true, + "IFT_SMDSICIP": true, + "IFT_SONET": true, + "IFT_SONETOVERHEADCHANNEL": true, + "IFT_SONETPATH": true, + "IFT_SONETVT": true, + "IFT_SRP": true, + "IFT_SS7SIGLINK": true, + "IFT_STACKTOSTACK": true, + "IFT_STARLAN": true, + "IFT_STF": true, + "IFT_T1": true, + "IFT_TDLC": true, + "IFT_TELINK": true, + "IFT_TERMPAD": true, + "IFT_TR008": true, + "IFT_TRANSPHDLC": true, + "IFT_TUNNEL": true, + "IFT_ULTRA": true, + "IFT_USB": true, + "IFT_V11": true, + "IFT_V35": true, + "IFT_V36": true, + "IFT_V37": true, + "IFT_VDSL": true, + "IFT_VIRTUALIPADDRESS": true, + "IFT_VIRTUALTG": true, + "IFT_VOICEDID": true, + "IFT_VOICEEM": true, + "IFT_VOICEEMFGD": true, + "IFT_VOICEENCAP": true, + "IFT_VOICEFGDEANA": true, + "IFT_VOICEFXO": true, + "IFT_VOICEFXS": true, + "IFT_VOICEOVERATM": true, + "IFT_VOICEOVERCABLE": true, + "IFT_VOICEOVERFRAMERELAY": true, + "IFT_VOICEOVERIP": true, + "IFT_X213": true, + "IFT_X25": true, + "IFT_X25DDN": true, + "IFT_X25HUNTGROUP": true, + "IFT_X25MLP": true, + "IFT_X25PLE": true, + "IFT_XETHER": true, + "IGNBRK": true, + "IGNCR": true, + "IGNORE": true, + "IGNPAR": true, + "IMAXBEL": true, + "INFINITE": true, + "INLCR": true, + "INPCK": true, + "INVALID_FILE_ATTRIBUTES": true, + "IN_ACCESS": true, + "IN_ALL_EVENTS": true, + "IN_ATTRIB": true, + "IN_CLASSA_HOST": true, + "IN_CLASSA_MAX": true, + "IN_CLASSA_NET": true, + "IN_CLASSA_NSHIFT": true, + "IN_CLASSB_HOST": true, + "IN_CLASSB_MAX": true, + "IN_CLASSB_NET": true, + "IN_CLASSB_NSHIFT": true, + "IN_CLASSC_HOST": true, + "IN_CLASSC_NET": true, + "IN_CLASSC_NSHIFT": true, + "IN_CLASSD_HOST": true, + "IN_CLASSD_NET": true, + "IN_CLASSD_NSHIFT": true, + "IN_CLOEXEC": true, + "IN_CLOSE": true, + "IN_CLOSE_NOWRITE": true, + "IN_CLOSE_WRITE": true, + "IN_CREATE": true, + "IN_DELETE": true, + "IN_DELETE_SELF": true, + "IN_DONT_FOLLOW": true, + "IN_EXCL_UNLINK": true, + "IN_IGNORED": true, + "IN_ISDIR": true, + "IN_LINKLOCALNETNUM": true, + "IN_LOOPBACKNET": true, + "IN_MASK_ADD": true, + "IN_MODIFY": true, + "IN_MOVE": true, + "IN_MOVED_FROM": true, + "IN_MOVED_TO": true, + "IN_MOVE_SELF": true, + "IN_NONBLOCK": true, + "IN_ONESHOT": true, + "IN_ONLYDIR": true, + "IN_OPEN": true, + "IN_Q_OVERFLOW": true, + "IN_RFC3021_HOST": true, + "IN_RFC3021_MASK": true, + "IN_RFC3021_NET": true, + "IN_RFC3021_NSHIFT": true, + "IN_UNMOUNT": true, + "IOC_IN": true, + "IOC_INOUT": true, + "IOC_OUT": true, + "IOC_VENDOR": true, + "IOC_WS2": true, + "IO_REPARSE_TAG_SYMLINK": true, + "IPMreq": true, + "IPMreqn": true, + "IPPROTO_3PC": true, + "IPPROTO_ADFS": true, + "IPPROTO_AH": true, + "IPPROTO_AHIP": true, + "IPPROTO_APES": true, + "IPPROTO_ARGUS": true, + "IPPROTO_AX25": true, + "IPPROTO_BHA": true, + "IPPROTO_BLT": true, + "IPPROTO_BRSATMON": true, + "IPPROTO_CARP": true, + "IPPROTO_CFTP": true, + "IPPROTO_CHAOS": true, + "IPPROTO_CMTP": true, + "IPPROTO_COMP": true, + "IPPROTO_CPHB": true, + "IPPROTO_CPNX": true, + "IPPROTO_DCCP": true, + "IPPROTO_DDP": true, + "IPPROTO_DGP": true, + "IPPROTO_DIVERT": true, + "IPPROTO_DIVERT_INIT": true, + "IPPROTO_DIVERT_RESP": true, + "IPPROTO_DONE": true, + "IPPROTO_DSTOPTS": true, + "IPPROTO_EGP": true, + "IPPROTO_EMCON": true, + "IPPROTO_ENCAP": true, + "IPPROTO_EON": true, + "IPPROTO_ESP": true, + "IPPROTO_ETHERIP": true, + "IPPROTO_FRAGMENT": true, + "IPPROTO_GGP": true, + "IPPROTO_GMTP": true, + "IPPROTO_GRE": true, + "IPPROTO_HELLO": true, + "IPPROTO_HMP": true, + "IPPROTO_HOPOPTS": true, + "IPPROTO_ICMP": true, + "IPPROTO_ICMPV6": true, + "IPPROTO_IDP": true, + "IPPROTO_IDPR": true, + "IPPROTO_IDRP": true, + "IPPROTO_IGMP": true, + "IPPROTO_IGP": true, + "IPPROTO_IGRP": true, + "IPPROTO_IL": true, + "IPPROTO_INLSP": true, + "IPPROTO_INP": true, + "IPPROTO_IP": true, + "IPPROTO_IPCOMP": true, + "IPPROTO_IPCV": true, + "IPPROTO_IPEIP": true, + "IPPROTO_IPIP": true, + "IPPROTO_IPPC": true, + "IPPROTO_IPV4": true, + "IPPROTO_IPV6": true, + "IPPROTO_IPV6_ICMP": true, + "IPPROTO_IRTP": true, + "IPPROTO_KRYPTOLAN": true, + "IPPROTO_LARP": true, + "IPPROTO_LEAF1": true, + "IPPROTO_LEAF2": true, + "IPPROTO_MAX": true, + "IPPROTO_MAXID": true, + "IPPROTO_MEAS": true, + "IPPROTO_MH": true, + "IPPROTO_MHRP": true, + "IPPROTO_MICP": true, + "IPPROTO_MOBILE": true, + "IPPROTO_MPLS": true, + "IPPROTO_MTP": true, + "IPPROTO_MUX": true, + "IPPROTO_ND": true, + "IPPROTO_NHRP": true, + "IPPROTO_NONE": true, + "IPPROTO_NSP": true, + "IPPROTO_NVPII": true, + "IPPROTO_OLD_DIVERT": true, + "IPPROTO_OSPFIGP": true, + "IPPROTO_PFSYNC": true, + "IPPROTO_PGM": true, + "IPPROTO_PIGP": true, + "IPPROTO_PIM": true, + "IPPROTO_PRM": true, + "IPPROTO_PUP": true, + "IPPROTO_PVP": true, + "IPPROTO_RAW": true, + "IPPROTO_RCCMON": true, + "IPPROTO_RDP": true, + "IPPROTO_ROUTING": true, + "IPPROTO_RSVP": true, + "IPPROTO_RVD": true, + "IPPROTO_SATEXPAK": true, + "IPPROTO_SATMON": true, + "IPPROTO_SCCSP": true, + "IPPROTO_SCTP": true, + "IPPROTO_SDRP": true, + "IPPROTO_SEND": true, + "IPPROTO_SEP": true, + "IPPROTO_SKIP": true, + "IPPROTO_SPACER": true, + "IPPROTO_SRPC": true, + "IPPROTO_ST": true, + "IPPROTO_SVMTP": true, + "IPPROTO_SWIPE": true, + "IPPROTO_TCF": true, + "IPPROTO_TCP": true, + "IPPROTO_TLSP": true, + "IPPROTO_TP": true, + "IPPROTO_TPXX": true, + "IPPROTO_TRUNK1": true, + "IPPROTO_TRUNK2": true, + "IPPROTO_TTP": true, + "IPPROTO_UDP": true, + "IPPROTO_UDPLITE": true, + "IPPROTO_VINES": true, + "IPPROTO_VISA": true, + "IPPROTO_VMTP": true, + "IPPROTO_VRRP": true, + "IPPROTO_WBEXPAK": true, + "IPPROTO_WBMON": true, + "IPPROTO_WSN": true, + "IPPROTO_XNET": true, + "IPPROTO_XTP": true, + "IPV6_2292DSTOPTS": true, + "IPV6_2292HOPLIMIT": true, + "IPV6_2292HOPOPTS": true, + "IPV6_2292NEXTHOP": true, + "IPV6_2292PKTINFO": true, + "IPV6_2292PKTOPTIONS": true, + "IPV6_2292RTHDR": true, + "IPV6_ADDRFORM": true, + "IPV6_ADD_MEMBERSHIP": true, + "IPV6_AUTHHDR": true, + "IPV6_AUTH_LEVEL": true, + "IPV6_AUTOFLOWLABEL": true, + "IPV6_BINDANY": true, + "IPV6_BINDV6ONLY": true, + "IPV6_BOUND_IF": true, + "IPV6_CHECKSUM": true, + "IPV6_DEFAULT_MULTICAST_HOPS": true, + "IPV6_DEFAULT_MULTICAST_LOOP": true, + "IPV6_DEFHLIM": true, + "IPV6_DONTFRAG": true, + "IPV6_DROP_MEMBERSHIP": true, + "IPV6_DSTOPTS": true, + "IPV6_ESP_NETWORK_LEVEL": true, + "IPV6_ESP_TRANS_LEVEL": true, + "IPV6_FAITH": true, + "IPV6_FLOWINFO_MASK": true, + "IPV6_FLOWLABEL_MASK": true, + "IPV6_FRAGTTL": true, + "IPV6_FW_ADD": true, + "IPV6_FW_DEL": true, + "IPV6_FW_FLUSH": true, + "IPV6_FW_GET": true, + "IPV6_FW_ZERO": true, + "IPV6_HLIMDEC": true, + "IPV6_HOPLIMIT": true, + "IPV6_HOPOPTS": true, + "IPV6_IPCOMP_LEVEL": true, + "IPV6_IPSEC_POLICY": true, + "IPV6_JOIN_ANYCAST": true, + "IPV6_JOIN_GROUP": true, + "IPV6_LEAVE_ANYCAST": true, + "IPV6_LEAVE_GROUP": true, + "IPV6_MAXHLIM": true, + "IPV6_MAXOPTHDR": true, + "IPV6_MAXPACKET": true, + "IPV6_MAX_GROUP_SRC_FILTER": true, + "IPV6_MAX_MEMBERSHIPS": true, + "IPV6_MAX_SOCK_SRC_FILTER": true, + "IPV6_MIN_MEMBERSHIPS": true, + "IPV6_MMTU": true, + "IPV6_MSFILTER": true, + "IPV6_MTU": true, + "IPV6_MTU_DISCOVER": true, + "IPV6_MULTICAST_HOPS": true, + "IPV6_MULTICAST_IF": true, + "IPV6_MULTICAST_LOOP": true, + "IPV6_NEXTHOP": true, + "IPV6_OPTIONS": true, + "IPV6_PATHMTU": true, + "IPV6_PIPEX": true, + "IPV6_PKTINFO": true, + "IPV6_PMTUDISC_DO": true, + "IPV6_PMTUDISC_DONT": true, + "IPV6_PMTUDISC_PROBE": true, + "IPV6_PMTUDISC_WANT": true, + "IPV6_PORTRANGE": true, + "IPV6_PORTRANGE_DEFAULT": true, + "IPV6_PORTRANGE_HIGH": true, + "IPV6_PORTRANGE_LOW": true, + "IPV6_PREFER_TEMPADDR": true, + "IPV6_RECVDSTOPTS": true, + "IPV6_RECVDSTPORT": true, + "IPV6_RECVERR": true, + "IPV6_RECVHOPLIMIT": true, + "IPV6_RECVHOPOPTS": true, + "IPV6_RECVPATHMTU": true, + "IPV6_RECVPKTINFO": true, + "IPV6_RECVRTHDR": true, + "IPV6_RECVTCLASS": true, + "IPV6_ROUTER_ALERT": true, + "IPV6_RTABLE": true, + "IPV6_RTHDR": true, + "IPV6_RTHDRDSTOPTS": true, + "IPV6_RTHDR_LOOSE": true, + "IPV6_RTHDR_STRICT": true, + "IPV6_RTHDR_TYPE_0": true, + "IPV6_RXDSTOPTS": true, + "IPV6_RXHOPOPTS": true, + "IPV6_SOCKOPT_RESERVED1": true, + "IPV6_TCLASS": true, + "IPV6_UNICAST_HOPS": true, + "IPV6_USE_MIN_MTU": true, + "IPV6_V6ONLY": true, + "IPV6_VERSION": true, + "IPV6_VERSION_MASK": true, + "IPV6_XFRM_POLICY": true, + "IP_ADD_MEMBERSHIP": true, + "IP_ADD_SOURCE_MEMBERSHIP": true, + "IP_AUTH_LEVEL": true, + "IP_BINDANY": true, + "IP_BLOCK_SOURCE": true, + "IP_BOUND_IF": true, + "IP_DEFAULT_MULTICAST_LOOP": true, + "IP_DEFAULT_MULTICAST_TTL": true, + "IP_DF": true, + "IP_DIVERTFL": true, + "IP_DONTFRAG": true, + "IP_DROP_MEMBERSHIP": true, + "IP_DROP_SOURCE_MEMBERSHIP": true, + "IP_DUMMYNET3": true, + "IP_DUMMYNET_CONFIGURE": true, + "IP_DUMMYNET_DEL": true, + "IP_DUMMYNET_FLUSH": true, + "IP_DUMMYNET_GET": true, + "IP_EF": true, + "IP_ERRORMTU": true, + "IP_ESP_NETWORK_LEVEL": true, + "IP_ESP_TRANS_LEVEL": true, + "IP_FAITH": true, + "IP_FREEBIND": true, + "IP_FW3": true, + "IP_FW_ADD": true, + "IP_FW_DEL": true, + "IP_FW_FLUSH": true, + "IP_FW_GET": true, + "IP_FW_NAT_CFG": true, + "IP_FW_NAT_DEL": true, + "IP_FW_NAT_GET_CONFIG": true, + "IP_FW_NAT_GET_LOG": true, + "IP_FW_RESETLOG": true, + "IP_FW_TABLE_ADD": true, + "IP_FW_TABLE_DEL": true, + "IP_FW_TABLE_FLUSH": true, + "IP_FW_TABLE_GETSIZE": true, + "IP_FW_TABLE_LIST": true, + "IP_FW_ZERO": true, + "IP_HDRINCL": true, + "IP_IPCOMP_LEVEL": true, + "IP_IPSECFLOWINFO": true, + "IP_IPSEC_LOCAL_AUTH": true, + "IP_IPSEC_LOCAL_CRED": true, + "IP_IPSEC_LOCAL_ID": true, + "IP_IPSEC_POLICY": true, + "IP_IPSEC_REMOTE_AUTH": true, + "IP_IPSEC_REMOTE_CRED": true, + "IP_IPSEC_REMOTE_ID": true, + "IP_MAXPACKET": true, + "IP_MAX_GROUP_SRC_FILTER": true, + "IP_MAX_MEMBERSHIPS": true, + "IP_MAX_SOCK_MUTE_FILTER": true, + "IP_MAX_SOCK_SRC_FILTER": true, + "IP_MAX_SOURCE_FILTER": true, + "IP_MF": true, + "IP_MINFRAGSIZE": true, + "IP_MINTTL": true, + "IP_MIN_MEMBERSHIPS": true, + "IP_MSFILTER": true, + "IP_MSS": true, + "IP_MTU": true, + "IP_MTU_DISCOVER": true, + "IP_MULTICAST_IF": true, + "IP_MULTICAST_IFINDEX": true, + "IP_MULTICAST_LOOP": true, + "IP_MULTICAST_TTL": true, + "IP_MULTICAST_VIF": true, + "IP_NAT__XXX": true, + "IP_OFFMASK": true, + "IP_OLD_FW_ADD": true, + "IP_OLD_FW_DEL": true, + "IP_OLD_FW_FLUSH": true, + "IP_OLD_FW_GET": true, + "IP_OLD_FW_RESETLOG": true, + "IP_OLD_FW_ZERO": true, + "IP_ONESBCAST": true, + "IP_OPTIONS": true, + "IP_ORIGDSTADDR": true, + "IP_PASSSEC": true, + "IP_PIPEX": true, + "IP_PKTINFO": true, + "IP_PKTOPTIONS": true, + "IP_PMTUDISC": true, + "IP_PMTUDISC_DO": true, + "IP_PMTUDISC_DONT": true, + "IP_PMTUDISC_PROBE": true, + "IP_PMTUDISC_WANT": true, + "IP_PORTRANGE": true, + "IP_PORTRANGE_DEFAULT": true, + "IP_PORTRANGE_HIGH": true, + "IP_PORTRANGE_LOW": true, + "IP_RECVDSTADDR": true, + "IP_RECVDSTPORT": true, + "IP_RECVERR": true, + "IP_RECVIF": true, + "IP_RECVOPTS": true, + "IP_RECVORIGDSTADDR": true, + "IP_RECVPKTINFO": true, + "IP_RECVRETOPTS": true, + "IP_RECVRTABLE": true, + "IP_RECVTOS": true, + "IP_RECVTTL": true, + "IP_RETOPTS": true, + "IP_RF": true, + "IP_ROUTER_ALERT": true, + "IP_RSVP_OFF": true, + "IP_RSVP_ON": true, + "IP_RSVP_VIF_OFF": true, + "IP_RSVP_VIF_ON": true, + "IP_RTABLE": true, + "IP_SENDSRCADDR": true, + "IP_STRIPHDR": true, + "IP_TOS": true, + "IP_TRAFFIC_MGT_BACKGROUND": true, + "IP_TRANSPARENT": true, + "IP_TTL": true, + "IP_UNBLOCK_SOURCE": true, + "IP_XFRM_POLICY": true, + "IPv6MTUInfo": true, + "IPv6Mreq": true, + "ISIG": true, + "ISTRIP": true, + "IUCLC": true, + "IUTF8": true, + "IXANY": true, + "IXOFF": true, + "IXON": true, + "IfAddrmsg": true, + "IfAnnounceMsghdr": true, + "IfData": true, + "IfInfomsg": true, + "IfMsghdr": true, + "IfaMsghdr": true, + "IfmaMsghdr": true, + "IfmaMsghdr2": true, + "ImplementsGetwd": true, + "Inet4Pktinfo": true, + "Inet6Pktinfo": true, + "InotifyAddWatch": true, + "InotifyEvent": true, + "InotifyInit": true, + "InotifyInit1": true, + "InotifyRmWatch": true, + "InterfaceAddrMessage": true, + "InterfaceAnnounceMessage": true, + "InterfaceInfo": true, + "InterfaceMessage": true, + "InterfaceMulticastAddrMessage": true, + "InvalidHandle": true, + "Ioperm": true, + "Iopl": true, + "Iovec": true, + "IpAdapterInfo": true, + "IpAddrString": true, + "IpAddressString": true, + "IpMaskString": true, + "Issetugid": true, + "KEY_ALL_ACCESS": true, + "KEY_CREATE_LINK": true, + "KEY_CREATE_SUB_KEY": true, + "KEY_ENUMERATE_SUB_KEYS": true, + "KEY_EXECUTE": true, + "KEY_NOTIFY": true, + "KEY_QUERY_VALUE": true, + "KEY_READ": true, + "KEY_SET_VALUE": true, + "KEY_WOW64_32KEY": true, + "KEY_WOW64_64KEY": true, + "KEY_WRITE": true, + "Kevent": true, + "Kevent_t": true, + "Kill": true, + "Klogctl": true, + "Kqueue": true, + "LANG_ENGLISH": true, + "LAYERED_PROTOCOL": true, + "LCNT_OVERLOAD_FLUSH": true, + "LINUX_REBOOT_CMD_CAD_OFF": true, + "LINUX_REBOOT_CMD_CAD_ON": true, + "LINUX_REBOOT_CMD_HALT": true, + "LINUX_REBOOT_CMD_KEXEC": true, + "LINUX_REBOOT_CMD_POWER_OFF": true, + "LINUX_REBOOT_CMD_RESTART": true, + "LINUX_REBOOT_CMD_RESTART2": true, + "LINUX_REBOOT_CMD_SW_SUSPEND": true, + "LINUX_REBOOT_MAGIC1": true, + "LINUX_REBOOT_MAGIC2": true, + "LOCK_EX": true, + "LOCK_NB": true, + "LOCK_SH": true, + "LOCK_UN": true, + "LazyDLL": true, + "LazyProc": true, + "Lchown": true, + "Linger": true, + "Link": true, + "Listen": true, + "Listxattr": true, + "LoadCancelIoEx": true, + "LoadConnectEx": true, + "LoadCreateSymbolicLink": true, + "LoadDLL": true, + "LoadGetAddrInfo": true, + "LoadLibrary": true, + "LoadSetFileCompletionNotificationModes": true, + "LocalFree": true, + "Log2phys_t": true, + "LookupAccountName": true, + "LookupAccountSid": true, + "LookupSID": true, + "LsfJump": true, + "LsfSocket": true, + "LsfStmt": true, + "Lstat": true, + "MADV_AUTOSYNC": true, + "MADV_CAN_REUSE": true, + "MADV_CORE": true, + "MADV_DOFORK": true, + "MADV_DONTFORK": true, + "MADV_DONTNEED": true, + "MADV_FREE": true, + "MADV_FREE_REUSABLE": true, + "MADV_FREE_REUSE": true, + "MADV_HUGEPAGE": true, + "MADV_HWPOISON": true, + "MADV_MERGEABLE": true, + "MADV_NOCORE": true, + "MADV_NOHUGEPAGE": true, + "MADV_NORMAL": true, + "MADV_NOSYNC": true, + "MADV_PROTECT": true, + "MADV_RANDOM": true, + "MADV_REMOVE": true, + "MADV_SEQUENTIAL": true, + "MADV_SPACEAVAIL": true, + "MADV_UNMERGEABLE": true, + "MADV_WILLNEED": true, + "MADV_ZERO_WIRED_PAGES": true, + "MAP_32BIT": true, + "MAP_ALIGNED_SUPER": true, + "MAP_ALIGNMENT_16MB": true, + "MAP_ALIGNMENT_1TB": true, + "MAP_ALIGNMENT_256TB": true, + "MAP_ALIGNMENT_4GB": true, + "MAP_ALIGNMENT_64KB": true, + "MAP_ALIGNMENT_64PB": true, + "MAP_ALIGNMENT_MASK": true, + "MAP_ALIGNMENT_SHIFT": true, + "MAP_ANON": true, + "MAP_ANONYMOUS": true, + "MAP_COPY": true, + "MAP_DENYWRITE": true, + "MAP_EXECUTABLE": true, + "MAP_FILE": true, + "MAP_FIXED": true, + "MAP_FLAGMASK": true, + "MAP_GROWSDOWN": true, + "MAP_HASSEMAPHORE": true, + "MAP_HUGETLB": true, + "MAP_INHERIT": true, + "MAP_INHERIT_COPY": true, + "MAP_INHERIT_DEFAULT": true, + "MAP_INHERIT_DONATE_COPY": true, + "MAP_INHERIT_NONE": true, + "MAP_INHERIT_SHARE": true, + "MAP_JIT": true, + "MAP_LOCKED": true, + "MAP_NOCACHE": true, + "MAP_NOCORE": true, + "MAP_NOEXTEND": true, + "MAP_NONBLOCK": true, + "MAP_NORESERVE": true, + "MAP_NOSYNC": true, + "MAP_POPULATE": true, + "MAP_PREFAULT_READ": true, + "MAP_PRIVATE": true, + "MAP_RENAME": true, + "MAP_RESERVED0080": true, + "MAP_RESERVED0100": true, + "MAP_SHARED": true, + "MAP_STACK": true, + "MAP_TRYFIXED": true, + "MAP_TYPE": true, + "MAP_WIRED": true, + "MAXIMUM_REPARSE_DATA_BUFFER_SIZE": true, + "MAXLEN_IFDESCR": true, + "MAXLEN_PHYSADDR": true, + "MAX_ADAPTER_ADDRESS_LENGTH": true, + "MAX_ADAPTER_DESCRIPTION_LENGTH": true, + "MAX_ADAPTER_NAME_LENGTH": true, + "MAX_COMPUTERNAME_LENGTH": true, + "MAX_INTERFACE_NAME_LEN": true, + "MAX_LONG_PATH": true, + "MAX_PATH": true, + "MAX_PROTOCOL_CHAIN": true, + "MCL_CURRENT": true, + "MCL_FUTURE": true, + "MNT_DETACH": true, + "MNT_EXPIRE": true, + "MNT_FORCE": true, + "MSG_BCAST": true, + "MSG_CMSG_CLOEXEC": true, + "MSG_COMPAT": true, + "MSG_CONFIRM": true, + "MSG_CONTROLMBUF": true, + "MSG_CTRUNC": true, + "MSG_DONTROUTE": true, + "MSG_DONTWAIT": true, + "MSG_EOF": true, + "MSG_EOR": true, + "MSG_ERRQUEUE": true, + "MSG_FASTOPEN": true, + "MSG_FIN": true, + "MSG_FLUSH": true, + "MSG_HAVEMORE": true, + "MSG_HOLD": true, + "MSG_IOVUSRSPACE": true, + "MSG_LENUSRSPACE": true, + "MSG_MCAST": true, + "MSG_MORE": true, + "MSG_NAMEMBUF": true, + "MSG_NBIO": true, + "MSG_NEEDSA": true, + "MSG_NOSIGNAL": true, + "MSG_NOTIFICATION": true, + "MSG_OOB": true, + "MSG_PEEK": true, + "MSG_PROXY": true, + "MSG_RCVMORE": true, + "MSG_RST": true, + "MSG_SEND": true, + "MSG_SYN": true, + "MSG_TRUNC": true, + "MSG_TRYHARD": true, + "MSG_USERFLAGS": true, + "MSG_WAITALL": true, + "MSG_WAITFORONE": true, + "MSG_WAITSTREAM": true, + "MS_ACTIVE": true, + "MS_ASYNC": true, + "MS_BIND": true, + "MS_DEACTIVATE": true, + "MS_DIRSYNC": true, + "MS_INVALIDATE": true, + "MS_I_VERSION": true, + "MS_KERNMOUNT": true, + "MS_KILLPAGES": true, + "MS_MANDLOCK": true, + "MS_MGC_MSK": true, + "MS_MGC_VAL": true, + "MS_MOVE": true, + "MS_NOATIME": true, + "MS_NODEV": true, + "MS_NODIRATIME": true, + "MS_NOEXEC": true, + "MS_NOSUID": true, + "MS_NOUSER": true, + "MS_POSIXACL": true, + "MS_PRIVATE": true, + "MS_RDONLY": true, + "MS_REC": true, + "MS_RELATIME": true, + "MS_REMOUNT": true, + "MS_RMT_MASK": true, + "MS_SHARED": true, + "MS_SILENT": true, + "MS_SLAVE": true, + "MS_STRICTATIME": true, + "MS_SYNC": true, + "MS_SYNCHRONOUS": true, + "MS_UNBINDABLE": true, + "Madvise": true, + "MapViewOfFile": true, + "MaxTokenInfoClass": true, + "Mclpool": true, + "MibIfRow": true, + "Mkdir": true, + "Mkdirat": true, + "Mkfifo": true, + "Mknod": true, + "Mknodat": true, + "Mlock": true, + "Mlockall": true, + "Mmap": true, + "Mount": true, + "MoveFile": true, + "Mprotect": true, + "Msghdr": true, + "Munlock": true, + "Munlockall": true, + "Munmap": true, + "MustLoadDLL": true, + "NAME_MAX": true, + "NETLINK_ADD_MEMBERSHIP": true, + "NETLINK_AUDIT": true, + "NETLINK_BROADCAST_ERROR": true, + "NETLINK_CONNECTOR": true, + "NETLINK_DNRTMSG": true, + "NETLINK_DROP_MEMBERSHIP": true, + "NETLINK_ECRYPTFS": true, + "NETLINK_FIB_LOOKUP": true, + "NETLINK_FIREWALL": true, + "NETLINK_GENERIC": true, + "NETLINK_INET_DIAG": true, + "NETLINK_IP6_FW": true, + "NETLINK_ISCSI": true, + "NETLINK_KOBJECT_UEVENT": true, + "NETLINK_NETFILTER": true, + "NETLINK_NFLOG": true, + "NETLINK_NO_ENOBUFS": true, + "NETLINK_PKTINFO": true, + "NETLINK_RDMA": true, + "NETLINK_ROUTE": true, + "NETLINK_SCSITRANSPORT": true, + "NETLINK_SELINUX": true, + "NETLINK_UNUSED": true, + "NETLINK_USERSOCK": true, + "NETLINK_XFRM": true, + "NET_RT_DUMP": true, + "NET_RT_DUMP2": true, + "NET_RT_FLAGS": true, + "NET_RT_IFLIST": true, + "NET_RT_IFLIST2": true, + "NET_RT_IFLISTL": true, + "NET_RT_IFMALIST": true, + "NET_RT_MAXID": true, + "NET_RT_OIFLIST": true, + "NET_RT_OOIFLIST": true, + "NET_RT_STAT": true, + "NET_RT_STATS": true, + "NET_RT_TABLE": true, + "NET_RT_TRASH": true, + "NLA_ALIGNTO": true, + "NLA_F_NESTED": true, + "NLA_F_NET_BYTEORDER": true, + "NLA_HDRLEN": true, + "NLMSG_ALIGNTO": true, + "NLMSG_DONE": true, + "NLMSG_ERROR": true, + "NLMSG_HDRLEN": true, + "NLMSG_MIN_TYPE": true, + "NLMSG_NOOP": true, + "NLMSG_OVERRUN": true, + "NLM_F_ACK": true, + "NLM_F_APPEND": true, + "NLM_F_ATOMIC": true, + "NLM_F_CREATE": true, + "NLM_F_DUMP": true, + "NLM_F_ECHO": true, + "NLM_F_EXCL": true, + "NLM_F_MATCH": true, + "NLM_F_MULTI": true, + "NLM_F_REPLACE": true, + "NLM_F_REQUEST": true, + "NLM_F_ROOT": true, + "NOFLSH": true, + "NOTE_ABSOLUTE": true, + "NOTE_ATTRIB": true, + "NOTE_CHILD": true, + "NOTE_DELETE": true, + "NOTE_EOF": true, + "NOTE_EXEC": true, + "NOTE_EXIT": true, + "NOTE_EXITSTATUS": true, + "NOTE_EXTEND": true, + "NOTE_FFAND": true, + "NOTE_FFCOPY": true, + "NOTE_FFCTRLMASK": true, + "NOTE_FFLAGSMASK": true, + "NOTE_FFNOP": true, + "NOTE_FFOR": true, + "NOTE_FORK": true, + "NOTE_LINK": true, + "NOTE_LOWAT": true, + "NOTE_NONE": true, + "NOTE_NSECONDS": true, + "NOTE_PCTRLMASK": true, + "NOTE_PDATAMASK": true, + "NOTE_REAP": true, + "NOTE_RENAME": true, + "NOTE_RESOURCEEND": true, + "NOTE_REVOKE": true, + "NOTE_SECONDS": true, + "NOTE_SIGNAL": true, + "NOTE_TRACK": true, + "NOTE_TRACKERR": true, + "NOTE_TRIGGER": true, + "NOTE_TRUNCATE": true, + "NOTE_USECONDS": true, + "NOTE_VM_ERROR": true, + "NOTE_VM_PRESSURE": true, + "NOTE_VM_PRESSURE_SUDDEN_TERMINATE": true, + "NOTE_VM_PRESSURE_TERMINATE": true, + "NOTE_WRITE": true, + "NameCanonical": true, + "NameCanonicalEx": true, + "NameDisplay": true, + "NameDnsDomain": true, + "NameFullyQualifiedDN": true, + "NameSamCompatible": true, + "NameServicePrincipal": true, + "NameUniqueId": true, + "NameUnknown": true, + "NameUserPrincipal": true, + "Nanosleep": true, + "NetApiBufferFree": true, + "NetGetJoinInformation": true, + "NetSetupDomainName": true, + "NetSetupUnjoined": true, + "NetSetupUnknownStatus": true, + "NetSetupWorkgroupName": true, + "NetUserGetInfo": true, + "NetlinkMessage": true, + "NetlinkRIB": true, + "NetlinkRouteAttr": true, + "NetlinkRouteRequest": true, + "NewCallback": true, + "NewCallbackCDecl": true, + "NewLazyDLL": true, + "NlAttr": true, + "NlMsgerr": true, + "NlMsghdr": true, + "NsecToFiletime": true, + "NsecToTimespec": true, + "NsecToTimeval": true, + "Ntohs": true, + "OCRNL": true, + "OFDEL": true, + "OFILL": true, + "OFIOGETBMAP": true, + "OID_PKIX_KP_SERVER_AUTH": true, + "OID_SERVER_GATED_CRYPTO": true, + "OID_SGC_NETSCAPE": true, + "OLCUC": true, + "ONLCR": true, + "ONLRET": true, + "ONOCR": true, + "ONOEOT": true, + "OPEN_ALWAYS": true, + "OPEN_EXISTING": true, + "OPOST": true, + "O_ACCMODE": true, + "O_ALERT": true, + "O_ALT_IO": true, + "O_APPEND": true, + "O_ASYNC": true, + "O_CLOEXEC": true, + "O_CREAT": true, + "O_DIRECT": true, + "O_DIRECTORY": true, + "O_DSYNC": true, + "O_EVTONLY": true, + "O_EXCL": true, + "O_EXEC": true, + "O_EXLOCK": true, + "O_FSYNC": true, + "O_LARGEFILE": true, + "O_NDELAY": true, + "O_NOATIME": true, + "O_NOCTTY": true, + "O_NOFOLLOW": true, + "O_NONBLOCK": true, + "O_NOSIGPIPE": true, + "O_POPUP": true, + "O_RDONLY": true, + "O_RDWR": true, + "O_RSYNC": true, + "O_SHLOCK": true, + "O_SYMLINK": true, + "O_SYNC": true, + "O_TRUNC": true, + "O_TTY_INIT": true, + "O_WRONLY": true, + "Open": true, + "OpenCurrentProcessToken": true, + "OpenProcess": true, + "OpenProcessToken": true, + "Openat": true, + "Overlapped": true, + "PACKET_ADD_MEMBERSHIP": true, + "PACKET_BROADCAST": true, + "PACKET_DROP_MEMBERSHIP": true, + "PACKET_FASTROUTE": true, + "PACKET_HOST": true, + "PACKET_LOOPBACK": true, + "PACKET_MR_ALLMULTI": true, + "PACKET_MR_MULTICAST": true, + "PACKET_MR_PROMISC": true, + "PACKET_MULTICAST": true, + "PACKET_OTHERHOST": true, + "PACKET_OUTGOING": true, + "PACKET_RECV_OUTPUT": true, + "PACKET_RX_RING": true, + "PACKET_STATISTICS": true, + "PAGE_EXECUTE_READ": true, + "PAGE_EXECUTE_READWRITE": true, + "PAGE_EXECUTE_WRITECOPY": true, + "PAGE_READONLY": true, + "PAGE_READWRITE": true, + "PAGE_WRITECOPY": true, + "PARENB": true, + "PARMRK": true, + "PARODD": true, + "PENDIN": true, + "PFL_HIDDEN": true, + "PFL_MATCHES_PROTOCOL_ZERO": true, + "PFL_MULTIPLE_PROTO_ENTRIES": true, + "PFL_NETWORKDIRECT_PROVIDER": true, + "PFL_RECOMMENDED_PROTO_ENTRY": true, + "PF_FLUSH": true, + "PKCS_7_ASN_ENCODING": true, + "PMC5_PIPELINE_FLUSH": true, + "PRIO_PGRP": true, + "PRIO_PROCESS": true, + "PRIO_USER": true, + "PRI_IOFLUSH": true, + "PROCESS_QUERY_INFORMATION": true, + "PROCESS_TERMINATE": true, + "PROT_EXEC": true, + "PROT_GROWSDOWN": true, + "PROT_GROWSUP": true, + "PROT_NONE": true, + "PROT_READ": true, + "PROT_WRITE": true, + "PROV_DH_SCHANNEL": true, + "PROV_DSS": true, + "PROV_DSS_DH": true, + "PROV_EC_ECDSA_FULL": true, + "PROV_EC_ECDSA_SIG": true, + "PROV_EC_ECNRA_FULL": true, + "PROV_EC_ECNRA_SIG": true, + "PROV_FORTEZZA": true, + "PROV_INTEL_SEC": true, + "PROV_MS_EXCHANGE": true, + "PROV_REPLACE_OWF": true, + "PROV_RNG": true, + "PROV_RSA_AES": true, + "PROV_RSA_FULL": true, + "PROV_RSA_SCHANNEL": true, + "PROV_RSA_SIG": true, + "PROV_SPYRUS_LYNKS": true, + "PROV_SSL": true, + "PR_CAPBSET_DROP": true, + "PR_CAPBSET_READ": true, + "PR_CLEAR_SECCOMP_FILTER": true, + "PR_ENDIAN_BIG": true, + "PR_ENDIAN_LITTLE": true, + "PR_ENDIAN_PPC_LITTLE": true, + "PR_FPEMU_NOPRINT": true, + "PR_FPEMU_SIGFPE": true, + "PR_FP_EXC_ASYNC": true, + "PR_FP_EXC_DISABLED": true, + "PR_FP_EXC_DIV": true, + "PR_FP_EXC_INV": true, + "PR_FP_EXC_NONRECOV": true, + "PR_FP_EXC_OVF": true, + "PR_FP_EXC_PRECISE": true, + "PR_FP_EXC_RES": true, + "PR_FP_EXC_SW_ENABLE": true, + "PR_FP_EXC_UND": true, + "PR_GET_DUMPABLE": true, + "PR_GET_ENDIAN": true, + "PR_GET_FPEMU": true, + "PR_GET_FPEXC": true, + "PR_GET_KEEPCAPS": true, + "PR_GET_NAME": true, + "PR_GET_PDEATHSIG": true, + "PR_GET_SECCOMP": true, + "PR_GET_SECCOMP_FILTER": true, + "PR_GET_SECUREBITS": true, + "PR_GET_TIMERSLACK": true, + "PR_GET_TIMING": true, + "PR_GET_TSC": true, + "PR_GET_UNALIGN": true, + "PR_MCE_KILL": true, + "PR_MCE_KILL_CLEAR": true, + "PR_MCE_KILL_DEFAULT": true, + "PR_MCE_KILL_EARLY": true, + "PR_MCE_KILL_GET": true, + "PR_MCE_KILL_LATE": true, + "PR_MCE_KILL_SET": true, + "PR_SECCOMP_FILTER_EVENT": true, + "PR_SECCOMP_FILTER_SYSCALL": true, + "PR_SET_DUMPABLE": true, + "PR_SET_ENDIAN": true, + "PR_SET_FPEMU": true, + "PR_SET_FPEXC": true, + "PR_SET_KEEPCAPS": true, + "PR_SET_NAME": true, + "PR_SET_PDEATHSIG": true, + "PR_SET_PTRACER": true, + "PR_SET_SECCOMP": true, + "PR_SET_SECCOMP_FILTER": true, + "PR_SET_SECUREBITS": true, + "PR_SET_TIMERSLACK": true, + "PR_SET_TIMING": true, + "PR_SET_TSC": true, + "PR_SET_UNALIGN": true, + "PR_TASK_PERF_EVENTS_DISABLE": true, + "PR_TASK_PERF_EVENTS_ENABLE": true, + "PR_TIMING_STATISTICAL": true, + "PR_TIMING_TIMESTAMP": true, + "PR_TSC_ENABLE": true, + "PR_TSC_SIGSEGV": true, + "PR_UNALIGN_NOPRINT": true, + "PR_UNALIGN_SIGBUS": true, + "PTRACE_ARCH_PRCTL": true, + "PTRACE_ATTACH": true, + "PTRACE_CONT": true, + "PTRACE_DETACH": true, + "PTRACE_EVENT_CLONE": true, + "PTRACE_EVENT_EXEC": true, + "PTRACE_EVENT_EXIT": true, + "PTRACE_EVENT_FORK": true, + "PTRACE_EVENT_VFORK": true, + "PTRACE_EVENT_VFORK_DONE": true, + "PTRACE_GETCRUNCHREGS": true, + "PTRACE_GETEVENTMSG": true, + "PTRACE_GETFPREGS": true, + "PTRACE_GETFPXREGS": true, + "PTRACE_GETHBPREGS": true, + "PTRACE_GETREGS": true, + "PTRACE_GETREGSET": true, + "PTRACE_GETSIGINFO": true, + "PTRACE_GETVFPREGS": true, + "PTRACE_GETWMMXREGS": true, + "PTRACE_GET_THREAD_AREA": true, + "PTRACE_KILL": true, + "PTRACE_OLDSETOPTIONS": true, + "PTRACE_O_MASK": true, + "PTRACE_O_TRACECLONE": true, + "PTRACE_O_TRACEEXEC": true, + "PTRACE_O_TRACEEXIT": true, + "PTRACE_O_TRACEFORK": true, + "PTRACE_O_TRACESYSGOOD": true, + "PTRACE_O_TRACEVFORK": true, + "PTRACE_O_TRACEVFORKDONE": true, + "PTRACE_PEEKDATA": true, + "PTRACE_PEEKTEXT": true, + "PTRACE_PEEKUSR": true, + "PTRACE_POKEDATA": true, + "PTRACE_POKETEXT": true, + "PTRACE_POKEUSR": true, + "PTRACE_SETCRUNCHREGS": true, + "PTRACE_SETFPREGS": true, + "PTRACE_SETFPXREGS": true, + "PTRACE_SETHBPREGS": true, + "PTRACE_SETOPTIONS": true, + "PTRACE_SETREGS": true, + "PTRACE_SETREGSET": true, + "PTRACE_SETSIGINFO": true, + "PTRACE_SETVFPREGS": true, + "PTRACE_SETWMMXREGS": true, + "PTRACE_SET_SYSCALL": true, + "PTRACE_SET_THREAD_AREA": true, + "PTRACE_SINGLEBLOCK": true, + "PTRACE_SINGLESTEP": true, + "PTRACE_SYSCALL": true, + "PTRACE_SYSEMU": true, + "PTRACE_SYSEMU_SINGLESTEP": true, + "PTRACE_TRACEME": true, + "PT_ATTACH": true, + "PT_ATTACHEXC": true, + "PT_CONTINUE": true, + "PT_DATA_ADDR": true, + "PT_DENY_ATTACH": true, + "PT_DETACH": true, + "PT_FIRSTMACH": true, + "PT_FORCEQUOTA": true, + "PT_KILL": true, + "PT_MASK": true, + "PT_READ_D": true, + "PT_READ_I": true, + "PT_READ_U": true, + "PT_SIGEXC": true, + "PT_STEP": true, + "PT_TEXT_ADDR": true, + "PT_TEXT_END_ADDR": true, + "PT_THUPDATE": true, + "PT_TRACE_ME": true, + "PT_WRITE_D": true, + "PT_WRITE_I": true, + "PT_WRITE_U": true, + "ParseDirent": true, + "ParseNetlinkMessage": true, + "ParseNetlinkRouteAttr": true, + "ParseRoutingMessage": true, + "ParseRoutingSockaddr": true, + "ParseSocketControlMessage": true, + "ParseUnixCredentials": true, + "ParseUnixRights": true, + "PathMax": true, + "Pathconf": true, + "Pause": true, + "Pipe": true, + "Pipe2": true, + "PivotRoot": true, + "Pointer": true, + "PostQueuedCompletionStatus": true, + "Pread": true, + "Proc": true, + "ProcAttr": true, + "Process32First": true, + "Process32Next": true, + "ProcessEntry32": true, + "ProcessInformation": true, + "Protoent": true, + "PtraceAttach": true, + "PtraceCont": true, + "PtraceDetach": true, + "PtraceGetEventMsg": true, + "PtraceGetRegs": true, + "PtracePeekData": true, + "PtracePeekText": true, + "PtracePokeData": true, + "PtracePokeText": true, + "PtraceRegs": true, + "PtraceSetOptions": true, + "PtraceSetRegs": true, + "PtraceSingleStep": true, + "PtraceSyscall": true, + "Pwrite": true, + "REG_BINARY": true, + "REG_DWORD": true, + "REG_DWORD_BIG_ENDIAN": true, + "REG_DWORD_LITTLE_ENDIAN": true, + "REG_EXPAND_SZ": true, + "REG_FULL_RESOURCE_DESCRIPTOR": true, + "REG_LINK": true, + "REG_MULTI_SZ": true, + "REG_NONE": true, + "REG_QWORD": true, + "REG_QWORD_LITTLE_ENDIAN": true, + "REG_RESOURCE_LIST": true, + "REG_RESOURCE_REQUIREMENTS_LIST": true, + "REG_SZ": true, + "RLIMIT_AS": true, + "RLIMIT_CORE": true, + "RLIMIT_CPU": true, + "RLIMIT_DATA": true, + "RLIMIT_FSIZE": true, + "RLIMIT_NOFILE": true, + "RLIMIT_STACK": true, + "RLIM_INFINITY": true, + "RTAX_ADVMSS": true, + "RTAX_AUTHOR": true, + "RTAX_BRD": true, + "RTAX_CWND": true, + "RTAX_DST": true, + "RTAX_FEATURES": true, + "RTAX_FEATURE_ALLFRAG": true, + "RTAX_FEATURE_ECN": true, + "RTAX_FEATURE_SACK": true, + "RTAX_FEATURE_TIMESTAMP": true, + "RTAX_GATEWAY": true, + "RTAX_GENMASK": true, + "RTAX_HOPLIMIT": true, + "RTAX_IFA": true, + "RTAX_IFP": true, + "RTAX_INITCWND": true, + "RTAX_INITRWND": true, + "RTAX_LABEL": true, + "RTAX_LOCK": true, + "RTAX_MAX": true, + "RTAX_MTU": true, + "RTAX_NETMASK": true, + "RTAX_REORDERING": true, + "RTAX_RTO_MIN": true, + "RTAX_RTT": true, + "RTAX_RTTVAR": true, + "RTAX_SRC": true, + "RTAX_SRCMASK": true, + "RTAX_SSTHRESH": true, + "RTAX_TAG": true, + "RTAX_UNSPEC": true, + "RTAX_WINDOW": true, + "RTA_ALIGNTO": true, + "RTA_AUTHOR": true, + "RTA_BRD": true, + "RTA_CACHEINFO": true, + "RTA_DST": true, + "RTA_FLOW": true, + "RTA_GATEWAY": true, + "RTA_GENMASK": true, + "RTA_IFA": true, + "RTA_IFP": true, + "RTA_IIF": true, + "RTA_LABEL": true, + "RTA_MAX": true, + "RTA_METRICS": true, + "RTA_MULTIPATH": true, + "RTA_NETMASK": true, + "RTA_OIF": true, + "RTA_PREFSRC": true, + "RTA_PRIORITY": true, + "RTA_SRC": true, + "RTA_SRCMASK": true, + "RTA_TABLE": true, + "RTA_TAG": true, + "RTA_UNSPEC": true, + "RTCF_DIRECTSRC": true, + "RTCF_DOREDIRECT": true, + "RTCF_LOG": true, + "RTCF_MASQ": true, + "RTCF_NAT": true, + "RTCF_VALVE": true, + "RTF_ADDRCLASSMASK": true, + "RTF_ADDRCONF": true, + "RTF_ALLONLINK": true, + "RTF_ANNOUNCE": true, + "RTF_BLACKHOLE": true, + "RTF_BROADCAST": true, + "RTF_CACHE": true, + "RTF_CLONED": true, + "RTF_CLONING": true, + "RTF_CONDEMNED": true, + "RTF_DEFAULT": true, + "RTF_DELCLONE": true, + "RTF_DONE": true, + "RTF_DYNAMIC": true, + "RTF_FLOW": true, + "RTF_FMASK": true, + "RTF_GATEWAY": true, + "RTF_GWFLAG_COMPAT": true, + "RTF_HOST": true, + "RTF_IFREF": true, + "RTF_IFSCOPE": true, + "RTF_INTERFACE": true, + "RTF_IRTT": true, + "RTF_LINKRT": true, + "RTF_LLDATA": true, + "RTF_LLINFO": true, + "RTF_LOCAL": true, + "RTF_MASK": true, + "RTF_MODIFIED": true, + "RTF_MPATH": true, + "RTF_MPLS": true, + "RTF_MSS": true, + "RTF_MTU": true, + "RTF_MULTICAST": true, + "RTF_NAT": true, + "RTF_NOFORWARD": true, + "RTF_NONEXTHOP": true, + "RTF_NOPMTUDISC": true, + "RTF_PERMANENT_ARP": true, + "RTF_PINNED": true, + "RTF_POLICY": true, + "RTF_PRCLONING": true, + "RTF_PROTO1": true, + "RTF_PROTO2": true, + "RTF_PROTO3": true, + "RTF_REINSTATE": true, + "RTF_REJECT": true, + "RTF_RNH_LOCKED": true, + "RTF_SOURCE": true, + "RTF_SRC": true, + "RTF_STATIC": true, + "RTF_STICKY": true, + "RTF_THROW": true, + "RTF_TUNNEL": true, + "RTF_UP": true, + "RTF_USETRAILERS": true, + "RTF_WASCLONED": true, + "RTF_WINDOW": true, + "RTF_XRESOLVE": true, + "RTM_ADD": true, + "RTM_BASE": true, + "RTM_CHANGE": true, + "RTM_CHGADDR": true, + "RTM_DELACTION": true, + "RTM_DELADDR": true, + "RTM_DELADDRLABEL": true, + "RTM_DELETE": true, + "RTM_DELLINK": true, + "RTM_DELMADDR": true, + "RTM_DELNEIGH": true, + "RTM_DELQDISC": true, + "RTM_DELROUTE": true, + "RTM_DELRULE": true, + "RTM_DELTCLASS": true, + "RTM_DELTFILTER": true, + "RTM_DESYNC": true, + "RTM_F_CLONED": true, + "RTM_F_EQUALIZE": true, + "RTM_F_NOTIFY": true, + "RTM_F_PREFIX": true, + "RTM_GET": true, + "RTM_GET2": true, + "RTM_GETACTION": true, + "RTM_GETADDR": true, + "RTM_GETADDRLABEL": true, + "RTM_GETANYCAST": true, + "RTM_GETDCB": true, + "RTM_GETLINK": true, + "RTM_GETMULTICAST": true, + "RTM_GETNEIGH": true, + "RTM_GETNEIGHTBL": true, + "RTM_GETQDISC": true, + "RTM_GETROUTE": true, + "RTM_GETRULE": true, + "RTM_GETTCLASS": true, + "RTM_GETTFILTER": true, + "RTM_IEEE80211": true, + "RTM_IFANNOUNCE": true, + "RTM_IFINFO": true, + "RTM_IFINFO2": true, + "RTM_LLINFO_UPD": true, + "RTM_LOCK": true, + "RTM_LOSING": true, + "RTM_MAX": true, + "RTM_MAXSIZE": true, + "RTM_MISS": true, + "RTM_NEWACTION": true, + "RTM_NEWADDR": true, + "RTM_NEWADDRLABEL": true, + "RTM_NEWLINK": true, + "RTM_NEWMADDR": true, + "RTM_NEWMADDR2": true, + "RTM_NEWNDUSEROPT": true, + "RTM_NEWNEIGH": true, + "RTM_NEWNEIGHTBL": true, + "RTM_NEWPREFIX": true, + "RTM_NEWQDISC": true, + "RTM_NEWROUTE": true, + "RTM_NEWRULE": true, + "RTM_NEWTCLASS": true, + "RTM_NEWTFILTER": true, + "RTM_NR_FAMILIES": true, + "RTM_NR_MSGTYPES": true, + "RTM_OIFINFO": true, + "RTM_OLDADD": true, + "RTM_OLDDEL": true, + "RTM_OOIFINFO": true, + "RTM_REDIRECT": true, + "RTM_RESOLVE": true, + "RTM_RTTUNIT": true, + "RTM_SETDCB": true, + "RTM_SETGATE": true, + "RTM_SETLINK": true, + "RTM_SETNEIGHTBL": true, + "RTM_VERSION": true, + "RTNH_ALIGNTO": true, + "RTNH_F_DEAD": true, + "RTNH_F_ONLINK": true, + "RTNH_F_PERVASIVE": true, + "RTNLGRP_IPV4_IFADDR": true, + "RTNLGRP_IPV4_MROUTE": true, + "RTNLGRP_IPV4_ROUTE": true, + "RTNLGRP_IPV4_RULE": true, + "RTNLGRP_IPV6_IFADDR": true, + "RTNLGRP_IPV6_IFINFO": true, + "RTNLGRP_IPV6_MROUTE": true, + "RTNLGRP_IPV6_PREFIX": true, + "RTNLGRP_IPV6_ROUTE": true, + "RTNLGRP_IPV6_RULE": true, + "RTNLGRP_LINK": true, + "RTNLGRP_ND_USEROPT": true, + "RTNLGRP_NEIGH": true, + "RTNLGRP_NONE": true, + "RTNLGRP_NOTIFY": true, + "RTNLGRP_TC": true, + "RTN_ANYCAST": true, + "RTN_BLACKHOLE": true, + "RTN_BROADCAST": true, + "RTN_LOCAL": true, + "RTN_MAX": true, + "RTN_MULTICAST": true, + "RTN_NAT": true, + "RTN_PROHIBIT": true, + "RTN_THROW": true, + "RTN_UNICAST": true, + "RTN_UNREACHABLE": true, + "RTN_UNSPEC": true, + "RTN_XRESOLVE": true, + "RTPROT_BIRD": true, + "RTPROT_BOOT": true, + "RTPROT_DHCP": true, + "RTPROT_DNROUTED": true, + "RTPROT_GATED": true, + "RTPROT_KERNEL": true, + "RTPROT_MRT": true, + "RTPROT_NTK": true, + "RTPROT_RA": true, + "RTPROT_REDIRECT": true, + "RTPROT_STATIC": true, + "RTPROT_UNSPEC": true, + "RTPROT_XORP": true, + "RTPROT_ZEBRA": true, + "RTV_EXPIRE": true, + "RTV_HOPCOUNT": true, + "RTV_MTU": true, + "RTV_RPIPE": true, + "RTV_RTT": true, + "RTV_RTTVAR": true, + "RTV_SPIPE": true, + "RTV_SSTHRESH": true, + "RTV_WEIGHT": true, + "RT_CACHING_CONTEXT": true, + "RT_CLASS_DEFAULT": true, + "RT_CLASS_LOCAL": true, + "RT_CLASS_MAIN": true, + "RT_CLASS_MAX": true, + "RT_CLASS_UNSPEC": true, + "RT_DEFAULT_FIB": true, + "RT_NORTREF": true, + "RT_SCOPE_HOST": true, + "RT_SCOPE_LINK": true, + "RT_SCOPE_NOWHERE": true, + "RT_SCOPE_SITE": true, + "RT_SCOPE_UNIVERSE": true, + "RT_TABLEID_MAX": true, + "RT_TABLE_COMPAT": true, + "RT_TABLE_DEFAULT": true, + "RT_TABLE_LOCAL": true, + "RT_TABLE_MAIN": true, + "RT_TABLE_MAX": true, + "RT_TABLE_UNSPEC": true, + "RUSAGE_CHILDREN": true, + "RUSAGE_SELF": true, + "RUSAGE_THREAD": true, + "Radvisory_t": true, + "RawConn": true, + "RawSockaddr": true, + "RawSockaddrAny": true, + "RawSockaddrDatalink": true, + "RawSockaddrInet4": true, + "RawSockaddrInet6": true, + "RawSockaddrLinklayer": true, + "RawSockaddrNetlink": true, + "RawSockaddrUnix": true, + "RawSyscall": true, + "RawSyscall6": true, + "Read": true, + "ReadConsole": true, + "ReadDirectoryChanges": true, + "ReadDirent": true, + "ReadFile": true, + "Readlink": true, + "Reboot": true, + "Recvfrom": true, + "Recvmsg": true, + "RegCloseKey": true, + "RegEnumKeyEx": true, + "RegOpenKeyEx": true, + "RegQueryInfoKey": true, + "RegQueryValueEx": true, + "RemoveDirectory": true, + "Removexattr": true, + "Rename": true, + "Renameat": true, + "Revoke": true, + "Rlimit": true, + "Rmdir": true, + "RouteMessage": true, + "RouteRIB": true, + "RoutingMessage": true, + "RtAttr": true, + "RtGenmsg": true, + "RtMetrics": true, + "RtMsg": true, + "RtMsghdr": true, + "RtNexthop": true, + "Rusage": true, + "SCM_BINTIME": true, + "SCM_CREDENTIALS": true, + "SCM_CREDS": true, + "SCM_RIGHTS": true, + "SCM_TIMESTAMP": true, + "SCM_TIMESTAMPING": true, + "SCM_TIMESTAMPNS": true, + "SCM_TIMESTAMP_MONOTONIC": true, + "SHUT_RD": true, + "SHUT_RDWR": true, + "SHUT_WR": true, + "SID": true, + "SIDAndAttributes": true, + "SIGABRT": true, + "SIGALRM": true, + "SIGBUS": true, + "SIGCHLD": true, + "SIGCLD": true, + "SIGCONT": true, + "SIGEMT": true, + "SIGFPE": true, + "SIGHUP": true, + "SIGILL": true, + "SIGINFO": true, + "SIGINT": true, + "SIGIO": true, + "SIGIOT": true, + "SIGKILL": true, + "SIGLIBRT": true, + "SIGLWP": true, + "SIGPIPE": true, + "SIGPOLL": true, + "SIGPROF": true, + "SIGPWR": true, + "SIGQUIT": true, + "SIGSEGV": true, + "SIGSTKFLT": true, + "SIGSTOP": true, + "SIGSYS": true, + "SIGTERM": true, + "SIGTHR": true, + "SIGTRAP": true, + "SIGTSTP": true, + "SIGTTIN": true, + "SIGTTOU": true, + "SIGUNUSED": true, + "SIGURG": true, + "SIGUSR1": true, + "SIGUSR2": true, + "SIGVTALRM": true, + "SIGWINCH": true, + "SIGXCPU": true, + "SIGXFSZ": true, + "SIOCADDDLCI": true, + "SIOCADDMULTI": true, + "SIOCADDRT": true, + "SIOCAIFADDR": true, + "SIOCAIFGROUP": true, + "SIOCALIFADDR": true, + "SIOCARPIPLL": true, + "SIOCATMARK": true, + "SIOCAUTOADDR": true, + "SIOCAUTONETMASK": true, + "SIOCBRDGADD": true, + "SIOCBRDGADDS": true, + "SIOCBRDGARL": true, + "SIOCBRDGDADDR": true, + "SIOCBRDGDEL": true, + "SIOCBRDGDELS": true, + "SIOCBRDGFLUSH": true, + "SIOCBRDGFRL": true, + "SIOCBRDGGCACHE": true, + "SIOCBRDGGFD": true, + "SIOCBRDGGHT": true, + "SIOCBRDGGIFFLGS": true, + "SIOCBRDGGMA": true, + "SIOCBRDGGPARAM": true, + "SIOCBRDGGPRI": true, + "SIOCBRDGGRL": true, + "SIOCBRDGGSIFS": true, + "SIOCBRDGGTO": true, + "SIOCBRDGIFS": true, + "SIOCBRDGRTS": true, + "SIOCBRDGSADDR": true, + "SIOCBRDGSCACHE": true, + "SIOCBRDGSFD": true, + "SIOCBRDGSHT": true, + "SIOCBRDGSIFCOST": true, + "SIOCBRDGSIFFLGS": true, + "SIOCBRDGSIFPRIO": true, + "SIOCBRDGSMA": true, + "SIOCBRDGSPRI": true, + "SIOCBRDGSPROTO": true, + "SIOCBRDGSTO": true, + "SIOCBRDGSTXHC": true, + "SIOCDARP": true, + "SIOCDELDLCI": true, + "SIOCDELMULTI": true, + "SIOCDELRT": true, + "SIOCDEVPRIVATE": true, + "SIOCDIFADDR": true, + "SIOCDIFGROUP": true, + "SIOCDIFPHYADDR": true, + "SIOCDLIFADDR": true, + "SIOCDRARP": true, + "SIOCGARP": true, + "SIOCGDRVSPEC": true, + "SIOCGETKALIVE": true, + "SIOCGETLABEL": true, + "SIOCGETPFLOW": true, + "SIOCGETPFSYNC": true, + "SIOCGETSGCNT": true, + "SIOCGETVIFCNT": true, + "SIOCGETVLAN": true, + "SIOCGHIWAT": true, + "SIOCGIFADDR": true, + "SIOCGIFADDRPREF": true, + "SIOCGIFALIAS": true, + "SIOCGIFALTMTU": true, + "SIOCGIFASYNCMAP": true, + "SIOCGIFBOND": true, + "SIOCGIFBR": true, + "SIOCGIFBRDADDR": true, + "SIOCGIFCAP": true, + "SIOCGIFCONF": true, + "SIOCGIFCOUNT": true, + "SIOCGIFDATA": true, + "SIOCGIFDESCR": true, + "SIOCGIFDEVMTU": true, + "SIOCGIFDLT": true, + "SIOCGIFDSTADDR": true, + "SIOCGIFENCAP": true, + "SIOCGIFFIB": true, + "SIOCGIFFLAGS": true, + "SIOCGIFGATTR": true, + "SIOCGIFGENERIC": true, + "SIOCGIFGMEMB": true, + "SIOCGIFGROUP": true, + "SIOCGIFHARDMTU": true, + "SIOCGIFHWADDR": true, + "SIOCGIFINDEX": true, + "SIOCGIFKPI": true, + "SIOCGIFMAC": true, + "SIOCGIFMAP": true, + "SIOCGIFMEDIA": true, + "SIOCGIFMEM": true, + "SIOCGIFMETRIC": true, + "SIOCGIFMTU": true, + "SIOCGIFNAME": true, + "SIOCGIFNETMASK": true, + "SIOCGIFPDSTADDR": true, + "SIOCGIFPFLAGS": true, + "SIOCGIFPHYS": true, + "SIOCGIFPRIORITY": true, + "SIOCGIFPSRCADDR": true, + "SIOCGIFRDOMAIN": true, + "SIOCGIFRTLABEL": true, + "SIOCGIFSLAVE": true, + "SIOCGIFSTATUS": true, + "SIOCGIFTIMESLOT": true, + "SIOCGIFTXQLEN": true, + "SIOCGIFVLAN": true, + "SIOCGIFWAKEFLAGS": true, + "SIOCGIFXFLAGS": true, + "SIOCGLIFADDR": true, + "SIOCGLIFPHYADDR": true, + "SIOCGLIFPHYRTABLE": true, + "SIOCGLIFPHYTTL": true, + "SIOCGLINKSTR": true, + "SIOCGLOWAT": true, + "SIOCGPGRP": true, + "SIOCGPRIVATE_0": true, + "SIOCGPRIVATE_1": true, + "SIOCGRARP": true, + "SIOCGSPPPPARAMS": true, + "SIOCGSTAMP": true, + "SIOCGSTAMPNS": true, + "SIOCGVH": true, + "SIOCGVNETID": true, + "SIOCIFCREATE": true, + "SIOCIFCREATE2": true, + "SIOCIFDESTROY": true, + "SIOCIFGCLONERS": true, + "SIOCINITIFADDR": true, + "SIOCPROTOPRIVATE": true, + "SIOCRSLVMULTI": true, + "SIOCRTMSG": true, + "SIOCSARP": true, + "SIOCSDRVSPEC": true, + "SIOCSETKALIVE": true, + "SIOCSETLABEL": true, + "SIOCSETPFLOW": true, + "SIOCSETPFSYNC": true, + "SIOCSETVLAN": true, + "SIOCSHIWAT": true, + "SIOCSIFADDR": true, + "SIOCSIFADDRPREF": true, + "SIOCSIFALTMTU": true, + "SIOCSIFASYNCMAP": true, + "SIOCSIFBOND": true, + "SIOCSIFBR": true, + "SIOCSIFBRDADDR": true, + "SIOCSIFCAP": true, + "SIOCSIFDESCR": true, + "SIOCSIFDSTADDR": true, + "SIOCSIFENCAP": true, + "SIOCSIFFIB": true, + "SIOCSIFFLAGS": true, + "SIOCSIFGATTR": true, + "SIOCSIFGENERIC": true, + "SIOCSIFHWADDR": true, + "SIOCSIFHWBROADCAST": true, + "SIOCSIFKPI": true, + "SIOCSIFLINK": true, + "SIOCSIFLLADDR": true, + "SIOCSIFMAC": true, + "SIOCSIFMAP": true, + "SIOCSIFMEDIA": true, + "SIOCSIFMEM": true, + "SIOCSIFMETRIC": true, + "SIOCSIFMTU": true, + "SIOCSIFNAME": true, + "SIOCSIFNETMASK": true, + "SIOCSIFPFLAGS": true, + "SIOCSIFPHYADDR": true, + "SIOCSIFPHYS": true, + "SIOCSIFPRIORITY": true, + "SIOCSIFRDOMAIN": true, + "SIOCSIFRTLABEL": true, + "SIOCSIFRVNET": true, + "SIOCSIFSLAVE": true, + "SIOCSIFTIMESLOT": true, + "SIOCSIFTXQLEN": true, + "SIOCSIFVLAN": true, + "SIOCSIFVNET": true, + "SIOCSIFXFLAGS": true, + "SIOCSLIFPHYADDR": true, + "SIOCSLIFPHYRTABLE": true, + "SIOCSLIFPHYTTL": true, + "SIOCSLINKSTR": true, + "SIOCSLOWAT": true, + "SIOCSPGRP": true, + "SIOCSRARP": true, + "SIOCSSPPPPARAMS": true, + "SIOCSVH": true, + "SIOCSVNETID": true, + "SIOCZIFDATA": true, + "SIO_GET_EXTENSION_FUNCTION_POINTER": true, + "SIO_GET_INTERFACE_LIST": true, + "SIO_KEEPALIVE_VALS": true, + "SIO_UDP_CONNRESET": true, + "SOCK_CLOEXEC": true, + "SOCK_DCCP": true, + "SOCK_DGRAM": true, + "SOCK_FLAGS_MASK": true, + "SOCK_MAXADDRLEN": true, + "SOCK_NONBLOCK": true, + "SOCK_NOSIGPIPE": true, + "SOCK_PACKET": true, + "SOCK_RAW": true, + "SOCK_RDM": true, + "SOCK_SEQPACKET": true, + "SOCK_STREAM": true, + "SOL_AAL": true, + "SOL_ATM": true, + "SOL_DECNET": true, + "SOL_ICMPV6": true, + "SOL_IP": true, + "SOL_IPV6": true, + "SOL_IRDA": true, + "SOL_PACKET": true, + "SOL_RAW": true, + "SOL_SOCKET": true, + "SOL_TCP": true, + "SOL_X25": true, + "SOMAXCONN": true, + "SO_ACCEPTCONN": true, + "SO_ACCEPTFILTER": true, + "SO_ATTACH_FILTER": true, + "SO_BINDANY": true, + "SO_BINDTODEVICE": true, + "SO_BINTIME": true, + "SO_BROADCAST": true, + "SO_BSDCOMPAT": true, + "SO_DEBUG": true, + "SO_DETACH_FILTER": true, + "SO_DOMAIN": true, + "SO_DONTROUTE": true, + "SO_DONTTRUNC": true, + "SO_ERROR": true, + "SO_KEEPALIVE": true, + "SO_LABEL": true, + "SO_LINGER": true, + "SO_LINGER_SEC": true, + "SO_LISTENINCQLEN": true, + "SO_LISTENQLEN": true, + "SO_LISTENQLIMIT": true, + "SO_MARK": true, + "SO_NETPROC": true, + "SO_NKE": true, + "SO_NOADDRERR": true, + "SO_NOHEADER": true, + "SO_NOSIGPIPE": true, + "SO_NOTIFYCONFLICT": true, + "SO_NO_CHECK": true, + "SO_NO_DDP": true, + "SO_NO_OFFLOAD": true, + "SO_NP_EXTENSIONS": true, + "SO_NREAD": true, + "SO_NWRITE": true, + "SO_OOBINLINE": true, + "SO_OVERFLOWED": true, + "SO_PASSCRED": true, + "SO_PASSSEC": true, + "SO_PEERCRED": true, + "SO_PEERLABEL": true, + "SO_PEERNAME": true, + "SO_PEERSEC": true, + "SO_PRIORITY": true, + "SO_PROTOCOL": true, + "SO_PROTOTYPE": true, + "SO_RANDOMPORT": true, + "SO_RCVBUF": true, + "SO_RCVBUFFORCE": true, + "SO_RCVLOWAT": true, + "SO_RCVTIMEO": true, + "SO_RESTRICTIONS": true, + "SO_RESTRICT_DENYIN": true, + "SO_RESTRICT_DENYOUT": true, + "SO_RESTRICT_DENYSET": true, + "SO_REUSEADDR": true, + "SO_REUSEPORT": true, + "SO_REUSESHAREUID": true, + "SO_RTABLE": true, + "SO_RXQ_OVFL": true, + "SO_SECURITY_AUTHENTICATION": true, + "SO_SECURITY_ENCRYPTION_NETWORK": true, + "SO_SECURITY_ENCRYPTION_TRANSPORT": true, + "SO_SETFIB": true, + "SO_SNDBUF": true, + "SO_SNDBUFFORCE": true, + "SO_SNDLOWAT": true, + "SO_SNDTIMEO": true, + "SO_SPLICE": true, + "SO_TIMESTAMP": true, + "SO_TIMESTAMPING": true, + "SO_TIMESTAMPNS": true, + "SO_TIMESTAMP_MONOTONIC": true, + "SO_TYPE": true, + "SO_UPCALLCLOSEWAIT": true, + "SO_UPDATE_ACCEPT_CONTEXT": true, + "SO_UPDATE_CONNECT_CONTEXT": true, + "SO_USELOOPBACK": true, + "SO_USER_COOKIE": true, + "SO_VENDOR": true, + "SO_WANTMORE": true, + "SO_WANTOOBFLAG": true, + "SSLExtraCertChainPolicyPara": true, + "STANDARD_RIGHTS_ALL": true, + "STANDARD_RIGHTS_EXECUTE": true, + "STANDARD_RIGHTS_READ": true, + "STANDARD_RIGHTS_REQUIRED": true, + "STANDARD_RIGHTS_WRITE": true, + "STARTF_USESHOWWINDOW": true, + "STARTF_USESTDHANDLES": true, + "STD_ERROR_HANDLE": true, + "STD_INPUT_HANDLE": true, + "STD_OUTPUT_HANDLE": true, + "SUBLANG_ENGLISH_US": true, + "SW_FORCEMINIMIZE": true, + "SW_HIDE": true, + "SW_MAXIMIZE": true, + "SW_MINIMIZE": true, + "SW_NORMAL": true, + "SW_RESTORE": true, + "SW_SHOW": true, + "SW_SHOWDEFAULT": true, + "SW_SHOWMAXIMIZED": true, + "SW_SHOWMINIMIZED": true, + "SW_SHOWMINNOACTIVE": true, + "SW_SHOWNA": true, + "SW_SHOWNOACTIVATE": true, + "SW_SHOWNORMAL": true, + "SYMBOLIC_LINK_FLAG_DIRECTORY": true, + "SYNCHRONIZE": true, + "SYSCTL_VERSION": true, + "SYSCTL_VERS_0": true, + "SYSCTL_VERS_1": true, + "SYSCTL_VERS_MASK": true, + "SYS_ABORT2": true, + "SYS_ACCEPT": true, + "SYS_ACCEPT4": true, + "SYS_ACCEPT_NOCANCEL": true, + "SYS_ACCESS": true, + "SYS_ACCESS_EXTENDED": true, + "SYS_ACCT": true, + "SYS_ADD_KEY": true, + "SYS_ADD_PROFIL": true, + "SYS_ADJFREQ": true, + "SYS_ADJTIME": true, + "SYS_ADJTIMEX": true, + "SYS_AFS_SYSCALL": true, + "SYS_AIO_CANCEL": true, + "SYS_AIO_ERROR": true, + "SYS_AIO_FSYNC": true, + "SYS_AIO_READ": true, + "SYS_AIO_RETURN": true, + "SYS_AIO_SUSPEND": true, + "SYS_AIO_SUSPEND_NOCANCEL": true, + "SYS_AIO_WRITE": true, + "SYS_ALARM": true, + "SYS_ARCH_PRCTL": true, + "SYS_ARM_FADVISE64_64": true, + "SYS_ARM_SYNC_FILE_RANGE": true, + "SYS_ATGETMSG": true, + "SYS_ATPGETREQ": true, + "SYS_ATPGETRSP": true, + "SYS_ATPSNDREQ": true, + "SYS_ATPSNDRSP": true, + "SYS_ATPUTMSG": true, + "SYS_ATSOCKET": true, + "SYS_AUDIT": true, + "SYS_AUDITCTL": true, + "SYS_AUDITON": true, + "SYS_AUDIT_SESSION_JOIN": true, + "SYS_AUDIT_SESSION_PORT": true, + "SYS_AUDIT_SESSION_SELF": true, + "SYS_BDFLUSH": true, + "SYS_BIND": true, + "SYS_BINDAT": true, + "SYS_BREAK": true, + "SYS_BRK": true, + "SYS_BSDTHREAD_CREATE": true, + "SYS_BSDTHREAD_REGISTER": true, + "SYS_BSDTHREAD_TERMINATE": true, + "SYS_CAPGET": true, + "SYS_CAPSET": true, + "SYS_CAP_ENTER": true, + "SYS_CAP_FCNTLS_GET": true, + "SYS_CAP_FCNTLS_LIMIT": true, + "SYS_CAP_GETMODE": true, + "SYS_CAP_GETRIGHTS": true, + "SYS_CAP_IOCTLS_GET": true, + "SYS_CAP_IOCTLS_LIMIT": true, + "SYS_CAP_NEW": true, + "SYS_CAP_RIGHTS_GET": true, + "SYS_CAP_RIGHTS_LIMIT": true, + "SYS_CHDIR": true, + "SYS_CHFLAGS": true, + "SYS_CHFLAGSAT": true, + "SYS_CHMOD": true, + "SYS_CHMOD_EXTENDED": true, + "SYS_CHOWN": true, + "SYS_CHOWN32": true, + "SYS_CHROOT": true, + "SYS_CHUD": true, + "SYS_CLOCK_ADJTIME": true, + "SYS_CLOCK_GETCPUCLOCKID2": true, + "SYS_CLOCK_GETRES": true, + "SYS_CLOCK_GETTIME": true, + "SYS_CLOCK_NANOSLEEP": true, + "SYS_CLOCK_SETTIME": true, + "SYS_CLONE": true, + "SYS_CLOSE": true, + "SYS_CLOSEFROM": true, + "SYS_CLOSE_NOCANCEL": true, + "SYS_CONNECT": true, + "SYS_CONNECTAT": true, + "SYS_CONNECT_NOCANCEL": true, + "SYS_COPYFILE": true, + "SYS_CPUSET": true, + "SYS_CPUSET_GETAFFINITY": true, + "SYS_CPUSET_GETID": true, + "SYS_CPUSET_SETAFFINITY": true, + "SYS_CPUSET_SETID": true, + "SYS_CREAT": true, + "SYS_CREATE_MODULE": true, + "SYS_CSOPS": true, + "SYS_DELETE": true, + "SYS_DELETE_MODULE": true, + "SYS_DUP": true, + "SYS_DUP2": true, + "SYS_DUP3": true, + "SYS_EACCESS": true, + "SYS_EPOLL_CREATE": true, + "SYS_EPOLL_CREATE1": true, + "SYS_EPOLL_CTL": true, + "SYS_EPOLL_CTL_OLD": true, + "SYS_EPOLL_PWAIT": true, + "SYS_EPOLL_WAIT": true, + "SYS_EPOLL_WAIT_OLD": true, + "SYS_EVENTFD": true, + "SYS_EVENTFD2": true, + "SYS_EXCHANGEDATA": true, + "SYS_EXECVE": true, + "SYS_EXIT": true, + "SYS_EXIT_GROUP": true, + "SYS_EXTATTRCTL": true, + "SYS_EXTATTR_DELETE_FD": true, + "SYS_EXTATTR_DELETE_FILE": true, + "SYS_EXTATTR_DELETE_LINK": true, + "SYS_EXTATTR_GET_FD": true, + "SYS_EXTATTR_GET_FILE": true, + "SYS_EXTATTR_GET_LINK": true, + "SYS_EXTATTR_LIST_FD": true, + "SYS_EXTATTR_LIST_FILE": true, + "SYS_EXTATTR_LIST_LINK": true, + "SYS_EXTATTR_SET_FD": true, + "SYS_EXTATTR_SET_FILE": true, + "SYS_EXTATTR_SET_LINK": true, + "SYS_FACCESSAT": true, + "SYS_FADVISE64": true, + "SYS_FADVISE64_64": true, + "SYS_FALLOCATE": true, + "SYS_FANOTIFY_INIT": true, + "SYS_FANOTIFY_MARK": true, + "SYS_FCHDIR": true, + "SYS_FCHFLAGS": true, + "SYS_FCHMOD": true, + "SYS_FCHMODAT": true, + "SYS_FCHMOD_EXTENDED": true, + "SYS_FCHOWN": true, + "SYS_FCHOWN32": true, + "SYS_FCHOWNAT": true, + "SYS_FCHROOT": true, + "SYS_FCNTL": true, + "SYS_FCNTL64": true, + "SYS_FCNTL_NOCANCEL": true, + "SYS_FDATASYNC": true, + "SYS_FEXECVE": true, + "SYS_FFCLOCK_GETCOUNTER": true, + "SYS_FFCLOCK_GETESTIMATE": true, + "SYS_FFCLOCK_SETESTIMATE": true, + "SYS_FFSCTL": true, + "SYS_FGETATTRLIST": true, + "SYS_FGETXATTR": true, + "SYS_FHOPEN": true, + "SYS_FHSTAT": true, + "SYS_FHSTATFS": true, + "SYS_FILEPORT_MAKEFD": true, + "SYS_FILEPORT_MAKEPORT": true, + "SYS_FKTRACE": true, + "SYS_FLISTXATTR": true, + "SYS_FLOCK": true, + "SYS_FORK": true, + "SYS_FPATHCONF": true, + "SYS_FREEBSD6_FTRUNCATE": true, + "SYS_FREEBSD6_LSEEK": true, + "SYS_FREEBSD6_MMAP": true, + "SYS_FREEBSD6_PREAD": true, + "SYS_FREEBSD6_PWRITE": true, + "SYS_FREEBSD6_TRUNCATE": true, + "SYS_FREMOVEXATTR": true, + "SYS_FSCTL": true, + "SYS_FSETATTRLIST": true, + "SYS_FSETXATTR": true, + "SYS_FSGETPATH": true, + "SYS_FSTAT": true, + "SYS_FSTAT64": true, + "SYS_FSTAT64_EXTENDED": true, + "SYS_FSTATAT": true, + "SYS_FSTATAT64": true, + "SYS_FSTATFS": true, + "SYS_FSTATFS64": true, + "SYS_FSTATV": true, + "SYS_FSTATVFS1": true, + "SYS_FSTAT_EXTENDED": true, + "SYS_FSYNC": true, + "SYS_FSYNC_NOCANCEL": true, + "SYS_FSYNC_RANGE": true, + "SYS_FTIME": true, + "SYS_FTRUNCATE": true, + "SYS_FTRUNCATE64": true, + "SYS_FUTEX": true, + "SYS_FUTIMENS": true, + "SYS_FUTIMES": true, + "SYS_FUTIMESAT": true, + "SYS_GETATTRLIST": true, + "SYS_GETAUDIT": true, + "SYS_GETAUDIT_ADDR": true, + "SYS_GETAUID": true, + "SYS_GETCONTEXT": true, + "SYS_GETCPU": true, + "SYS_GETCWD": true, + "SYS_GETDENTS": true, + "SYS_GETDENTS64": true, + "SYS_GETDIRENTRIES": true, + "SYS_GETDIRENTRIES64": true, + "SYS_GETDIRENTRIESATTR": true, + "SYS_GETDTABLECOUNT": true, + "SYS_GETDTABLESIZE": true, + "SYS_GETEGID": true, + "SYS_GETEGID32": true, + "SYS_GETEUID": true, + "SYS_GETEUID32": true, + "SYS_GETFH": true, + "SYS_GETFSSTAT": true, + "SYS_GETFSSTAT64": true, + "SYS_GETGID": true, + "SYS_GETGID32": true, + "SYS_GETGROUPS": true, + "SYS_GETGROUPS32": true, + "SYS_GETHOSTUUID": true, + "SYS_GETITIMER": true, + "SYS_GETLCID": true, + "SYS_GETLOGIN": true, + "SYS_GETLOGINCLASS": true, + "SYS_GETPEERNAME": true, + "SYS_GETPGID": true, + "SYS_GETPGRP": true, + "SYS_GETPID": true, + "SYS_GETPMSG": true, + "SYS_GETPPID": true, + "SYS_GETPRIORITY": true, + "SYS_GETRESGID": true, + "SYS_GETRESGID32": true, + "SYS_GETRESUID": true, + "SYS_GETRESUID32": true, + "SYS_GETRLIMIT": true, + "SYS_GETRTABLE": true, + "SYS_GETRUSAGE": true, + "SYS_GETSGROUPS": true, + "SYS_GETSID": true, + "SYS_GETSOCKNAME": true, + "SYS_GETSOCKOPT": true, + "SYS_GETTHRID": true, + "SYS_GETTID": true, + "SYS_GETTIMEOFDAY": true, + "SYS_GETUID": true, + "SYS_GETUID32": true, + "SYS_GETVFSSTAT": true, + "SYS_GETWGROUPS": true, + "SYS_GETXATTR": true, + "SYS_GET_KERNEL_SYMS": true, + "SYS_GET_MEMPOLICY": true, + "SYS_GET_ROBUST_LIST": true, + "SYS_GET_THREAD_AREA": true, + "SYS_GTTY": true, + "SYS_IDENTITYSVC": true, + "SYS_IDLE": true, + "SYS_INITGROUPS": true, + "SYS_INIT_MODULE": true, + "SYS_INOTIFY_ADD_WATCH": true, + "SYS_INOTIFY_INIT": true, + "SYS_INOTIFY_INIT1": true, + "SYS_INOTIFY_RM_WATCH": true, + "SYS_IOCTL": true, + "SYS_IOPERM": true, + "SYS_IOPL": true, + "SYS_IOPOLICYSYS": true, + "SYS_IOPRIO_GET": true, + "SYS_IOPRIO_SET": true, + "SYS_IO_CANCEL": true, + "SYS_IO_DESTROY": true, + "SYS_IO_GETEVENTS": true, + "SYS_IO_SETUP": true, + "SYS_IO_SUBMIT": true, + "SYS_IPC": true, + "SYS_ISSETUGID": true, + "SYS_JAIL": true, + "SYS_JAIL_ATTACH": true, + "SYS_JAIL_GET": true, + "SYS_JAIL_REMOVE": true, + "SYS_JAIL_SET": true, + "SYS_KDEBUG_TRACE": true, + "SYS_KENV": true, + "SYS_KEVENT": true, + "SYS_KEVENT64": true, + "SYS_KEXEC_LOAD": true, + "SYS_KEYCTL": true, + "SYS_KILL": true, + "SYS_KLDFIND": true, + "SYS_KLDFIRSTMOD": true, + "SYS_KLDLOAD": true, + "SYS_KLDNEXT": true, + "SYS_KLDSTAT": true, + "SYS_KLDSYM": true, + "SYS_KLDUNLOAD": true, + "SYS_KLDUNLOADF": true, + "SYS_KQUEUE": true, + "SYS_KQUEUE1": true, + "SYS_KTIMER_CREATE": true, + "SYS_KTIMER_DELETE": true, + "SYS_KTIMER_GETOVERRUN": true, + "SYS_KTIMER_GETTIME": true, + "SYS_KTIMER_SETTIME": true, + "SYS_KTRACE": true, + "SYS_LCHFLAGS": true, + "SYS_LCHMOD": true, + "SYS_LCHOWN": true, + "SYS_LCHOWN32": true, + "SYS_LGETFH": true, + "SYS_LGETXATTR": true, + "SYS_LINK": true, + "SYS_LINKAT": true, + "SYS_LIO_LISTIO": true, + "SYS_LISTEN": true, + "SYS_LISTXATTR": true, + "SYS_LLISTXATTR": true, + "SYS_LOCK": true, + "SYS_LOOKUP_DCOOKIE": true, + "SYS_LPATHCONF": true, + "SYS_LREMOVEXATTR": true, + "SYS_LSEEK": true, + "SYS_LSETXATTR": true, + "SYS_LSTAT": true, + "SYS_LSTAT64": true, + "SYS_LSTAT64_EXTENDED": true, + "SYS_LSTATV": true, + "SYS_LSTAT_EXTENDED": true, + "SYS_LUTIMES": true, + "SYS_MAC_SYSCALL": true, + "SYS_MADVISE": true, + "SYS_MADVISE1": true, + "SYS_MAXSYSCALL": true, + "SYS_MBIND": true, + "SYS_MIGRATE_PAGES": true, + "SYS_MINCORE": true, + "SYS_MINHERIT": true, + "SYS_MKCOMPLEX": true, + "SYS_MKDIR": true, + "SYS_MKDIRAT": true, + "SYS_MKDIR_EXTENDED": true, + "SYS_MKFIFO": true, + "SYS_MKFIFOAT": true, + "SYS_MKFIFO_EXTENDED": true, + "SYS_MKNOD": true, + "SYS_MKNODAT": true, + "SYS_MLOCK": true, + "SYS_MLOCKALL": true, + "SYS_MMAP": true, + "SYS_MMAP2": true, + "SYS_MODCTL": true, + "SYS_MODFIND": true, + "SYS_MODFNEXT": true, + "SYS_MODIFY_LDT": true, + "SYS_MODNEXT": true, + "SYS_MODSTAT": true, + "SYS_MODWATCH": true, + "SYS_MOUNT": true, + "SYS_MOVE_PAGES": true, + "SYS_MPROTECT": true, + "SYS_MPX": true, + "SYS_MQUERY": true, + "SYS_MQ_GETSETATTR": true, + "SYS_MQ_NOTIFY": true, + "SYS_MQ_OPEN": true, + "SYS_MQ_TIMEDRECEIVE": true, + "SYS_MQ_TIMEDSEND": true, + "SYS_MQ_UNLINK": true, + "SYS_MREMAP": true, + "SYS_MSGCTL": true, + "SYS_MSGGET": true, + "SYS_MSGRCV": true, + "SYS_MSGRCV_NOCANCEL": true, + "SYS_MSGSND": true, + "SYS_MSGSND_NOCANCEL": true, + "SYS_MSGSYS": true, + "SYS_MSYNC": true, + "SYS_MSYNC_NOCANCEL": true, + "SYS_MUNLOCK": true, + "SYS_MUNLOCKALL": true, + "SYS_MUNMAP": true, + "SYS_NAME_TO_HANDLE_AT": true, + "SYS_NANOSLEEP": true, + "SYS_NEWFSTATAT": true, + "SYS_NFSCLNT": true, + "SYS_NFSSERVCTL": true, + "SYS_NFSSVC": true, + "SYS_NFSTAT": true, + "SYS_NICE": true, + "SYS_NLSTAT": true, + "SYS_NMOUNT": true, + "SYS_NSTAT": true, + "SYS_NTP_ADJTIME": true, + "SYS_NTP_GETTIME": true, + "SYS_OABI_SYSCALL_BASE": true, + "SYS_OBREAK": true, + "SYS_OLDFSTAT": true, + "SYS_OLDLSTAT": true, + "SYS_OLDOLDUNAME": true, + "SYS_OLDSTAT": true, + "SYS_OLDUNAME": true, + "SYS_OPEN": true, + "SYS_OPENAT": true, + "SYS_OPENBSD_POLL": true, + "SYS_OPEN_BY_HANDLE_AT": true, + "SYS_OPEN_EXTENDED": true, + "SYS_OPEN_NOCANCEL": true, + "SYS_OVADVISE": true, + "SYS_PACCEPT": true, + "SYS_PATHCONF": true, + "SYS_PAUSE": true, + "SYS_PCICONFIG_IOBASE": true, + "SYS_PCICONFIG_READ": true, + "SYS_PCICONFIG_WRITE": true, + "SYS_PDFORK": true, + "SYS_PDGETPID": true, + "SYS_PDKILL": true, + "SYS_PERF_EVENT_OPEN": true, + "SYS_PERSONALITY": true, + "SYS_PID_HIBERNATE": true, + "SYS_PID_RESUME": true, + "SYS_PID_SHUTDOWN_SOCKETS": true, + "SYS_PID_SUSPEND": true, + "SYS_PIPE": true, + "SYS_PIPE2": true, + "SYS_PIVOT_ROOT": true, + "SYS_PMC_CONTROL": true, + "SYS_PMC_GET_INFO": true, + "SYS_POLL": true, + "SYS_POLLTS": true, + "SYS_POLL_NOCANCEL": true, + "SYS_POSIX_FADVISE": true, + "SYS_POSIX_FALLOCATE": true, + "SYS_POSIX_OPENPT": true, + "SYS_POSIX_SPAWN": true, + "SYS_PPOLL": true, + "SYS_PRCTL": true, + "SYS_PREAD": true, + "SYS_PREAD64": true, + "SYS_PREADV": true, + "SYS_PREAD_NOCANCEL": true, + "SYS_PRLIMIT64": true, + "SYS_PROCCTL": true, + "SYS_PROCESS_POLICY": true, + "SYS_PROCESS_VM_READV": true, + "SYS_PROCESS_VM_WRITEV": true, + "SYS_PROC_INFO": true, + "SYS_PROF": true, + "SYS_PROFIL": true, + "SYS_PSELECT": true, + "SYS_PSELECT6": true, + "SYS_PSET_ASSIGN": true, + "SYS_PSET_CREATE": true, + "SYS_PSET_DESTROY": true, + "SYS_PSYNCH_CVBROAD": true, + "SYS_PSYNCH_CVCLRPREPOST": true, + "SYS_PSYNCH_CVSIGNAL": true, + "SYS_PSYNCH_CVWAIT": true, + "SYS_PSYNCH_MUTEXDROP": true, + "SYS_PSYNCH_MUTEXWAIT": true, + "SYS_PSYNCH_RW_DOWNGRADE": true, + "SYS_PSYNCH_RW_LONGRDLOCK": true, + "SYS_PSYNCH_RW_RDLOCK": true, + "SYS_PSYNCH_RW_UNLOCK": true, + "SYS_PSYNCH_RW_UNLOCK2": true, + "SYS_PSYNCH_RW_UPGRADE": true, + "SYS_PSYNCH_RW_WRLOCK": true, + "SYS_PSYNCH_RW_YIELDWRLOCK": true, + "SYS_PTRACE": true, + "SYS_PUTPMSG": true, + "SYS_PWRITE": true, + "SYS_PWRITE64": true, + "SYS_PWRITEV": true, + "SYS_PWRITE_NOCANCEL": true, + "SYS_QUERY_MODULE": true, + "SYS_QUOTACTL": true, + "SYS_RASCTL": true, + "SYS_RCTL_ADD_RULE": true, + "SYS_RCTL_GET_LIMITS": true, + "SYS_RCTL_GET_RACCT": true, + "SYS_RCTL_GET_RULES": true, + "SYS_RCTL_REMOVE_RULE": true, + "SYS_READ": true, + "SYS_READAHEAD": true, + "SYS_READDIR": true, + "SYS_READLINK": true, + "SYS_READLINKAT": true, + "SYS_READV": true, + "SYS_READV_NOCANCEL": true, + "SYS_READ_NOCANCEL": true, + "SYS_REBOOT": true, + "SYS_RECV": true, + "SYS_RECVFROM": true, + "SYS_RECVFROM_NOCANCEL": true, + "SYS_RECVMMSG": true, + "SYS_RECVMSG": true, + "SYS_RECVMSG_NOCANCEL": true, + "SYS_REMAP_FILE_PAGES": true, + "SYS_REMOVEXATTR": true, + "SYS_RENAME": true, + "SYS_RENAMEAT": true, + "SYS_REQUEST_KEY": true, + "SYS_RESTART_SYSCALL": true, + "SYS_REVOKE": true, + "SYS_RFORK": true, + "SYS_RMDIR": true, + "SYS_RTPRIO": true, + "SYS_RTPRIO_THREAD": true, + "SYS_RT_SIGACTION": true, + "SYS_RT_SIGPENDING": true, + "SYS_RT_SIGPROCMASK": true, + "SYS_RT_SIGQUEUEINFO": true, + "SYS_RT_SIGRETURN": true, + "SYS_RT_SIGSUSPEND": true, + "SYS_RT_SIGTIMEDWAIT": true, + "SYS_RT_TGSIGQUEUEINFO": true, + "SYS_SBRK": true, + "SYS_SCHED_GETAFFINITY": true, + "SYS_SCHED_GETPARAM": true, + "SYS_SCHED_GETSCHEDULER": true, + "SYS_SCHED_GET_PRIORITY_MAX": true, + "SYS_SCHED_GET_PRIORITY_MIN": true, + "SYS_SCHED_RR_GET_INTERVAL": true, + "SYS_SCHED_SETAFFINITY": true, + "SYS_SCHED_SETPARAM": true, + "SYS_SCHED_SETSCHEDULER": true, + "SYS_SCHED_YIELD": true, + "SYS_SCTP_GENERIC_RECVMSG": true, + "SYS_SCTP_GENERIC_SENDMSG": true, + "SYS_SCTP_GENERIC_SENDMSG_IOV": true, + "SYS_SCTP_PEELOFF": true, + "SYS_SEARCHFS": true, + "SYS_SECURITY": true, + "SYS_SELECT": true, + "SYS_SELECT_NOCANCEL": true, + "SYS_SEMCONFIG": true, + "SYS_SEMCTL": true, + "SYS_SEMGET": true, + "SYS_SEMOP": true, + "SYS_SEMSYS": true, + "SYS_SEMTIMEDOP": true, + "SYS_SEM_CLOSE": true, + "SYS_SEM_DESTROY": true, + "SYS_SEM_GETVALUE": true, + "SYS_SEM_INIT": true, + "SYS_SEM_OPEN": true, + "SYS_SEM_POST": true, + "SYS_SEM_TRYWAIT": true, + "SYS_SEM_UNLINK": true, + "SYS_SEM_WAIT": true, + "SYS_SEM_WAIT_NOCANCEL": true, + "SYS_SEND": true, + "SYS_SENDFILE": true, + "SYS_SENDFILE64": true, + "SYS_SENDMMSG": true, + "SYS_SENDMSG": true, + "SYS_SENDMSG_NOCANCEL": true, + "SYS_SENDTO": true, + "SYS_SENDTO_NOCANCEL": true, + "SYS_SETATTRLIST": true, + "SYS_SETAUDIT": true, + "SYS_SETAUDIT_ADDR": true, + "SYS_SETAUID": true, + "SYS_SETCONTEXT": true, + "SYS_SETDOMAINNAME": true, + "SYS_SETEGID": true, + "SYS_SETEUID": true, + "SYS_SETFIB": true, + "SYS_SETFSGID": true, + "SYS_SETFSGID32": true, + "SYS_SETFSUID": true, + "SYS_SETFSUID32": true, + "SYS_SETGID": true, + "SYS_SETGID32": true, + "SYS_SETGROUPS": true, + "SYS_SETGROUPS32": true, + "SYS_SETHOSTNAME": true, + "SYS_SETITIMER": true, + "SYS_SETLCID": true, + "SYS_SETLOGIN": true, + "SYS_SETLOGINCLASS": true, + "SYS_SETNS": true, + "SYS_SETPGID": true, + "SYS_SETPRIORITY": true, + "SYS_SETPRIVEXEC": true, + "SYS_SETREGID": true, + "SYS_SETREGID32": true, + "SYS_SETRESGID": true, + "SYS_SETRESGID32": true, + "SYS_SETRESUID": true, + "SYS_SETRESUID32": true, + "SYS_SETREUID": true, + "SYS_SETREUID32": true, + "SYS_SETRLIMIT": true, + "SYS_SETRTABLE": true, + "SYS_SETSGROUPS": true, + "SYS_SETSID": true, + "SYS_SETSOCKOPT": true, + "SYS_SETTID": true, + "SYS_SETTID_WITH_PID": true, + "SYS_SETTIMEOFDAY": true, + "SYS_SETUID": true, + "SYS_SETUID32": true, + "SYS_SETWGROUPS": true, + "SYS_SETXATTR": true, + "SYS_SET_MEMPOLICY": true, + "SYS_SET_ROBUST_LIST": true, + "SYS_SET_THREAD_AREA": true, + "SYS_SET_TID_ADDRESS": true, + "SYS_SGETMASK": true, + "SYS_SHARED_REGION_CHECK_NP": true, + "SYS_SHARED_REGION_MAP_AND_SLIDE_NP": true, + "SYS_SHMAT": true, + "SYS_SHMCTL": true, + "SYS_SHMDT": true, + "SYS_SHMGET": true, + "SYS_SHMSYS": true, + "SYS_SHM_OPEN": true, + "SYS_SHM_UNLINK": true, + "SYS_SHUTDOWN": true, + "SYS_SIGACTION": true, + "SYS_SIGALTSTACK": true, + "SYS_SIGNAL": true, + "SYS_SIGNALFD": true, + "SYS_SIGNALFD4": true, + "SYS_SIGPENDING": true, + "SYS_SIGPROCMASK": true, + "SYS_SIGQUEUE": true, + "SYS_SIGQUEUEINFO": true, + "SYS_SIGRETURN": true, + "SYS_SIGSUSPEND": true, + "SYS_SIGSUSPEND_NOCANCEL": true, + "SYS_SIGTIMEDWAIT": true, + "SYS_SIGWAIT": true, + "SYS_SIGWAITINFO": true, + "SYS_SOCKET": true, + "SYS_SOCKETCALL": true, + "SYS_SOCKETPAIR": true, + "SYS_SPLICE": true, + "SYS_SSETMASK": true, + "SYS_SSTK": true, + "SYS_STACK_SNAPSHOT": true, + "SYS_STAT": true, + "SYS_STAT64": true, + "SYS_STAT64_EXTENDED": true, + "SYS_STATFS": true, + "SYS_STATFS64": true, + "SYS_STATV": true, + "SYS_STATVFS1": true, + "SYS_STAT_EXTENDED": true, + "SYS_STIME": true, + "SYS_STTY": true, + "SYS_SWAPCONTEXT": true, + "SYS_SWAPCTL": true, + "SYS_SWAPOFF": true, + "SYS_SWAPON": true, + "SYS_SYMLINK": true, + "SYS_SYMLINKAT": true, + "SYS_SYNC": true, + "SYS_SYNCFS": true, + "SYS_SYNC_FILE_RANGE": true, + "SYS_SYSARCH": true, + "SYS_SYSCALL": true, + "SYS_SYSCALL_BASE": true, + "SYS_SYSFS": true, + "SYS_SYSINFO": true, + "SYS_SYSLOG": true, + "SYS_TEE": true, + "SYS_TGKILL": true, + "SYS_THREAD_SELFID": true, + "SYS_THR_CREATE": true, + "SYS_THR_EXIT": true, + "SYS_THR_KILL": true, + "SYS_THR_KILL2": true, + "SYS_THR_NEW": true, + "SYS_THR_SELF": true, + "SYS_THR_SET_NAME": true, + "SYS_THR_SUSPEND": true, + "SYS_THR_WAKE": true, + "SYS_TIME": true, + "SYS_TIMERFD_CREATE": true, + "SYS_TIMERFD_GETTIME": true, + "SYS_TIMERFD_SETTIME": true, + "SYS_TIMER_CREATE": true, + "SYS_TIMER_DELETE": true, + "SYS_TIMER_GETOVERRUN": true, + "SYS_TIMER_GETTIME": true, + "SYS_TIMER_SETTIME": true, + "SYS_TIMES": true, + "SYS_TKILL": true, + "SYS_TRUNCATE": true, + "SYS_TRUNCATE64": true, + "SYS_TUXCALL": true, + "SYS_UGETRLIMIT": true, + "SYS_ULIMIT": true, + "SYS_UMASK": true, + "SYS_UMASK_EXTENDED": true, + "SYS_UMOUNT": true, + "SYS_UMOUNT2": true, + "SYS_UNAME": true, + "SYS_UNDELETE": true, + "SYS_UNLINK": true, + "SYS_UNLINKAT": true, + "SYS_UNMOUNT": true, + "SYS_UNSHARE": true, + "SYS_USELIB": true, + "SYS_USTAT": true, + "SYS_UTIME": true, + "SYS_UTIMENSAT": true, + "SYS_UTIMES": true, + "SYS_UTRACE": true, + "SYS_UUIDGEN": true, + "SYS_VADVISE": true, + "SYS_VFORK": true, + "SYS_VHANGUP": true, + "SYS_VM86": true, + "SYS_VM86OLD": true, + "SYS_VMSPLICE": true, + "SYS_VM_PRESSURE_MONITOR": true, + "SYS_VSERVER": true, + "SYS_WAIT4": true, + "SYS_WAIT4_NOCANCEL": true, + "SYS_WAIT6": true, + "SYS_WAITEVENT": true, + "SYS_WAITID": true, + "SYS_WAITID_NOCANCEL": true, + "SYS_WAITPID": true, + "SYS_WATCHEVENT": true, + "SYS_WORKQ_KERNRETURN": true, + "SYS_WORKQ_OPEN": true, + "SYS_WRITE": true, + "SYS_WRITEV": true, + "SYS_WRITEV_NOCANCEL": true, + "SYS_WRITE_NOCANCEL": true, + "SYS_YIELD": true, + "SYS__LLSEEK": true, + "SYS__LWP_CONTINUE": true, + "SYS__LWP_CREATE": true, + "SYS__LWP_CTL": true, + "SYS__LWP_DETACH": true, + "SYS__LWP_EXIT": true, + "SYS__LWP_GETNAME": true, + "SYS__LWP_GETPRIVATE": true, + "SYS__LWP_KILL": true, + "SYS__LWP_PARK": true, + "SYS__LWP_SELF": true, + "SYS__LWP_SETNAME": true, + "SYS__LWP_SETPRIVATE": true, + "SYS__LWP_SUSPEND": true, + "SYS__LWP_UNPARK": true, + "SYS__LWP_UNPARK_ALL": true, + "SYS__LWP_WAIT": true, + "SYS__LWP_WAKEUP": true, + "SYS__NEWSELECT": true, + "SYS__PSET_BIND": true, + "SYS__SCHED_GETAFFINITY": true, + "SYS__SCHED_GETPARAM": true, + "SYS__SCHED_SETAFFINITY": true, + "SYS__SCHED_SETPARAM": true, + "SYS__SYSCTL": true, + "SYS__UMTX_LOCK": true, + "SYS__UMTX_OP": true, + "SYS__UMTX_UNLOCK": true, + "SYS___ACL_ACLCHECK_FD": true, + "SYS___ACL_ACLCHECK_FILE": true, + "SYS___ACL_ACLCHECK_LINK": true, + "SYS___ACL_DELETE_FD": true, + "SYS___ACL_DELETE_FILE": true, + "SYS___ACL_DELETE_LINK": true, + "SYS___ACL_GET_FD": true, + "SYS___ACL_GET_FILE": true, + "SYS___ACL_GET_LINK": true, + "SYS___ACL_SET_FD": true, + "SYS___ACL_SET_FILE": true, + "SYS___ACL_SET_LINK": true, + "SYS___CLONE": true, + "SYS___DISABLE_THREADSIGNAL": true, + "SYS___GETCWD": true, + "SYS___GETLOGIN": true, + "SYS___GET_TCB": true, + "SYS___MAC_EXECVE": true, + "SYS___MAC_GETFSSTAT": true, + "SYS___MAC_GET_FD": true, + "SYS___MAC_GET_FILE": true, + "SYS___MAC_GET_LCID": true, + "SYS___MAC_GET_LCTX": true, + "SYS___MAC_GET_LINK": true, + "SYS___MAC_GET_MOUNT": true, + "SYS___MAC_GET_PID": true, + "SYS___MAC_GET_PROC": true, + "SYS___MAC_MOUNT": true, + "SYS___MAC_SET_FD": true, + "SYS___MAC_SET_FILE": true, + "SYS___MAC_SET_LCTX": true, + "SYS___MAC_SET_LINK": true, + "SYS___MAC_SET_PROC": true, + "SYS___MAC_SYSCALL": true, + "SYS___OLD_SEMWAIT_SIGNAL": true, + "SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL": true, + "SYS___POSIX_CHOWN": true, + "SYS___POSIX_FCHOWN": true, + "SYS___POSIX_LCHOWN": true, + "SYS___POSIX_RENAME": true, + "SYS___PTHREAD_CANCELED": true, + "SYS___PTHREAD_CHDIR": true, + "SYS___PTHREAD_FCHDIR": true, + "SYS___PTHREAD_KILL": true, + "SYS___PTHREAD_MARKCANCEL": true, + "SYS___PTHREAD_SIGMASK": true, + "SYS___QUOTACTL": true, + "SYS___SEMCTL": true, + "SYS___SEMWAIT_SIGNAL": true, + "SYS___SEMWAIT_SIGNAL_NOCANCEL": true, + "SYS___SETLOGIN": true, + "SYS___SETUGID": true, + "SYS___SET_TCB": true, + "SYS___SIGACTION_SIGTRAMP": true, + "SYS___SIGTIMEDWAIT": true, + "SYS___SIGWAIT": true, + "SYS___SIGWAIT_NOCANCEL": true, + "SYS___SYSCTL": true, + "SYS___TFORK": true, + "SYS___THREXIT": true, + "SYS___THRSIGDIVERT": true, + "SYS___THRSLEEP": true, + "SYS___THRWAKEUP": true, + "S_ARCH1": true, + "S_ARCH2": true, + "S_BLKSIZE": true, + "S_IEXEC": true, + "S_IFBLK": true, + "S_IFCHR": true, + "S_IFDIR": true, + "S_IFIFO": true, + "S_IFLNK": true, + "S_IFMT": true, + "S_IFREG": true, + "S_IFSOCK": true, + "S_IFWHT": true, + "S_IREAD": true, + "S_IRGRP": true, + "S_IROTH": true, + "S_IRUSR": true, + "S_IRWXG": true, + "S_IRWXO": true, + "S_IRWXU": true, + "S_ISGID": true, + "S_ISTXT": true, + "S_ISUID": true, + "S_ISVTX": true, + "S_IWGRP": true, + "S_IWOTH": true, + "S_IWRITE": true, + "S_IWUSR": true, + "S_IXGRP": true, + "S_IXOTH": true, + "S_IXUSR": true, + "S_LOGIN_SET": true, + "SecurityAttributes": true, + "Seek": true, + "Select": true, + "Sendfile": true, + "Sendmsg": true, + "SendmsgN": true, + "Sendto": true, + "Servent": true, + "SetBpf": true, + "SetBpfBuflen": true, + "SetBpfDatalink": true, + "SetBpfHeadercmpl": true, + "SetBpfImmediate": true, + "SetBpfInterface": true, + "SetBpfPromisc": true, + "SetBpfTimeout": true, + "SetCurrentDirectory": true, + "SetEndOfFile": true, + "SetEnvironmentVariable": true, + "SetFileAttributes": true, + "SetFileCompletionNotificationModes": true, + "SetFilePointer": true, + "SetFileTime": true, + "SetHandleInformation": true, + "SetKevent": true, + "SetLsfPromisc": true, + "SetNonblock": true, + "Setdomainname": true, + "Setegid": true, + "Setenv": true, + "Seteuid": true, + "Setfsgid": true, + "Setfsuid": true, + "Setgid": true, + "Setgroups": true, + "Sethostname": true, + "Setlogin": true, + "Setpgid": true, + "Setpriority": true, + "Setprivexec": true, + "Setregid": true, + "Setresgid": true, + "Setresuid": true, + "Setreuid": true, + "Setrlimit": true, + "Setsid": true, + "Setsockopt": true, + "SetsockoptByte": true, + "SetsockoptICMPv6Filter": true, + "SetsockoptIPMreq": true, + "SetsockoptIPMreqn": true, + "SetsockoptIPv6Mreq": true, + "SetsockoptInet4Addr": true, + "SetsockoptInt": true, + "SetsockoptLinger": true, + "SetsockoptString": true, + "SetsockoptTimeval": true, + "Settimeofday": true, + "Setuid": true, + "Setxattr": true, + "Shutdown": true, + "SidTypeAlias": true, + "SidTypeComputer": true, + "SidTypeDeletedAccount": true, + "SidTypeDomain": true, + "SidTypeGroup": true, + "SidTypeInvalid": true, + "SidTypeLabel": true, + "SidTypeUnknown": true, + "SidTypeUser": true, + "SidTypeWellKnownGroup": true, + "Signal": true, + "SizeofBpfHdr": true, + "SizeofBpfInsn": true, + "SizeofBpfProgram": true, + "SizeofBpfStat": true, + "SizeofBpfVersion": true, + "SizeofBpfZbuf": true, + "SizeofBpfZbufHeader": true, + "SizeofCmsghdr": true, + "SizeofICMPv6Filter": true, + "SizeofIPMreq": true, + "SizeofIPMreqn": true, + "SizeofIPv6MTUInfo": true, + "SizeofIPv6Mreq": true, + "SizeofIfAddrmsg": true, + "SizeofIfAnnounceMsghdr": true, + "SizeofIfData": true, + "SizeofIfInfomsg": true, + "SizeofIfMsghdr": true, + "SizeofIfaMsghdr": true, + "SizeofIfmaMsghdr": true, + "SizeofIfmaMsghdr2": true, + "SizeofInet4Pktinfo": true, + "SizeofInet6Pktinfo": true, + "SizeofInotifyEvent": true, + "SizeofLinger": true, + "SizeofMsghdr": true, + "SizeofNlAttr": true, + "SizeofNlMsgerr": true, + "SizeofNlMsghdr": true, + "SizeofRtAttr": true, + "SizeofRtGenmsg": true, + "SizeofRtMetrics": true, + "SizeofRtMsg": true, + "SizeofRtMsghdr": true, + "SizeofRtNexthop": true, + "SizeofSockFilter": true, + "SizeofSockFprog": true, + "SizeofSockaddrAny": true, + "SizeofSockaddrDatalink": true, + "SizeofSockaddrInet4": true, + "SizeofSockaddrInet6": true, + "SizeofSockaddrLinklayer": true, + "SizeofSockaddrNetlink": true, + "SizeofSockaddrUnix": true, + "SizeofTCPInfo": true, + "SizeofUcred": true, + "SlicePtrFromStrings": true, + "SockFilter": true, + "SockFprog": true, + "Sockaddr": true, + "SockaddrDatalink": true, + "SockaddrGen": true, + "SockaddrInet4": true, + "SockaddrInet6": true, + "SockaddrLinklayer": true, + "SockaddrNetlink": true, + "SockaddrUnix": true, + "Socket": true, + "SocketControlMessage": true, + "SocketDisableIPv6": true, + "Socketpair": true, + "Splice": true, + "StartProcess": true, + "StartupInfo": true, + "Stat": true, + "Stat_t": true, + "Statfs": true, + "Statfs_t": true, + "Stderr": true, + "Stdin": true, + "Stdout": true, + "StringBytePtr": true, + "StringByteSlice": true, + "StringSlicePtr": true, + "StringToSid": true, + "StringToUTF16": true, + "StringToUTF16Ptr": true, + "Symlink": true, + "Sync": true, + "SyncFileRange": true, + "SysProcAttr": true, + "SysProcIDMap": true, + "Syscall": true, + "Syscall12": true, + "Syscall15": true, + "Syscall18": true, + "Syscall6": true, + "Syscall9": true, + "Sysctl": true, + "SysctlUint32": true, + "Sysctlnode": true, + "Sysinfo": true, + "Sysinfo_t": true, + "Systemtime": true, + "TCGETS": true, + "TCIFLUSH": true, + "TCIOFLUSH": true, + "TCOFLUSH": true, + "TCPInfo": true, + "TCPKeepalive": true, + "TCP_CA_NAME_MAX": true, + "TCP_CONGCTL": true, + "TCP_CONGESTION": true, + "TCP_CONNECTIONTIMEOUT": true, + "TCP_CORK": true, + "TCP_DEFER_ACCEPT": true, + "TCP_INFO": true, + "TCP_KEEPALIVE": true, + "TCP_KEEPCNT": true, + "TCP_KEEPIDLE": true, + "TCP_KEEPINIT": true, + "TCP_KEEPINTVL": true, + "TCP_LINGER2": true, + "TCP_MAXBURST": true, + "TCP_MAXHLEN": true, + "TCP_MAXOLEN": true, + "TCP_MAXSEG": true, + "TCP_MAXWIN": true, + "TCP_MAX_SACK": true, + "TCP_MAX_WINSHIFT": true, + "TCP_MD5SIG": true, + "TCP_MD5SIG_MAXKEYLEN": true, + "TCP_MINMSS": true, + "TCP_MINMSSOVERLOAD": true, + "TCP_MSS": true, + "TCP_NODELAY": true, + "TCP_NOOPT": true, + "TCP_NOPUSH": true, + "TCP_NSTATES": true, + "TCP_QUICKACK": true, + "TCP_RXT_CONNDROPTIME": true, + "TCP_RXT_FINDROP": true, + "TCP_SACK_ENABLE": true, + "TCP_SYNCNT": true, + "TCP_VENDOR": true, + "TCP_WINDOW_CLAMP": true, + "TCSAFLUSH": true, + "TCSETS": true, + "TF_DISCONNECT": true, + "TF_REUSE_SOCKET": true, + "TF_USE_DEFAULT_WORKER": true, + "TF_USE_KERNEL_APC": true, + "TF_USE_SYSTEM_THREAD": true, + "TF_WRITE_BEHIND": true, + "TH32CS_INHERIT": true, + "TH32CS_SNAPALL": true, + "TH32CS_SNAPHEAPLIST": true, + "TH32CS_SNAPMODULE": true, + "TH32CS_SNAPMODULE32": true, + "TH32CS_SNAPPROCESS": true, + "TH32CS_SNAPTHREAD": true, + "TIME_ZONE_ID_DAYLIGHT": true, + "TIME_ZONE_ID_STANDARD": true, + "TIME_ZONE_ID_UNKNOWN": true, + "TIOCCBRK": true, + "TIOCCDTR": true, + "TIOCCONS": true, + "TIOCDCDTIMESTAMP": true, + "TIOCDRAIN": true, + "TIOCDSIMICROCODE": true, + "TIOCEXCL": true, + "TIOCEXT": true, + "TIOCFLAG_CDTRCTS": true, + "TIOCFLAG_CLOCAL": true, + "TIOCFLAG_CRTSCTS": true, + "TIOCFLAG_MDMBUF": true, + "TIOCFLAG_PPS": true, + "TIOCFLAG_SOFTCAR": true, + "TIOCFLUSH": true, + "TIOCGDEV": true, + "TIOCGDRAINWAIT": true, + "TIOCGETA": true, + "TIOCGETD": true, + "TIOCGFLAGS": true, + "TIOCGICOUNT": true, + "TIOCGLCKTRMIOS": true, + "TIOCGLINED": true, + "TIOCGPGRP": true, + "TIOCGPTN": true, + "TIOCGQSIZE": true, + "TIOCGRANTPT": true, + "TIOCGRS485": true, + "TIOCGSERIAL": true, + "TIOCGSID": true, + "TIOCGSIZE": true, + "TIOCGSOFTCAR": true, + "TIOCGTSTAMP": true, + "TIOCGWINSZ": true, + "TIOCINQ": true, + "TIOCIXOFF": true, + "TIOCIXON": true, + "TIOCLINUX": true, + "TIOCMBIC": true, + "TIOCMBIS": true, + "TIOCMGDTRWAIT": true, + "TIOCMGET": true, + "TIOCMIWAIT": true, + "TIOCMODG": true, + "TIOCMODS": true, + "TIOCMSDTRWAIT": true, + "TIOCMSET": true, + "TIOCM_CAR": true, + "TIOCM_CD": true, + "TIOCM_CTS": true, + "TIOCM_DCD": true, + "TIOCM_DSR": true, + "TIOCM_DTR": true, + "TIOCM_LE": true, + "TIOCM_RI": true, + "TIOCM_RNG": true, + "TIOCM_RTS": true, + "TIOCM_SR": true, + "TIOCM_ST": true, + "TIOCNOTTY": true, + "TIOCNXCL": true, + "TIOCOUTQ": true, + "TIOCPKT": true, + "TIOCPKT_DATA": true, + "TIOCPKT_DOSTOP": true, + "TIOCPKT_FLUSHREAD": true, + "TIOCPKT_FLUSHWRITE": true, + "TIOCPKT_IOCTL": true, + "TIOCPKT_NOSTOP": true, + "TIOCPKT_START": true, + "TIOCPKT_STOP": true, + "TIOCPTMASTER": true, + "TIOCPTMGET": true, + "TIOCPTSNAME": true, + "TIOCPTYGNAME": true, + "TIOCPTYGRANT": true, + "TIOCPTYUNLK": true, + "TIOCRCVFRAME": true, + "TIOCREMOTE": true, + "TIOCSBRK": true, + "TIOCSCONS": true, + "TIOCSCTTY": true, + "TIOCSDRAINWAIT": true, + "TIOCSDTR": true, + "TIOCSERCONFIG": true, + "TIOCSERGETLSR": true, + "TIOCSERGETMULTI": true, + "TIOCSERGSTRUCT": true, + "TIOCSERGWILD": true, + "TIOCSERSETMULTI": true, + "TIOCSERSWILD": true, + "TIOCSER_TEMT": true, + "TIOCSETA": true, + "TIOCSETAF": true, + "TIOCSETAW": true, + "TIOCSETD": true, + "TIOCSFLAGS": true, + "TIOCSIG": true, + "TIOCSLCKTRMIOS": true, + "TIOCSLINED": true, + "TIOCSPGRP": true, + "TIOCSPTLCK": true, + "TIOCSQSIZE": true, + "TIOCSRS485": true, + "TIOCSSERIAL": true, + "TIOCSSIZE": true, + "TIOCSSOFTCAR": true, + "TIOCSTART": true, + "TIOCSTAT": true, + "TIOCSTI": true, + "TIOCSTOP": true, + "TIOCSTSTAMP": true, + "TIOCSWINSZ": true, + "TIOCTIMESTAMP": true, + "TIOCUCNTL": true, + "TIOCVHANGUP": true, + "TIOCXMTFRAME": true, + "TOKEN_ADJUST_DEFAULT": true, + "TOKEN_ADJUST_GROUPS": true, + "TOKEN_ADJUST_PRIVILEGES": true, + "TOKEN_ADJUST_SESSIONID": true, + "TOKEN_ALL_ACCESS": true, + "TOKEN_ASSIGN_PRIMARY": true, + "TOKEN_DUPLICATE": true, + "TOKEN_EXECUTE": true, + "TOKEN_IMPERSONATE": true, + "TOKEN_QUERY": true, + "TOKEN_QUERY_SOURCE": true, + "TOKEN_READ": true, + "TOKEN_WRITE": true, + "TOSTOP": true, + "TRUNCATE_EXISTING": true, + "TUNATTACHFILTER": true, + "TUNDETACHFILTER": true, + "TUNGETFEATURES": true, + "TUNGETIFF": true, + "TUNGETSNDBUF": true, + "TUNGETVNETHDRSZ": true, + "TUNSETDEBUG": true, + "TUNSETGROUP": true, + "TUNSETIFF": true, + "TUNSETLINK": true, + "TUNSETNOCSUM": true, + "TUNSETOFFLOAD": true, + "TUNSETOWNER": true, + "TUNSETPERSIST": true, + "TUNSETSNDBUF": true, + "TUNSETTXFILTER": true, + "TUNSETVNETHDRSZ": true, + "Tee": true, + "TerminateProcess": true, + "Termios": true, + "Tgkill": true, + "Time": true, + "Time_t": true, + "Times": true, + "Timespec": true, + "TimespecToNsec": true, + "Timeval": true, + "Timeval32": true, + "TimevalToNsec": true, + "Timex": true, + "Timezoneinformation": true, + "Tms": true, + "Token": true, + "TokenAccessInformation": true, + "TokenAuditPolicy": true, + "TokenDefaultDacl": true, + "TokenElevation": true, + "TokenElevationType": true, + "TokenGroups": true, + "TokenGroupsAndPrivileges": true, + "TokenHasRestrictions": true, + "TokenImpersonationLevel": true, + "TokenIntegrityLevel": true, + "TokenLinkedToken": true, + "TokenLogonSid": true, + "TokenMandatoryPolicy": true, + "TokenOrigin": true, + "TokenOwner": true, + "TokenPrimaryGroup": true, + "TokenPrivileges": true, + "TokenRestrictedSids": true, + "TokenSandBoxInert": true, + "TokenSessionId": true, + "TokenSessionReference": true, + "TokenSource": true, + "TokenStatistics": true, + "TokenType": true, + "TokenUIAccess": true, + "TokenUser": true, + "TokenVirtualizationAllowed": true, + "TokenVirtualizationEnabled": true, + "Tokenprimarygroup": true, + "Tokenuser": true, + "TranslateAccountName": true, + "TranslateName": true, + "TransmitFile": true, + "TransmitFileBuffers": true, + "Truncate": true, + "UNIX_PATH_MAX": true, + "USAGE_MATCH_TYPE_AND": true, + "USAGE_MATCH_TYPE_OR": true, + "UTF16FromString": true, + "UTF16PtrFromString": true, + "UTF16ToString": true, + "Ucred": true, + "Umask": true, + "Uname": true, + "Undelete": true, + "UnixCredentials": true, + "UnixRights": true, + "Unlink": true, + "Unlinkat": true, + "UnmapViewOfFile": true, + "Unmount": true, + "Unsetenv": true, + "Unshare": true, + "UserInfo10": true, + "Ustat": true, + "Ustat_t": true, + "Utimbuf": true, + "Utime": true, + "Utimes": true, + "UtimesNano": true, + "Utsname": true, + "VDISCARD": true, + "VDSUSP": true, + "VEOF": true, + "VEOL": true, + "VEOL2": true, + "VERASE": true, + "VERASE2": true, + "VINTR": true, + "VKILL": true, + "VLNEXT": true, + "VMIN": true, + "VQUIT": true, + "VREPRINT": true, + "VSTART": true, + "VSTATUS": true, + "VSTOP": true, + "VSUSP": true, + "VSWTC": true, + "VT0": true, + "VT1": true, + "VTDLY": true, + "VTIME": true, + "VWERASE": true, + "VirtualLock": true, + "VirtualUnlock": true, + "WAIT_ABANDONED": true, + "WAIT_FAILED": true, + "WAIT_OBJECT_0": true, + "WAIT_TIMEOUT": true, + "WALL": true, + "WALLSIG": true, + "WALTSIG": true, + "WCLONE": true, + "WCONTINUED": true, + "WCOREFLAG": true, + "WEXITED": true, + "WLINUXCLONE": true, + "WNOHANG": true, + "WNOTHREAD": true, + "WNOWAIT": true, + "WNOZOMBIE": true, + "WOPTSCHECKED": true, + "WORDSIZE": true, + "WSABuf": true, + "WSACleanup": true, + "WSADESCRIPTION_LEN": true, + "WSAData": true, + "WSAEACCES": true, + "WSAECONNABORTED": true, + "WSAECONNRESET": true, + "WSAEnumProtocols": true, + "WSAID_CONNECTEX": true, + "WSAIoctl": true, + "WSAPROTOCOL_LEN": true, + "WSAProtocolChain": true, + "WSAProtocolInfo": true, + "WSARecv": true, + "WSARecvFrom": true, + "WSASYS_STATUS_LEN": true, + "WSASend": true, + "WSASendTo": true, + "WSASendto": true, + "WSAStartup": true, + "WSTOPPED": true, + "WTRAPPED": true, + "WUNTRACED": true, + "Wait4": true, + "WaitForSingleObject": true, + "WaitStatus": true, + "Win32FileAttributeData": true, + "Win32finddata": true, + "Write": true, + "WriteConsole": true, + "WriteFile": true, + "X509_ASN_ENCODING": true, + "XCASE": true, + "XP1_CONNECTIONLESS": true, + "XP1_CONNECT_DATA": true, + "XP1_DISCONNECT_DATA": true, + "XP1_EXPEDITED_DATA": true, + "XP1_GRACEFUL_CLOSE": true, + "XP1_GUARANTEED_DELIVERY": true, + "XP1_GUARANTEED_ORDER": true, + "XP1_IFS_HANDLES": true, + "XP1_MESSAGE_ORIENTED": true, + "XP1_MULTIPOINT_CONTROL_PLANE": true, + "XP1_MULTIPOINT_DATA_PLANE": true, + "XP1_PARTIAL_MESSAGE": true, + "XP1_PSEUDO_STREAM": true, + "XP1_QOS_SUPPORTED": true, + "XP1_SAN_SUPPORT_SDP": true, + "XP1_SUPPORT_BROADCAST": true, + "XP1_SUPPORT_MULTIPOINT": true, + "XP1_UNI_RECV": true, + "XP1_UNI_SEND": true, + }, + "syscall/js": map[string]bool{ + "CopyBytesToGo": true, + "CopyBytesToJS": true, + "Error": true, + "Func": true, + "FuncOf": true, + "Global": true, + "Null": true, + "Type": true, + "TypeBoolean": true, + "TypeFunction": true, + "TypeNull": true, + "TypeNumber": true, + "TypeObject": true, + "TypeString": true, + "TypeSymbol": true, + "TypeUndefined": true, + "Undefined": true, + "Value": true, + "ValueError": true, + "ValueOf": true, + "Wrapper": true, + }, + "testing": map[string]bool{ + "AllocsPerRun": true, + "B": true, + "Benchmark": true, + "BenchmarkResult": true, + "Cover": true, + "CoverBlock": true, + "CoverMode": true, + "Coverage": true, + "Init": true, + "InternalBenchmark": true, + "InternalExample": true, + "InternalTest": true, + "M": true, + "Main": true, + "MainStart": true, + "PB": true, + "RegisterCover": true, + "RunBenchmarks": true, + "RunExamples": true, + "RunTests": true, + "Short": true, + "T": true, + "TB": true, + "Verbose": true, + }, + "testing/iotest": map[string]bool{ + "DataErrReader": true, + "ErrTimeout": true, + "HalfReader": true, + "NewReadLogger": true, + "NewWriteLogger": true, + "OneByteReader": true, + "TimeoutReader": true, + "TruncateWriter": true, + }, + "testing/quick": map[string]bool{ + "Check": true, + "CheckEqual": true, + "CheckEqualError": true, + "CheckError": true, + "Config": true, + "Generator": true, + "SetupError": true, + "Value": true, + }, + "text/scanner": map[string]bool{ + "Char": true, + "Comment": true, + "EOF": true, + "Float": true, + "GoTokens": true, + "GoWhitespace": true, + "Ident": true, + "Int": true, + "Position": true, + "RawString": true, + "ScanChars": true, + "ScanComments": true, + "ScanFloats": true, + "ScanIdents": true, + "ScanInts": true, + "ScanRawStrings": true, + "ScanStrings": true, + "Scanner": true, + "SkipComments": true, + "String": true, + "TokenString": true, + }, + "text/tabwriter": map[string]bool{ + "AlignRight": true, + "Debug": true, + "DiscardEmptyColumns": true, + "Escape": true, + "FilterHTML": true, + "NewWriter": true, + "StripEscape": true, + "TabIndent": true, + "Writer": true, + }, + "text/template": map[string]bool{ + "ExecError": true, + "FuncMap": true, + "HTMLEscape": true, + "HTMLEscapeString": true, + "HTMLEscaper": true, + "IsTrue": true, + "JSEscape": true, + "JSEscapeString": true, + "JSEscaper": true, + "Must": true, + "New": true, + "ParseFiles": true, + "ParseGlob": true, + "Template": true, + "URLQueryEscaper": true, + }, + "text/template/parse": map[string]bool{ + "ActionNode": true, + "BoolNode": true, + "BranchNode": true, + "ChainNode": true, + "CommandNode": true, + "DotNode": true, + "FieldNode": true, + "IdentifierNode": true, + "IfNode": true, + "IsEmptyTree": true, + "ListNode": true, + "New": true, + "NewIdentifier": true, + "NilNode": true, + "Node": true, + "NodeAction": true, + "NodeBool": true, + "NodeChain": true, + "NodeCommand": true, + "NodeDot": true, + "NodeField": true, + "NodeIdentifier": true, + "NodeIf": true, + "NodeList": true, + "NodeNil": true, + "NodeNumber": true, + "NodePipe": true, + "NodeRange": true, + "NodeString": true, + "NodeTemplate": true, + "NodeText": true, + "NodeType": true, + "NodeVariable": true, + "NodeWith": true, + "NumberNode": true, + "Parse": true, + "PipeNode": true, + "Pos": true, + "RangeNode": true, + "StringNode": true, + "TemplateNode": true, + "TextNode": true, + "Tree": true, + "VariableNode": true, + "WithNode": true, + }, + "time": map[string]bool{ + "ANSIC": true, + "After": true, + "AfterFunc": true, + "April": true, + "August": true, + "Date": true, + "December": true, + "Duration": true, + "February": true, + "FixedZone": true, + "Friday": true, + "Hour": true, + "January": true, + "July": true, + "June": true, + "Kitchen": true, + "LoadLocation": true, + "LoadLocationFromTZData": true, + "Local": true, + "Location": true, + "March": true, + "May": true, + "Microsecond": true, + "Millisecond": true, + "Minute": true, + "Monday": true, + "Month": true, + "Nanosecond": true, + "NewTicker": true, + "NewTimer": true, + "November": true, + "Now": true, + "October": true, + "Parse": true, + "ParseDuration": true, + "ParseError": true, + "ParseInLocation": true, + "RFC1123": true, + "RFC1123Z": true, + "RFC3339": true, + "RFC3339Nano": true, + "RFC822": true, + "RFC822Z": true, + "RFC850": true, + "RubyDate": true, + "Saturday": true, + "Second": true, + "September": true, + "Since": true, + "Sleep": true, + "Stamp": true, + "StampMicro": true, + "StampMilli": true, + "StampNano": true, + "Sunday": true, + "Thursday": true, + "Tick": true, + "Ticker": true, + "Time": true, + "Timer": true, + "Tuesday": true, + "UTC": true, + "Unix": true, + "UnixDate": true, + "Until": true, + "Wednesday": true, + "Weekday": true, + }, + "unicode": map[string]bool{ + "ASCII_Hex_Digit": true, + "Adlam": true, + "Ahom": true, + "Anatolian_Hieroglyphs": true, + "Arabic": true, + "Armenian": true, + "Avestan": true, + "AzeriCase": true, + "Balinese": true, + "Bamum": true, + "Bassa_Vah": true, + "Batak": true, + "Bengali": true, + "Bhaiksuki": true, + "Bidi_Control": true, + "Bopomofo": true, + "Brahmi": true, + "Braille": true, + "Buginese": true, + "Buhid": true, + "C": true, + "Canadian_Aboriginal": true, + "Carian": true, + "CaseRange": true, + "CaseRanges": true, + "Categories": true, + "Caucasian_Albanian": true, + "Cc": true, + "Cf": true, + "Chakma": true, + "Cham": true, + "Cherokee": true, + "Co": true, + "Common": true, + "Coptic": true, + "Cs": true, + "Cuneiform": true, + "Cypriot": true, + "Cyrillic": true, + "Dash": true, + "Deprecated": true, + "Deseret": true, + "Devanagari": true, + "Diacritic": true, + "Digit": true, + "Dogra": true, + "Duployan": true, + "Egyptian_Hieroglyphs": true, + "Elbasan": true, + "Ethiopic": true, + "Extender": true, + "FoldCategory": true, + "FoldScript": true, + "Georgian": true, + "Glagolitic": true, + "Gothic": true, + "Grantha": true, + "GraphicRanges": true, + "Greek": true, + "Gujarati": true, + "Gunjala_Gondi": true, + "Gurmukhi": true, + "Han": true, + "Hangul": true, + "Hanifi_Rohingya": true, + "Hanunoo": true, + "Hatran": true, + "Hebrew": true, + "Hex_Digit": true, + "Hiragana": true, + "Hyphen": true, + "IDS_Binary_Operator": true, + "IDS_Trinary_Operator": true, + "Ideographic": true, + "Imperial_Aramaic": true, + "In": true, + "Inherited": true, + "Inscriptional_Pahlavi": true, + "Inscriptional_Parthian": true, + "Is": true, + "IsControl": true, + "IsDigit": true, + "IsGraphic": true, + "IsLetter": true, + "IsLower": true, + "IsMark": true, + "IsNumber": true, + "IsOneOf": true, + "IsPrint": true, + "IsPunct": true, + "IsSpace": true, + "IsSymbol": true, + "IsTitle": true, + "IsUpper": true, + "Javanese": true, + "Join_Control": true, + "Kaithi": true, + "Kannada": true, + "Katakana": true, + "Kayah_Li": true, + "Kharoshthi": true, + "Khmer": true, + "Khojki": true, + "Khudawadi": true, + "L": true, + "Lao": true, + "Latin": true, + "Lepcha": true, + "Letter": true, + "Limbu": true, + "Linear_A": true, + "Linear_B": true, + "Lisu": true, + "Ll": true, + "Lm": true, + "Lo": true, + "Logical_Order_Exception": true, + "Lower": true, + "LowerCase": true, + "Lt": true, + "Lu": true, + "Lycian": true, + "Lydian": true, + "M": true, + "Mahajani": true, + "Makasar": true, + "Malayalam": true, + "Mandaic": true, + "Manichaean": true, + "Marchen": true, + "Mark": true, + "Masaram_Gondi": true, + "MaxASCII": true, + "MaxCase": true, + "MaxLatin1": true, + "MaxRune": true, + "Mc": true, + "Me": true, + "Medefaidrin": true, + "Meetei_Mayek": true, + "Mende_Kikakui": true, + "Meroitic_Cursive": true, + "Meroitic_Hieroglyphs": true, + "Miao": true, + "Mn": true, + "Modi": true, + "Mongolian": true, + "Mro": true, + "Multani": true, + "Myanmar": true, + "N": true, + "Nabataean": true, + "Nd": true, + "New_Tai_Lue": true, + "Newa": true, + "Nko": true, + "Nl": true, + "No": true, + "Noncharacter_Code_Point": true, + "Number": true, + "Nushu": true, + "Ogham": true, + "Ol_Chiki": true, + "Old_Hungarian": true, + "Old_Italic": true, + "Old_North_Arabian": true, + "Old_Permic": true, + "Old_Persian": true, + "Old_Sogdian": true, + "Old_South_Arabian": true, + "Old_Turkic": true, + "Oriya": true, + "Osage": true, + "Osmanya": true, + "Other": true, + "Other_Alphabetic": true, + "Other_Default_Ignorable_Code_Point": true, + "Other_Grapheme_Extend": true, + "Other_ID_Continue": true, + "Other_ID_Start": true, + "Other_Lowercase": true, + "Other_Math": true, + "Other_Uppercase": true, + "P": true, + "Pahawh_Hmong": true, + "Palmyrene": true, + "Pattern_Syntax": true, + "Pattern_White_Space": true, + "Pau_Cin_Hau": true, + "Pc": true, + "Pd": true, + "Pe": true, + "Pf": true, + "Phags_Pa": true, + "Phoenician": true, + "Pi": true, + "Po": true, + "Prepended_Concatenation_Mark": true, + "PrintRanges": true, + "Properties": true, + "Ps": true, + "Psalter_Pahlavi": true, + "Punct": true, + "Quotation_Mark": true, + "Radical": true, + "Range16": true, + "Range32": true, + "RangeTable": true, + "Regional_Indicator": true, + "Rejang": true, + "ReplacementChar": true, + "Runic": true, + "S": true, + "STerm": true, + "Samaritan": true, + "Saurashtra": true, + "Sc": true, + "Scripts": true, + "Sentence_Terminal": true, + "Sharada": true, + "Shavian": true, + "Siddham": true, + "SignWriting": true, + "SimpleFold": true, + "Sinhala": true, + "Sk": true, + "Sm": true, + "So": true, + "Soft_Dotted": true, + "Sogdian": true, + "Sora_Sompeng": true, + "Soyombo": true, + "Space": true, + "SpecialCase": true, + "Sundanese": true, + "Syloti_Nagri": true, + "Symbol": true, + "Syriac": true, + "Tagalog": true, + "Tagbanwa": true, + "Tai_Le": true, + "Tai_Tham": true, + "Tai_Viet": true, + "Takri": true, + "Tamil": true, + "Tangut": true, + "Telugu": true, + "Terminal_Punctuation": true, + "Thaana": true, + "Thai": true, + "Tibetan": true, + "Tifinagh": true, + "Tirhuta": true, + "Title": true, + "TitleCase": true, + "To": true, + "ToLower": true, + "ToTitle": true, + "ToUpper": true, + "TurkishCase": true, + "Ugaritic": true, + "Unified_Ideograph": true, + "Upper": true, + "UpperCase": true, + "UpperLower": true, + "Vai": true, + "Variation_Selector": true, + "Version": true, + "Warang_Citi": true, + "White_Space": true, + "Yi": true, + "Z": true, + "Zanabazar_Square": true, + "Zl": true, + "Zp": true, + "Zs": true, + }, + "unicode/utf16": map[string]bool{ + "Decode": true, + "DecodeRune": true, + "Encode": true, + "EncodeRune": true, + "IsSurrogate": true, + }, + "unicode/utf8": map[string]bool{ + "DecodeLastRune": true, + "DecodeLastRuneInString": true, + "DecodeRune": true, + "DecodeRuneInString": true, + "EncodeRune": true, + "FullRune": true, + "FullRuneInString": true, + "MaxRune": true, + "RuneCount": true, + "RuneCountInString": true, + "RuneError": true, + "RuneLen": true, + "RuneSelf": true, + "RuneStart": true, + "UTFMax": true, + "Valid": true, + "ValidRune": true, + "ValidString": true, + }, + "unsafe": map[string]bool{ + "Alignof": true, + "ArbitraryType": true, + "Offsetof": true, + "Pointer": true, + "Sizeof": true, + }, +} diff --git a/vendor/golang.org/x/tools/internal/module/module.go b/vendor/golang.org/x/tools/internal/module/module.go new file mode 100644 index 00000000000..9a4edb9dec1 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/module/module.go @@ -0,0 +1,540 @@ +// 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 module defines the module.Version type +// along with support code. +package module + +// IMPORTANT NOTE +// +// This file essentially defines the set of valid import paths for the go command. +// There are many subtle considerations, including Unicode ambiguity, +// security, network, and file system representations. +// +// This file also defines the set of valid module path and version combinations, +// another topic with many subtle considerations. +// +// Changes to the semantics in this file require approval from rsc. + +import ( + "fmt" + "sort" + "strings" + "unicode" + "unicode/utf8" + + "golang.org/x/tools/internal/semver" +) + +// A Version is defined by a module path and version pair. +type Version struct { + Path string + + // Version is usually a semantic version in canonical form. + // There are two exceptions to this general rule. + // First, the top-level target of a build has no specific version + // and uses Version = "". + // Second, during MVS calculations the version "none" is used + // to represent the decision to take no version of a given module. + Version string `json:",omitempty"` +} + +// Check checks that a given module path, version pair is valid. +// In addition to the path being a valid module path +// and the version being a valid semantic version, +// the two must correspond. +// For example, the path "yaml/v2" only corresponds to +// semantic versions beginning with "v2.". +func Check(path, version string) error { + if err := CheckPath(path); err != nil { + return err + } + if !semver.IsValid(version) { + return fmt.Errorf("malformed semantic version %v", version) + } + _, pathMajor, _ := SplitPathVersion(path) + if !MatchPathMajor(version, pathMajor) { + if pathMajor == "" { + pathMajor = "v0 or v1" + } + if pathMajor[0] == '.' { // .v1 + pathMajor = pathMajor[1:] + } + return fmt.Errorf("mismatched module path %v and version %v (want %v)", path, version, pathMajor) + } + return nil +} + +// firstPathOK reports whether r can appear in the first element of a module path. +// The first element of the path must be an LDH domain name, at least for now. +// To avoid case ambiguity, the domain name must be entirely lower case. +func firstPathOK(r rune) bool { + return r == '-' || r == '.' || + '0' <= r && r <= '9' || + 'a' <= r && r <= 'z' +} + +// pathOK reports whether r can appear in an import path element. +// Paths can be ASCII letters, ASCII digits, and limited ASCII punctuation: + - . _ and ~. +// This matches what "go get" has historically recognized in import paths. +// TODO(rsc): We would like to allow Unicode letters, but that requires additional +// care in the safe encoding (see note below). +func pathOK(r rune) bool { + if r < utf8.RuneSelf { + return r == '+' || r == '-' || r == '.' || r == '_' || r == '~' || + '0' <= r && r <= '9' || + 'A' <= r && r <= 'Z' || + 'a' <= r && r <= 'z' + } + return false +} + +// fileNameOK reports whether r can appear in a file name. +// For now we allow all Unicode letters but otherwise limit to pathOK plus a few more punctuation characters. +// If we expand the set of allowed characters here, we have to +// work harder at detecting potential case-folding and normalization collisions. +// See note about "safe encoding" below. +func fileNameOK(r rune) bool { + if r < utf8.RuneSelf { + // Entire set of ASCII punctuation, from which we remove characters: + // ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ + // We disallow some shell special characters: " ' * < > ? ` | + // (Note that some of those are disallowed by the Windows file system as well.) + // We also disallow path separators / : and \ (fileNameOK is only called on path element characters). + // We allow spaces (U+0020) in file names. + const allowed = "!#$%&()+,-.=@[]^_{}~ " + if '0' <= r && r <= '9' || 'A' <= r && r <= 'Z' || 'a' <= r && r <= 'z' { + return true + } + for i := 0; i < len(allowed); i++ { + if rune(allowed[i]) == r { + return true + } + } + return false + } + // It may be OK to add more ASCII punctuation here, but only carefully. + // For example Windows disallows < > \, and macOS disallows :, so we must not allow those. + return unicode.IsLetter(r) +} + +// CheckPath checks that a module path is valid. +func CheckPath(path string) error { + if err := checkPath(path, false); err != nil { + return fmt.Errorf("malformed module path %q: %v", path, err) + } + i := strings.Index(path, "/") + if i < 0 { + i = len(path) + } + if i == 0 { + return fmt.Errorf("malformed module path %q: leading slash", path) + } + if !strings.Contains(path[:i], ".") { + return fmt.Errorf("malformed module path %q: missing dot in first path element", path) + } + if path[0] == '-' { + return fmt.Errorf("malformed module path %q: leading dash in first path element", path) + } + for _, r := range path[:i] { + if !firstPathOK(r) { + return fmt.Errorf("malformed module path %q: invalid char %q in first path element", path, r) + } + } + if _, _, ok := SplitPathVersion(path); !ok { + return fmt.Errorf("malformed module path %q: invalid version", path) + } + return nil +} + +// CheckImportPath checks that an import path is valid. +func CheckImportPath(path string) error { + if err := checkPath(path, false); err != nil { + return fmt.Errorf("malformed import path %q: %v", path, err) + } + return nil +} + +// checkPath checks that a general path is valid. +// It returns an error describing why but not mentioning path. +// Because these checks apply to both module paths and import paths, +// the caller is expected to add the "malformed ___ path %q: " prefix. +// fileName indicates whether the final element of the path is a file name +// (as opposed to a directory name). +func checkPath(path string, fileName bool) error { + if !utf8.ValidString(path) { + return fmt.Errorf("invalid UTF-8") + } + if path == "" { + return fmt.Errorf("empty string") + } + if strings.Contains(path, "..") { + return fmt.Errorf("double dot") + } + if strings.Contains(path, "//") { + return fmt.Errorf("double slash") + } + if path[len(path)-1] == '/' { + return fmt.Errorf("trailing slash") + } + elemStart := 0 + for i, r := range path { + if r == '/' { + if err := checkElem(path[elemStart:i], fileName); err != nil { + return err + } + elemStart = i + 1 + } + } + if err := checkElem(path[elemStart:], fileName); err != nil { + return err + } + return nil +} + +// checkElem checks whether an individual path element is valid. +// fileName indicates whether the element is a file name (not a directory name). +func checkElem(elem string, fileName bool) error { + if elem == "" { + return fmt.Errorf("empty path element") + } + if strings.Count(elem, ".") == len(elem) { + return fmt.Errorf("invalid path element %q", elem) + } + if elem[0] == '.' && !fileName { + return fmt.Errorf("leading dot in path element") + } + if elem[len(elem)-1] == '.' { + return fmt.Errorf("trailing dot in path element") + } + charOK := pathOK + if fileName { + charOK = fileNameOK + } + for _, r := range elem { + if !charOK(r) { + return fmt.Errorf("invalid char %q", r) + } + } + + // Windows disallows a bunch of path elements, sadly. + // See https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file + short := elem + if i := strings.Index(short, "."); i >= 0 { + short = short[:i] + } + for _, bad := range badWindowsNames { + if strings.EqualFold(bad, short) { + return fmt.Errorf("disallowed path element %q", elem) + } + } + return nil +} + +// CheckFilePath checks whether a slash-separated file path is valid. +func CheckFilePath(path string) error { + if err := checkPath(path, true); err != nil { + return fmt.Errorf("malformed file path %q: %v", path, err) + } + return nil +} + +// badWindowsNames are the reserved file path elements on Windows. +// See https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file +var badWindowsNames = []string{ + "CON", + "PRN", + "AUX", + "NUL", + "COM1", + "COM2", + "COM3", + "COM4", + "COM5", + "COM6", + "COM7", + "COM8", + "COM9", + "LPT1", + "LPT2", + "LPT3", + "LPT4", + "LPT5", + "LPT6", + "LPT7", + "LPT8", + "LPT9", +} + +// SplitPathVersion returns prefix and major version such that prefix+pathMajor == path +// and version is either empty or "/vN" for N >= 2. +// As a special case, gopkg.in paths are recognized directly; +// they require ".vN" instead of "/vN", and for all N, not just N >= 2. +func SplitPathVersion(path string) (prefix, pathMajor string, ok bool) { + if strings.HasPrefix(path, "gopkg.in/") { + return splitGopkgIn(path) + } + + i := len(path) + dot := false + for i > 0 && ('0' <= path[i-1] && path[i-1] <= '9' || path[i-1] == '.') { + if path[i-1] == '.' { + dot = true + } + i-- + } + if i <= 1 || i == len(path) || path[i-1] != 'v' || path[i-2] != '/' { + return path, "", true + } + prefix, pathMajor = path[:i-2], path[i-2:] + if dot || len(pathMajor) <= 2 || pathMajor[2] == '0' || pathMajor == "/v1" { + return path, "", false + } + return prefix, pathMajor, true +} + +// splitGopkgIn is like SplitPathVersion but only for gopkg.in paths. +func splitGopkgIn(path string) (prefix, pathMajor string, ok bool) { + if !strings.HasPrefix(path, "gopkg.in/") { + return path, "", false + } + i := len(path) + if strings.HasSuffix(path, "-unstable") { + i -= len("-unstable") + } + for i > 0 && ('0' <= path[i-1] && path[i-1] <= '9') { + i-- + } + if i <= 1 || path[i-1] != 'v' || path[i-2] != '.' { + // All gopkg.in paths must end in vN for some N. + return path, "", false + } + prefix, pathMajor = path[:i-2], path[i-2:] + if len(pathMajor) <= 2 || pathMajor[2] == '0' && pathMajor != ".v0" { + return path, "", false + } + return prefix, pathMajor, true +} + +// MatchPathMajor reports whether the semantic version v +// matches the path major version pathMajor. +func MatchPathMajor(v, pathMajor string) bool { + if strings.HasPrefix(pathMajor, ".v") && strings.HasSuffix(pathMajor, "-unstable") { + pathMajor = strings.TrimSuffix(pathMajor, "-unstable") + } + if strings.HasPrefix(v, "v0.0.0-") && pathMajor == ".v1" { + // Allow old bug in pseudo-versions that generated v0.0.0- pseudoversion for gopkg .v1. + // For example, gopkg.in/yaml.v2@v2.2.1's go.mod requires gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405. + return true + } + m := semver.Major(v) + if pathMajor == "" { + return m == "v0" || m == "v1" || semver.Build(v) == "+incompatible" + } + return (pathMajor[0] == '/' || pathMajor[0] == '.') && m == pathMajor[1:] +} + +// CanonicalVersion returns the canonical form of the version string v. +// It is the same as semver.Canonical(v) except that it preserves the special build suffix "+incompatible". +func CanonicalVersion(v string) string { + cv := semver.Canonical(v) + if semver.Build(v) == "+incompatible" { + cv += "+incompatible" + } + return cv +} + +// Sort sorts the list by Path, breaking ties by comparing Versions. +func Sort(list []Version) { + sort.Slice(list, func(i, j int) bool { + mi := list[i] + mj := list[j] + if mi.Path != mj.Path { + return mi.Path < mj.Path + } + // To help go.sum formatting, allow version/file. + // Compare semver prefix by semver rules, + // file by string order. + vi := mi.Version + vj := mj.Version + var fi, fj string + if k := strings.Index(vi, "/"); k >= 0 { + vi, fi = vi[:k], vi[k:] + } + if k := strings.Index(vj, "/"); k >= 0 { + vj, fj = vj[:k], vj[k:] + } + if vi != vj { + return semver.Compare(vi, vj) < 0 + } + return fi < fj + }) +} + +// Safe encodings +// +// Module paths appear as substrings of file system paths +// (in the download cache) and of web server URLs in the proxy protocol. +// In general we cannot rely on file systems to be case-sensitive, +// nor can we rely on web servers, since they read from file systems. +// That is, we cannot rely on the file system to keep rsc.io/QUOTE +// and rsc.io/quote separate. Windows and macOS don't. +// Instead, we must never require two different casings of a file path. +// Because we want the download cache to match the proxy protocol, +// and because we want the proxy protocol to be possible to serve +// from a tree of static files (which might be stored on a case-insensitive +// file system), the proxy protocol must never require two different casings +// of a URL path either. +// +// One possibility would be to make the safe encoding be the lowercase +// hexadecimal encoding of the actual path bytes. This would avoid ever +// needing different casings of a file path, but it would be fairly illegible +// to most programmers when those paths appeared in the file system +// (including in file paths in compiler errors and stack traces) +// in web server logs, and so on. Instead, we want a safe encoding that +// leaves most paths unaltered. +// +// The safe encoding is this: +// replace every uppercase letter with an exclamation mark +// followed by the letter's lowercase equivalent. +// +// For example, +// github.com/Azure/azure-sdk-for-go -> github.com/!azure/azure-sdk-for-go. +// github.com/GoogleCloudPlatform/cloudsql-proxy -> github.com/!google!cloud!platform/cloudsql-proxy +// github.com/Sirupsen/logrus -> github.com/!sirupsen/logrus. +// +// Import paths that avoid upper-case letters are left unchanged. +// Note that because import paths are ASCII-only and avoid various +// problematic punctuation (like : < and >), the safe encoding is also ASCII-only +// and avoids the same problematic punctuation. +// +// Import paths have never allowed exclamation marks, so there is no +// need to define how to encode a literal !. +// +// Although paths are disallowed from using Unicode (see pathOK above), +// the eventual plan is to allow Unicode letters as well, to assume that +// file systems and URLs are Unicode-safe (storing UTF-8), and apply +// the !-for-uppercase convention. Note however that not all runes that +// are different but case-fold equivalent are an upper/lower pair. +// For example, U+004B ('K'), U+006B ('k'), and U+212A ('K' for Kelvin) +// are considered to case-fold to each other. When we do add Unicode +// letters, we must not assume that upper/lower are the only case-equivalent pairs. +// Perhaps the Kelvin symbol would be disallowed entirely, for example. +// Or perhaps it would encode as "!!k", or perhaps as "(212A)". +// +// Also, it would be nice to allow Unicode marks as well as letters, +// but marks include combining marks, and then we must deal not +// only with case folding but also normalization: both U+00E9 ('é') +// and U+0065 U+0301 ('e' followed by combining acute accent) +// look the same on the page and are treated by some file systems +// as the same path. If we do allow Unicode marks in paths, there +// must be some kind of normalization to allow only one canonical +// encoding of any character used in an import path. + +// EncodePath returns the safe encoding of the given module path. +// It fails if the module path is invalid. +func EncodePath(path string) (encoding string, err error) { + if err := CheckPath(path); err != nil { + return "", err + } + + return encodeString(path) +} + +// EncodeVersion returns the safe encoding of the given module version. +// Versions are allowed to be in non-semver form but must be valid file names +// and not contain exclamation marks. +func EncodeVersion(v string) (encoding string, err error) { + if err := checkElem(v, true); err != nil || strings.Contains(v, "!") { + return "", fmt.Errorf("disallowed version string %q", v) + } + return encodeString(v) +} + +func encodeString(s string) (encoding string, err error) { + haveUpper := false + for _, r := range s { + if r == '!' || r >= utf8.RuneSelf { + // This should be disallowed by CheckPath, but diagnose anyway. + // The correctness of the encoding loop below depends on it. + return "", fmt.Errorf("internal error: inconsistency in EncodePath") + } + if 'A' <= r && r <= 'Z' { + haveUpper = true + } + } + + if !haveUpper { + return s, nil + } + + var buf []byte + for _, r := range s { + if 'A' <= r && r <= 'Z' { + buf = append(buf, '!', byte(r+'a'-'A')) + } else { + buf = append(buf, byte(r)) + } + } + return string(buf), nil +} + +// DecodePath returns the module path of the given safe encoding. +// It fails if the encoding is invalid or encodes an invalid path. +func DecodePath(encoding string) (path string, err error) { + path, ok := decodeString(encoding) + if !ok { + return "", fmt.Errorf("invalid module path encoding %q", encoding) + } + if err := CheckPath(path); err != nil { + return "", fmt.Errorf("invalid module path encoding %q: %v", encoding, err) + } + return path, nil +} + +// DecodeVersion returns the version string for the given safe encoding. +// It fails if the encoding is invalid or encodes an invalid version. +// Versions are allowed to be in non-semver form but must be valid file names +// and not contain exclamation marks. +func DecodeVersion(encoding string) (v string, err error) { + v, ok := decodeString(encoding) + if !ok { + return "", fmt.Errorf("invalid version encoding %q", encoding) + } + if err := checkElem(v, true); err != nil { + return "", fmt.Errorf("disallowed version string %q", v) + } + return v, nil +} + +func decodeString(encoding string) (string, bool) { + var buf []byte + + bang := false + for _, r := range encoding { + if r >= utf8.RuneSelf { + return "", false + } + if bang { + bang = false + if r < 'a' || 'z' < r { + return "", false + } + buf = append(buf, byte(r+'A'-'a')) + continue + } + if r == '!' { + bang = true + continue + } + if 'A' <= r && r <= 'Z' { + return "", false + } + buf = append(buf, byte(r)) + } + if bang { + return "", false + } + return string(buf), true +} diff --git a/vendor/golang.org/x/tools/internal/semver/semver.go b/vendor/golang.org/x/tools/internal/semver/semver.go new file mode 100644 index 00000000000..4af7118e55d --- /dev/null +++ b/vendor/golang.org/x/tools/internal/semver/semver.go @@ -0,0 +1,388 @@ +// 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 semver implements comparison of semantic version strings. +// In this package, semantic version strings must begin with a leading "v", +// as in "v1.0.0". +// +// The general form of a semantic version string accepted by this package is +// +// vMAJOR[.MINOR[.PATCH[-PRERELEASE][+BUILD]]] +// +// where square brackets indicate optional parts of the syntax; +// MAJOR, MINOR, and PATCH are decimal integers without extra leading zeros; +// PRERELEASE and BUILD are each a series of non-empty dot-separated identifiers +// using only alphanumeric characters and hyphens; and +// all-numeric PRERELEASE identifiers must not have leading zeros. +// +// This package follows Semantic Versioning 2.0.0 (see semver.org) +// with two exceptions. First, it requires the "v" prefix. Second, it recognizes +// vMAJOR and vMAJOR.MINOR (with no prerelease or build suffixes) +// as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0. +package semver + +// parsed returns the parsed form of a semantic version string. +type parsed struct { + major string + minor string + patch string + short string + prerelease string + build string + err string +} + +// IsValid reports whether v is a valid semantic version string. +func IsValid(v string) bool { + _, ok := parse(v) + return ok +} + +// Canonical returns the canonical formatting of the semantic version v. +// It fills in any missing .MINOR or .PATCH and discards build metadata. +// Two semantic versions compare equal only if their canonical formattings +// are identical strings. +// The canonical invalid semantic version is the empty string. +func Canonical(v string) string { + p, ok := parse(v) + if !ok { + return "" + } + if p.build != "" { + return v[:len(v)-len(p.build)] + } + if p.short != "" { + return v + p.short + } + return v +} + +// Major returns the major version prefix of the semantic version v. +// For example, Major("v2.1.0") == "v2". +// If v is an invalid semantic version string, Major returns the empty string. +func Major(v string) string { + pv, ok := parse(v) + if !ok { + return "" + } + return v[:1+len(pv.major)] +} + +// MajorMinor returns the major.minor version prefix of the semantic version v. +// For example, MajorMinor("v2.1.0") == "v2.1". +// If v is an invalid semantic version string, MajorMinor returns the empty string. +func MajorMinor(v string) string { + pv, ok := parse(v) + if !ok { + return "" + } + i := 1 + len(pv.major) + if j := i + 1 + len(pv.minor); j <= len(v) && v[i] == '.' && v[i+1:j] == pv.minor { + return v[:j] + } + return v[:i] + "." + pv.minor +} + +// Prerelease returns the prerelease suffix of the semantic version v. +// For example, Prerelease("v2.1.0-pre+meta") == "-pre". +// If v is an invalid semantic version string, Prerelease returns the empty string. +func Prerelease(v string) string { + pv, ok := parse(v) + if !ok { + return "" + } + return pv.prerelease +} + +// Build returns the build suffix of the semantic version v. +// For example, Build("v2.1.0+meta") == "+meta". +// If v is an invalid semantic version string, Build returns the empty string. +func Build(v string) string { + pv, ok := parse(v) + if !ok { + return "" + } + return pv.build +} + +// Compare returns an integer comparing two versions according to +// according to semantic version precedence. +// The result will be 0 if v == w, -1 if v < w, or +1 if v > w. +// +// An invalid semantic version string is considered less than a valid one. +// All invalid semantic version strings compare equal to each other. +func Compare(v, w string) int { + pv, ok1 := parse(v) + pw, ok2 := parse(w) + if !ok1 && !ok2 { + return 0 + } + if !ok1 { + return -1 + } + if !ok2 { + return +1 + } + if c := compareInt(pv.major, pw.major); c != 0 { + return c + } + if c := compareInt(pv.minor, pw.minor); c != 0 { + return c + } + if c := compareInt(pv.patch, pw.patch); c != 0 { + return c + } + return comparePrerelease(pv.prerelease, pw.prerelease) +} + +// Max canonicalizes its arguments and then returns the version string +// that compares greater. +func Max(v, w string) string { + v = Canonical(v) + w = Canonical(w) + if Compare(v, w) > 0 { + return v + } + return w +} + +func parse(v string) (p parsed, ok bool) { + if v == "" || v[0] != 'v' { + p.err = "missing v prefix" + return + } + p.major, v, ok = parseInt(v[1:]) + if !ok { + p.err = "bad major version" + return + } + if v == "" { + p.minor = "0" + p.patch = "0" + p.short = ".0.0" + return + } + if v[0] != '.' { + p.err = "bad minor prefix" + ok = false + return + } + p.minor, v, ok = parseInt(v[1:]) + if !ok { + p.err = "bad minor version" + return + } + if v == "" { + p.patch = "0" + p.short = ".0" + return + } + if v[0] != '.' { + p.err = "bad patch prefix" + ok = false + return + } + p.patch, v, ok = parseInt(v[1:]) + if !ok { + p.err = "bad patch version" + return + } + if len(v) > 0 && v[0] == '-' { + p.prerelease, v, ok = parsePrerelease(v) + if !ok { + p.err = "bad prerelease" + return + } + } + if len(v) > 0 && v[0] == '+' { + p.build, v, ok = parseBuild(v) + if !ok { + p.err = "bad build" + return + } + } + if v != "" { + p.err = "junk on end" + ok = false + return + } + ok = true + return +} + +func parseInt(v string) (t, rest string, ok bool) { + if v == "" { + return + } + if v[0] < '0' || '9' < v[0] { + return + } + i := 1 + for i < len(v) && '0' <= v[i] && v[i] <= '9' { + i++ + } + if v[0] == '0' && i != 1 { + return + } + return v[:i], v[i:], true +} + +func parsePrerelease(v string) (t, rest string, ok bool) { + // "A pre-release version MAY be denoted by appending a hyphen and + // a series of dot separated identifiers immediately following the patch version. + // Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]. + // Identifiers MUST NOT be empty. Numeric identifiers MUST NOT include leading zeroes." + if v == "" || v[0] != '-' { + return + } + i := 1 + start := 1 + for i < len(v) && v[i] != '+' { + if !isIdentChar(v[i]) && v[i] != '.' { + return + } + if v[i] == '.' { + if start == i || isBadNum(v[start:i]) { + return + } + start = i + 1 + } + i++ + } + if start == i || isBadNum(v[start:i]) { + return + } + return v[:i], v[i:], true +} + +func parseBuild(v string) (t, rest string, ok bool) { + if v == "" || v[0] != '+' { + return + } + i := 1 + start := 1 + for i < len(v) { + if !isIdentChar(v[i]) { + return + } + if v[i] == '.' { + if start == i { + return + } + start = i + 1 + } + i++ + } + if start == i { + return + } + return v[:i], v[i:], true +} + +func isIdentChar(c byte) bool { + return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-' +} + +func isBadNum(v string) bool { + i := 0 + for i < len(v) && '0' <= v[i] && v[i] <= '9' { + i++ + } + return i == len(v) && i > 1 && v[0] == '0' +} + +func isNum(v string) bool { + i := 0 + for i < len(v) && '0' <= v[i] && v[i] <= '9' { + i++ + } + return i == len(v) +} + +func compareInt(x, y string) int { + if x == y { + return 0 + } + if len(x) < len(y) { + return -1 + } + if len(x) > len(y) { + return +1 + } + if x < y { + return -1 + } else { + return +1 + } +} + +func comparePrerelease(x, y string) int { + // "When major, minor, and patch are equal, a pre-release version has + // lower precedence than a normal version. + // Example: 1.0.0-alpha < 1.0.0. + // Precedence for two pre-release versions with the same major, minor, + // and patch version MUST be determined by comparing each dot separated + // identifier from left to right until a difference is found as follows: + // identifiers consisting of only digits are compared numerically and + // identifiers with letters or hyphens are compared lexically in ASCII + // sort order. Numeric identifiers always have lower precedence than + // non-numeric identifiers. A larger set of pre-release fields has a + // higher precedence than a smaller set, if all of the preceding + // identifiers are equal. + // Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < + // 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0." + if x == y { + return 0 + } + if x == "" { + return +1 + } + if y == "" { + return -1 + } + for x != "" && y != "" { + x = x[1:] // skip - or . + y = y[1:] // skip - or . + var dx, dy string + dx, x = nextIdent(x) + dy, y = nextIdent(y) + if dx != dy { + ix := isNum(dx) + iy := isNum(dy) + if ix != iy { + if ix { + return -1 + } else { + return +1 + } + } + if ix { + if len(dx) < len(dy) { + return -1 + } + if len(dx) > len(dy) { + return +1 + } + } + if dx < dy { + return -1 + } else { + return +1 + } + } + } + if x == "" { + return -1 + } else { + return +1 + } +} + +func nextIdent(x string) (dx, rest string) { + i := 0 + for i < len(x) && x[i] != '.' { + i++ + } + return x[:i], x[i:] +} diff --git a/vendor/golang.org/x/tools/internal/span/parse.go b/vendor/golang.org/x/tools/internal/span/parse.go new file mode 100644 index 00000000000..b3f268a38ae --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/parse.go @@ -0,0 +1,100 @@ +// 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. + +package span + +import ( + "strconv" + "strings" + "unicode/utf8" +) + +// Parse returns the location represented by the input. +// All inputs are valid locations, as they can always be a pure filename. +// The returned span will be normalized, and thus if printed may produce a +// different string. +func Parse(input string) Span { + // :0:0#0-0:0#0 + valid := input + var hold, offset int + hadCol := false + suf := rstripSuffix(input) + if suf.sep == "#" { + offset = suf.num + suf = rstripSuffix(suf.remains) + } + if suf.sep == ":" { + valid = suf.remains + hold = suf.num + hadCol = true + suf = rstripSuffix(suf.remains) + } + switch { + case suf.sep == ":": + return New(NewURI(suf.remains), NewPoint(suf.num, hold, offset), Point{}) + case suf.sep == "-": + // we have a span, fall out of the case to continue + default: + // separator not valid, rewind to either the : or the start + return New(NewURI(valid), NewPoint(hold, 0, offset), Point{}) + } + // only the span form can get here + // at this point we still don't know what the numbers we have mean + // if have not yet seen a : then we might have either a line or a column depending + // on whether start has a column or not + // we build an end point and will fix it later if needed + end := NewPoint(suf.num, hold, offset) + hold, offset = 0, 0 + suf = rstripSuffix(suf.remains) + if suf.sep == "#" { + offset = suf.num + suf = rstripSuffix(suf.remains) + } + if suf.sep != ":" { + // turns out we don't have a span after all, rewind + return New(NewURI(valid), end, Point{}) + } + valid = suf.remains + hold = suf.num + suf = rstripSuffix(suf.remains) + if suf.sep != ":" { + // line#offset only + return New(NewURI(valid), NewPoint(hold, 0, offset), end) + } + // we have a column, so if end only had one number, it is also the column + if !hadCol { + end = NewPoint(suf.num, end.v.Line, end.v.Offset) + } + return New(NewURI(suf.remains), NewPoint(suf.num, hold, offset), end) +} + +type suffix struct { + remains string + sep string + num int +} + +func rstripSuffix(input string) suffix { + if len(input) == 0 { + return suffix{"", "", -1} + } + remains := input + num := -1 + // first see if we have a number at the end + last := strings.LastIndexFunc(remains, func(r rune) bool { return r < '0' || r > '9' }) + if last >= 0 && last < len(remains)-1 { + number, err := strconv.ParseInt(remains[last+1:], 10, 64) + if err == nil { + num = int(number) + remains = remains[:last+1] + } + } + // now see if we have a trailing separator + r, w := utf8.DecodeLastRuneInString(remains) + if r != ':' && r != '#' && r == '#' { + return suffix{input, "", -1} + } + remains = remains[:len(remains)-w] + return suffix{remains, string(r), num} +} diff --git a/vendor/golang.org/x/tools/internal/span/span.go b/vendor/golang.org/x/tools/internal/span/span.go new file mode 100644 index 00000000000..4d2ad098667 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/span.go @@ -0,0 +1,285 @@ +// 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. + +// Package span contains support for representing with positions and ranges in +// text files. +package span + +import ( + "encoding/json" + "fmt" + "path" +) + +// Span represents a source code range in standardized form. +type Span struct { + v span +} + +// Point represents a single point within a file. +// In general this should only be used as part of a Span, as on its own it +// does not carry enough information. +type Point struct { + v point +} + +type span struct { + URI URI `json:"uri"` + Start point `json:"start"` + End point `json:"end"` +} + +type point struct { + Line int `json:"line"` + Column int `json:"column"` + Offset int `json:"offset"` +} + +// Invalid is a span that reports false from IsValid +var Invalid = Span{v: span{Start: invalidPoint.v, End: invalidPoint.v}} + +var invalidPoint = Point{v: point{Line: 0, Column: 0, Offset: -1}} + +// Converter is the interface to an object that can convert between line:column +// and offset forms for a single file. +type Converter interface { + //ToPosition converts from an offset to a line:column pair. + ToPosition(offset int) (int, int, error) + //ToOffset converts from a line:column pair to an offset. + ToOffset(line, col int) (int, error) +} + +func New(uri URI, start Point, end Point) Span { + s := Span{v: span{URI: uri, Start: start.v, End: end.v}} + s.v.clean() + return s +} + +func NewPoint(line, col, offset int) Point { + p := Point{v: point{Line: line, Column: col, Offset: offset}} + p.v.clean() + return p +} + +func Compare(a, b Span) int { + if r := CompareURI(a.URI(), b.URI()); r != 0 { + return r + } + if r := comparePoint(a.v.Start, b.v.Start); r != 0 { + return r + } + return comparePoint(a.v.End, b.v.End) +} + +func ComparePoint(a, b Point) int { + return comparePoint(a.v, b.v) +} + +func comparePoint(a, b point) int { + if !a.hasPosition() { + if a.Offset < b.Offset { + return -1 + } + if a.Offset > b.Offset { + return 1 + } + return 0 + } + if a.Line < b.Line { + return -1 + } + if a.Line > b.Line { + return 1 + } + if a.Column < b.Column { + return -1 + } + if a.Column > b.Column { + return 1 + } + return 0 +} + +func (s Span) HasPosition() bool { return s.v.Start.hasPosition() } +func (s Span) HasOffset() bool { return s.v.Start.hasOffset() } +func (s Span) IsValid() bool { return s.v.Start.isValid() } +func (s Span) IsPoint() bool { return s.v.Start == s.v.End } +func (s Span) URI() URI { return s.v.URI } +func (s Span) Start() Point { return Point{s.v.Start} } +func (s Span) End() Point { return Point{s.v.End} } +func (s *Span) MarshalJSON() ([]byte, error) { return json.Marshal(&s.v) } +func (s *Span) UnmarshalJSON(b []byte) error { return json.Unmarshal(b, &s.v) } + +func (p Point) HasPosition() bool { return p.v.hasPosition() } +func (p Point) HasOffset() bool { return p.v.hasOffset() } +func (p Point) IsValid() bool { return p.v.isValid() } +func (p *Point) MarshalJSON() ([]byte, error) { return json.Marshal(&p.v) } +func (p *Point) UnmarshalJSON(b []byte) error { return json.Unmarshal(b, &p.v) } +func (p Point) Line() int { + if !p.v.hasPosition() { + panic(fmt.Errorf("position not set in %v", p.v)) + } + return p.v.Line +} +func (p Point) Column() int { + if !p.v.hasPosition() { + panic(fmt.Errorf("position not set in %v", p.v)) + } + return p.v.Column +} +func (p Point) Offset() int { + if !p.v.hasOffset() { + panic(fmt.Errorf("offset not set in %v", p.v)) + } + return p.v.Offset +} + +func (p point) hasPosition() bool { return p.Line > 0 } +func (p point) hasOffset() bool { return p.Offset >= 0 } +func (p point) isValid() bool { return p.hasPosition() || p.hasOffset() } +func (p point) isZero() bool { + return (p.Line == 1 && p.Column == 1) || (!p.hasPosition() && p.Offset == 0) +} + +func (s *span) clean() { + //this presumes the points are already clean + if !s.End.isValid() || (s.End == point{}) { + s.End = s.Start + } +} + +func (p *point) clean() { + if p.Line < 0 { + p.Line = 0 + } + if p.Column <= 0 { + if p.Line > 0 { + p.Column = 1 + } else { + p.Column = 0 + } + } + if p.Offset == 0 && (p.Line > 1 || p.Column > 1) { + p.Offset = -1 + } +} + +// Format implements fmt.Formatter to print the Location in a standard form. +// The format produced is one that can be read back in using Parse. +func (s Span) Format(f fmt.State, c rune) { + fullForm := f.Flag('+') + preferOffset := f.Flag('#') + // we should always have a uri, simplify if it is file format + //TODO: make sure the end of the uri is unambiguous + uri := string(s.v.URI) + if c == 'f' { + uri = path.Base(uri) + } else if !fullForm { + uri = s.v.URI.Filename() + } + fmt.Fprint(f, uri) + if !s.IsValid() || (!fullForm && s.v.Start.isZero() && s.v.End.isZero()) { + return + } + // see which bits of start to write + printOffset := s.HasOffset() && (fullForm || preferOffset || !s.HasPosition()) + printLine := s.HasPosition() && (fullForm || !printOffset) + printColumn := printLine && (fullForm || (s.v.Start.Column > 1 || s.v.End.Column > 1)) + fmt.Fprint(f, ":") + if printLine { + fmt.Fprintf(f, "%d", s.v.Start.Line) + } + if printColumn { + fmt.Fprintf(f, ":%d", s.v.Start.Column) + } + if printOffset { + fmt.Fprintf(f, "#%d", s.v.Start.Offset) + } + // start is written, do we need end? + if s.IsPoint() { + return + } + // we don't print the line if it did not change + printLine = fullForm || (printLine && s.v.End.Line > s.v.Start.Line) + fmt.Fprint(f, "-") + if printLine { + fmt.Fprintf(f, "%d", s.v.End.Line) + } + if printColumn { + if printLine { + fmt.Fprint(f, ":") + } + fmt.Fprintf(f, "%d", s.v.End.Column) + } + if printOffset { + fmt.Fprintf(f, "#%d", s.v.End.Offset) + } +} + +func (s Span) WithPosition(c Converter) (Span, error) { + if err := s.update(c, true, false); err != nil { + return Span{}, err + } + return s, nil +} + +func (s Span) WithOffset(c Converter) (Span, error) { + if err := s.update(c, false, true); err != nil { + return Span{}, err + } + return s, nil +} + +func (s Span) WithAll(c Converter) (Span, error) { + if err := s.update(c, true, true); err != nil { + return Span{}, err + } + return s, nil +} + +func (s *Span) update(c Converter, withPos, withOffset bool) error { + if !s.IsValid() { + return fmt.Errorf("cannot add information to an invalid span") + } + if withPos && !s.HasPosition() { + if err := s.v.Start.updatePosition(c); err != nil { + return err + } + if s.v.End.Offset == s.v.Start.Offset { + s.v.End = s.v.Start + } else if err := s.v.End.updatePosition(c); err != nil { + return err + } + } + if withOffset && (!s.HasOffset() || (s.v.End.hasPosition() && !s.v.End.hasOffset())) { + if err := s.v.Start.updateOffset(c); err != nil { + return err + } + if s.v.End.Line == s.v.Start.Line && s.v.End.Column == s.v.Start.Column { + s.v.End.Offset = s.v.Start.Offset + } else if err := s.v.End.updateOffset(c); err != nil { + return err + } + } + return nil +} + +func (p *point) updatePosition(c Converter) error { + line, col, err := c.ToPosition(p.Offset) + if err != nil { + return err + } + p.Line = line + p.Column = col + return nil +} + +func (p *point) updateOffset(c Converter) error { + offset, err := c.ToOffset(p.Line, p.Column) + if err != nil { + return err + } + p.Offset = offset + return nil +} diff --git a/vendor/golang.org/x/tools/internal/span/token.go b/vendor/golang.org/x/tools/internal/span/token.go new file mode 100644 index 00000000000..ce44541b2fc --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/token.go @@ -0,0 +1,151 @@ +// 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. + +package span + +import ( + "fmt" + "go/token" +) + +// Range represents a source code range in token.Pos form. +// It also carries the FileSet that produced the positions, so that it is +// self contained. +type Range struct { + FileSet *token.FileSet + Start token.Pos + End token.Pos +} + +// TokenConverter is a Converter backed by a token file set and file. +// It uses the file set methods to work out the conversions, which +// makes it fast and does not require the file contents. +type TokenConverter struct { + fset *token.FileSet + file *token.File +} + +// NewRange creates a new Range from a FileSet and two positions. +// To represent a point pass a 0 as the end pos. +func NewRange(fset *token.FileSet, start, end token.Pos) Range { + return Range{ + FileSet: fset, + Start: start, + End: end, + } +} + +// NewTokenConverter returns an implementation of Converter backed by a +// token.File. +func NewTokenConverter(fset *token.FileSet, f *token.File) *TokenConverter { + return &TokenConverter{fset: fset, file: f} +} + +// NewContentConverter returns an implementation of Converter for the +// given file content. +func NewContentConverter(filename string, content []byte) *TokenConverter { + fset := token.NewFileSet() + f := fset.AddFile(filename, -1, len(content)) + f.SetLinesForContent(content) + return &TokenConverter{fset: fset, file: f} +} + +// IsPoint returns true if the range represents a single point. +func (r Range) IsPoint() bool { + return r.Start == r.End +} + +// Span converts a Range to a Span that represents the Range. +// It will fill in all the members of the Span, calculating the line and column +// information. +func (r Range) Span() (Span, error) { + f := r.FileSet.File(r.Start) + if f == nil { + return Span{}, fmt.Errorf("file not found in FileSet") + } + s := Span{v: span{URI: FileURI(f.Name())}} + var err error + s.v.Start.Offset, err = offset(f, r.Start) + if err != nil { + return Span{}, err + } + if r.End.IsValid() { + s.v.End.Offset, err = offset(f, r.End) + if err != nil { + return Span{}, err + } + } + s.v.Start.clean() + s.v.End.clean() + s.v.clean() + converter := NewTokenConverter(r.FileSet, f) + return s.WithPosition(converter) +} + +// offset is a copy of the Offset function in go/token, but with the adjustment +// that it does not panic on invalid positions. +func offset(f *token.File, pos token.Pos) (int, error) { + if int(pos) < f.Base() || int(pos) > f.Base()+f.Size() { + return 0, fmt.Errorf("invalid pos") + } + return int(pos) - f.Base(), nil +} + +// Range converts a Span to a Range that represents the Span for the supplied +// File. +func (s Span) Range(converter *TokenConverter) (Range, error) { + s, err := s.WithOffset(converter) + if err != nil { + return Range{}, err + } + // go/token will panic if the offset is larger than the file's size, + // so check here to avoid panicking. + if s.Start().Offset() > converter.file.Size() { + return Range{}, fmt.Errorf("start offset %v is past the end of the file %v", s.Start(), converter.file.Size()) + } + if s.End().Offset() > converter.file.Size() { + return Range{}, fmt.Errorf("end offset %v is past the end of the file %v", s.End(), converter.file.Size()) + } + return Range{ + FileSet: converter.fset, + Start: converter.file.Pos(s.Start().Offset()), + End: converter.file.Pos(s.End().Offset()), + }, nil +} + +func (l *TokenConverter) ToPosition(offset int) (int, int, error) { + if offset > l.file.Size() { + return 0, 0, fmt.Errorf("offset %v is past the end of the file %v", offset, l.file.Size()) + } + pos := l.file.Pos(offset) + p := l.fset.Position(pos) + if offset == l.file.Size() { + return p.Line + 1, 1, nil + } + return p.Line, p.Column, nil +} + +func (l *TokenConverter) ToOffset(line, col int) (int, error) { + if line < 0 { + return -1, fmt.Errorf("line is not valid") + } + lineMax := l.file.LineCount() + 1 + if line > lineMax { + return -1, fmt.Errorf("line is beyond end of file %v", lineMax) + } else if line == lineMax { + if col > 1 { + return -1, fmt.Errorf("column is beyond end of file") + } + // at the end of the file, allowing for a trailing eol + return l.file.Size(), nil + } + pos := lineStart(l.file, line) + if !pos.IsValid() { + return -1, fmt.Errorf("line is not in file") + } + // we assume that column is in bytes here, and that the first byte of a + // line is at column 1 + pos += token.Pos(col - 1) + return offset(l.file, pos) +} diff --git a/vendor/golang.org/x/tools/internal/span/token111.go b/vendor/golang.org/x/tools/internal/span/token111.go new file mode 100644 index 00000000000..bf7a5406b6e --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/token111.go @@ -0,0 +1,39 @@ +// 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 + +package span + +import ( + "go/token" +) + +// lineStart is the pre-Go 1.12 version of (*token.File).LineStart. For Go +// versions <= 1.11, we borrow logic from the analysisutil package. +// TODO(rstambler): Delete this file when we no longer support Go 1.11. +func lineStart(f *token.File, line int) token.Pos { + // Use binary search to find the start offset of this line. + + min := 0 // inclusive + max := f.Size() // exclusive + for { + offset := (min + max) / 2 + pos := f.Pos(offset) + posn := f.Position(pos) + if posn.Line == line { + return pos - (token.Pos(posn.Column) - 1) + } + + if min+1 >= max { + return token.NoPos + } + + if posn.Line < line { + min = offset + } else { + max = offset + } + } +} diff --git a/vendor/golang.org/x/tools/internal/span/token112.go b/vendor/golang.org/x/tools/internal/span/token112.go new file mode 100644 index 00000000000..017aec9c13e --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/token112.go @@ -0,0 +1,16 @@ +// 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 + +package span + +import ( + "go/token" +) + +// TODO(rstambler): Delete this file when we no longer support Go 1.11. +func lineStart(f *token.File, line int) token.Pos { + return f.LineStart(line) +} diff --git a/vendor/golang.org/x/tools/internal/span/uri.go b/vendor/golang.org/x/tools/internal/span/uri.go new file mode 100644 index 00000000000..e05a9e6ef5d --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/uri.go @@ -0,0 +1,152 @@ +// 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. + +package span + +import ( + "fmt" + "net/url" + "os" + "path" + "path/filepath" + "runtime" + "strings" + "unicode" +) + +const fileScheme = "file" + +// URI represents the full URI for a file. +type URI string + +// Filename returns the file path for the given URI. +// It is an error to call this on a URI that is not a valid filename. +func (uri URI) Filename() string { + filename, err := filename(uri) + if err != nil { + panic(err) + } + return filepath.FromSlash(filename) +} + +func filename(uri URI) (string, error) { + if uri == "" { + return "", nil + } + u, err := url.ParseRequestURI(string(uri)) + if err != nil { + return "", err + } + if u.Scheme != fileScheme { + return "", fmt.Errorf("only file URIs are supported, got %q from %q", u.Scheme, uri) + } + if isWindowsDriveURI(u.Path) { + u.Path = u.Path[1:] + } + return u.Path, nil +} + +// NewURI returns a span URI for the string. +// It will attempt to detect if the string is a file path or uri. +func NewURI(s string) URI { + if u, err := url.PathUnescape(s); err == nil { + s = u + } + if strings.HasPrefix(s, fileScheme+"://") { + return URI(s) + } + return FileURI(s) +} + +func CompareURI(a, b URI) int { + if equalURI(a, b) { + return 0 + } + if a < b { + return -1 + } + return 1 +} + +func equalURI(a, b URI) bool { + if a == b { + return true + } + // If we have the same URI basename, we may still have the same file URIs. + if !strings.EqualFold(path.Base(string(a)), path.Base(string(b))) { + return false + } + fa, err := filename(a) + if err != nil { + return false + } + fb, err := filename(b) + if err != nil { + return false + } + // Stat the files to check if they are equal. + infoa, err := os.Stat(filepath.FromSlash(fa)) + if err != nil { + return false + } + infob, err := os.Stat(filepath.FromSlash(fb)) + if err != nil { + return false + } + return os.SameFile(infoa, infob) +} + +// FileURI returns a span URI for the supplied file path. +// It will always have the file scheme. +func FileURI(path string) URI { + if path == "" { + return "" + } + // Handle standard library paths that contain the literal "$GOROOT". + // TODO(rstambler): The go/packages API should allow one to determine a user's $GOROOT. + const prefix = "$GOROOT" + if len(path) >= len(prefix) && strings.EqualFold(prefix, path[:len(prefix)]) { + suffix := path[len(prefix):] + path = runtime.GOROOT() + suffix + } + if !isWindowsDrivePath(path) { + if abs, err := filepath.Abs(path); err == nil { + path = abs + } + } + // Check the file path again, in case it became absolute. + if isWindowsDrivePath(path) { + path = "/" + path + } + path = filepath.ToSlash(path) + u := url.URL{ + Scheme: fileScheme, + Path: path, + } + uri := u.String() + if unescaped, err := url.PathUnescape(uri); err == nil { + uri = unescaped + } + return URI(uri) +} + +// isWindowsDrivePath returns true if the file path is of the form used by +// Windows. We check if the path begins with a drive letter, followed by a ":". +func isWindowsDrivePath(path string) bool { + if len(path) < 4 { + return false + } + return unicode.IsLetter(rune(path[0])) && path[1] == ':' +} + +// isWindowsDriveURI returns true if the file URI is of the format used by +// Windows URIs. The url.Parse package does not specially handle Windows paths +// (see https://golang.org/issue/6027). We check if the URI path has +// a drive prefix (e.g. "/C:"). If so, we trim the leading "/". +func isWindowsDriveURI(uri string) bool { + if len(uri) < 4 { + return false + } + return uri[0] == '/' && unicode.IsLetter(rune(uri[1])) && uri[2] == ':' +} diff --git a/vendor/golang.org/x/tools/internal/span/utf16.go b/vendor/golang.org/x/tools/internal/span/utf16.go new file mode 100644 index 00000000000..561b3fa50a8 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/span/utf16.go @@ -0,0 +1,94 @@ +// 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. + +package span + +import ( + "fmt" + "unicode/utf16" + "unicode/utf8" +) + +// ToUTF16Column calculates the utf16 column expressed by the point given the +// supplied file contents. +// This is used to convert from the native (always in bytes) column +// representation and the utf16 counts used by some editors. +func ToUTF16Column(p Point, content []byte) (int, error) { + if content == nil { + return -1, fmt.Errorf("ToUTF16Column: missing content") + } + if !p.HasPosition() { + return -1, fmt.Errorf("ToUTF16Column: point is missing position") + } + if !p.HasOffset() { + return -1, fmt.Errorf("ToUTF16Column: point is missing offset") + } + offset := p.Offset() // 0-based + colZero := p.Column() - 1 // 0-based + if colZero == 0 { + // 0-based column 0, so it must be chr 1 + return 1, nil + } else if colZero < 0 { + return -1, fmt.Errorf("ToUTF16Column: column is invalid (%v)", colZero) + } + // work out the offset at the start of the line using the column + lineOffset := offset - colZero + if lineOffset < 0 || offset > len(content) { + return -1, fmt.Errorf("ToUTF16Column: offsets %v-%v outside file contents (%v)", lineOffset, offset, len(content)) + } + // Use the offset to pick out the line start. + // This cannot panic: offset > len(content) and lineOffset < offset. + start := content[lineOffset:] + + // Now, truncate down to the supplied column. + start = start[:colZero] + + // and count the number of utf16 characters + // in theory we could do this by hand more efficiently... + return len(utf16.Encode([]rune(string(start)))) + 1, nil +} + +// FromUTF16Column advances the point by the utf16 character offset given the +// supplied line contents. +// This is used to convert from the utf16 counts used by some editors to the +// native (always in bytes) column representation. +func FromUTF16Column(p Point, chr int, content []byte) (Point, error) { + if !p.HasOffset() { + return Point{}, fmt.Errorf("FromUTF16Column: point is missing offset") + } + // if chr is 1 then no adjustment needed + if chr <= 1 { + return p, nil + } + if p.Offset() >= len(content) { + return p, fmt.Errorf("FromUTF16Column: offset (%v) greater than length of content (%v)", p.Offset(), len(content)) + } + remains := content[p.Offset():] + // scan forward the specified number of characters + for count := 1; count < chr; count++ { + if len(remains) <= 0 { + return Point{}, fmt.Errorf("FromUTF16Column: chr goes beyond the content") + } + r, w := utf8.DecodeRune(remains) + if r == '\n' { + // Per the LSP spec: + // + // > If the character value is greater than the line length it + // > defaults back to the line length. + break + } + remains = remains[w:] + if r >= 0x10000 { + // a two point rune + count++ + // if we finished in a two point rune, do not advance past the first + if count >= chr { + break + } + } + p.v.Column += w + p.v.Offset += w + } + return p, nil +} diff --git a/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json b/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json index e757ecbee36..215a8a163c2 100644 --- a/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json +++ b/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json @@ -573,7 +573,7 @@ } } }, - "revision": "20190702", + "revision": "20190824", "rootUrl": "https://cloudbuild.googleapis.com/", "schemas": { "ArtifactObjects": { @@ -1044,6 +1044,10 @@ }, "type": "array" }, + "name": { + "description": "User assigned name of the trigger. Must be unique within the project.", + "type": "string" + }, "substitutions": { "additionalProperties": { "type": "string" @@ -1287,11 +1291,11 @@ "id": "PushFilter", "properties": { "branch": { - "description": "Regexes of branches to match.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax", + "description": "Regexes matching branches to build.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax", "type": "string" }, "tag": { - "description": "Regexes of tags to match.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax", + "description": "Regexes matching tags to build.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax", "type": "string" } }, @@ -1302,7 +1306,7 @@ "id": "RepoSource", "properties": { "branchName": { - "description": "Name of the branch to build.", + "description": "Regex matching branches to build.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax", "type": "string" }, "commitSha": { @@ -1322,7 +1326,7 @@ "type": "string" }, "tagName": { - "description": "Name of the tag to build.", + "description": "Regex matching tags to build.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax", "type": "string" } }, diff --git a/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-gen.go b/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-gen.go index 0a38439ac13..d367f535449 100644 --- a/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-gen.go +++ b/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-gen.go @@ -49,8 +49,8 @@ import ( "strconv" "strings" - gensupport "google.golang.org/api/gensupport" googleapi "google.golang.org/api/googleapi" + gensupport "google.golang.org/api/internal/gensupport" option "google.golang.org/api/option" htransport "google.golang.org/api/transport/http" ) @@ -884,6 +884,10 @@ type BuildTrigger struct { // then we do not trigger a build. IncludedFiles []string `json:"includedFiles,omitempty"` + // Name: User assigned name of the trigger. Must be unique within the + // project. + Name string `json:"name,omitempty"` + // Substitutions: Substitutions data for Build resource. Substitutions map[string]string `json:"substitutions,omitempty"` @@ -1344,14 +1348,14 @@ func (s *PullRequestFilter) MarshalJSON() ([]byte, error) { // PushFilter: Push contains filter properties for matching GitHub git // pushes. type PushFilter struct { - // Branch: Regexes of branches to match. + // Branch: Regexes matching branches to build. // // The syntax of the regular expressions accepted is the syntax accepted // by // RE2 and described at https://github.com/google/re2/wiki/Syntax Branch string `json:"branch,omitempty"` - // Tag: Regexes of tags to match. + // Tag: Regexes matching tags to build. // // The syntax of the regular expressions accepted is the syntax accepted // by @@ -1384,7 +1388,11 @@ func (s *PushFilter) MarshalJSON() ([]byte, error) { // RepoSource: Location of the source in a Google Cloud Source // Repository. type RepoSource struct { - // BranchName: Name of the branch to build. + // BranchName: Regex matching branches to build. + // + // The syntax of the regular expressions accepted is the syntax accepted + // by + // RE2 and described at https://github.com/google/re2/wiki/Syntax BranchName string `json:"branchName,omitempty"` // CommitSha: Explicit commit SHA to build. @@ -1408,7 +1416,11 @@ type RepoSource struct { // assumed. RepoName string `json:"repoName,omitempty"` - // TagName: Name of the tag to build. + // TagName: Regex matching tags to build. + // + // The syntax of the regular expressions accepted is the syntax accepted + // by + // RE2 and described at https://github.com/google/re2/wiki/Syntax TagName string `json:"tagName,omitempty"` // ForceSendFields is a list of field names (e.g. "BranchName") to @@ -1858,7 +1870,7 @@ func (c *OperationsCancelCall) Header() http.Header { func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2011,7 +2023,7 @@ func (c *OperationsGetCall) Header() http.Header { func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2192,7 +2204,7 @@ func (c *OperationsListCall) Header() http.Header { func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2366,7 +2378,7 @@ func (c *ProjectsBuildsCancelCall) Header() http.Header { func (c *ProjectsBuildsCancelCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2519,7 +2531,7 @@ func (c *ProjectsBuildsCreateCall) Header() http.Header { func (c *ProjectsBuildsCreateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2673,7 +2685,7 @@ func (c *ProjectsBuildsGetCall) Header() http.Header { func (c *ProjectsBuildsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2849,7 +2861,7 @@ func (c *ProjectsBuildsListCall) Header() http.Header { func (c *ProjectsBuildsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3059,7 +3071,7 @@ func (c *ProjectsBuildsRetryCall) Header() http.Header { func (c *ProjectsBuildsRetryCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3208,7 +3220,7 @@ func (c *ProjectsTriggersCreateCall) Header() http.Header { func (c *ProjectsTriggersCreateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3350,7 +3362,7 @@ func (c *ProjectsTriggersDeleteCall) Header() http.Header { func (c *ProjectsTriggersDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3502,7 +3514,7 @@ func (c *ProjectsTriggersGetCall) Header() http.Header { func (c *ProjectsTriggersGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3669,7 +3681,7 @@ func (c *ProjectsTriggersListCall) Header() http.Header { func (c *ProjectsTriggersListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3840,7 +3852,7 @@ func (c *ProjectsTriggersPatchCall) Header() http.Header { func (c *ProjectsTriggersPatchCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3989,7 +4001,7 @@ func (c *ProjectsTriggersRunCall) Header() http.Header { func (c *ProjectsTriggersRunCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } diff --git a/vendor/google.golang.org/api/gensupport/buffer.go b/vendor/google.golang.org/api/internal/gensupport/buffer.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/buffer.go rename to vendor/google.golang.org/api/internal/gensupport/buffer.go diff --git a/vendor/google.golang.org/api/gensupport/doc.go b/vendor/google.golang.org/api/internal/gensupport/doc.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/doc.go rename to vendor/google.golang.org/api/internal/gensupport/doc.go diff --git a/vendor/google.golang.org/api/gensupport/json.go b/vendor/google.golang.org/api/internal/gensupport/json.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/json.go rename to vendor/google.golang.org/api/internal/gensupport/json.go diff --git a/vendor/google.golang.org/api/gensupport/jsonfloat.go b/vendor/google.golang.org/api/internal/gensupport/jsonfloat.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/jsonfloat.go rename to vendor/google.golang.org/api/internal/gensupport/jsonfloat.go diff --git a/vendor/google.golang.org/api/gensupport/media.go b/vendor/google.golang.org/api/internal/gensupport/media.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/media.go rename to vendor/google.golang.org/api/internal/gensupport/media.go diff --git a/vendor/google.golang.org/api/gensupport/params.go b/vendor/google.golang.org/api/internal/gensupport/params.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/params.go rename to vendor/google.golang.org/api/internal/gensupport/params.go diff --git a/vendor/google.golang.org/api/gensupport/resumable.go b/vendor/google.golang.org/api/internal/gensupport/resumable.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/resumable.go rename to vendor/google.golang.org/api/internal/gensupport/resumable.go diff --git a/vendor/google.golang.org/api/gensupport/send.go b/vendor/google.golang.org/api/internal/gensupport/send.go similarity index 100% rename from vendor/google.golang.org/api/gensupport/send.go rename to vendor/google.golang.org/api/internal/gensupport/send.go diff --git a/vendor/google.golang.org/api/storage/v1/storage-api.json b/vendor/google.golang.org/api/storage/v1/storage-api.json index 2a0d2746f1d..e2b4980b0d3 100644 --- a/vendor/google.golang.org/api/storage/v1/storage-api.json +++ b/vendor/google.golang.org/api/storage/v1/storage-api.json @@ -26,7 +26,7 @@ "description": "Stores and retrieves potentially large, immutable data objects.", "discoveryVersion": "v1", "documentationLink": "https://developers.google.com/storage/docs/json_api/", - "etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/m18VxIxuaQHJN-C1B3-yQYvta24\"", + "etag": "\"LYADMvHWYH2ul9D6m9UT9gT77YM/siVp-wXOlRuFwENWg2J2I4L8CMg\"", "icons": { "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png", "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png" @@ -450,6 +450,13 @@ "required": true, "type": "string" }, + "optionsRequestedPolicyVersion": { + "description": "The IAM policy format version to be returned. If the optionsRequestedPolicyVersion is for an older version that doesn't support part of the requested IAM policy, the request fails.", + "format": "int32", + "location": "query", + "minimum": "1", + "type": "integer" + }, "provisionalUserProject": { "description": "The project to be billed for this request if the target bucket is requester-pays bucket.", "location": "query", @@ -3196,7 +3203,7 @@ } } }, - "revision": "20190624", + "revision": "20190910", "rootUrl": "https://www.googleapis.com/", "schemas": { "Bucket": { @@ -4305,6 +4312,11 @@ "resourceId": { "description": "The ID of the resource to which this policy belongs. Will be of the form projects/_/buckets/bucket for buckets, and projects/_/buckets/bucket/objects/object for objects. A specific generation may be specified by appending #generationNumber to the end of the object name, e.g. projects/_/buckets/my-bucket/objects/data.txt#17. The current generation can be denoted with #0. This field is ignored on input.", "type": "string" + }, + "version": { + "description": "The IAM policy format version.", + "format": "int32", + "type": "integer" } }, "type": "object" diff --git a/vendor/google.golang.org/api/storage/v1/storage-gen.go b/vendor/google.golang.org/api/storage/v1/storage-gen.go index 2eff67418c5..9a0360563ab 100644 --- a/vendor/google.golang.org/api/storage/v1/storage-gen.go +++ b/vendor/google.golang.org/api/storage/v1/storage-gen.go @@ -55,8 +55,8 @@ import ( "strconv" "strings" - gensupport "google.golang.org/api/gensupport" googleapi "google.golang.org/api/googleapi" + gensupport "google.golang.org/api/internal/gensupport" option "google.golang.org/api/option" htransport "google.golang.org/api/transport/http" ) @@ -2068,6 +2068,9 @@ type Policy struct { // generation can be denoted with #0. This field is ignored on input. ResourceId string `json:"resourceId,omitempty"` + // Version: The IAM policy format version. + Version int64 `json:"version,omitempty"` + // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` @@ -2389,7 +2392,7 @@ func (c *BucketAccessControlsDeleteCall) Header() http.Header { func (c *BucketAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2537,7 +2540,7 @@ func (c *BucketAccessControlsGetCall) Header() http.Header { func (c *BucketAccessControlsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2704,7 +2707,7 @@ func (c *BucketAccessControlsInsertCall) Header() http.Header { func (c *BucketAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -2877,7 +2880,7 @@ func (c *BucketAccessControlsListCall) Header() http.Header { func (c *BucketAccessControlsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3038,7 +3041,7 @@ func (c *BucketAccessControlsPatchCall) Header() http.Header { func (c *BucketAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3212,7 +3215,7 @@ func (c *BucketAccessControlsUpdateCall) Header() http.Header { func (c *BucketAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3398,7 +3401,7 @@ func (c *BucketsDeleteCall) Header() http.Header { func (c *BucketsDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3577,7 +3580,7 @@ func (c *BucketsGetCall) Header() http.Header { func (c *BucketsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3721,6 +3724,16 @@ func (r *BucketsService) GetIamPolicy(bucket string) *BucketsGetIamPolicyCall { return c } +// OptionsRequestedPolicyVersion sets the optional parameter +// "optionsRequestedPolicyVersion": The IAM policy format version to be +// returned. If the optionsRequestedPolicyVersion is for an older +// version that doesn't support part of the requested IAM policy, the +// request fails. +func (c *BucketsGetIamPolicyCall) OptionsRequestedPolicyVersion(optionsRequestedPolicyVersion int64) *BucketsGetIamPolicyCall { + c.urlParams_.Set("optionsRequestedPolicyVersion", fmt.Sprint(optionsRequestedPolicyVersion)) + return c +} + // ProvisionalUserProject sets the optional parameter // "provisionalUserProject": The project to be billed for this request // if the target bucket is requester-pays bucket. @@ -3773,7 +3786,7 @@ func (c *BucketsGetIamPolicyCall) Header() http.Header { func (c *BucketsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -3848,6 +3861,13 @@ func (c *BucketsGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, err // "required": true, // "type": "string" // }, + // "optionsRequestedPolicyVersion": { + // "description": "The IAM policy format version to be returned. If the optionsRequestedPolicyVersion is for an older version that doesn't support part of the requested IAM policy, the request fails.", + // "format": "int32", + // "location": "query", + // "minimum": "1", + // "type": "integer" + // }, // "provisionalUserProject": { // "description": "The project to be billed for this request if the target bucket is requester-pays bucket.", // "location": "query", @@ -3983,7 +4003,7 @@ func (c *BucketsInsertCall) Header() http.Header { func (c *BucketsInsertCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -4240,7 +4260,7 @@ func (c *BucketsListCall) Header() http.Header { func (c *BucketsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -4450,7 +4470,7 @@ func (c *BucketsLockRetentionPolicyCall) Header() http.Header { func (c *BucketsLockRetentionPolicyCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -4685,7 +4705,7 @@ func (c *BucketsPatchCall) Header() http.Header { func (c *BucketsPatchCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -4914,7 +4934,7 @@ func (c *BucketsSetIamPolicyCall) Header() http.Header { func (c *BucketsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -5089,7 +5109,7 @@ func (c *BucketsTestIamPermissionsCall) Header() http.Header { func (c *BucketsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -5329,7 +5349,7 @@ func (c *BucketsUpdateCall) Header() http.Header { func (c *BucketsUpdateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -5541,7 +5561,7 @@ func (c *ChannelsStopCall) Header() http.Header { func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -5658,7 +5678,7 @@ func (c *DefaultObjectAccessControlsDeleteCall) Header() http.Header { func (c *DefaultObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -5806,7 +5826,7 @@ func (c *DefaultObjectAccessControlsGetCall) Header() http.Header { func (c *DefaultObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -5974,7 +5994,7 @@ func (c *DefaultObjectAccessControlsInsertCall) Header() http.Header { func (c *DefaultObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -6164,7 +6184,7 @@ func (c *DefaultObjectAccessControlsListCall) Header() http.Header { func (c *DefaultObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -6337,7 +6357,7 @@ func (c *DefaultObjectAccessControlsPatchCall) Header() http.Header { func (c *DefaultObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -6511,7 +6531,7 @@ func (c *DefaultObjectAccessControlsUpdateCall) Header() http.Header { func (c *DefaultObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -6683,7 +6703,7 @@ func (c *NotificationsDeleteCall) Header() http.Header { func (c *NotificationsDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -6831,7 +6851,7 @@ func (c *NotificationsGetCall) Header() http.Header { func (c *NotificationsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -7001,7 +7021,7 @@ func (c *NotificationsInsertCall) Header() http.Header { func (c *NotificationsInsertCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -7176,7 +7196,7 @@ func (c *NotificationsListCall) Header() http.Header { func (c *NotificationsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -7349,7 +7369,7 @@ func (c *ObjectAccessControlsDeleteCall) Header() http.Header { func (c *ObjectAccessControlsDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -7521,7 +7541,7 @@ func (c *ObjectAccessControlsGetCall) Header() http.Header { func (c *ObjectAccessControlsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -7712,7 +7732,7 @@ func (c *ObjectAccessControlsInsertCall) Header() http.Header { func (c *ObjectAccessControlsInsertCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -7909,7 +7929,7 @@ func (c *ObjectAccessControlsListCall) Header() http.Header { func (c *ObjectAccessControlsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -8094,7 +8114,7 @@ func (c *ObjectAccessControlsPatchCall) Header() http.Header { func (c *ObjectAccessControlsPatchCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -8292,7 +8312,7 @@ func (c *ObjectAccessControlsUpdateCall) Header() http.Header { func (c *ObjectAccessControlsUpdateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -8529,7 +8549,7 @@ func (c *ObjectsComposeCall) Header() http.Header { func (c *ObjectsComposeCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -8861,7 +8881,7 @@ func (c *ObjectsCopyCall) Header() http.Header { func (c *ObjectsCopyCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -9184,7 +9204,7 @@ func (c *ObjectsDeleteCall) Header() http.Header { func (c *ObjectsDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -9417,7 +9437,7 @@ func (c *ObjectsGetCall) Header() http.Header { func (c *ObjectsGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -9667,7 +9687,7 @@ func (c *ObjectsGetIamPolicyCall) Header() http.Header { func (c *ObjectsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -9984,7 +10004,7 @@ func (c *ObjectsInsertCall) Header() http.Header { func (c *ObjectsInsertCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -10339,7 +10359,7 @@ func (c *ObjectsListCall) Header() http.Header { func (c *ObjectsListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -10646,7 +10666,7 @@ func (c *ObjectsPatchCall) Header() http.Header { func (c *ObjectsPatchCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -11038,7 +11058,7 @@ func (c *ObjectsRewriteCall) Header() http.Header { func (c *ObjectsRewriteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -11341,7 +11361,7 @@ func (c *ObjectsSetIamPolicyCall) Header() http.Header { func (c *ObjectsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -11541,7 +11561,7 @@ func (c *ObjectsTestIamPermissionsCall) Header() http.Header { func (c *ObjectsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -11802,7 +11822,7 @@ func (c *ObjectsUpdateCall) Header() http.Header { func (c *ObjectsUpdateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -12102,7 +12122,7 @@ func (c *ObjectsWatchAllCall) Header() http.Header { func (c *ObjectsWatchAllCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -12308,7 +12328,7 @@ func (c *ProjectsHmacKeysCreateCall) Header() http.Header { func (c *ProjectsHmacKeysCreateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -12458,7 +12478,7 @@ func (c *ProjectsHmacKeysDeleteCall) Header() http.Header { func (c *ProjectsHmacKeysDeleteCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -12593,7 +12613,7 @@ func (c *ProjectsHmacKeysGetCall) Header() http.Header { func (c *ProjectsHmacKeysGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -12792,7 +12812,7 @@ func (c *ProjectsHmacKeysListCall) Header() http.Header { func (c *ProjectsHmacKeysListCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -12987,7 +13007,7 @@ func (c *ProjectsHmacKeysUpdateCall) Header() http.Header { func (c *ProjectsHmacKeysUpdateCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } @@ -13164,7 +13184,7 @@ func (c *ProjectsServiceAccountGetCall) Header() http.Header { func (c *ProjectsServiceAccountGetCall) doRequest(alt string) (*http.Response, error) { reqHeaders := make(http.Header) - reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802") + reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190926") for k, v := range c.header_ { reqHeaders[k] = v } diff --git a/vendor/google.golang.org/appengine/go.mod b/vendor/google.golang.org/appengine/go.mod index 45159279854..635c34f5a11 100644 --- a/vendor/google.golang.org/appengine/go.mod +++ b/vendor/google.golang.org/appengine/go.mod @@ -1,10 +1,9 @@ module google.golang.org/appengine +go 1.11 + require ( github.com/golang/protobuf v1.3.1 - golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 // indirect golang.org/x/net v0.0.0-20190603091049-60506f45cf65 - golang.org/x/sys v0.0.0-20190606165138-5da285871e9c // indirect golang.org/x/text v0.3.2 - golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b // indirect ) diff --git a/vendor/google.golang.org/appengine/go.sum b/vendor/google.golang.org/appengine/go.sum index cb3232556bf..ce22f6856c9 100644 --- a/vendor/google.golang.org/appengine/go.sum +++ b/vendor/google.golang.org/appengine/go.sum @@ -1,22 +1,11 @@ -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225 h1:kNX+jCowfMYzvlSvJu5pQWEmyWFrBXJ3PBy10xKMXK8= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/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-20190603091049-60506f45cf65 h1:+rhAzEzT3f4JtomfC371qB+0Ola2caSKcY69NUBZrRQ= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= diff --git a/vendor/google.golang.org/appengine/internal/net.go b/vendor/google.golang.org/appengine/internal/net.go index 3b94cf0c6a8..fe429720e1f 100644 --- a/vendor/google.golang.org/appengine/internal/net.go +++ b/vendor/google.golang.org/appengine/internal/net.go @@ -32,7 +32,7 @@ func limitDial(network, addr string) (net.Conn, error) { // Dial with a timeout in case the API host is MIA. // The connection should normally be very fast. - conn, err := net.DialTimeout(network, addr, 500*time.Millisecond) + conn, err := net.DialTimeout(network, addr, 10*time.Second) if err != nil { limitRelease() return nil, err diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go index af057b90be5..6aea4d701fb 100644 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/api/annotations/resource.pb.go @@ -66,30 +66,106 @@ func (ResourceDescriptor_History) EnumDescriptor() ([]byte, []int) { // // Example: // -// message Topic { -// // Indicates this message defines a resource schema. -// // Declares the resource type in the format of {service}/{kind}. -// // For Kubernetes resources, the format is {api group}/{kind}. -// option (google.api.resource) = { -// type: "pubsub.googleapis.com/Topic" -// pattern: "projects/{project}/topics/{topic}" -// }; -// } +// message Topic { +// // Indicates this message defines a resource schema. +// // Declares the resource type in the format of {service}/{kind}. +// // For Kubernetes resources, the format is {api group}/{kind}. +// option (google.api.resource) = { +// type: "pubsub.googleapis.com/Topic" +// name_descriptor: { +// pattern: "projects/{project}/topics/{topic}" +// parent_type: "cloudresourcemanager.googleapis.com/Project" +// parent_name_extractor: "projects/{project}" +// } +// }; +// } +// +// The ResourceDescriptor Yaml config will look like: +// +// resources: +// - type: "pubsub.googleapis.com/Topic" +// name_descriptor: +// - pattern: "projects/{project}/topics/{topic}" +// parent_type: "cloudresourcemanager.googleapis.com/Project" +// parent_name_extractor: "projects/{project}" // // Sometimes, resources have multiple patterns, typically because they can // live under multiple parents. // // Example: // -// message LogEntry { -// option (google.api.resource) = { -// type: "logging.googleapis.com/LogEntry" -// pattern: "projects/{project}/logs/{log}" -// pattern: "organizations/{organization}/logs/{log}" -// pattern: "folders/{folder}/logs/{log}" -// pattern: "billingAccounts/{billing_account}/logs/{log}" -// }; -// } +// message LogEntry { +// option (google.api.resource) = { +// type: "logging.googleapis.com/LogEntry" +// name_descriptor: { +// pattern: "projects/{project}/logs/{log}" +// parent_type: "cloudresourcemanager.googleapis.com/Project" +// parent_name_extractor: "projects/{project}" +// } +// name_descriptor: { +// pattern: "folders/{folder}/logs/{log}" +// parent_type: "cloudresourcemanager.googleapis.com/Folder" +// parent_name_extractor: "folders/{folder}" +// } +// name_descriptor: { +// pattern: "organizations/{organization}/logs/{log}" +// parent_type: "cloudresourcemanager.googleapis.com/Organization" +// parent_name_extractor: "organizations/{organization}" +// } +// name_descriptor: { +// pattern: "billingAccounts/{billing_account}/logs/{log}" +// parent_type: "billing.googleapis.com/BillingAccount" +// parent_name_extractor: "billingAccounts/{billing_account}" +// } +// }; +// } +// +// The ResourceDescriptor Yaml config will look like: +// +// resources: +// - type: 'logging.googleapis.com/LogEntry' +// name_descriptor: +// - pattern: "projects/{project}/logs/{log}" +// parent_type: "cloudresourcemanager.googleapis.com/Project" +// parent_name_extractor: "projects/{project}" +// - pattern: "folders/{folder}/logs/{log}" +// parent_type: "cloudresourcemanager.googleapis.com/Folder" +// parent_name_extractor: "folders/{folder}" +// - pattern: "organizations/{organization}/logs/{log}" +// parent_type: "cloudresourcemanager.googleapis.com/Organization" +// parent_name_extractor: "organizations/{organization}" +// - pattern: "billingAccounts/{billing_account}/logs/{log}" +// parent_type: "billing.googleapis.com/BillingAccount" +// parent_name_extractor: "billingAccounts/{billing_account}" +// +// For flexible resources, the resource name doesn't contain parent names, but +// the resource itself has parents for policy evaluation. +// +// Example: +// +// message Shelf { +// option (google.api.resource) = { +// type: "library.googleapis.com/Shelf" +// name_descriptor: { +// pattern: "shelves/{shelf}" +// parent_type: "cloudresourcemanager.googleapis.com/Project" +// } +// name_descriptor: { +// pattern: "shelves/{shelf}" +// parent_type: "cloudresourcemanager.googleapis.com/Folder" +// } +// }; +// } +// +// The ResourceDescriptor Yaml config will look like: +// +// resources: +// - type: 'library.googleapis.com/Shelf' +// name_descriptor: +// - pattern: "shelves/{shelf}" +// parent_type: "cloudresourcemanager.googleapis.com/Project" +// - pattern: "shelves/{shelf}" +// parent_type: "cloudresourcemanager.googleapis.com/Folder" type ResourceDescriptor struct { // The resource type. It must be in the format of // {service_name}/{resource_type_kind}. The `resource_type_kind` must be @@ -102,11 +178,20 @@ type ResourceDescriptor struct { // should use PascalCase (UpperCamelCase). The maximum number of // characters allowed for the `resource_type_kind` is 100. Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Optional. The valid resource name pattern(s) for this resource type. + // Optional. The relative resource name pattern associated with this resource + // type. The DNS prefix of the full resource name shouldn't be specified here. + // + // The path pattern must follow the syntax, which aligns with HTTP binding + // syntax: + // + // Template = Segment { "/" Segment } ; + // Segment = LITERAL | Variable ; + // Variable = "{" LITERAL "}" ; // // Examples: - // - "projects/{project}/topics/{topic}" - // - "projects/{project}/knowledgeBases/{knowledge_base}" + // + // - "projects/{project}/topics/{topic}" + // - "projects/{project}/knowledgeBases/{knowledge_base}" // // The components in braces correspond to the IDs for each resource in the // hierarchy. It is expected that, if multiple patterns are provided, @@ -119,21 +204,31 @@ type ResourceDescriptor struct { // Optional. The historical or future-looking state of the resource pattern. // // Example: - // // The InspectTemplate message originally only supported resource - // // names with organization, and project was added later. - // message InspectTemplate { - // option (google.api.resource) = { - // type: "dlp.googleapis.com/InspectTemplate" - // pattern: - // "organizations/{organization}/inspectTemplates/{inspect_template}" - // pattern: "projects/{project}/inspectTemplates/{inspect_template}" - // history: ORIGINALLY_SINGLE_PATTERN - // }; - // } - History ResourceDescriptor_History `protobuf:"varint,4,opt,name=history,proto3,enum=google.api.ResourceDescriptor_History" json:"history,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // + // // The InspectTemplate message originally only supported resource + // // names with organization, and project was added later. + // message InspectTemplate { + // option (google.api.resource) = { + // type: "dlp.googleapis.com/InspectTemplate" + // pattern: + // "organizations/{organization}/inspectTemplates/{inspect_template}" + // pattern: "projects/{project}/inspectTemplates/{inspect_template}" + // history: ORIGINALLY_SINGLE_PATTERN + // }; + // } + History ResourceDescriptor_History `protobuf:"varint,4,opt,name=history,proto3,enum=google.api.ResourceDescriptor_History" json:"history,omitempty"` + // The plural name used in the resource name, such as 'projects' for + // the name of 'projects/{project}'. It is the same concept of the `plural` + // field in k8s CRD spec + // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ + Plural string `protobuf:"bytes,5,opt,name=plural,proto3" json:"plural,omitempty"` + // The same concept of the `singular` field in k8s CRD spec + // https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ + // Such as "project" for the `resourcemanager.googleapis.com/Project` type. + Singular string `protobuf:"bytes,6,opt,name=singular,proto3" json:"singular,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ResourceDescriptor) Reset() { *m = ResourceDescriptor{} } @@ -189,21 +284,36 @@ func (m *ResourceDescriptor) GetHistory() ResourceDescriptor_History { return ResourceDescriptor_HISTORY_UNSPECIFIED } -// Defines a proto annotation that describes a field that refers to a resource. +func (m *ResourceDescriptor) GetPlural() string { + if m != nil { + return m.Plural + } + return "" +} + +func (m *ResourceDescriptor) GetSingular() string { + if m != nil { + return m.Singular + } + return "" +} + +// Defines a proto annotation that describes a string field that refers to +// an API resource. type ResourceReference struct { // The resource type that the annotated field references. // // Example: // - // message Subscription { - // string topic = 2 [(google.api.resource_reference) = { - // type = "pubsub.googleapis.com/Topic" - // }]; - // } + // message Subscription { + // string topic = 2 [(google.api.resource_reference) = { + // type: "pubsub.googleapis.com/Topic" + // }]; + // } Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // The resource type of a child collection that the annotated field - // references. This is useful for `parent` fields where a resource has more - // than one possible type of parent. + // references. This is useful for annotating the `parent` field that + // doesn't have a fixed resource type. // // Example: // @@ -266,6 +376,15 @@ var E_ResourceReference = &proto.ExtensionDesc{ Filename: "google/api/resource.proto", } +var E_ResourceDefinition = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.FileOptions)(nil), + ExtensionType: ([]*ResourceDescriptor)(nil), + Field: 1053, + Name: "google.api.resource_definition", + Tag: "bytes,1053,rep,name=resource_definition", + Filename: "google/api/resource.proto", +} + var E_Resource = &proto.ExtensionDesc{ ExtendedType: (*descriptor.MessageOptions)(nil), ExtensionType: (*ResourceDescriptor)(nil), @@ -280,38 +399,43 @@ func init() { proto.RegisterType((*ResourceDescriptor)(nil), "google.api.ResourceDescriptor") proto.RegisterType((*ResourceReference)(nil), "google.api.ResourceReference") proto.RegisterExtension(E_ResourceReference) + proto.RegisterExtension(E_ResourceDefinition) proto.RegisterExtension(E_Resource) } func init() { proto.RegisterFile("google/api/resource.proto", fileDescriptor_465e9122405d1bb5) } var fileDescriptor_465e9122405d1bb5 = []byte{ - // 430 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x41, 0x6f, 0xd3, 0x30, - 0x18, 0x25, 0x59, 0x45, 0xd7, 0x0f, 0x31, 0x6d, 0x06, 0x89, 0x0c, 0x29, 0x10, 0xf5, 0x80, 0x7a, - 0x4a, 0xa4, 0x71, 0x1b, 0x17, 0x3a, 0x96, 0x76, 0x91, 0xba, 0x36, 0x72, 0xd3, 0xc3, 0x00, 0x29, - 0xf2, 0xd2, 0xaf, 0x59, 0xa4, 0xcc, 0xb6, 0x9c, 0xec, 0xd0, 0x1b, 0x7f, 0x04, 0x21, 0xf1, 0x2b, - 0x39, 0xa2, 0x3a, 0x71, 0x98, 0xd8, 0xb4, 0x9b, 0xf3, 0xde, 0xfb, 0xbe, 0xf7, 0xfc, 0x1c, 0x38, - 0xce, 0x85, 0xc8, 0x4b, 0x0c, 0x98, 0x2c, 0x02, 0x85, 0x95, 0xb8, 0x53, 0x19, 0xfa, 0x52, 0x89, - 0x5a, 0x10, 0x68, 0x28, 0x9f, 0xc9, 0xe2, 0xad, 0xd7, 0xca, 0x34, 0x73, 0x7d, 0xb7, 0x09, 0xd6, - 0x58, 0x65, 0xaa, 0x90, 0xb5, 0x50, 0x8d, 0x7a, 0xf8, 0xc3, 0x06, 0x42, 0xdb, 0x05, 0xe7, 0x1d, - 0x49, 0x08, 0xf4, 0xea, 0xad, 0x44, 0xc7, 0xf2, 0xac, 0xd1, 0x80, 0xea, 0x33, 0x71, 0xa0, 0x2f, - 0x59, 0x5d, 0xa3, 0xe2, 0x8e, 0xed, 0xed, 0x8d, 0x06, 0xd4, 0x7c, 0x12, 0x17, 0x80, 0xb3, 0x5b, - 0x4c, 0x37, 0x05, 0x96, 0x6b, 0x67, 0x4f, 0xcf, 0x0c, 0x76, 0xc8, 0x64, 0x07, 0x90, 0xcf, 0xd0, - 0xbf, 0x29, 0xaa, 0x5a, 0xa8, 0xad, 0xd3, 0xf3, 0xac, 0xd1, 0xc1, 0xc9, 0x07, 0xff, 0x5f, 0x46, - 0xff, 0xa1, 0xbb, 0x7f, 0xd1, 0xa8, 0xa9, 0x19, 0x1b, 0x7e, 0x83, 0x7e, 0x8b, 0x91, 0x37, 0xf0, - 0xea, 0x22, 0x5a, 0x26, 0x0b, 0x7a, 0x95, 0xae, 0xe6, 0xcb, 0x38, 0xfc, 0x12, 0x4d, 0xa2, 0xf0, - 0xfc, 0xf0, 0x19, 0x71, 0xe1, 0x78, 0x41, 0xa3, 0x69, 0x34, 0x1f, 0xcf, 0x66, 0x57, 0xe9, 0x32, - 0x9a, 0x4f, 0x67, 0x61, 0x1a, 0x8f, 0x93, 0x24, 0xa4, 0xf3, 0x43, 0x8b, 0x38, 0xf0, 0x7a, 0xb2, - 0x4a, 0x56, 0x34, 0x4c, 0x2f, 0x57, 0xb3, 0x24, 0xea, 0x18, 0x7b, 0x38, 0x81, 0x23, 0x93, 0x81, - 0xe2, 0x06, 0x15, 0xf2, 0x0c, 0x1f, 0x2d, 0xc0, 0x05, 0xc8, 0x6e, 0x8a, 0x72, 0x9d, 0x6a, 0xc6, - 0x6e, 0xae, 0xa9, 0x91, 0x64, 0x2b, 0xf1, 0xb4, 0x04, 0x62, 0x9e, 0x22, 0x55, 0xdd, 0x22, 0xd7, - 0xdc, 0xd5, 0xbc, 0x81, 0xaf, 0x4b, 0x59, 0xc8, 0xba, 0x10, 0xbc, 0x72, 0x7e, 0xed, 0x7b, 0xd6, - 0xe8, 0xc5, 0x89, 0xfb, 0x58, 0x23, 0x5d, 0x1a, 0x7a, 0xa4, 0xfe, 0x87, 0x4e, 0xbf, 0xc3, 0xbe, - 0x01, 0xc9, 0xfb, 0x07, 0x1e, 0x97, 0x58, 0x55, 0x2c, 0x47, 0xe3, 0xf2, 0xb3, 0x71, 0x79, 0xf7, - 0x74, 0xef, 0xb4, 0xdb, 0x78, 0xc6, 0xe1, 0x20, 0x13, 0xb7, 0xf7, 0xe4, 0x67, 0x2f, 0x8d, 0x3e, - 0xde, 0x79, 0xc4, 0xd6, 0xd7, 0x71, 0x4b, 0xe6, 0xa2, 0x64, 0x3c, 0xf7, 0x85, 0xca, 0x83, 0x1c, - 0xb9, 0x4e, 0x10, 0x34, 0x14, 0x93, 0x45, 0xa5, 0xff, 0x50, 0xc6, 0xb9, 0xa8, 0x99, 0x8e, 0xf2, - 0xe9, 0xde, 0xf9, 0x8f, 0x65, 0xfd, 0xb6, 0x7b, 0xd3, 0x71, 0x1c, 0x5d, 0x3f, 0xd7, 0x73, 0x1f, - 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x1e, 0x07, 0x80, 0xd8, 0x02, 0x00, 0x00, + // 490 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0xfd, 0x9c, 0xe4, 0xcb, 0xcf, 0xad, 0xa8, 0xda, 0x29, 0x02, 0xb7, 0x22, 0x60, 0x65, 0x81, + 0xb2, 0xb2, 0xa5, 0xb0, 0x0b, 0x1b, 0x52, 0xe2, 0xa4, 0x96, 0xd2, 0xc4, 0x9a, 0x38, 0x8b, 0x02, + 0x92, 0x35, 0x75, 0x26, 0xee, 0x48, 0xee, 0xcc, 0x68, 0xec, 0x2c, 0xf2, 0x30, 0x08, 0x89, 0x67, + 0xe0, 0xe1, 0x58, 0xa2, 0x8c, 0x7f, 0x88, 0x68, 0x84, 0xd8, 0xcd, 0xbd, 0xe7, 0xde, 0x73, 0x8e, + 0xcf, 0x95, 0xe1, 0x32, 0x16, 0x22, 0x4e, 0xa8, 0x43, 0x24, 0x73, 0x14, 0x4d, 0xc5, 0x56, 0x45, + 0xd4, 0x96, 0x4a, 0x64, 0x02, 0x41, 0x0e, 0xd9, 0x44, 0xb2, 0x2b, 0xab, 0x18, 0xd3, 0xc8, 0xfd, + 0x76, 0xe3, 0xac, 0x69, 0x1a, 0x29, 0x26, 0x33, 0xa1, 0xf2, 0xe9, 0xde, 0x8f, 0x1a, 0x20, 0x5c, + 0x10, 0x8c, 0x2b, 0x10, 0x21, 0x68, 0x64, 0x3b, 0x49, 0x4d, 0xc3, 0x32, 0xfa, 0x1d, 0xac, 0xdf, + 0xc8, 0x84, 0x96, 0x24, 0x59, 0x46, 0x15, 0x37, 0x6b, 0x56, 0xbd, 0xdf, 0xc1, 0x65, 0x89, 0xba, + 0x00, 0x9c, 0x3c, 0xd2, 0x70, 0xc3, 0x68, 0xb2, 0x36, 0xeb, 0x7a, 0xa7, 0xb3, 0xef, 0x4c, 0xf6, + 0x0d, 0xf4, 0x01, 0x5a, 0x0f, 0x2c, 0xcd, 0x84, 0xda, 0x99, 0x0d, 0xcb, 0xe8, 0x9f, 0x0e, 0xde, + 0xda, 0xbf, 0x3d, 0xda, 0x4f, 0xd5, 0xed, 0x9b, 0x7c, 0x1a, 0x97, 0x6b, 0xe8, 0x05, 0x34, 0x65, + 0xb2, 0x55, 0x24, 0x31, 0xff, 0xd7, 0xe4, 0x45, 0x85, 0xae, 0xa0, 0x9d, 0x32, 0x1e, 0x6f, 0x13, + 0xa2, 0xcc, 0xa6, 0x46, 0xaa, 0xba, 0xf7, 0x19, 0x5a, 0x05, 0x0f, 0x7a, 0x09, 0x17, 0x37, 0xde, + 0x32, 0x58, 0xe0, 0xbb, 0x70, 0x35, 0x5f, 0xfa, 0xee, 0x47, 0x6f, 0xe2, 0xb9, 0xe3, 0xb3, 0xff, + 0x50, 0x17, 0x2e, 0x17, 0xd8, 0x9b, 0x7a, 0xf3, 0xd1, 0x6c, 0x76, 0x17, 0x2e, 0xbd, 0xf9, 0x74, + 0xe6, 0x86, 0xfe, 0x28, 0x08, 0x5c, 0x3c, 0x3f, 0x33, 0x90, 0x09, 0xcf, 0x27, 0xab, 0x60, 0x85, + 0xdd, 0xf0, 0x76, 0x35, 0x0b, 0xbc, 0x0a, 0xa9, 0xf5, 0x26, 0x70, 0x5e, 0xfa, 0xc6, 0x74, 0x43, + 0x15, 0xe5, 0x11, 0x3d, 0x1a, 0x5a, 0x17, 0x20, 0x7a, 0x60, 0xc9, 0x3a, 0xd4, 0x48, 0x2d, 0x8f, + 0x46, 0x77, 0x82, 0x9d, 0xa4, 0xc3, 0x04, 0x50, 0x79, 0xbe, 0x50, 0x55, 0x44, 0xdd, 0x32, 0x9f, + 0xf2, 0x6e, 0xb6, 0x0e, 0x72, 0x21, 0x33, 0x26, 0x78, 0x6a, 0x7e, 0x6b, 0x5b, 0x46, 0xff, 0x64, + 0xd0, 0x3d, 0x96, 0x62, 0xe5, 0x06, 0x9f, 0xab, 0x3f, 0x5b, 0x43, 0x0e, 0x17, 0x95, 0xda, 0x9a, + 0x6e, 0x18, 0x67, 0x7b, 0x42, 0xf4, 0xea, 0x88, 0x5c, 0x42, 0x4b, 0xb5, 0xaf, 0x6d, 0xab, 0xde, + 0x3f, 0x19, 0xbc, 0xfe, 0xfb, 0xcd, 0x70, 0xf5, 0x1d, 0xe3, 0x8a, 0x78, 0xf8, 0x05, 0xda, 0x65, + 0x17, 0xbd, 0x79, 0x22, 0x72, 0x4b, 0xd3, 0x94, 0xc4, 0x87, 0x3a, 0xc6, 0x3f, 0xe8, 0x54, 0x8c, + 0xd7, 0x1c, 0x4e, 0x23, 0xf1, 0x78, 0x30, 0x7e, 0xfd, 0xac, 0x9c, 0xf7, 0xf7, 0x1a, 0xbe, 0xf1, + 0x69, 0x54, 0x80, 0xb1, 0x48, 0x08, 0x8f, 0x6d, 0xa1, 0x62, 0x27, 0xa6, 0x5c, 0x3b, 0x70, 0x72, + 0x88, 0x48, 0x96, 0xea, 0xbf, 0x88, 0x70, 0x2e, 0x32, 0xa2, 0xad, 0xbc, 0x3f, 0x78, 0xff, 0x34, + 0x8c, 0xef, 0xb5, 0xc6, 0x74, 0xe4, 0x7b, 0xf7, 0x4d, 0xbd, 0xf7, 0xee, 0x57, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x75, 0x12, 0x53, 0xef, 0x7c, 0x03, 0x00, 0x00, } diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go index 0499510d7c9..82f52468e82 100644 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go @@ -11,6 +11,8 @@ import ( proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" ) // Reference imports to suppress errors if they are not otherwise used. @@ -236,37 +238,39 @@ func init() { func init() { proto.RegisterFile("google/iam/v1/iam_policy.proto", fileDescriptor_d2728eb97d748a32) } var fileDescriptor_d2728eb97d748a32 = []byte{ - // 465 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x53, 0xcd, 0x8a, 0x13, 0x31, - 0x1c, 0x27, 0x5d, 0x58, 0x6d, 0x56, 0x05, 0xa7, 0x88, 0x35, 0x2b, 0xb5, 0x44, 0x0f, 0x6d, 0xa1, - 0x19, 0xbb, 0x9e, 0xac, 0x28, 0xec, 0x7a, 0x18, 0xe6, 0x20, 0x96, 0x51, 0x16, 0x94, 0x82, 0xc6, - 0x31, 0x0c, 0x81, 0xc9, 0x24, 0x4e, 0xd2, 0x05, 0x11, 0x2f, 0x1e, 0x7c, 0x01, 0x6f, 0x3e, 0x82, - 0x67, 0x9f, 0x62, 0xaf, 0xbe, 0x82, 0x0f, 0xe1, 0x51, 0x66, 0x92, 0xee, 0xce, 0x47, 0x95, 0x0a, - 0x9e, 0x4a, 0xf3, 0xfb, 0xfa, 0x7f, 0xcc, 0x1f, 0x0e, 0x12, 0x29, 0x93, 0x94, 0xf9, 0x9c, 0x0a, - 0xff, 0x64, 0x56, 0xfc, 0xbc, 0x52, 0x32, 0xe5, 0xf1, 0x7b, 0xa2, 0x72, 0x69, 0xa4, 0x77, 0xd9, - 0xe2, 0x84, 0x53, 0x41, 0x4e, 0x66, 0x68, 0xbf, 0x4e, 0x97, 0xca, 0x70, 0x99, 0x69, 0xcb, 0x45, - 0xa8, 0x0e, 0x56, 0x7d, 0xd0, 0x4d, 0x87, 0x51, 0xc5, 0x7d, 0x9a, 0x65, 0xd2, 0xd0, 0xaa, 0xf2, - 0x7a, 0x05, 0x8d, 0x53, 0xce, 0x32, 0x63, 0x01, 0xfc, 0x1a, 0xf6, 0x9e, 0x31, 0x13, 0x52, 0xb1, - 0x28, 0xcd, 0x22, 0xf6, 0x6e, 0xc5, 0xb4, 0xf1, 0x10, 0xbc, 0x98, 0x33, 0x2d, 0x57, 0x79, 0xcc, - 0xfa, 0x60, 0x08, 0x46, 0xdd, 0xe8, 0xec, 0xbf, 0x37, 0x85, 0xbb, 0x36, 0xb9, 0xdf, 0x19, 0x82, - 0xd1, 0xde, 0xc1, 0x35, 0x52, 0x6b, 0x81, 0x38, 0x27, 0x47, 0xc2, 0x29, 0xec, 0x05, 0xff, 0x98, - 0x70, 0x1f, 0x5e, 0x70, 0x8d, 0xbb, 0x88, 0x5b, 0x8d, 0x88, 0x80, 0x19, 0xeb, 0xf6, 0xd4, 0xd2, - 0xa2, 0x35, 0x1f, 0xbf, 0x80, 0x37, 0x9e, 0x33, 0x5d, 0xc6, 0xb1, 0x5c, 0x70, 0xad, 0x4b, 0x78, - 0x8b, 0xcc, 0x21, 0xdc, 0x53, 0xe7, 0x8a, 0x7e, 0x67, 0xb8, 0x33, 0xea, 0x46, 0xd5, 0x27, 0xfc, - 0x08, 0xa2, 0x4d, 0xd6, 0x5a, 0xc9, 0x4c, 0xb7, 0xf4, 0xa0, 0xa5, 0x3f, 0xf8, 0xbe, 0x03, 0xbb, - 0xe1, 0xe1, 0x13, 0x5b, 0xb8, 0x67, 0xe0, 0xa5, 0xea, 0xe0, 0x3d, 0xdc, 0x68, 0x71, 0xc3, 0x56, - 0xd0, 0xe6, 0x49, 0xe3, 0xf1, 0xa7, 0x1f, 0x3f, 0xbf, 0x74, 0x6e, 0xe3, 0x41, 0xf1, 0x51, 0x7c, - 0x58, 0x77, 0xf4, 0x70, 0x32, 0xf9, 0x38, 0xd7, 0x15, 0x97, 0x39, 0x98, 0x14, 0xa9, 0xc1, 0xdf, - 0x52, 0x83, 0xff, 0x92, 0x9a, 0x34, 0x52, 0xbf, 0x02, 0xe8, 0xb5, 0x47, 0xe7, 0x8d, 0x1a, 0xc6, - 0x7f, 0x5c, 0x1c, 0x1a, 0x6f, 0xc1, 0xb4, 0x7b, 0xc0, 0x7e, 0x59, 0xd6, 0x18, 0xdf, 0x69, 0x97, - 0x65, 0x5a, 0xaa, 0x39, 0x98, 0xa0, 0xc1, 0xe9, 0xe1, 0x3e, 0xa7, 0x62, 0x2a, 0x98, 0xa1, 0x53, - 0xaa, 0xb8, 0x8b, 0xa2, 0x8a, 0x6b, 0x12, 0x4b, 0x71, 0xf4, 0x19, 0xc0, 0xab, 0xb1, 0x14, 0xf5, - 0x0a, 0x8e, 0xae, 0x9c, 0x35, 0xb8, 0x28, 0xee, 0x68, 0x01, 0x5e, 0xde, 0x75, 0x84, 0x44, 0xa6, - 0x34, 0x4b, 0x88, 0xcc, 0x13, 0x3f, 0x61, 0x59, 0x79, 0x65, 0xfe, 0xb9, 0xa5, 0xbb, 0xdd, 0x07, - 0x9c, 0x8a, 0x5f, 0x00, 0x7c, 0xeb, 0xf4, 0x02, 0xab, 0x7a, 0x9c, 0xca, 0xd5, 0x5b, 0x12, 0x52, - 0x41, 0x8e, 0x67, 0xa7, 0xeb, 0xd7, 0x65, 0xf9, 0xba, 0x0c, 0xa9, 0x58, 0x1e, 0xcf, 0xde, 0xec, - 0x96, 0x5e, 0xf7, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x57, 0xb0, 0xe9, 0x52, 0x04, 0x00, - 0x00, + // 505 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x8a, 0xd3, 0x40, + 0x1c, 0x67, 0x52, 0x58, 0xed, 0xac, 0x0a, 0xa6, 0x88, 0xdd, 0xac, 0x74, 0x4b, 0x54, 0x68, 0x03, + 0x3b, 0xb1, 0xf5, 0x64, 0x45, 0x21, 0xf5, 0x10, 0x7a, 0x10, 0x4b, 0x94, 0x3d, 0x48, 0x61, 0x99, + 0x4d, 0xc7, 0x38, 0x90, 0xc9, 0x8c, 0x99, 0x69, 0x45, 0xc4, 0x8b, 0x07, 0x5f, 0xc0, 0x9b, 0x8f, + 0xe0, 0xd9, 0xa7, 0xd8, 0xab, 0x2f, 0xb0, 0x07, 0x1f, 0x42, 0x3c, 0x49, 0x33, 0xd3, 0x6d, 0xda, + 0x54, 0x51, 0xf1, 0x54, 0xf8, 0xff, 0xbe, 0xfe, 0x1f, 0x9d, 0xc0, 0x56, 0xc2, 0x79, 0x92, 0x12, + 0x9f, 0x62, 0xe6, 0xcf, 0x7b, 0x8b, 0x9f, 0x63, 0xc1, 0x53, 0x1a, 0xbf, 0x41, 0x22, 0xe7, 0x8a, + 0xdb, 0x97, 0x35, 0x8e, 0x28, 0x66, 0x68, 0xde, 0x73, 0xf6, 0xd7, 0xe9, 0x5c, 0x28, 0xca, 0x33, + 0xa9, 0xb9, 0x8e, 0xb3, 0x0e, 0x96, 0x7d, 0x9c, 0x1b, 0x06, 0xc3, 0x82, 0xfa, 0x38, 0xcb, 0xb8, + 0xc2, 0x65, 0xe5, 0xf5, 0x12, 0x1a, 0xa7, 0x94, 0x64, 0xca, 0x00, 0x07, 0x25, 0xe0, 0x05, 0x25, + 0xe9, 0xf4, 0xf8, 0x84, 0xbc, 0xc4, 0x73, 0xca, 0x73, 0x43, 0xd8, 0x2b, 0x11, 0x72, 0x22, 0xf9, + 0x2c, 0x8f, 0x89, 0x86, 0x5c, 0x01, 0x1b, 0x4f, 0x89, 0x1a, 0x61, 0x36, 0x2e, 0x1a, 0x89, 0xc8, + 0xab, 0x19, 0x91, 0xca, 0xbe, 0x0d, 0x2f, 0x2e, 0x89, 0x4d, 0xd0, 0x06, 0x9d, 0xfa, 0xb0, 0x7e, + 0x16, 0x58, 0x3f, 0x82, 0x1a, 0x04, 0x5e, 0x74, 0x0e, 0xd9, 0x7d, 0xb8, 0xa3, 0x07, 0x68, 0x5a, + 0x6d, 0xd0, 0xd9, 0xed, 0x5f, 0x43, 0x6b, 0x9b, 0x40, 0xda, 0x74, 0x58, 0x3b, 0x0b, 0xac, 0xc8, + 0x30, 0xdd, 0xd7, 0xb0, 0x11, 0xfe, 0x7b, 0xe2, 0x3d, 0x78, 0xc1, 0xec, 0xd3, 0x44, 0x1e, 0x6c, + 0x44, 0x86, 0x44, 0x69, 0xe3, 0x27, 0x9a, 0x16, 0x2d, 0xf9, 0xee, 0x14, 0xee, 0x3d, 0x23, 0xb2, + 0x48, 0x26, 0x39, 0xa3, 0x52, 0x16, 0xf0, 0xdf, 0xc5, 0xb7, 0xe1, 0xae, 0x58, 0x89, 0x9b, 0x56, + 0xbb, 0xd6, 0xa9, 0x47, 0xe5, 0x92, 0xfb, 0x10, 0x3a, 0xdb, 0x52, 0xa4, 0xe0, 0x99, 0xac, 0xe8, + 0x41, 0x45, 0xdf, 0xff, 0x52, 0x83, 0xf5, 0x51, 0xf0, 0x58, 0xcf, 0x60, 0x2b, 0x78, 0xa9, 0x7c, + 0x1e, 0xdb, 0xdd, 0x98, 0x76, 0xcb, 0xed, 0x9c, 0xed, 0x47, 0x70, 0xbb, 0xef, 0xbf, 0x7e, 0xfb, + 0x68, 0xdd, 0x74, 0x5b, 0x8b, 0xbf, 0xdd, 0xdb, 0xe5, 0x44, 0x0f, 0x3c, 0xef, 0xdd, 0x40, 0x96, + 0x5c, 0x06, 0xc0, 0x5b, 0xa4, 0x86, 0xbf, 0x4b, 0x0d, 0xff, 0x4b, 0x6a, 0xb2, 0x91, 0xfa, 0x09, + 0x40, 0xbb, 0xba, 0x3a, 0xbb, 0xb3, 0x61, 0xfc, 0xcb, 0x1b, 0x3a, 0xdd, 0x3f, 0x60, 0xea, 0x3b, + 0xb8, 0x7e, 0xd1, 0x56, 0xd7, 0xbd, 0x55, 0x6d, 0x4b, 0x55, 0x54, 0x03, 0xe0, 0x39, 0xad, 0xd3, + 0x60, 0x9f, 0x62, 0x76, 0xc8, 0x88, 0xc2, 0x87, 0x58, 0x50, 0x13, 0x85, 0x05, 0x95, 0x28, 0xe6, + 0x6c, 0xf8, 0x01, 0xc0, 0xab, 0x31, 0x67, 0xeb, 0x1d, 0x0c, 0xaf, 0x9c, 0x0f, 0x38, 0x5e, 0xbc, + 0xb6, 0x31, 0x78, 0x7e, 0xc7, 0x10, 0x12, 0x9e, 0xe2, 0x2c, 0x41, 0x3c, 0x4f, 0xfc, 0x84, 0x64, + 0xc5, 0x5b, 0xf4, 0x57, 0x96, 0xe6, 0xeb, 0x70, 0x9f, 0x62, 0xf6, 0x1d, 0x80, 0xcf, 0x56, 0x23, + 0xd4, 0xaa, 0x47, 0x29, 0x9f, 0x4d, 0xd1, 0x08, 0x33, 0x74, 0xd4, 0x3b, 0x5d, 0x56, 0x27, 0x45, + 0x75, 0x32, 0xc2, 0x6c, 0x72, 0xd4, 0x3b, 0xd9, 0x29, 0xbc, 0xee, 0xfe, 0x0c, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xd3, 0xd0, 0xdf, 0xb4, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -352,6 +356,20 @@ type IAMPolicyServer interface { TestIamPermissions(context.Context, *TestIamPermissionsRequest) (*TestIamPermissionsResponse, error) } +// UnimplementedIAMPolicyServer can be embedded to have forward compatible implementations. +type UnimplementedIAMPolicyServer struct { +} + +func (*UnimplementedIAMPolicyServer) SetIamPolicy(ctx context.Context, req *SetIamPolicyRequest) (*Policy, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetIamPolicy not implemented") +} +func (*UnimplementedIAMPolicyServer) GetIamPolicy(ctx context.Context, req *GetIamPolicyRequest) (*Policy, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetIamPolicy not implemented") +} +func (*UnimplementedIAMPolicyServer) TestIamPermissions(ctx context.Context, req *TestIamPermissionsRequest) (*TestIamPermissionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TestIamPermissions not implemented") +} + func RegisterIAMPolicyServer(s *grpc.Server, srv IAMPolicyServer) { s.RegisterService(&_IAMPolicy_serviceDesc, srv) } diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/options.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/options.pb.go index 8f02bd3c4f6..d14995cd710 100644 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/options.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/iam/v1/options.pb.go @@ -25,9 +25,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // Encapsulates settings provided to GetIamPolicy. type GetPolicyOptions struct { // Optional. The policy format version to be returned. - // Acceptable values are 0 and 1. - // If the value is 0, or the field is omitted, policy format version 1 will be - // returned. + // + // Valid values are 0, 1, and 3. Requests specifying an invalid value will be + // rejected. + // + // Requests for policies with any conditional bindings must specify version 3. + // Policies without any conditional bindings may specify any valid value or + // leave the field unset. RequestedPolicyVersion int32 `protobuf:"varint,1,opt,name=requested_policy_version,json=requestedPolicyVersion,proto3" json:"requested_policy_version,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go index 275cfcea8f0..5ae97c67396 100644 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go @@ -91,27 +91,36 @@ func (AuditConfigDelta_Action) EnumDescriptor() ([]byte, []int) { // specify access control policies for Cloud Platform resources. // // -// A `Policy` consists of a list of `bindings`. A `binding` binds a list of -// `members` to a `role`, where the members can be user accounts, Google groups, -// Google domains, and service accounts. A `role` is a named list of permissions -// defined by IAM. +// A `Policy` is a collection of `bindings`. A `binding` binds one or more +// `members` to a single `role`. Members can be user accounts, service accounts, +// Google groups, and domains (such as G Suite). A `role` is a named list of +// permissions (defined by IAM or configured by users). A `binding` can +// optionally specify a `condition`, which is a logic expression that further +// constrains the role binding based on attributes about the request and/or +// target resource. // // **JSON Example** // // { // "bindings": [ // { -// "role": "roles/owner", +// "role": "roles/resourcemanager.organizationAdmin", // "members": [ // "user:mike@example.com", // "group:admins@example.com", // "domain:google.com", -// "serviceAccount:my-other-app@appspot.gserviceaccount.com" +// "serviceAccount:my-project-id@appspot.gserviceaccount.com" // ] // }, // { -// "role": "roles/viewer", -// "members": ["user:sean@example.com"] +// "role": "roles/resourcemanager.organizationViewer", +// "members": ["user:eve@example.com"], +// "condition": { +// "title": "expirable access", +// "description": "Does not grant access after Sep 2020", +// "expression": "request.time < +// timestamp('2020-10-01T00:00:00.000Z')", +// } // } // ] // } @@ -123,19 +132,35 @@ func (AuditConfigDelta_Action) EnumDescriptor() ([]byte, []int) { // - user:mike@example.com // - group:admins@example.com // - domain:google.com -// - serviceAccount:my-other-app@appspot.gserviceaccount.com -// role: roles/owner +// - serviceAccount:my-project-id@appspot.gserviceaccount.com +// role: roles/resourcemanager.organizationAdmin // - members: -// - user:sean@example.com -// role: roles/viewer -// +// - user:eve@example.com +// role: roles/resourcemanager.organizationViewer +// condition: +// title: expirable access +// description: Does not grant access after Sep 2020 +// expression: request.time < timestamp('2020-10-01T00:00:00.000Z') // // For a description of IAM and its features, see the // [IAM developer's guide](https://cloud.google.com/iam/docs). type Policy struct { - // Deprecated. + // Specifies the format of the policy. + // + // Valid values are 0, 1, and 3. Requests specifying an invalid value will be + // rejected. + // + // Operations affecting conditional bindings must specify version 3. This can + // be either setting a conditional policy, modifying a conditional binding, + // or removing a conditional binding from the stored conditional policy. + // Operations on non-conditional policies may specify any valid value or + // leave the field unset. + // + // If no etag is provided in the call to `setIamPolicy`, any version + // compliance checks on the incoming and/or stored policy is skipped. Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - // Associates a list of `members` to a `role`. + // Associates a list of `members` to a `role`. Optionally may specify a + // `condition` that determines when binding is in effect. // `bindings` with no members will result in an error. Bindings []*Binding `protobuf:"bytes,4,rep,name=bindings,proto3" json:"bindings,omitempty"` // `etag` is used for optimistic concurrency control as a way to help @@ -147,7 +172,9 @@ type Policy struct { // ensure that their change will be applied to the same version of the policy. // // If no `etag` is provided in the call to `setIamPolicy`, then the existing - // policy is overwritten. + // policy is overwritten. Due to blind-set semantics of an etag-less policy, + // 'setIamPolicy' will not fail even if either of incoming or stored policy + // does not meet the version requirements. Etag []byte `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -350,8 +377,7 @@ type BindingDelta struct { // Follows the same format of Binding.members. // Required Member string `protobuf:"bytes,3,opt,name=member,proto3" json:"member,omitempty"` - // The condition that is associated with this binding. This field is logged - // only for Cloud Audit Logging. + // The condition that is associated with this binding. Condition *expr.Expr `protobuf:"bytes,4,opt,name=condition,proto3" json:"condition,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` diff --git a/vendor/google.golang.org/grpc/.travis.yml b/vendor/google.golang.org/grpc/.travis.yml index 024408e6462..f0f723f356d 100644 --- a/vendor/google.golang.org/grpc/.travis.yml +++ b/vendor/google.golang.org/grpc/.travis.yml @@ -23,7 +23,7 @@ before_install: - if [[ "${GO111MODULE}" = "on" ]]; then mkdir "${HOME}/go"; export GOPATH="${HOME}/go"; fi - if [[ -n "${RUN386}" ]]; then export GOARCH=386; fi - if [[ "${TRAVIS_EVENT_TYPE}" = "cron" && -z "${RUN386}" ]]; then RACE=1; fi - - if [[ "${TRAVIS_EVENT_TYPE}" != "cron" ]]; then VET_SKIP_PROTO=1; fi + - if [[ "${TRAVIS_EVENT_TYPE}" != "cron" ]]; then export VET_SKIP_PROTO=1; fi install: - try3() { eval "$*" || eval "$*" || eval "$*"; } diff --git a/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md b/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md new file mode 100644 index 00000000000..9d4213ebca7 --- /dev/null +++ b/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md @@ -0,0 +1,3 @@ +## Community Code of Conduct + +gRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md index 6e69b28c270..4f1567e2f95 100644 --- a/vendor/google.golang.org/grpc/CONTRIBUTING.md +++ b/vendor/google.golang.org/grpc/CONTRIBUTING.md @@ -1,6 +1,8 @@ # How to contribute -We definitely welcome your patches and contributions to gRPC! +We definitely welcome your patches and contributions to gRPC! Please read the gRPC +organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md) +and [contribution guidelines](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) before proceeding. If you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/) diff --git a/vendor/google.golang.org/grpc/GOVERNANCE.md b/vendor/google.golang.org/grpc/GOVERNANCE.md new file mode 100644 index 00000000000..d6ff2674710 --- /dev/null +++ b/vendor/google.golang.org/grpc/GOVERNANCE.md @@ -0,0 +1 @@ +This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md). diff --git a/vendor/google.golang.org/grpc/MAINTAINERS.md b/vendor/google.golang.org/grpc/MAINTAINERS.md new file mode 100644 index 00000000000..093c82b3afe --- /dev/null +++ b/vendor/google.golang.org/grpc/MAINTAINERS.md @@ -0,0 +1,27 @@ +This page lists all active maintainers of this repository. If you were a +maintainer and would like to add your name to the Emeritus list, please send us a +PR. + +See [GOVERNANCE.md](https://github.com/grpc/grpc-community/blob/master/governance.md) +for governance guidelines and how to become a maintainer. +See [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) +for general contribution guidelines. + +## Maintainers (in alphabetical order) +- [canguler](https://github.com/canguler), Google LLC +- [cesarghali](https://github.com/cesarghali), Google LLC +- [dfawley](https://github.com/dfawley), Google LLC +- [easwars](https://github.com/easwars), Google LLC +- [jadekler](https://github.com/jadekler), Google LLC +- [menghanl](https://github.com/menghanl), Google LLC +- [srini100](https://github.com/srini100), Google LLC + +## Emeritus Maintainers (in alphabetical order) +- [adelez](https://github.com/adelez), Google LLC +- [iamqizhao](https://github.com/iamqizhao), Google LLC +- [jtattermusch](https://github.com/jtattermusch), Google LLC +- [lyuxuan](https://github.com/lyuxuan), Google LLC +- [makmukhi](https://github.com/makmukhi), Google LLC +- [matt-kwong](https://github.com/matt-kwong), Google LLC +- [nicolasnoble](https://github.com/nicolasnoble), Google LLC +- [yongni](https://github.com/yongni), Google LLC diff --git a/vendor/google.golang.org/grpc/balancer.go b/vendor/google.golang.org/grpc/balancer.go index a78e702baee..a8eb0f47609 100644 --- a/vendor/google.golang.org/grpc/balancer.go +++ b/vendor/google.golang.org/grpc/balancer.go @@ -43,7 +43,7 @@ type Address struct { // BalancerConfig specifies the configurations for Balancer. // -// Deprecated: please use package balancer. +// Deprecated: please use package balancer. May be removed in a future 1.x release. type BalancerConfig struct { // DialCreds is the transport credential the Balancer implementation can // use to dial to a remote load balancer server. The Balancer implementations @@ -57,7 +57,7 @@ type BalancerConfig struct { // BalancerGetOptions configures a Get call. // -// Deprecated: please use package balancer. +// Deprecated: please use package balancer. May be removed in a future 1.x release. type BalancerGetOptions struct { // BlockingWait specifies whether Get should block when there is no // connected address. @@ -66,7 +66,7 @@ type BalancerGetOptions struct { // Balancer chooses network addresses for RPCs. // -// Deprecated: please use package balancer. +// Deprecated: please use package balancer. May be removed in a future 1.x release. type Balancer interface { // Start does the initialization work to bootstrap a Balancer. For example, // this function may start the name resolution and watch the updates. It will @@ -120,7 +120,7 @@ type Balancer interface { // RoundRobin returns a Balancer that selects addresses round-robin. It uses r to watch // the name resolution updates and updates the addresses available correspondingly. // -// Deprecated: please use package balancer/roundrobin. +// Deprecated: please use package balancer/roundrobin. May be removed in a future 1.x release. func RoundRobin(r naming.Resolver) Balancer { return &roundRobin{r: r} } diff --git a/vendor/google.golang.org/grpc/balancer/base/balancer.go b/vendor/google.golang.org/grpc/balancer/base/balancer.go index e587d8d11a7..1af88f0a3f1 100644 --- a/vendor/google.golang.org/grpc/balancer/base/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/base/balancer.go @@ -73,7 +73,9 @@ func (b *baseBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) { // TODO: handle s.ResolverState.Err (log if not nil) once implemented. // TODO: handle s.ResolverState.ServiceConfig? - grpclog.Infoln("base.baseBalancer: got new ClientConn state: ", s) + if grpclog.V(2) { + grpclog.Infoln("base.baseBalancer: got new ClientConn state: ", s) + } // addrsSet is the set converted from addrs, it's used for quick lookup of an address. addrsSet := make(map[resolver.Address]struct{}) for _, a := range s.ResolverState.Addresses { @@ -127,10 +129,14 @@ func (b *baseBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectiv func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) { s := state.ConnectivityState - grpclog.Infof("base.baseBalancer: handle SubConn state change: %p, %v", sc, s) + if grpclog.V(2) { + grpclog.Infof("base.baseBalancer: handle SubConn state change: %p, %v", sc, s) + } oldS, ok := b.scStates[sc] if !ok { - grpclog.Infof("base.baseBalancer: got state changes for an unknown SubConn: %p, %v", sc, s) + if grpclog.V(2) { + grpclog.Infof("base.baseBalancer: got state changes for an unknown SubConn: %p, %v", sc, s) + } return } b.scStates[sc] = s diff --git a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go index 7bc6621a5ee..8df4095ca95 100644 --- a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go +++ b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go @@ -183,7 +183,7 @@ func (ccb *ccBalancerWrapper) handleSubConnStateChange(sc balancer.SubConn, s co func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) { if ccb.cc.curBalancerName != grpclbName { // Filter any grpclb addresses since we don't have the grpclb balancer. - s := ccs.ResolverState + s := &ccs.ResolverState for i := 0; i < len(s.Addresses); { if s.Addresses[i].Type == resolver.GRPCLB { copy(s.Addresses[i:], s.Addresses[i+1:]) diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index 84e31a26756..a7643df7d29 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -38,7 +38,6 @@ import ( "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/channelz" - "google.golang.org/grpc/internal/envconfig" "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" @@ -1061,8 +1060,8 @@ func (ac *addrConn) resetTransport() { ac.mu.Lock() if ac.state == connectivity.Shutdown { - newTr.Close() ac.mu.Unlock() + newTr.Close() return } ac.curAddr = addr @@ -1077,20 +1076,16 @@ func (ac *addrConn) resetTransport() { // we restart from the top of the addr list. <-reconnect.Done() hcancel() - - // Need to reconnect after a READY, the addrConn enters - // TRANSIENT_FAILURE. + // restart connecting - the top of the loop will set state to + // CONNECTING. This is against the current connectivity semantics doc, + // however it allows for graceful behavior for RPCs not yet dispatched + // - unfortunate timing would otherwise lead to the RPC failing even + // though the TRANSIENT_FAILURE state (called for by the doc) would be + // instantaneous. // - // This will set addrConn to TRANSIENT_FAILURE for a very short period - // of time, and turns CONNECTING. It seems reasonable to skip this, but - // READY-CONNECTING is not a valid transition. - ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - return - } - ac.updateConnectivityState(connectivity.TransientFailure) - ac.mu.Unlock() + // Ideally we should transition to Idle here and block until there is + // RPC activity that leads to the balancer requesting a reconnect of + // the associated SubConn. } } @@ -1147,14 +1142,35 @@ func (ac *addrConn) createTransport(addr resolver.Address, copts transport.Conne Authority: ac.cc.authority, } + once := sync.Once{} onGoAway := func(r transport.GoAwayReason) { ac.mu.Lock() ac.adjustParams(r) + once.Do(func() { + if ac.state == connectivity.Ready { + // Prevent this SubConn from being used for new RPCs by setting its + // state to Connecting. + // + // TODO: this should be Idle when grpc-go properly supports it. + ac.updateConnectivityState(connectivity.Connecting) + } + }) ac.mu.Unlock() reconnect.Fire() } onClose := func() { + ac.mu.Lock() + once.Do(func() { + if ac.state == connectivity.Ready { + // Prevent this SubConn from being used for new RPCs by setting its + // state to Connecting. + // + // TODO: this should be Idle when grpc-go properly supports it. + ac.updateConnectivityState(connectivity.Connecting) + } + }) + ac.mu.Unlock() close(onCloseCalled) reconnect.Fire() } @@ -1176,20 +1192,18 @@ func (ac *addrConn) createTransport(addr resolver.Address, copts transport.Conne return nil, nil, err } - if ac.dopts.reqHandshake == envconfig.RequireHandshakeOn { - select { - case <-time.After(connectDeadline.Sub(time.Now())): - // We didn't get the preface in time. - newTr.Close() - grpclog.Warningf("grpc: addrConn.createTransport failed to connect to %v: didn't receive server preface in time. Reconnecting...", addr) - return nil, nil, errors.New("timed out waiting for server handshake") - case <-prefaceReceived: - // We got the preface - huzzah! things are good. - case <-onCloseCalled: - // The transport has already closed - noop. - return nil, nil, errors.New("connection closed") - // TODO(deklerk) this should bail on ac.ctx.Done(). Add a test and fix. - } + select { + case <-time.After(connectDeadline.Sub(time.Now())): + // We didn't get the preface in time. + newTr.Close() + grpclog.Warningf("grpc: addrConn.createTransport failed to connect to %v: didn't receive server preface in time. Reconnecting...", addr) + return nil, nil, errors.New("timed out waiting for server handshake") + case <-prefaceReceived: + // We got the preface - huzzah! things are good. + case <-onCloseCalled: + // The transport has already closed - noop. + return nil, nil, errors.New("connection closed") + // TODO(deklerk) this should bail on ac.ctx.Done(). Add a test and fix. } return newTr, reconnect, nil } diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go index 69c003159d4..e8f34d0d6ea 100644 --- a/vendor/google.golang.org/grpc/dialoptions.go +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -60,7 +60,6 @@ type dialOptions struct { balancerBuilder balancer.Builder // This is to support grpclb. resolverBuilder resolver.Builder - reqHandshake envconfig.RequireHandshakeSetting channelzParentID int64 disableServiceConfig bool disableRetry bool @@ -100,17 +99,6 @@ func newFuncDialOption(f func(*dialOptions)) *funcDialOption { } } -// WithWaitForHandshake blocks until the initial settings frame is received from -// the server before assigning RPCs to the connection. -// -// Deprecated: this is the default behavior, and this option will be removed -// after the 1.18 release. -func WithWaitForHandshake() DialOption { - return newFuncDialOption(func(o *dialOptions) { - o.reqHandshake = envconfig.RequireHandshakeOn - }) -} - // WithWriteBufferSize determines how much data can be batched before doing a // write on the wire. The corresponding memory allocation for this buffer will // be twice the size to keep syscalls low. The default value for this buffer is @@ -156,7 +144,8 @@ func WithInitialConnWindowSize(s int32) DialOption { // WithMaxMsgSize returns a DialOption which sets the maximum message size the // client can receive. // -// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. +// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. Will +// be supported throughout 1.x. func WithMaxMsgSize(s int) DialOption { return WithDefaultCallOptions(MaxCallRecvMsgSize(s)) } @@ -172,7 +161,8 @@ func WithDefaultCallOptions(cos ...CallOption) DialOption { // WithCodec returns a DialOption which sets a codec for message marshaling and // unmarshaling. // -// Deprecated: use WithDefaultCallOptions(ForceCodec(_)) instead. +// Deprecated: use WithDefaultCallOptions(ForceCodec(_)) instead. Will be +// supported throughout 1.x. func WithCodec(c Codec) DialOption { return WithDefaultCallOptions(CallCustomCodec(c)) } @@ -181,7 +171,7 @@ func WithCodec(c Codec) DialOption { // message compression. It has lower priority than the compressor set by the // UseCompressor CallOption. // -// Deprecated: use UseCompressor instead. +// Deprecated: use UseCompressor instead. Will be supported throughout 1.x. func WithCompressor(cp Compressor) DialOption { return newFuncDialOption(func(o *dialOptions) { o.cp = cp @@ -196,7 +186,8 @@ func WithCompressor(cp Compressor) DialOption { // message. If no compressor is registered for the encoding, an Unimplemented // status error will be returned. // -// Deprecated: use encoding.RegisterCompressor instead. +// Deprecated: use encoding.RegisterCompressor instead. Will be supported +// throughout 1.x. func WithDecompressor(dc Decompressor) DialOption { return newFuncDialOption(func(o *dialOptions) { o.dc = dc @@ -207,7 +198,7 @@ func WithDecompressor(dc Decompressor) DialOption { // Name resolver will be ignored if this DialOption is specified. // // Deprecated: use the new balancer APIs in balancer package and -// WithBalancerName. +// WithBalancerName. Will be removed in a future 1.x release. func WithBalancer(b Balancer) DialOption { return newFuncDialOption(func(o *dialOptions) { o.balancerBuilder = &balancerWrapperBuilder{ @@ -223,7 +214,8 @@ func WithBalancer(b Balancer) DialOption { // The balancer cannot be overridden by balancer option specified by service // config. // -// This is an EXPERIMENTAL API. +// Deprecated: use WithDefaultServiceConfig and WithDisableServiceConfig +// instead. Will be removed in a future 1.x release. func WithBalancerName(balancerName string) DialOption { builder := balancer.Get(balancerName) if builder == nil { @@ -244,9 +236,10 @@ func withResolverBuilder(b resolver.Builder) DialOption { // WithServiceConfig returns a DialOption which has a channel to read the // service configuration. // -// Deprecated: service config should be received through name resolver, as -// specified here. -// https://github.com/grpc/grpc/blob/master/doc/service_config.md +// Deprecated: service config should be received through name resolver or via +// WithDefaultServiceConfig, as specified at +// https://github.com/grpc/grpc/blob/master/doc/service_config.md. Will be +// removed in a future 1.x release. func WithServiceConfig(c <-chan ServiceConfig) DialOption { return newFuncDialOption(func(o *dialOptions) { o.scChan = c @@ -329,7 +322,8 @@ func WithCredentialsBundle(b credentials.Bundle) DialOption { // WithTimeout returns a DialOption that configures a timeout for dialing a // ClientConn initially. This is valid if and only if WithBlock() is present. // -// Deprecated: use DialContext and context.WithTimeout instead. +// Deprecated: use DialContext and context.WithTimeout instead. Will be +// supported throughout 1.x. func WithTimeout(d time.Duration) DialOption { return newFuncDialOption(func(o *dialOptions) { o.timeout = d @@ -356,7 +350,8 @@ func init() { // is returned by f, gRPC checks the error's Temporary() method to decide if it // should try to reconnect to the network address. // -// Deprecated: use WithContextDialer instead +// Deprecated: use WithContextDialer instead. Will be supported throughout +// 1.x. func WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption { return WithContextDialer( func(ctx context.Context, addr string) (net.Conn, error) { @@ -480,8 +475,10 @@ func WithDisableServiceConfig() DialOption { // WithDefaultServiceConfig returns a DialOption that configures the default // service config, which will be used in cases where: -// 1. WithDisableServiceConfig is called. -// 2. Resolver does not return service config or if the resolver gets and invalid config. +// +// 1. WithDisableServiceConfig is also used. +// 2. Resolver does not return a service config or if the resolver returns an +// invalid service config. // // This API is EXPERIMENTAL. func WithDefaultServiceConfig(s string) DialOption { @@ -537,7 +534,6 @@ func withHealthCheckFunc(f internal.HealthChecker) DialOption { func defaultDialOptions() dialOptions { return dialOptions{ disableRetry: !envconfig.Retry, - reqHandshake: envconfig.RequireHandshake, healthCheckFunc: internal.HealthCheckFunc, copts: transport.ConnectOptions{ WriteBufferSize: defaultWriteBufSize, diff --git a/vendor/google.golang.org/grpc/go.mod b/vendor/google.golang.org/grpc/go.mod index c1a8340c5ba..c7f3fa3f363 100644 --- a/vendor/google.golang.org/grpc/go.mod +++ b/vendor/google.golang.org/grpc/go.mod @@ -1,12 +1,14 @@ module google.golang.org/grpc +go 1.11 + require ( cloud.google.com/go v0.26.0 // indirect github.com/BurntSushi/toml v0.3.1 // indirect github.com/client9/misspell v0.3.4 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/mock v1.1.1 - github.com/golang/protobuf v1.2.0 + github.com/golang/protobuf v1.3.2 github.com/google/go-cmp v0.2.0 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 golang.org/x/net v0.0.0-20190311183353-d8887717615a diff --git a/vendor/google.golang.org/grpc/go.sum b/vendor/google.golang.org/grpc/go.sum index 741677d2e81..7faff49e7d6 100644 --- a/vendor/google.golang.org/grpc/go.sum +++ b/vendor/google.golang.org/grpc/go.sum @@ -8,8 +8,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekf github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 11be7cd08c5..3ee8740f1f9 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -25,40 +25,11 @@ import ( ) const ( - prefix = "GRPC_GO_" - retryStr = prefix + "RETRY" - requireHandshakeStr = prefix + "REQUIRE_HANDSHAKE" -) - -// RequireHandshakeSetting describes the settings for handshaking. -type RequireHandshakeSetting int - -const ( - // RequireHandshakeOn indicates to wait for handshake before considering a - // connection ready/successful. - RequireHandshakeOn RequireHandshakeSetting = iota - // RequireHandshakeOff indicates to not wait for handshake before - // considering a connection ready/successful. - RequireHandshakeOff + prefix = "GRPC_GO_" + retryStr = prefix + "RETRY" ) var ( // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on". Retry = strings.EqualFold(os.Getenv(retryStr), "on") - // RequireHandshake is set based upon the GRPC_GO_REQUIRE_HANDSHAKE - // environment variable. - // - // Will be removed after the 1.18 release. - RequireHandshake = RequireHandshakeOn ) - -func init() { - switch strings.ToLower(os.Getenv(requireHandshakeStr)) { - case "on": - fallthrough - default: - RequireHandshake = RequireHandshakeOn - case "off": - RequireHandshake = RequireHandshakeOff - } -} diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go index b8e0aa4db27..ddee20b6bef 100644 --- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -107,8 +107,8 @@ func (*registerStream) isTransportResponseFrame() bool { return false } type headerFrame struct { streamID uint32 hf []hpack.HeaderField - endStream bool // Valid on server side. - initStream func(uint32) (bool, error) // Used only on the client side. + endStream bool // Valid on server side. + initStream func(uint32) error // Used only on the client side. onWrite func() wq *writeQuota // write quota for the stream created. cleanup *cleanupStream // Valid on the server side. @@ -637,21 +637,17 @@ func (l *loopyWriter) headerHandler(h *headerFrame) error { func (l *loopyWriter) originateStream(str *outStream) error { hdr := str.itl.dequeue().(*headerFrame) - sendPing, err := hdr.initStream(str.id) - if err != nil { + if err := hdr.initStream(str.id); err != nil { if err == ErrConnClosing { return err } // Other errors(errStreamDrain) need not close transport. return nil } - if err = l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil { + if err := l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil { return err } l.estdStreams[str.id] = str - if sendPing { - return l.pingHandler(&ping{data: [8]byte{}}) - } return nil } diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go index 5ea997a7e45..f262edd8ecd 100644 --- a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go +++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go @@ -149,6 +149,7 @@ func (f *inFlow) maybeAdjust(n uint32) uint32 { n = uint32(math.MaxInt32) } f.mu.Lock() + defer f.mu.Unlock() // estSenderQuota is the receiver's view of the maximum number of bytes the sender // can send without a window update. estSenderQuota := int32(f.limit - (f.pendingData + f.pendingUpdate)) @@ -169,10 +170,8 @@ func (f *inFlow) maybeAdjust(n uint32) uint32 { // is padded; We will fallback on the current available window(at least a 1/4th of the limit). f.delta = n } - f.mu.Unlock() return f.delta } - f.mu.Unlock() return 0 } diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go index b54fc8a0b36..9bd8c27b365 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -62,8 +62,6 @@ type http2Client struct { // goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor) // that the server sent GoAway on this transport. goAway chan struct{} - // awakenKeepalive is used to wake up keepalive when after it has gone dormant. - awakenKeepalive chan struct{} framer *framer // controlBuf delivers all the control related tasks (e.g., window @@ -110,6 +108,16 @@ type http2Client struct { // goAwayReason records the http2.ErrCode and debug data received with the // GoAway frame. goAwayReason GoAwayReason + // A condition variable used to signal when the keepalive goroutine should + // go dormant. The condition for dormancy is based on the number of active + // streams and the `PermitWithoutStream` keepalive client parameter. And + // since the number of active streams is guarded by the above mutex, we use + // the same for this condition variable as well. + kpDormancyCond *sync.Cond + // A boolean to track whether the keepalive goroutine is dormant or not. + // This is checked before attempting to signal the above condition + // variable. + kpDormant bool // Fields below are for channelz metric collection. channelzID int64 // channelz unique identification number @@ -232,7 +240,6 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne readerDone: make(chan struct{}), writerDone: make(chan struct{}), goAway: make(chan struct{}), - awakenKeepalive: make(chan struct{}, 1), framer: newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize), fc: &trInFlow{limit: uint32(icwz)}, scheme: scheme, @@ -264,9 +271,6 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne updateFlowControl: t.updateFlowControl, } } - // Make sure awakenKeepalive can't be written upon. - // keepalive routine will make it writable, if need be. - t.awakenKeepalive <- struct{}{} if t.statsHandler != nil { t.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{ RemoteAddr: t.remoteAddr, @@ -281,6 +285,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne t.channelzID = channelz.RegisterNormalSocket(t, opts.ChannelzParentID, fmt.Sprintf("%s -> %s", t.localAddr, t.remoteAddr)) } if t.keepaliveEnabled { + t.kpDormancyCond = sync.NewCond(&t.mu) go t.keepalive() } // Start the reader goroutine for incoming message. Each transport has @@ -493,6 +498,9 @@ func (t *http2Client) createAudience(callHdr *CallHdr) string { } func (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[string]string, error) { + if len(t.perRPCCreds) == 0 { + return nil, nil + } authData := map[string]string{} for _, c := range t.perRPCCreds { data, err := c.GetRequestMetadata(ctx, audience) @@ -513,7 +521,7 @@ func (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[s } func (t *http2Client) getCallAuthData(ctx context.Context, audience string, callHdr *CallHdr) (map[string]string, error) { - callAuthData := map[string]string{} + var callAuthData map[string]string // Check if credentials.PerRPCCredentials were provided via call options. // Note: if these credentials are provided both via dial options and call // options, then both sets of credentials will be applied. @@ -525,6 +533,7 @@ func (t *http2Client) getCallAuthData(ctx context.Context, audience string, call if err != nil { return nil, status.Errorf(codes.Internal, "transport: %v", err) } + callAuthData = make(map[string]string, len(data)) for k, v := range data { // Capital header names are illegal in HTTP/2 k = strings.ToLower(k) @@ -556,12 +565,11 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { close(s.headerChan) } - } hdr := &headerFrame{ hf: headerFields, endStream: false, - initStream: func(id uint32) (bool, error) { + initStream: func(id uint32) error { t.mu.Lock() if state := t.state; state != reachable { t.mu.Unlock() @@ -571,29 +579,19 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea err = ErrConnClosing } cleanup(err) - return false, err + return err } t.activeStreams[id] = s if channelz.IsOn() { atomic.AddInt64(&t.czData.streamsStarted, 1) atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) } - var sendPing bool - // If the number of active streams change from 0 to 1, then check if keepalive - // has gone dormant. If so, wake it up. - if len(t.activeStreams) == 1 && t.keepaliveEnabled { - select { - case t.awakenKeepalive <- struct{}{}: - sendPing = true - // Fill the awakenKeepalive channel again as this channel must be - // kept non-writable except at the point that the keepalive() - // goroutine is waiting either to be awaken or shutdown. - t.awakenKeepalive <- struct{}{} - default: - } + // If the keepalive goroutine has gone dormant, wake it up. + if t.kpDormant { + t.kpDormancyCond.Signal() } t.mu.Unlock() - return sendPing, nil + return nil }, onOrphaned: cleanup, wq: s.wq, @@ -769,9 +767,17 @@ func (t *http2Client) Close() error { t.mu.Unlock() return nil } + // Call t.onClose before setting the state to closing to prevent the client + // from attempting to create new streams ASAP. + t.onClose() t.state = closing streams := t.activeStreams t.activeStreams = nil + if t.kpDormant { + // If the keepalive goroutine is blocked on this condition variable, we + // should unblock it so that the goroutine eventually exits. + t.kpDormancyCond.Signal() + } t.mu.Unlock() t.controlBuf.finish() t.cancel() @@ -789,7 +795,6 @@ func (t *http2Client) Close() error { } t.statsHandler.HandleConn(t.ctx, connEnd) } - t.onClose() return err } @@ -848,11 +853,11 @@ func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) e return t.controlBuf.put(df) } -func (t *http2Client) getStream(f http2.Frame) (*Stream, bool) { +func (t *http2Client) getStream(f http2.Frame) *Stream { t.mu.Lock() - defer t.mu.Unlock() - s, ok := t.activeStreams[f.Header().StreamID] - return s, ok + s := t.activeStreams[f.Header().StreamID] + t.mu.Unlock() + return s } // adjustWindow sends out extra window update over the initial window size @@ -932,8 +937,8 @@ func (t *http2Client) handleData(f *http2.DataFrame) { t.controlBuf.put(bdpPing) } // Select the right stream to dispatch. - s, ok := t.getStream(f) - if !ok { + s := t.getStream(f) + if s == nil { return } if size > 0 { @@ -964,8 +969,8 @@ func (t *http2Client) handleData(f *http2.DataFrame) { } func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { - s, ok := t.getStream(f) - if !ok { + s := t.getStream(f) + if s == nil { return } if f.ErrCode == http2.ErrCodeRefusedStream { @@ -978,9 +983,9 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { statusCode = codes.Unknown } if statusCode == codes.Canceled { - // Our deadline was already exceeded, and that was likely the cause of - // this cancelation. Alter the status code accordingly. - if d, ok := s.ctx.Deadline(); ok && d.After(time.Now()) { + if d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) { + // Our deadline was already exceeded, and that was likely the cause + // of this cancelation. Alter the status code accordingly. statusCode = codes.DeadlineExceeded } } @@ -1085,11 +1090,12 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { default: t.setGoAwayReason(f) close(t.goAway) - t.state = draining t.controlBuf.put(&incomingGoAway{}) - - // This has to be a new goroutine because we're still using the current goroutine to read in the transport. + // Notify the clientconn about the GOAWAY before we set the state to + // draining, to allow the client to stop attempting to create streams + // before disallowing new streams on this connection. t.onGoAway(t.goAwayReason) + t.state = draining } // All streams with IDs greater than the GoAwayId // and smaller than the previous GoAway ID should be killed. @@ -1141,8 +1147,8 @@ func (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) { // operateHeaders takes action on the decoded headers. func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { - s, ok := t.getStream(frame) - if !ok { + s := t.getStream(frame) + if s == nil { return } endStream := frame.StreamEnded() @@ -1297,29 +1303,32 @@ func (t *http2Client) keepalive() { timer.Reset(t.kp.Time) continue } - // Check if keepalive should go dormant. t.mu.Lock() - if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream { - // Make awakenKeepalive writable. - <-t.awakenKeepalive + if t.state == closing { + // If the transport is closing, we should exit from the + // keepalive goroutine here. If not, we could have a race + // between the call to Signal() from Close() and the call to + // Wait() here, whereby the keepalive goroutine ends up + // blocking on the condition variable which will never be + // signalled again. t.mu.Unlock() - select { - case <-t.awakenKeepalive: - // If the control gets here a ping has been sent - // need to reset the timer with keepalive.Timeout. - case <-t.ctx.Done(): - return - } - } else { - t.mu.Unlock() - if channelz.IsOn() { - atomic.AddInt64(&t.czData.kpCount, 1) - } - // Send ping. - t.controlBuf.put(p) + return + } + if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream { + t.kpDormant = true + t.kpDormancyCond.Wait() + } + t.kpDormant = false + t.mu.Unlock() + + if channelz.IsOn() { + atomic.AddInt64(&t.czData.kpCount, 1) } + // We get here either because we were dormant and a new stream was + // created which unblocked the Wait() call, or because the + // keepalive timer expired. In both cases, we need to send a ping. + t.controlBuf.put(p) - // By the time control gets here a ping has been sent one way or the other. timer.Reset(t.kp.Timeout) select { case <-timer.C: @@ -1327,6 +1336,7 @@ func (t *http2Client) keepalive() { timer.Reset(t.kp.Time) continue } + infof("transport: closing client transport due to idleness.") t.Close() return case <-t.ctx.Done(): diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go index d9618d30905..33686a11ab9 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -65,8 +65,7 @@ var ( // http2Server implements the ServerTransport interface with HTTP2. type http2Server struct { ctx context.Context - ctxDone <-chan struct{} // Cache the context.Done() chan - cancel context.CancelFunc + done chan struct{} conn net.Conn loopy *loopyWriter readerDone chan struct{} // sync point to enable testing. @@ -138,7 +137,10 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err } framer := newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize) // Send initial settings as connection preface to client. - var isettings []http2.Setting + isettings := []http2.Setting{{ + ID: http2.SettingMaxFrameSize, + Val: http2MaxFrameLen, + }} // TODO(zhaoq): Have a better way to signal "no limit" because 0 is // permitted in the HTTP2 spec. maxStreams := config.MaxStreams @@ -203,11 +205,10 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err if kep.MinTime == 0 { kep.MinTime = defaultKeepalivePolicyMinTime } - ctx, cancel := context.WithCancel(context.Background()) + done := make(chan struct{}) t := &http2Server{ - ctx: ctx, - cancel: cancel, - ctxDone: ctx.Done(), + ctx: context.Background(), + done: done, conn: conn, remoteAddr: conn.RemoteAddr(), localAddr: conn.LocalAddr(), @@ -228,7 +229,7 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err czData: new(channelzData), bufferPool: newBufferPool(), } - t.controlBuf = newControlBuffer(t.ctxDone) + t.controlBuf = newControlBuffer(t.done) if dynamicWindow { t.bdpEst = &bdpEstimator{ bdp: initialWindowSize, @@ -359,12 +360,14 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( rstCode: http2.ErrCodeRefusedStream, onWrite: func() {}, }) + s.cancel() return false } } t.mu.Lock() if t.state != reachable { t.mu.Unlock() + s.cancel() return false } if uint32(len(t.activeStreams)) >= t.maxStreams { @@ -375,12 +378,14 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( rstCode: http2.ErrCodeRefusedStream, onWrite: func() {}, }) + s.cancel() return false } if streamID%2 != 1 || streamID <= t.maxStreamID { t.mu.Unlock() // illegal gRPC stream id. errorf("transport: http2Server.HandleStreams received an illegal stream id: %v", streamID) + s.cancel() return true } t.maxStreamID = streamID @@ -767,6 +772,10 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { return nil } +func (t *http2Server) setResetPingStrikes() { + atomic.StoreUint32(&t.resetPingStrikes, 1) +} + func (t *http2Server) writeHeaderLocked(s *Stream) error { // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields // first and create a slice of that exact size. @@ -781,9 +790,7 @@ func (t *http2Server) writeHeaderLocked(s *Stream) error { streamID: s.id, hf: headerFields, endStream: false, - onWrite: func() { - atomic.StoreUint32(&t.resetPingStrikes, 1) - }, + onWrite: t.setResetPingStrikes, }) if !success { if err != nil { @@ -843,9 +850,7 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { streamID: s.id, hf: headerFields, endStream: true, - onWrite: func() { - atomic.StoreUint32(&t.resetPingStrikes, 1) - }, + onWrite: t.setResetPingStrikes, } s.hdrMu.Unlock() success, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader) @@ -882,7 +887,7 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e // TODO(mmukhi, dfawley): Should the server write also return io.EOF? s.cancel() select { - case <-t.ctx.Done(): + case <-t.done: return ErrConnClosing default: } @@ -897,16 +902,14 @@ func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) e hdr = append(hdr, data[:emptyLen]...) data = data[emptyLen:] df := &dataFrame{ - streamID: s.id, - h: hdr, - d: data, - onEachWrite: func() { - atomic.StoreUint32(&t.resetPingStrikes, 1) - }, + streamID: s.id, + h: hdr, + d: data, + onEachWrite: t.setResetPingStrikes, } if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { select { - case <-t.ctx.Done(): + case <-t.done: return ErrConnClosing default: } @@ -968,10 +971,11 @@ func (t *http2Server) keepalive() { select { case <-maxAge.C: // Close the connection after grace period. + infof("transport: closing server transport due to maximum connection age.") t.Close() // Resetting the timer so that the clean-up doesn't deadlock. maxAge.Reset(infinity) - case <-t.ctx.Done(): + case <-t.done: } return case <-keepalive.C: @@ -981,6 +985,7 @@ func (t *http2Server) keepalive() { continue } if pingSent { + infof("transport: closing server transport due to idleness.") t.Close() // Resetting the timer so that the clean-up doesn't deadlock. keepalive.Reset(infinity) @@ -992,7 +997,7 @@ func (t *http2Server) keepalive() { } t.controlBuf.put(p) keepalive.Reset(t.kp.Timeout) - case <-t.ctx.Done(): + case <-t.done: return } } @@ -1012,7 +1017,7 @@ func (t *http2Server) Close() error { t.activeStreams = nil t.mu.Unlock() t.controlBuf.finish() - t.cancel() + close(t.done) err := t.conn.Close() if channelz.IsOn() { channelz.RemoveEntry(t.channelzID) @@ -1152,7 +1157,7 @@ func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { select { case <-t.drainChan: case <-timer.C: - case <-t.ctx.Done(): + case <-t.done: return } t.controlBuf.put(&goAway{code: g.code, debugData: g.debugData}) @@ -1202,7 +1207,7 @@ func (t *http2Server) getOutFlowWindow() int64 { select { case sz := <-resp: return int64(sz) - case <-t.ctxDone: + case <-t.done: return -1 case <-timer.C: return -2 diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go index 9d212867ce2..8f5f3349d90 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http_util.go +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -667,6 +667,7 @@ func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, maxHeaderList writer: w, fr: http2.NewFramer(w, r), } + f.fr.SetMaxReadFrameSize(http2MaxFrameLen) // Opt-in to Frame reuse API on framer to reduce garbage. // Frames aren't safe to read from after a subsequent call to ReadFrame. f.fr.SetReuseFrames() diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go index 0f33c9ca8f7..1c1d106709a 100644 --- a/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -184,6 +184,19 @@ func (r *recvBufferReader) readClient(p []byte) (n int, err error) { // r.readAdditional acts on that message and returns the necessary error. select { case <-r.ctxDone: + // Note that this adds the ctx error to the end of recv buffer, and + // reads from the head. This will delay the error until recv buffer is + // empty, thus will delay ctx cancellation in Recv(). + // + // It's done this way to fix a race between ctx cancel and trailer. The + // race was, stream.Recv() may return ctx error if ctxDone wins the + // race, but stream.Trailer() may return a non-nil md because the stream + // was not marked as done when trailer is received. This closeStream + // call will mark stream as done, thus fix the race. + // + // TODO: delaying ctx error seems like a unnecessary side effect. What + // we really want is to mark the stream as done, and return ctx error + // faster. r.closeStream(ContextErr(r.ctx.Err())) m := <-r.recv.get() return r.readAdditional(m, p) @@ -298,6 +311,14 @@ func (s *Stream) waitOnHeader() error { } select { case <-s.ctx.Done(): + // We prefer success over failure when reading messages because we delay + // context error in stream.Read(). To keep behavior consistent, we also + // prefer success here. + select { + case <-s.headerChan: + return nil + default: + } return ContextErr(s.ctx.Err()) case <-s.headerChan: return nil diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/pickfirst.go index d1e38aad778..ed05b02ed96 100644 --- a/vendor/google.golang.org/grpc/pickfirst.go +++ b/vendor/google.golang.org/grpc/pickfirst.go @@ -51,14 +51,18 @@ type pickfirstBalancer struct { func (b *pickfirstBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) { if err != nil { - grpclog.Infof("pickfirstBalancer: HandleResolvedAddrs called with error %v", err) + if grpclog.V(2) { + grpclog.Infof("pickfirstBalancer: HandleResolvedAddrs called with error %v", err) + } return } if b.sc == nil { b.sc, err = b.cc.NewSubConn(addrs, balancer.NewSubConnOptions{}) if err != nil { //TODO(yuxuanli): why not change the cc state to Idle? - grpclog.Errorf("pickfirstBalancer: failed to NewSubConn: %v", err) + if grpclog.V(2) { + grpclog.Errorf("pickfirstBalancer: failed to NewSubConn: %v", err) + } return } b.cc.UpdateBalancerState(connectivity.Idle, &picker{sc: b.sc}) @@ -70,9 +74,13 @@ func (b *pickfirstBalancer) HandleResolvedAddrs(addrs []resolver.Address, err er } func (b *pickfirstBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectivity.State) { - grpclog.Infof("pickfirstBalancer: HandleSubConnStateChange: %p, %v", sc, s) + if grpclog.V(2) { + grpclog.Infof("pickfirstBalancer: HandleSubConnStateChange: %p, %v", sc, s) + } if b.sc != sc { - grpclog.Infof("pickfirstBalancer: ignored state change because sc is not recognized") + if grpclog.V(2) { + grpclog.Infof("pickfirstBalancer: ignored state change because sc is not recognized") + } return } if s == connectivity.Shutdown { diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index 617289e2e36..f064b73e555 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -42,6 +42,7 @@ import ( "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/binarylog" "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" @@ -56,6 +57,8 @@ const ( defaultServerMaxSendMessageSize = math.MaxInt32 ) +var statusOK = status.New(codes.OK, "") + type methodHandler func(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor UnaryServerInterceptor) (interface{}, error) // MethodDesc represents an RPC service's method specification. @@ -97,10 +100,8 @@ type Server struct { m map[string]*service // service name -> service info events trace.EventLog - quit chan struct{} - done chan struct{} - quitOnce sync.Once - doneOnce sync.Once + quit *grpcsync.Event + done *grpcsync.Event channelzRemoveOnce sync.Once serveWG sync.WaitGroup // counts active Serve goroutines for GracefulStop @@ -388,8 +389,8 @@ func NewServer(opt ...ServerOption) *Server { opts: opts, conns: make(map[transport.ServerTransport]bool), m: make(map[string]*service), - quit: make(chan struct{}), - done: make(chan struct{}), + quit: grpcsync.NewEvent(), + done: grpcsync.NewEvent(), czData: new(channelzData), } s.cv = sync.NewCond(&s.mu) @@ -556,11 +557,9 @@ func (s *Server) Serve(lis net.Listener) error { s.serveWG.Add(1) defer func() { s.serveWG.Done() - select { - // Stop or GracefulStop called; block until done and return nil. - case <-s.quit: - <-s.done - default: + if s.quit.HasFired() { + // Stop or GracefulStop called; block until done and return nil. + <-s.done.Done() } }() @@ -603,7 +602,7 @@ func (s *Server) Serve(lis net.Listener) error { timer := time.NewTimer(tempDelay) select { case <-timer.C: - case <-s.quit: + case <-s.quit.Done(): timer.Stop() return nil } @@ -613,10 +612,8 @@ func (s *Server) Serve(lis net.Listener) error { s.printf("done serving; Accept = %v", err) s.mu.Unlock() - select { - case <-s.quit: + if s.quit.HasFired() { return nil - default: } return err } @@ -637,6 +634,10 @@ func (s *Server) Serve(lis net.Listener) error { // handleRawConn forks a goroutine to handle a just-accepted connection that // has not had any I/O performed on it yet. func (s *Server) handleRawConn(rawConn net.Conn) { + if s.quit.HasFired() { + rawConn.Close() + return + } rawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout)) conn, authInfo, err := s.useTransportAuthenticator(rawConn) if err != nil { @@ -653,14 +654,6 @@ func (s *Server) handleRawConn(rawConn net.Conn) { return } - s.mu.Lock() - if s.conns == nil { - s.mu.Unlock() - conn.Close() - return - } - s.mu.Unlock() - // Finish handshaking (HTTP2) st := s.newHTTP2Transport(conn, authInfo) if st == nil { @@ -768,6 +761,9 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { // traceInfo returns a traceInfo and associates it with stream, if tracing is enabled. // If tracing is not enabled, it returns nil. func (s *Server) traceInfo(st transport.ServerTransport, stream *transport.Stream) (trInfo *traceInfo) { + if !EnableTracing { + return nil + } tr, ok := trace.FromContext(stream.Context()) if !ok { return nil @@ -1078,7 +1074,7 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. // TODO: Should we be logging if writing status failed here, like above? // Should the logging be in WriteStatus? Should we ignore the WriteStatus // error or allow the stats handler to see it? - err = t.WriteStatus(stream, status.New(codes.OK, "")) + err = t.WriteStatus(stream, statusOK) if binlog != nil { binlog.Log(&binarylog.ServerTrailer{ Trailer: stream.Trailer(), @@ -1236,7 +1232,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp ss.trInfo.tr.LazyLog(stringer("OK"), false) ss.mu.Unlock() } - err = t.WriteStatus(ss.s, status.New(codes.OK, "")) + err = t.WriteStatus(ss.s, statusOK) if ss.binlog != nil { ss.binlog.Log(&binarylog.ServerTrailer{ Trailer: ss.s.Trailer(), @@ -1353,15 +1349,11 @@ func ServerTransportStreamFromContext(ctx context.Context) ServerTransportStream // pending RPCs on the client side will get notified by connection // errors. func (s *Server) Stop() { - s.quitOnce.Do(func() { - close(s.quit) - }) + s.quit.Fire() defer func() { s.serveWG.Wait() - s.doneOnce.Do(func() { - close(s.done) - }) + s.done.Fire() }() s.channelzRemoveOnce.Do(func() { @@ -1398,15 +1390,8 @@ func (s *Server) Stop() { // accepting new connections and RPCs and blocks until all the pending RPCs are // finished. func (s *Server) GracefulStop() { - s.quitOnce.Do(func() { - close(s.quit) - }) - - defer func() { - s.doneOnce.Do(func() { - close(s.done) - }) - }() + s.quit.Fire() + defer s.done.Fire() s.channelzRemoveOnce.Do(func() { if channelz.IsOn() { diff --git a/vendor/google.golang.org/grpc/service_config.go b/vendor/google.golang.org/grpc/service_config.go index d0787f1e2a1..686ad7ba616 100644 --- a/vendor/google.golang.org/grpc/service_config.go +++ b/vendor/google.golang.org/grpc/service_config.go @@ -310,6 +310,14 @@ func parseServiceConfig(js string) (*ServiceConfig, error) { } break } + if sc.lbConfig == nil { + // We had a loadBalancingConfig field but did not encounter a + // supported policy. The config is considered invalid in this + // case. + err := fmt.Errorf("invalid loadBalancingConfig: no supported policies found") + grpclog.Warningf(err.Error()) + return nil, err + } } if rsc.MethodConfig == nil { diff --git a/vendor/google.golang.org/grpc/status/status.go b/vendor/google.golang.org/grpc/status/status.go index 641c45c6fed..a1348e9b16b 100644 --- a/vendor/google.golang.org/grpc/status/status.go +++ b/vendor/google.golang.org/grpc/status/status.go @@ -58,6 +58,17 @@ func (se *statusError) GRPCStatus() *Status { return &Status{s: (*spb.Status)(se)} } +// Is implements future error.Is functionality. +// A statusError is equivalent if the code and message are identical. +func (se *statusError) Is(target error) bool { + tse, ok := target.(*statusError) + if !ok { + return false + } + + return proto.Equal((*spb.Status)(se), (*spb.Status)(tse)) +} + // Status represents an RPC status code, message, and details. It is immutable // and should be created with New, Newf, or FromProto. type Status struct { @@ -132,7 +143,7 @@ func FromProto(s *spb.Status) *Status { // Status is returned with codes.Unknown and the original error message. func FromError(err error) (s *Status, ok bool) { if err == nil { - return &Status{s: &spb.Status{Code: int32(codes.OK)}}, true + return nil, true } if se, ok := err.(interface { GRPCStatus() *Status @@ -206,7 +217,7 @@ func Code(err error) codes.Code { func FromContextError(err error) *Status { switch err { case nil: - return New(codes.OK, "") + return nil case context.DeadlineExceeded: return New(codes.DeadlineExceeded, err.Error()) case context.Canceled: diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index db14c3225d1..134a624a15d 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -327,13 +327,23 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth return cs, nil } -func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) error { - cs.attempt = &csAttempt{ +// newAttemptLocked creates a new attempt with a transport. +// If it succeeds, then it replaces clientStream's attempt with this new attempt. +func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (retErr error) { + newAttempt := &csAttempt{ cs: cs, dc: cs.cc.dopts.dc, statsHandler: sh, trInfo: trInfo, } + defer func() { + if retErr != nil { + // This attempt is not set in the clientStream, so it's finish won't + // be called. Call it here for stats and trace in case they are not + // nil. + newAttempt.finish(retErr) + } + }() if err := cs.ctx.Err(); err != nil { return toRPCErr(err) @@ -345,8 +355,9 @@ func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) er if trInfo != nil { trInfo.firstLine.SetRemoteAddr(t.RemoteAddr()) } - cs.attempt.t = t - cs.attempt.done = done + newAttempt.t = t + newAttempt.done = done + cs.attempt = newAttempt return nil } @@ -395,11 +406,18 @@ type clientStream struct { serverHeaderBinlogged bool mu sync.Mutex - firstAttempt bool // if true, transparent retry is valid - numRetries int // exclusive of transparent retry attempt(s) - numRetriesSincePushback int // retries since pushback; to reset backoff - finished bool // TODO: replace with atomic cmpxchg or sync.Once? - attempt *csAttempt // the active client stream attempt + firstAttempt bool // if true, transparent retry is valid + numRetries int // exclusive of transparent retry attempt(s) + numRetriesSincePushback int // retries since pushback; to reset backoff + finished bool // TODO: replace with atomic cmpxchg or sync.Once? + // attempt is the active client stream attempt. + // The only place where it is written is the newAttemptLocked method and this method never writes nil. + // So, attempt can be nil only inside newClientStream function when clientStream is first created. + // One of the first things done after clientStream's creation, is to call newAttemptLocked which either + // assigns a non nil value to the attempt or returns an error. If an error is returned from newAttemptLocked, + // then newClientStream calls finish on the clientStream and returns. So, finish method is the only + // place where we need to check if the attempt is nil. + attempt *csAttempt // TODO(hedging): hedging will have multiple attempts simultaneously. committed bool // active attempt committed for retry? buffer []func(a *csAttempt) error // operations to replay on retry @@ -457,8 +475,8 @@ func (cs *clientStream) shouldRetry(err error) error { if cs.attempt.s != nil { <-cs.attempt.s.Done() } - if cs.firstAttempt && !cs.callInfo.failFast && (cs.attempt.s == nil || cs.attempt.s.Unprocessed()) { - // First attempt, wait-for-ready, stream unprocessed: transparently retry. + if cs.firstAttempt && (cs.attempt.s == nil || cs.attempt.s.Unprocessed()) { + // First attempt, stream unprocessed: transparently retry. cs.firstAttempt = false return nil } @@ -805,11 +823,11 @@ func (cs *clientStream) finish(err error) { } if cs.attempt != nil { cs.attempt.finish(err) - } - // after functions all rely upon having a stream. - if cs.attempt.s != nil { - for _, o := range cs.opts { - o.after(cs.callInfo) + // after functions all rely upon having a stream. + if cs.attempt.s != nil { + for _, o := range cs.opts { + o.after(cs.callInfo) + } } } cs.cancel() diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index 6fcfc2f1b96..483ef8968ad 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.22.2" +const Version = "1.24.0" diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh index 11037b94dc8..2d79b1c6942 100644 --- a/vendor/google.golang.org/grpc/vet.sh +++ b/vendor/google.golang.org/grpc/vet.sh @@ -67,7 +67,7 @@ elif [[ "$#" -ne 0 ]]; then fi # - Ensure all source files contain a copyright message. -git ls-files "*.go" | xargs grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)\|DO NOT EDIT" 2>&1 | fail_on_output +(! git grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)\|DO NOT EDIT" -- '*.go') # - Make sure all tests in grpc and grpc/test use leakcheck via Teardown. (! grep 'func Test[^(]' *_test.go) @@ -75,10 +75,10 @@ git ls-files "*.go" | xargs grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)\|DO # - Do not import math/rand for real library code. Use internal/grpcrand for # thread safety. -git ls-files "*.go" | xargs grep -l '"math/rand"' 2>&1 | (! grep -v '^examples\|^stress\|grpcrand\|wrr_test') +git grep -l '"math/rand"' -- "*.go" 2>&1 | (! grep -v '^examples\|^stress\|grpcrand\|wrr_test') # - Ensure all ptypes proto packages are renamed when importing. -git ls-files "*.go" | (! xargs grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/") +(! git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go") # - Check imports that are illegal in appengine (until Go 1.11). # TODO: Remove when we drop Go 1.10 support @@ -86,7 +86,7 @@ go list -f {{.Dir}} ./... | xargs go run test/go_vet/vet.go # - gofmt, goimports, golint (with exceptions for generated code), go vet. gofmt -s -d -l . 2>&1 | fail_on_output -goimports -l . 2>&1 | (! grep -vE "(_mock|\.pb)\.go:") | fail_on_output +goimports -l . 2>&1 | (! grep -vE "(_mock|\.pb)\.go") | fail_on_output golint ./... 2>&1 | (! grep -vE "(_mock|\.pb)\.go:") go vet -all . @@ -105,12 +105,15 @@ if go help mod >& /dev/null; then fi # - Collection of static analysis checks -# TODO(menghanl): fix errors in transport_test. +# TODO(dfawley): don't use deprecated functions in examples. staticcheck -go 1.9 -checks 'inherit,-ST1015' -ignore ' google.golang.org/grpc/balancer.go:SA1019 +google.golang.org/grpc/balancer/grpclb/grpclb_remote_balancer.go:SA1019 google.golang.org/grpc/balancer/roundrobin/roundrobin_test.go:SA1019 -google.golang.org/grpc/balancer/xds/edsbalancer/balancergroup.go:SA1019 -google.golang.org/grpc/balancer/xds/xds.go:SA1019 +google.golang.org/grpc/xds/internal/balancer/edsbalancer/balancergroup.go:SA1019 +google.golang.org/grpc/xds/internal/resolver/xds_resolver.go:SA1019 +google.golang.org/grpc/xds/internal/balancer/xds.go:SA1019 +google.golang.org/grpc/xds/internal/balancer/xds_client.go:SA1019 google.golang.org/grpc/balancer_conn_wrappers.go:SA1019 google.golang.org/grpc/balancer_test.go:SA1019 google.golang.org/grpc/benchmark/benchmain/main.go:SA1019 @@ -118,10 +121,13 @@ google.golang.org/grpc/benchmark/worker/benchmark_client.go:SA1019 google.golang.org/grpc/clientconn.go:S1024 google.golang.org/grpc/clientconn_state_transition_test.go:SA1019 google.golang.org/grpc/clientconn_test.go:SA1019 +google.golang.org/grpc/examples/features/debugging/client/main.go:SA1019 +google.golang.org/grpc/examples/features/load_balancing/client/main.go:SA1019 google.golang.org/grpc/internal/transport/handler_server.go:SA1019 google.golang.org/grpc/internal/transport/handler_server_test.go:SA1019 google.golang.org/grpc/resolver/dns/dns_resolver.go:SA1019 google.golang.org/grpc/stats/stats_test.go:SA1019 +google.golang.org/grpc/test/balancer_test.go:SA1019 google.golang.org/grpc/test/channelz_test.go:SA1019 google.golang.org/grpc/test/end2end_test.go:SA1019 google.golang.org/grpc/test/healthcheck_test.go:SA1019 diff --git a/vendor/gopkg.in/src-d/go-billy.v4/.gitignore b/vendor/gopkg.in/src-d/go-billy.v4/.gitignore index 62cdb53bc4e..7aeb46699cd 100644 --- a/vendor/gopkg.in/src-d/go-billy.v4/.gitignore +++ b/vendor/gopkg.in/src-d/go-billy.v4/.gitignore @@ -2,4 +2,3 @@ /vendor Gopkg.lock Gopkg.toml -go.sum diff --git a/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml b/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml index 759e2fba82d..a70b470d4ac 100644 --- a/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml +++ b/vendor/gopkg.in/src-d/go-billy.v4/.travis.yml @@ -11,6 +11,7 @@ install: script: - make test-coverage + - ./.ci/test-building-binaries-for-supported-os.sh after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/gopkg.in/src-d/go-billy.v4/README.md b/vendor/gopkg.in/src-d/go-billy.v4/README.md index ef243cca597..ae4a3f86917 100644 --- a/vendor/gopkg.in/src-d/go-billy.v4/README.md +++ b/vendor/gopkg.in/src-d/go-billy.v4/README.md @@ -1,4 +1,4 @@ -# go-billy [![GoDoc](https://godoc.org/gopkg.in/src-d/go-billy.v4?status.svg)](https://godoc.org/gopkg.in/src-d/go-billy.v4) [![Build Status](https://travis-ci.org/src-d/go-billy.svg)](https://travis-ci.org/src-d/go-billy) [![Build status](https://ci.appveyor.com/api/projects/status/vx2qn6vlakbi724t?svg=true)](https://ci.appveyor.com/project/mcuadros/go-billy) [![codecov](https://codecov.io/gh/src-d/go-billy/branch/master/graph/badge.svg)](https://codecov.io/gh/src-d/go-billy) +# go-billy [![GoDoc](https://godoc.org/gopkg.in/src-d/go-billy.v4?status.svg)](https://godoc.org/gopkg.in/src-d/go-billy.v4) [![Build Status](https://travis-ci.com/src-d/go-billy.svg)](https://travis-ci.com/src-d/go-billy) [![Build status](https://ci.appveyor.com/api/projects/status/vx2qn6vlakbi724t?svg=true)](https://ci.appveyor.com/project/mcuadros/go-billy) [![codecov](https://codecov.io/gh/src-d/go-billy/branch/master/graph/badge.svg)](https://codecov.io/gh/src-d/go-billy) The missing interface filesystem abstraction for Go. Billy implements an interface based on the `os` standard library, allowing to develop applications without dependency on the underlying storage. Makes it virtually free to implement mocks and testing over filesystem operations. diff --git a/vendor/gopkg.in/src-d/go-billy.v4/go.mod b/vendor/gopkg.in/src-d/go-billy.v4/go.mod index eec1581118e..e5227de0ae5 100644 --- a/vendor/gopkg.in/src-d/go-billy.v4/go.mod +++ b/vendor/gopkg.in/src-d/go-billy.v4/go.mod @@ -2,6 +2,7 @@ module gopkg.in/src-d/go-billy.v4 require ( github.com/kr/pretty v0.1.0 // indirect - golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 + github.com/kr/pty v1.1.8 // indirect + golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 ) diff --git a/vendor/gopkg.in/src-d/go-billy.v4/go.sum b/vendor/gopkg.in/src-d/go-billy.v4/go.sum new file mode 100644 index 00000000000..5e9ed217e9f --- /dev/null +++ b/vendor/gopkg.in/src-d/go-billy.v4/go.sum @@ -0,0 +1,12 @@ +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +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/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +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= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 h1:lkiLiLBHGoH3XnqSLUIaBsilGMUjI+Uy2Xu2JLUtTas= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go b/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go index 0eda3bd3007..144cde1c187 100644 --- a/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go +++ b/vendor/gopkg.in/src-d/go-billy.v4/osfs/os_posix.go @@ -3,19 +3,19 @@ package osfs import ( - "syscall" + "golang.org/x/sys/unix" ) func (f *file) Lock() error { f.m.Lock() defer f.m.Unlock() - return syscall.Flock(int(f.File.Fd()), syscall.LOCK_EX) + return unix.Flock(int(f.File.Fd()), unix.LOCK_EX) } func (f *file) Unlock() error { f.m.Lock() defer f.m.Unlock() - return syscall.Flock(int(f.File.Fd()), syscall.LOCK_UN) + return unix.Flock(int(f.File.Fd()), unix.LOCK_UN) } diff --git a/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md b/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md index e07e79915eb..4a3da62fcdd 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md +++ b/vendor/gopkg.in/src-d/go-git.v4/COMPATIBILITY.md @@ -86,7 +86,7 @@ is supported by go-git. | for-each-ref | ✔ | | hash-object | ✔ | | ls-files | ✔ | -| merge-base | | +| merge-base | ✔ | Calculates the merge-base only between two commits, and supports `--independent` and `--is-ancestor` modifiers; Does not support `--fork-point` nor `--octopus` modifiers. | | read-tree | | | rev-list | ✔ | | rev-parse | | diff --git a/vendor/gopkg.in/src-d/go-git.v4/blame.go b/vendor/gopkg.in/src-d/go-git.v4/blame.go index adb72d5745f..f6108519ad5 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/blame.go +++ b/vendor/gopkg.in/src-d/go-git.v4/blame.go @@ -193,7 +193,7 @@ func (b *blame) fillGraphAndData() error { // this first commit. if i == 0 { for j := 0; j < nLines; j++ { - b.graph[i][j] = (*object.Commit)(b.revs[i]) + b.graph[i][j] = b.revs[i] } } else { // if this is not the first commit, then assign to the old @@ -211,7 +211,7 @@ func (b *blame) sliceGraph(i int) []*object.Commit { fVs := b.graph[i] result := make([]*object.Commit, 0, len(fVs)) for _, v := range fVs { - c := object.Commit(*v) + c := *v result = append(result, &c) } return result @@ -234,7 +234,7 @@ func (b *blame) assignOrigin(c, p int) { b.graph[c][dl] = b.graph[p][sl] case hunks[h].Type == 1: dl++ - b.graph[c][dl] = (*object.Commit)(b.revs[c]) + b.graph[c][dl] = b.revs[c] case hunks[h].Type == -1: sl++ default: diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/branch.go b/vendor/gopkg.in/src-d/go-git.v4/config/branch.go index e18073c9681..20dde6e030e 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/config/branch.go +++ b/vendor/gopkg.in/src-d/go-git.v4/config/branch.go @@ -8,8 +8,9 @@ import ( ) var ( - errBranchEmptyName = errors.New("branch config: empty name") - errBranchInvalidMerge = errors.New("branch config: invalid merge") + errBranchEmptyName = errors.New("branch config: empty name") + errBranchInvalidMerge = errors.New("branch config: invalid merge") + errBranchInvalidRebase = errors.New("branch config: rebase must be one of 'true' or 'interactive'") ) // Branch contains information on the @@ -21,6 +22,10 @@ type Branch struct { Remote string // Merge is the local refspec for the branch Merge plumbing.ReferenceName + // Rebase instead of merge when pulling. Valid values are + // "true" and "interactive". "false" is undocumented and + // typically represented by the non-existence of this field + Rebase string raw *format.Subsection } @@ -35,6 +40,13 @@ func (b *Branch) Validate() error { return errBranchInvalidMerge } + if b.Rebase != "" && + b.Rebase != "true" && + b.Rebase != "interactive" && + b.Rebase != "false" { + return errBranchInvalidRebase + } + return nil } @@ -57,6 +69,12 @@ func (b *Branch) marshal() *format.Subsection { b.raw.SetOption(mergeKey, string(b.Merge)) } + if b.Rebase == "" { + b.raw.RemoveOption(rebaseKey) + } else { + b.raw.SetOption(rebaseKey, b.Rebase) + } + return b.raw } @@ -66,6 +84,7 @@ func (b *Branch) unmarshal(s *format.Subsection) error { b.Name = b.raw.Name b.Remote = b.raw.Options.Get(remoteSection) b.Merge = plumbing.ReferenceName(b.raw.Options.Get(mergeKey)) + b.Rebase = b.raw.Options.Get(rebaseKey) return b.Validate() } diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/config.go b/vendor/gopkg.in/src-d/go-git.v4/config/config.go index 2c3b8b9683b..ea614e96ddf 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/config/config.go +++ b/vendor/gopkg.in/src-d/go-git.v4/config/config.go @@ -120,6 +120,7 @@ const ( commentCharKey = "commentChar" windowKey = "window" mergeKey = "merge" + rebaseKey = "rebase" // DefaultPackWindow holds the number of previous objects used to // generate deltas. The value 10 is the same used by git command. diff --git a/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go b/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go index 391705cccce..14bb40069c7 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go +++ b/vendor/gopkg.in/src-d/go-git.v4/config/refspec.go @@ -18,7 +18,7 @@ var ( ErrRefSpecMalformedWildcard = errors.New("malformed refspec, mismatched number of wildcards") ) -// RefSpec is a mapping from local branches to remote references +// RefSpec is a mapping from local branches to remote references. // The format of the refspec is an optional +, followed by :, where // is the pattern for references on the remote side and is where // those references will be written locally. The + tells Git to update the @@ -99,11 +99,11 @@ func (s RefSpec) matchGlob(n plumbing.ReferenceName) bool { var prefix, suffix string prefix = src[0:wildcard] - if len(src) < wildcard { - suffix = src[wildcard+1 : len(suffix)] + if len(src) > wildcard+1 { + suffix = src[wildcard+1:] } - return len(name) > len(prefix)+len(suffix) && + return len(name) >= len(prefix)+len(suffix) && strings.HasPrefix(name, prefix) && strings.HasSuffix(name, suffix) } @@ -127,6 +127,13 @@ func (s RefSpec) Dst(n plumbing.ReferenceName) plumbing.ReferenceName { return plumbing.ReferenceName(dst[0:wd] + match + dst[wd+1:]) } +func (s RefSpec) Reverse() RefSpec { + spec := string(s) + separator := strings.Index(spec, refSpecSeparator) + + return RefSpec(spec[separator+1:] + refSpecSeparator + spec[:separator]) +} + func (s RefSpec) String() string { return string(s) } diff --git a/vendor/gopkg.in/src-d/go-git.v4/go.mod b/vendor/gopkg.in/src-d/go-git.v4/go.mod index 36a1bedf84f..6f8b3d2e627 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/go.mod +++ b/vendor/gopkg.in/src-d/go-git.v4/go.mod @@ -3,27 +3,27 @@ module gopkg.in/src-d/go-git.v4 require ( github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 // indirect github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emirpasic/gods v1.9.0 + github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 + github.com/emirpasic/gods v1.12.0 github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 // indirect - github.com/gliderlabs/ssh v0.1.1 - github.com/google/go-cmp v0.2.0 + github.com/gliderlabs/ssh v0.2.2 + github.com/google/go-cmp v0.3.0 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 github.com/jessevdk/go-flags v1.4.0 - github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e - github.com/mitchellh/go-homedir v1.0.0 + github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd + github.com/mitchellh/go-homedir v1.1.0 github.com/pelletier/go-buffruneio v0.2.0 // indirect - github.com/pkg/errors v0.8.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pkg/errors v0.8.1 // indirect github.com/sergi/go-diff v1.0.0 github.com/src-d/gcfg v1.4.0 - github.com/stretchr/testify v1.2.2 // indirect - github.com/xanzy/ssh-agent v0.2.0 - golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 - golang.org/x/net v0.0.0-20180906233101-161cd47e91fd // indirect - golang.org/x/text v0.3.0 + github.com/stretchr/objx v0.2.0 // indirect + github.com/xanzy/ssh-agent v0.2.1 + golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 + golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 + golang.org/x/text v0.3.2 + golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 - gopkg.in/src-d/go-billy.v4 v4.2.1 - gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 + gopkg.in/src-d/go-billy.v4 v4.3.2 + gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/vendor/gopkg.in/src-d/go-git.v4/go.sum b/vendor/gopkg.in/src-d/go-git.v4/go.sum index 98ba1d4ed47..65551c16582 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/go.sum +++ b/vendor/gopkg.in/src-d/go-git.v4/go.sum @@ -2,58 +2,91 @@ github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBb github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +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/emirpasic/gods v1.9.0 h1:rUF4PuzEjMChMiNsVjdI+SyLu7rEqpQ5reNFnhC7oFo= -github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/gliderlabs/ssh v0.1.3 h1:cBU46h1lYQk5f2Z+jZbewFKy+1zzE2aUX/ilcPDAm9M= +github.com/gliderlabs/ssh v0.1.3/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= 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/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8= github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= 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/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= 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/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.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/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/src-d/gcfg v1.3.0 h1:2BEDr8r0I0b8h/fOqwtxCEiq2HJu8n2JGZJQFGXWLjg= -github.com/src-d/gcfg v1.3.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro= -github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/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-20190422183909-d864b10871cd h1:sMHc2rZHuzQmrbVoSpt9HgerkXPyIeCSO6k0zUMGfFk= +golang.org/x/crypto v0.0.0-20190422183909-d864b10871cd/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 h1:HuIa8hRrWRSrqYzx1qI49NNxhdi2PrY7gxVSq1JjLDc= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190420063019-afa5a82059c6 h1:HdqqaWmYAUI7/dmByKKEw+yxDksGSo+9GjkUc9Zp34E= +golang.org/x/net v0.0.0-20190420063019-afa5a82059c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190502183928-7f726cade0ab h1:9RfW3ktsOZxgo9YNbBAjq1FWzc/igwEcUzZz8IXgSbk= +golang.org/x/net v0.0.0-20190502183928-7f726cade0ab/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 h1:Ao/3l156eZf2AW5wK8a7/smtodRU+gha3+BeqJ69lRk= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9 h1:lkiLiLBHGoH3XnqSLUIaBsilGMUjI+Uy2Xu2JLUtTas= golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/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-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e h1:D5TXcfTk7xF7hvieo4QErS3qqCB4teTffacDWr7CI+0= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/src-d/go-billy.v4 v4.2.1 h1:omN5CrMrMcQ+4I8bJ0wEhOBPanIRWzFC953IiXKdYzo= -gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs= -gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-billy.v4 v4.3.0 h1:KtlZ4c1OWbIs4jCv5ZXrTqG8EQocr0g/d4DjNg70aek= +gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= +gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= diff --git a/vendor/gopkg.in/src-d/go-git.v4/options.go b/vendor/gopkg.in/src-d/go-git.v4/options.go index 7c9e6872882..0f728e7c275 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/options.go +++ b/vendor/gopkg.in/src-d/go-git.v4/options.go @@ -186,6 +186,9 @@ type PushOptions struct { // Progress is where the human readable information sent by the server is // stored, if nil nothing is stored. Progress sideband.Progress + // Prune specify that remote refs that match given RefSpecs and that do + // not exist locally will be removed. + Prune bool } // Validate validates the fields and sets the default values. @@ -242,6 +245,11 @@ type CheckoutOptions struct { // Force, if true when switching branches, proceed even if the index or the // working tree differs from HEAD. This is used to throw away local changes Force bool + // Keep, if true when switching branches, local changes (the index or the + // working tree changes) will be kept so that they can be committed to the + // target branch. Force and Keep are mutually exclusive, should not be both + // set to true. + Keep bool } // Validate validates the fields and sets the default values. diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go index 8bd6d8abc8a..169242dc5b6 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/diff/unified_encoder.go @@ -94,7 +94,7 @@ func (e *UnifiedEncoder) printMessage(message string) { isEmpty := message == "" hasSuffix := strings.HasSuffix(message, "\n") if !isEmpty && !hasSuffix { - message = message + "\n" + message += "\n" } e.buf.WriteString(message) diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go index 5b927826a16..9e9c1769ab1 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/decoder.go @@ -110,10 +110,6 @@ func readObjectNames(idx *MemoryIndex, r io.Reader) error { continue } - if buckets < 0 { - return ErrMalformedIdxFile - } - idx.FanoutMapping[k] = len(idx.Names) nameLen := int(buckets * objectIDLength) diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go index 5fed278b13b..14b58603f7a 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/idxfile.go @@ -5,8 +5,9 @@ import ( "io" "sort" + encbin "encoding/binary" + "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/utils/binary" ) const ( @@ -55,7 +56,8 @@ type MemoryIndex struct { PackfileChecksum [20]byte IdxChecksum [20]byte - offsetHash map[int64]plumbing.Hash + offsetHash map[int64]plumbing.Hash + offsetHashIsFull bool } var _ Index = (*MemoryIndex)(nil) @@ -121,31 +123,32 @@ func (idx *MemoryIndex) FindOffset(h plumbing.Hash) (int64, error) { return 0, plumbing.ErrObjectNotFound } - return idx.getOffset(k, i) + offset := idx.getOffset(k, i) + + if !idx.offsetHashIsFull { + // Save the offset for reverse lookup + if idx.offsetHash == nil { + idx.offsetHash = make(map[int64]plumbing.Hash) + } + idx.offsetHash[int64(offset)] = h + } + + return int64(offset), nil } const isO64Mask = uint64(1) << 31 -func (idx *MemoryIndex) getOffset(firstLevel, secondLevel int) (int64, error) { +func (idx *MemoryIndex) getOffset(firstLevel, secondLevel int) uint64 { offset := secondLevel << 2 - buf := bytes.NewBuffer(idx.Offset32[firstLevel][offset : offset+4]) - ofs, err := binary.ReadUint32(buf) - if err != nil { - return -1, err - } + ofs := encbin.BigEndian.Uint32(idx.Offset32[firstLevel][offset : offset+4]) if (uint64(ofs) & isO64Mask) != 0 { offset := 8 * (uint64(ofs) & ^isO64Mask) - buf := bytes.NewBuffer(idx.Offset64[offset : offset+8]) - n, err := binary.ReadUint64(buf) - if err != nil { - return -1, err - } - - return int64(n), nil + n := encbin.BigEndian.Uint64(idx.Offset64[offset : offset+8]) + return n } - return int64(ofs), nil + return uint64(ofs) } // FindCRC32 implements the Index interface. @@ -156,25 +159,34 @@ func (idx *MemoryIndex) FindCRC32(h plumbing.Hash) (uint32, error) { return 0, plumbing.ErrObjectNotFound } - return idx.getCRC32(k, i) + return idx.getCRC32(k, i), nil } -func (idx *MemoryIndex) getCRC32(firstLevel, secondLevel int) (uint32, error) { +func (idx *MemoryIndex) getCRC32(firstLevel, secondLevel int) uint32 { offset := secondLevel << 2 - buf := bytes.NewBuffer(idx.CRC32[firstLevel][offset : offset+4]) - return binary.ReadUint32(buf) + return encbin.BigEndian.Uint32(idx.CRC32[firstLevel][offset : offset+4]) } // FindHash implements the Index interface. func (idx *MemoryIndex) FindHash(o int64) (plumbing.Hash, error) { + var hash plumbing.Hash + var ok bool + + if idx.offsetHash != nil { + if hash, ok = idx.offsetHash[o]; ok { + return hash, nil + } + } + // Lazily generate the reverse offset/hash map if required. - if idx.offsetHash == nil { + if !idx.offsetHashIsFull || idx.offsetHash == nil { if err := idx.genOffsetHash(); err != nil { return plumbing.ZeroHash, err } + + hash, ok = idx.offsetHash[o] } - hash, ok := idx.offsetHash[o] if !ok { return plumbing.ZeroHash, plumbing.ErrObjectNotFound } @@ -190,23 +202,21 @@ func (idx *MemoryIndex) genOffsetHash() error { } idx.offsetHash = make(map[int64]plumbing.Hash, count) - - iter, err := idx.Entries() - if err != nil { - return err - } - - for { - entry, err := iter.Next() - if err != nil { - if err == io.EOF { - return nil - } - return err + idx.offsetHashIsFull = true + + var hash plumbing.Hash + i := uint32(0) + for firstLevel, fanoutValue := range idx.Fanout { + mappedFirstLevel := idx.FanoutMapping[firstLevel] + for secondLevel := uint32(0); i < fanoutValue; i++ { + copy(hash[:], idx.Names[mappedFirstLevel][secondLevel*objectIDLength:]) + offset := int64(idx.getOffset(mappedFirstLevel, int(secondLevel))) + idx.offsetHash[offset] = hash + secondLevel++ } - - idx.offsetHash[int64(entry.Offset)] = entry.Hash } + + return nil } // Count implements the Index interface. @@ -275,22 +285,11 @@ func (i *idxfileEntryIter) Next() (*Entry, error) { continue } + mappedFirstLevel := i.idx.FanoutMapping[i.firstLevel] entry := new(Entry) - ofs := i.secondLevel * objectIDLength - copy(entry.Hash[:], i.idx.Names[i.idx.FanoutMapping[i.firstLevel]][ofs:]) - - pos := i.idx.FanoutMapping[entry.Hash[0]] - - offset, err := i.idx.getOffset(pos, i.secondLevel) - if err != nil { - return nil, err - } - entry.Offset = uint64(offset) - - entry.CRC32, err = i.idx.getCRC32(pos, i.secondLevel) - if err != nil { - return nil, err - } + copy(entry.Hash[:], i.idx.Names[mappedFirstLevel][i.secondLevel*objectIDLength:]) + entry.Offset = i.idx.getOffset(mappedFirstLevel, i.secondLevel) + entry.CRC32 = i.idx.getCRC32(mappedFirstLevel, i.secondLevel) i.secondLevel++ i.total++ diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go index aa919e783be..fcc78c56d05 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/idxfile/writer.go @@ -147,7 +147,7 @@ func (w *Writer) createIndex() (*MemoryIndex, error) { idx.Offset32[bucket] = append(idx.Offset32[bucket], buf.Bytes()...) buf.Truncate(0) - binary.WriteUint32(buf, uint32(o.CRC32)) + binary.WriteUint32(buf, o.CRC32) idx.CRC32[bucket] = append(idx.CRC32[bucket], buf.Bytes()...) } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go index ac57d08cc7b..98f92fda645 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/decoder.go @@ -1,6 +1,7 @@ package index import ( + "bufio" "bytes" "crypto/sha1" "errors" @@ -42,14 +43,17 @@ type Decoder struct { r io.Reader hash hash.Hash lastEntry *Entry + + extReader *bufio.Reader } // NewDecoder returns a new decoder that reads from r. func NewDecoder(r io.Reader) *Decoder { h := sha1.New() return &Decoder{ - r: io.TeeReader(r, h), - hash: h, + r: io.TeeReader(r, h), + hash: h, + extReader: bufio.NewReader(nil), } } @@ -184,11 +188,9 @@ func (d *Decoder) doReadEntryNameV4() (string, error) { func (d *Decoder) doReadEntryName(len uint16) (string, error) { name := make([]byte, len) - if err := binary.Read(d.r, &name); err != nil { - return "", err - } + _, err := io.ReadFull(d.r, name[:]) - return string(name), nil + return string(name), err } // Index entries are padded out to the next 8 byte alignment @@ -279,20 +281,21 @@ func (d *Decoder) readExtension(idx *Index, header []byte) error { return nil } -func (d *Decoder) getExtensionReader() (io.Reader, error) { +func (d *Decoder) getExtensionReader() (*bufio.Reader, error) { len, err := binary.ReadUint32(d.r) if err != nil { return nil, err } - return &io.LimitedReader{R: d.r, N: int64(len)}, nil + d.extReader.Reset(&io.LimitedReader{R: d.r, N: int64(len)}) + return d.extReader, nil } func (d *Decoder) readChecksum(expected []byte, alreadyRead [4]byte) error { var h plumbing.Hash copy(h[:4], alreadyRead[:]) - if err := binary.Read(d.r, h[4:]); err != nil { + if _, err := io.ReadFull(d.r, h[4:]); err != nil { return err } @@ -326,7 +329,7 @@ func validateHeader(r io.Reader) (version uint32, err error) { } type treeExtensionDecoder struct { - r io.Reader + r *bufio.Reader } func (d *treeExtensionDecoder) Decode(t *Tree) error { @@ -386,16 +389,13 @@ func (d *treeExtensionDecoder) readEntry() (*TreeEntry, error) { } e.Trees = i - - if err := binary.Read(d.r, &e.Hash); err != nil { - return nil, err - } + _, err = io.ReadFull(d.r, e.Hash[:]) return e, nil } type resolveUndoDecoder struct { - r io.Reader + r *bufio.Reader } func (d *resolveUndoDecoder) Decode(ru *ResolveUndo) error { @@ -433,7 +433,7 @@ func (d *resolveUndoDecoder) readEntry() (*ResolveUndoEntry, error) { for s := range e.Stages { var hash plumbing.Hash - if err := binary.Read(d.r, hash[:]); err != nil { + if _, err := io.ReadFull(d.r, hash[:]); err != nil { return nil, err } @@ -462,7 +462,7 @@ func (d *resolveUndoDecoder) readStage(e *ResolveUndoEntry, s Stage) error { } type endOfIndexEntryDecoder struct { - r io.Reader + r *bufio.Reader } func (d *endOfIndexEntryDecoder) Decode(e *EndOfIndexEntry) error { @@ -472,5 +472,6 @@ func (d *endOfIndexEntryDecoder) Decode(e *EndOfIndexEntry) error { return err } - return binary.Read(d.r, &e.Hash) + _, err = io.ReadFull(d.r, e.Hash[:]) + return err } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go index f2b3d76cdc7..39ae6ad5f91 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/doc.go @@ -320,7 +320,7 @@ // == End of Index Entry // // The End of Index Entry (EOIE) is used to locate the end of the variable -// length index entries and the begining of the extensions. Code can take +// length index entries and the beginning of the extensions. Code can take // advantage of this to quickly locate the index extensions without having // to parse through all of the index entries. // @@ -353,7 +353,7 @@ // // - A number of index offset entries each consisting of: // -// - 32-bit offset from the begining of the file to the first cache entry +// - 32-bit offset from the beginning of the file to the first cache entry // in this block of entries. // // - 32-bit count of cache entries in this blockpackage index diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go index 6c4b7ca745a..6653c91d2bc 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/index/index.go @@ -198,7 +198,7 @@ type ResolveUndoEntry struct { } // EndOfIndexEntry is the End of Index Entry (EOIE) is used to locate the end of -// the variable length index entries and the begining of the extensions. Code +// the variable length index entries and the beginning of the extensions. Code // can take advantage of this to quickly locate the index extensions without // having to parse through all of the index entries. // diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go index 0d9ed5447dd..f82c1abe559 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/common.go @@ -2,6 +2,7 @@ package packfile import ( "bytes" + "compress/zlib" "io" "sync" @@ -66,3 +67,12 @@ var bufPool = sync.Pool{ return bytes.NewBuffer(nil) }, } + +var zlibInitBytes = []byte{0x78, 0x9c, 0x01, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01} + +var zlibReaderPool = sync.Pool{ + New: func() interface{} { + r, _ := zlib.NewReader(bytes.NewReader(zlibInitBytes)) + return r + }, +} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go index d35e78aead7..43f87a0b1ce 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go @@ -40,8 +40,8 @@ func getDelta(index *deltaIndex, base, target plumbing.EncodedObject) (plumbing. defer tr.Close() bb := bufPool.Get().(*bytes.Buffer) - bb.Reset() defer bufPool.Put(bb) + bb.Reset() _, err = bb.ReadFrom(br) if err != nil { @@ -49,8 +49,8 @@ func getDelta(index *deltaIndex, base, target plumbing.EncodedObject) (plumbing. } tb := bufPool.Get().(*bytes.Buffer) - tb.Reset() defer bufPool.Put(tb) + tb.Reset() _, err = tb.ReadFrom(tr) if err != nil { @@ -77,6 +77,7 @@ func DiffDelta(src, tgt []byte) []byte { func diffDelta(index *deltaIndex, src []byte, tgt []byte) []byte { buf := bufPool.Get().(*bytes.Buffer) + defer bufPool.Put(buf) buf.Reset() buf.Write(deltaEncodeSize(len(src))) buf.Write(deltaEncodeSize(len(tgt))) @@ -86,6 +87,7 @@ func diffDelta(index *deltaIndex, src []byte, tgt []byte) []byte { } ibuf := bufPool.Get().(*bytes.Buffer) + defer bufPool.Put(ibuf) ibuf.Reset() for i := 0; i < len(tgt); i++ { offset, l := index.findMatch(src, tgt, i) @@ -127,12 +129,9 @@ func diffDelta(index *deltaIndex, src []byte, tgt []byte) []byte { } encodeInsertOperation(ibuf, buf) - bytes := buf.Bytes() - - bufPool.Put(buf) - bufPool.Put(ibuf) - return bytes + // buf.Bytes() is only valid until the next modifying operation on the buffer. Copy it. + return append([]byte{}, buf.Bytes()...) } func encodeInsertOperation(ibuf, buf *bytes.Buffer) { diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go index 69b6e85d0cb..21a15de0ccc 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/packfile.go @@ -76,20 +76,18 @@ func (p *Packfile) Get(h plumbing.Hash) (plumbing.EncodedObject, error) { return nil, err } - return p.GetByOffset(offset) + return p.objectAtOffset(offset, h) } -// GetByOffset retrieves the encoded object from the packfile with the given +// GetByOffset retrieves the encoded object from the packfile at the given // offset. func (p *Packfile) GetByOffset(o int64) (plumbing.EncodedObject, error) { hash, err := p.FindHash(o) - if err == nil { - if obj, ok := p.deltaBaseCache.Get(hash); ok { - return obj, nil - } + if err != nil { + return nil, err } - return p.objectAtOffset(o) + return p.objectAtOffset(o, hash) } // GetSizeByOffset retrieves the size of the encoded object from the @@ -122,23 +120,27 @@ func (p *Packfile) nextObjectHeader() (*ObjectHeader, error) { return h, err } +func (p *Packfile) getDeltaObjectSize(buf *bytes.Buffer) int64 { + delta := buf.Bytes() + _, delta = decodeLEB128(delta) // skip src size + sz, _ := decodeLEB128(delta) + return int64(sz) +} + func (p *Packfile) getObjectSize(h *ObjectHeader) (int64, error) { switch h.Type { case plumbing.CommitObject, plumbing.TreeObject, plumbing.BlobObject, plumbing.TagObject: return h.Length, nil case plumbing.REFDeltaObject, plumbing.OFSDeltaObject: buf := bufPool.Get().(*bytes.Buffer) - buf.Reset() defer bufPool.Put(buf) + buf.Reset() if _, _, err := p.s.NextObject(buf); err != nil { return 0, err } - delta := buf.Bytes() - _, delta = decodeLEB128(delta) // skip src size - sz, _ := decodeLEB128(delta) - return int64(sz), nil + return p.getDeltaObjectSize(buf), nil default: return 0, ErrInvalidObject.AddDetails("type %q", h.Type) } @@ -176,10 +178,16 @@ func (p *Packfile) getObjectType(h *ObjectHeader) (typ plumbing.ObjectType, err err = ErrInvalidObject.AddDetails("type %q", h.Type) } + p.offsetToType[h.Offset] = typ + return } -func (p *Packfile) objectAtOffset(offset int64) (plumbing.EncodedObject, error) { +func (p *Packfile) objectAtOffset(offset int64, hash plumbing.Hash) (plumbing.EncodedObject, error) { + if obj, ok := p.cacheGet(hash); ok { + return obj, nil + } + h, err := p.objectHeaderAtOffset(offset) if err != nil { if err == io.EOF || isInvalid(err) { @@ -188,27 +196,54 @@ func (p *Packfile) objectAtOffset(offset int64) (plumbing.EncodedObject, error) return nil, err } + return p.getNextObject(h, hash) +} + +func (p *Packfile) getNextObject(h *ObjectHeader, hash plumbing.Hash) (plumbing.EncodedObject, error) { + var err error + // If we have no filesystem, we will return a MemoryObject instead // of an FSObject. if p.fs == nil { - return p.getNextObject(h) + return p.getNextMemoryObject(h) } - // If the object is not a delta and it's small enough then read it - // completely into memory now since it is already read from disk - // into buffer anyway. - if h.Length <= smallObjectThreshold && h.Type != plumbing.OFSDeltaObject && h.Type != plumbing.REFDeltaObject { - return p.getNextObject(h) - } + // If the object is small enough then read it completely into memory now since + // it is already read from disk into buffer anyway. For delta objects we want + // to perform the optimization too, but we have to be careful about applying + // small deltas on big objects. + var size int64 + if h.Length <= smallObjectThreshold { + if h.Type != plumbing.OFSDeltaObject && h.Type != plumbing.REFDeltaObject { + return p.getNextMemoryObject(h) + } - hash, err := p.FindHash(h.Offset) - if err != nil { - return nil, err - } + // For delta objects we read the delta data and apply the small object + // optimization only if the expanded version of the object still meets + // the small object threshold condition. + buf := bufPool.Get().(*bytes.Buffer) + defer bufPool.Put(buf) + buf.Reset() + if _, _, err := p.s.NextObject(buf); err != nil { + return nil, err + } - size, err := p.getObjectSize(h) - if err != nil { - return nil, err + size = p.getDeltaObjectSize(buf) + if size <= smallObjectThreshold { + var obj = new(plumbing.MemoryObject) + obj.SetSize(size) + if h.Type == plumbing.REFDeltaObject { + err = p.fillREFDeltaObjectContentWithBuffer(obj, h.Reference, buf) + } else { + err = p.fillOFSDeltaObjectContentWithBuffer(obj, h.OffsetReference, buf) + } + return obj, err + } + } else { + size, err = p.getObjectSize(h) + if err != nil { + return nil, err + } } typ, err := p.getObjectType(h) @@ -231,25 +266,14 @@ func (p *Packfile) objectAtOffset(offset int64) (plumbing.EncodedObject, error) } func (p *Packfile) getObjectContent(offset int64) (io.ReadCloser, error) { - ref, err := p.FindHash(offset) - if err == nil { - obj, ok := p.cacheGet(ref) - if ok { - reader, err := obj.Reader() - if err != nil { - return nil, err - } - - return reader, nil - } - } - h, err := p.objectHeaderAtOffset(offset) if err != nil { return nil, err } - obj, err := p.getNextObject(h) + // getObjectContent is called from FSObject, so we have to explicitly + // get memory object here to avoid recursive cycle + obj, err := p.getNextMemoryObject(h) if err != nil { return nil, err } @@ -257,7 +281,7 @@ func (p *Packfile) getObjectContent(offset int64) (io.ReadCloser, error) { return obj.Reader() } -func (p *Packfile) getNextObject(h *ObjectHeader) (plumbing.EncodedObject, error) { +func (p *Packfile) getNextMemoryObject(h *ObjectHeader) (plumbing.EncodedObject, error) { var obj = new(plumbing.MemoryObject) obj.SetSize(h.Length) obj.SetType(h.Type) @@ -278,6 +302,8 @@ func (p *Packfile) getNextObject(h *ObjectHeader) (plumbing.EncodedObject, error return nil, err } + p.offsetToType[h.Offset] = obj.Type() + return obj, nil } @@ -295,12 +321,19 @@ func (p *Packfile) fillRegularObjectContent(obj plumbing.EncodedObject) error { func (p *Packfile) fillREFDeltaObjectContent(obj plumbing.EncodedObject, ref plumbing.Hash) error { buf := bufPool.Get().(*bytes.Buffer) + defer bufPool.Put(buf) buf.Reset() _, _, err := p.s.NextObject(buf) if err != nil { return err } + return p.fillREFDeltaObjectContentWithBuffer(obj, ref, buf) +} + +func (p *Packfile) fillREFDeltaObjectContentWithBuffer(obj plumbing.EncodedObject, ref plumbing.Hash, buf *bytes.Buffer) error { + var err error + base, ok := p.cacheGet(ref) if !ok { base, err = p.Get(ref) @@ -312,30 +345,31 @@ func (p *Packfile) fillREFDeltaObjectContent(obj plumbing.EncodedObject, ref plu obj.SetType(base.Type()) err = ApplyDelta(obj, base, buf.Bytes()) p.cachePut(obj) - bufPool.Put(buf) return err } func (p *Packfile) fillOFSDeltaObjectContent(obj plumbing.EncodedObject, offset int64) error { - buf := bytes.NewBuffer(nil) + buf := bufPool.Get().(*bytes.Buffer) + defer bufPool.Put(buf) + buf.Reset() _, _, err := p.s.NextObject(buf) if err != nil { return err } - var base plumbing.EncodedObject - var ok bool + return p.fillOFSDeltaObjectContentWithBuffer(obj, offset, buf) +} + +func (p *Packfile) fillOFSDeltaObjectContentWithBuffer(obj plumbing.EncodedObject, offset int64, buf *bytes.Buffer) error { hash, err := p.FindHash(offset) - if err == nil { - base, ok = p.cacheGet(hash) + if err != nil { + return err } - if !ok { - base, err = p.GetByOffset(offset) - if err != nil { - return err - } + base, err := p.objectAtOffset(offset, hash) + if err != nil { + return err } obj.SetType(base.Type()) @@ -414,6 +448,11 @@ func (p *Packfile) ID() (plumbing.Hash, error) { return hash, nil } +// Scanner returns the packfile's Scanner +func (p *Packfile) Scanner() *Scanner { + return p.s +} + // Close the packfile and its resources. func (p *Packfile) Close() error { closer, ok := p.file.(io.Closer) @@ -437,14 +476,50 @@ func (i *objectIter) Next() (plumbing.EncodedObject, error) { return nil, err } - obj, err := i.p.GetByOffset(int64(e.Offset)) + if i.typ != plumbing.AnyObject { + if typ, ok := i.p.offsetToType[int64(e.Offset)]; ok { + if typ != i.typ { + continue + } + } else if obj, ok := i.p.cacheGet(e.Hash); ok { + if obj.Type() != i.typ { + i.p.offsetToType[int64(e.Offset)] = obj.Type() + continue + } + return obj, nil + } else { + h, err := i.p.objectHeaderAtOffset(int64(e.Offset)) + if err != nil { + return nil, err + } + + if h.Type == plumbing.REFDeltaObject || h.Type == plumbing.OFSDeltaObject { + typ, err := i.p.getObjectType(h) + if err != nil { + return nil, err + } + if typ != i.typ { + i.p.offsetToType[int64(e.Offset)] = typ + continue + } + // getObjectType will seek in the file so we cannot use getNextObject safely + return i.p.objectAtOffset(int64(e.Offset), e.Hash) + } else { + if h.Type != i.typ { + i.p.offsetToType[int64(e.Offset)] = h.Type + continue + } + return i.p.getNextObject(h, e.Hash) + } + } + } + + obj, err := i.p.objectAtOffset(int64(e.Offset), e.Hash) if err != nil { return nil, err } - if i.typ == plumbing.AnyObject || obj.Type() == i.typ { - return obj, nil - } + return obj, nil } } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go index 614b0d1a8b6..7b44192a9ca 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/scanner.go @@ -39,8 +39,7 @@ type ObjectHeader struct { } type Scanner struct { - r reader - zr readerResetter + r *scannerReader crc hash.Hash32 // pendingObject is used to detect if an object has been read, or still @@ -56,19 +55,27 @@ type Scanner struct { // NewScanner returns a new Scanner based on a reader, if the given reader // implements io.ReadSeeker the Scanner will be also Seekable func NewScanner(r io.Reader) *Scanner { - seeker, ok := r.(io.ReadSeeker) - if !ok { - seeker = &trackableReader{Reader: r} - } + _, ok := r.(io.ReadSeeker) crc := crc32.NewIEEE() return &Scanner{ - r: newTeeReader(newByteReadSeeker(seeker), crc), + r: newScannerReader(r, crc), crc: crc, IsSeekable: ok, } } +func (s *Scanner) Reset(r io.Reader) { + _, ok := r.(io.ReadSeeker) + + s.r.Reset(r) + s.crc.Reset() + s.IsSeekable = ok + s.pendingObject = nil + s.version = 0 + s.objects = 0 +} + // Header reads the whole packfile header (signature, version and object count). // It returns the version and the object count and performs checks on the // validity of the signature and the version fields. @@ -182,8 +189,7 @@ func (s *Scanner) NextObjectHeader() (*ObjectHeader, error) { // nextObjectHeader returns the ObjectHeader for the next object in the reader // without the Offset field func (s *Scanner) nextObjectHeader() (*ObjectHeader, error) { - defer s.Flush() - + s.r.Flush() s.crc.Reset() h := &ObjectHeader{} @@ -304,35 +310,29 @@ func (s *Scanner) readLength(first byte) (int64, error) { // NextObject writes the content of the next object into the reader, returns // the number of bytes written, the CRC32 of the content and an error, if any func (s *Scanner) NextObject(w io.Writer) (written int64, crc32 uint32, err error) { - defer s.crc.Reset() - s.pendingObject = nil written, err = s.copyObject(w) - s.Flush() + + s.r.Flush() crc32 = s.crc.Sum32() + s.crc.Reset() + return } // ReadRegularObject reads and write a non-deltified object // from it zlib stream in an object entry in the packfile. func (s *Scanner) copyObject(w io.Writer) (n int64, err error) { - if s.zr == nil { - var zr io.ReadCloser - zr, err = zlib.NewReader(s.r) - if err != nil { - return 0, fmt.Errorf("zlib initialization error: %s", err) - } + zr := zlibReaderPool.Get().(io.ReadCloser) + defer zlibReaderPool.Put(zr) - s.zr = zr.(readerResetter) - } else { - if err = s.zr.Reset(s.r, nil); err != nil { - return 0, fmt.Errorf("zlib reset error: %s", err) - } + if err = zr.(zlib.Resetter).Reset(s.r, nil); err != nil { + return 0, fmt.Errorf("zlib reset error: %s", err) } - defer ioutil.CheckClose(s.zr, &err) + defer ioutil.CheckClose(zr, &err) buf := byteSlicePool.Get().([]byte) - n, err = io.CopyBuffer(w, s.zr, buf) + n, err = io.CopyBuffer(w, zr, buf) byteSlicePool.Put(buf) return } @@ -378,110 +378,89 @@ func (s *Scanner) Close() error { return err } -// Flush finishes writing the buffer to crc hasher in case we are using -// a teeReader. Otherwise it is a no-op. +// Flush is a no-op (deprecated) func (s *Scanner) Flush() error { - tee, ok := s.r.(*teeReader) - if ok { - return tee.Flush() - } return nil } -type trackableReader struct { - count int64 - io.Reader +// scannerReader has the following characteristics: +// - Provides an io.SeekReader impl for bufio.Reader, when the underlying +// reader supports it. +// - Keeps track of the current read position, for when the underlying reader +// isn't an io.SeekReader, but we still want to know the current offset. +// - Writes to the hash writer what it reads, with the aid of a smaller buffer. +// The buffer helps avoid a performance penality for performing small writes +// to the crc32 hash writer. +type scannerReader struct { + reader io.Reader + crc io.Writer + rbuf *bufio.Reader + wbuf *bufio.Writer + offset int64 } -// Read reads up to len(p) bytes into p. -func (r *trackableReader) Read(p []byte) (n int, err error) { - n, err = r.Reader.Read(p) - r.count += int64(n) - - return -} - -// Seek only supports io.SeekCurrent, any other operation fails -func (r *trackableReader) Seek(offset int64, whence int) (int64, error) { - if whence != io.SeekCurrent { - return -1, ErrSeekNotSupported +func newScannerReader(r io.Reader, h io.Writer) *scannerReader { + sr := &scannerReader{ + rbuf: bufio.NewReader(nil), + wbuf: bufio.NewWriterSize(nil, 64), + crc: h, } + sr.Reset(r) - return r.count, nil + return sr } -func newByteReadSeeker(r io.ReadSeeker) *bufferedSeeker { - return &bufferedSeeker{ - r: r, - Reader: *bufio.NewReader(r), - } -} +func (r *scannerReader) Reset(reader io.Reader) { + r.reader = reader + r.rbuf.Reset(r.reader) + r.wbuf.Reset(r.crc) -type bufferedSeeker struct { - r io.ReadSeeker - bufio.Reader -} - -func (r *bufferedSeeker) Seek(offset int64, whence int) (int64, error) { - if whence == io.SeekCurrent && offset == 0 { - current, err := r.r.Seek(offset, whence) - if err != nil { - return current, err - } - - return current - int64(r.Buffered()), nil + r.offset = 0 + if seeker, ok := r.reader.(io.ReadSeeker); ok { + r.offset, _ = seeker.Seek(0, io.SeekCurrent) } - - defer r.Reader.Reset(r.r) - return r.r.Seek(offset, whence) } -type readerResetter interface { - io.ReadCloser - zlib.Resetter -} +func (r *scannerReader) Read(p []byte) (n int, err error) { + n, err = r.rbuf.Read(p) -type reader interface { - io.Reader - io.ByteReader - io.Seeker + r.offset += int64(n) + if _, err := r.wbuf.Write(p[:n]); err != nil { + return n, err + } + return } -type teeReader struct { - reader - w hash.Hash32 - bufWriter *bufio.Writer +func (r *scannerReader) ReadByte() (b byte, err error) { + b, err = r.rbuf.ReadByte() + if err == nil { + r.offset++ + return b, r.wbuf.WriteByte(b) + } + return } -func newTeeReader(r reader, h hash.Hash32) *teeReader { - return &teeReader{ - reader: r, - w: h, - bufWriter: bufio.NewWriter(h), - } +func (r *scannerReader) Flush() error { + return r.wbuf.Flush() } -func (r *teeReader) Read(p []byte) (n int, err error) { - r.Flush() +// Seek seeks to a location. If the underlying reader is not an io.ReadSeeker, +// then only whence=io.SeekCurrent is supported, any other operation fails. +func (r *scannerReader) Seek(offset int64, whence int) (int64, error) { + var err error - n, err = r.reader.Read(p) - if n > 0 { - if n, err := r.w.Write(p[:n]); err != nil { - return n, err + if seeker, ok := r.reader.(io.ReadSeeker); !ok { + if whence != io.SeekCurrent || offset != 0 { + return -1, ErrSeekNotSupported + } + } else { + if whence == io.SeekCurrent && offset == 0 { + return r.offset, nil } - } - return -} -func (r *teeReader) ReadByte() (b byte, err error) { - b, err = r.reader.ReadByte() - if err == nil { - return b, r.bufWriter.WriteByte(b) + r.offset, err = seeker.Seek(offset, whence) + r.rbuf.Reset(r.reader) } - return -} - -func (r *teeReader) Flush() (err error) { - return r.bufWriter.Flush() + return r.offset, err } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go index b569d3ce2db..6b509340501 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit.go @@ -171,7 +171,9 @@ func (c *Commit) Decode(o plumbing.EncodedObject) (err error) { } defer ioutil.CheckClose(reader, &err) - r := bufio.NewReader(reader) + r := bufPool.Get().(*bufio.Reader) + defer bufPool.Put(r) + r.Reset(reader) var message bool var pgpsig bool @@ -233,6 +235,11 @@ func (b *Commit) Encode(o plumbing.EncodedObject) error { return b.encode(o, true) } +// EncodeWithoutSignature export a Commit into a plumbing.EncodedObject without the signature (correspond to the payload of the PGP signature). +func (b *Commit) EncodeWithoutSignature(o plumbing.EncodedObject) error { + return b.encode(o, false) +} + func (b *Commit) encode(o plumbing.EncodedObject, includeSig bool) (err error) { o.SetType(plumbing.CommitObject) w, err := o.Writer() @@ -347,7 +354,7 @@ func (c *Commit) Verify(armoredKeyRing string) (*openpgp.Entity, error) { encoded := &plumbing.MemoryObject{} // Encode commit components, excluding signature and get a reader object. - if err := c.encode(encoded, false); err != nil { + if err := c.EncodeWithoutSignature(encoded); err != nil { return nil, err } er, err := encoded.Reader() diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go new file mode 100644 index 00000000000..b12523d4896 --- /dev/null +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/commit_walker_bfs_filtered.go @@ -0,0 +1,176 @@ +package object + +import ( + "io" + + "gopkg.in/src-d/go-git.v4/plumbing" + "gopkg.in/src-d/go-git.v4/plumbing/storer" +) + +// NewFilterCommitIter returns a CommitIter that walks the commit history, +// starting at the passed commit and visiting its parents in Breadth-first order. +// The commits returned by the CommitIter will validate the passed CommitFilter. +// The history won't be transversed beyond a commit if isLimit is true for it. +// Each commit will be visited only once. +// If the commit history can not be traversed, or the Close() method is called, +// the CommitIter won't return more commits. +// If no isValid is passed, all ancestors of from commit will be valid. +// If no isLimit is limmit, all ancestors of all commits will be visited. +func NewFilterCommitIter( + from *Commit, + isValid *CommitFilter, + isLimit *CommitFilter, +) CommitIter { + var validFilter CommitFilter + if isValid == nil { + validFilter = func(_ *Commit) bool { + return true + } + } else { + validFilter = *isValid + } + + var limitFilter CommitFilter + if isLimit == nil { + limitFilter = func(_ *Commit) bool { + return false + } + } else { + limitFilter = *isLimit + } + + return &filterCommitIter{ + isValid: validFilter, + isLimit: limitFilter, + visited: map[plumbing.Hash]struct{}{}, + queue: []*Commit{from}, + } +} + +// CommitFilter returns a boolean for the passed Commit +type CommitFilter func(*Commit) bool + +// filterCommitIter implments CommitIter +type filterCommitIter struct { + isValid CommitFilter + isLimit CommitFilter + visited map[plumbing.Hash]struct{} + queue []*Commit + lastErr error +} + +// Next returns the next commit of the CommitIter. +// It will return io.EOF if there are no more commits to visit, +// or an error if the history could not be traversed. +func (w *filterCommitIter) Next() (*Commit, error) { + var commit *Commit + var err error + for { + commit, err = w.popNewFromQueue() + if err != nil { + return nil, w.close(err) + } + + w.visited[commit.Hash] = struct{}{} + + if !w.isLimit(commit) { + err = w.addToQueue(commit.s, commit.ParentHashes...) + if err != nil { + return nil, w.close(err) + } + } + + if w.isValid(commit) { + return commit, nil + } + } +} + +// ForEach runs the passed callback over each Commit returned by the CommitIter +// until the callback returns an error or there is no more commits to traverse. +func (w *filterCommitIter) ForEach(cb func(*Commit) error) error { + for { + commit, err := w.Next() + if err == io.EOF { + break + } + + if err != nil { + return err + } + + if err := cb(commit); err == storer.ErrStop { + break + } else if err != nil { + return err + } + } + + return nil +} + +// Error returns the error that caused that the CommitIter is no longer returning commits +func (w *filterCommitIter) Error() error { + return w.lastErr +} + +// Close closes the CommitIter +func (w *filterCommitIter) Close() { + w.visited = map[plumbing.Hash]struct{}{} + w.queue = []*Commit{} + w.isLimit = nil + w.isValid = nil +} + +// close closes the CommitIter with an error +func (w *filterCommitIter) close(err error) error { + w.Close() + w.lastErr = err + return err +} + +// popNewFromQueue returns the first new commit from the internal fifo queue, +// or an io.EOF error if the queue is empty +func (w *filterCommitIter) popNewFromQueue() (*Commit, error) { + var first *Commit + for { + if len(w.queue) == 0 { + if w.lastErr != nil { + return nil, w.lastErr + } + + return nil, io.EOF + } + + first = w.queue[0] + w.queue = w.queue[1:] + if _, ok := w.visited[first.Hash]; ok { + continue + } + + return first, nil + } +} + +// addToQueue adds the passed commits to the internal fifo queue if they weren't seen +// or returns an error if the passed hashes could not be used to get valid commits +func (w *filterCommitIter) addToQueue( + store storer.EncodedObjectStorer, + hashes ...plumbing.Hash, +) error { + for _, hash := range hashes { + if _, ok := w.visited[hash]; ok { + continue + } + + commit, err := GetCommit(store, hash) + if err != nil { + return err + } + + w.queue = append(w.queue, commit) + } + + return nil +} + diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go new file mode 100644 index 00000000000..3591f5f0a60 --- /dev/null +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/common.go @@ -0,0 +1,12 @@ +package object + +import ( + "bufio" + "sync" +) + +var bufPool = sync.Pool{ + New: func() interface{} { + return bufio.NewReader(nil) + }, +} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go new file mode 100644 index 00000000000..6f2568dbc85 --- /dev/null +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/merge_base.go @@ -0,0 +1,210 @@ +package object + +import ( + "fmt" + "sort" + + "gopkg.in/src-d/go-git.v4/plumbing" + "gopkg.in/src-d/go-git.v4/plumbing/storer" +) + +// errIsReachable is thrown when first commit is an ancestor of the second +var errIsReachable = fmt.Errorf("first is reachable from second") + +// MergeBase mimics the behavior of `git merge-base actual other`, returning the +// best common ancestor between the actual and the passed one. +// The best common ancestors can not be reached from other common ancestors. +func (c *Commit) MergeBase(other *Commit) ([]*Commit, error) { + // use sortedByCommitDateDesc strategy + sorted := sortByCommitDateDesc(c, other) + newer := sorted[0] + older := sorted[1] + + newerHistory, err := ancestorsIndex(older, newer) + if err == errIsReachable { + return []*Commit{older}, nil + } + + if err != nil { + return nil, err + } + + var res []*Commit + inNewerHistory := isInIndexCommitFilter(newerHistory) + resIter := NewFilterCommitIter(older, &inNewerHistory, &inNewerHistory) + _ = resIter.ForEach(func(commit *Commit) error { + res = append(res, commit) + return nil + }) + + return Independents(res) +} + +// IsAncestor returns true if the actual commit is ancestor of the passed one. +// It returns an error if the history is not transversable +// It mimics the behavior of `git merge --is-ancestor actual other` +func (c *Commit) IsAncestor(other *Commit) (bool, error) { + found := false + iter := NewCommitPreorderIter(other, nil, nil) + err := iter.ForEach(func(comm *Commit) error { + if comm.Hash != c.Hash { + return nil + } + + found = true + return storer.ErrStop + }) + + return found, err +} + +// ancestorsIndex returns a map with the ancestors of the starting commit if the +// excluded one is not one of them. It returns errIsReachable if the excluded commit +// is ancestor of the starting, or another error if the history is not traversable. +func ancestorsIndex(excluded, starting *Commit) (map[plumbing.Hash]struct{}, error) { + if excluded.Hash.String() == starting.Hash.String() { + return nil, errIsReachable + } + + startingHistory := map[plumbing.Hash]struct{}{} + startingIter := NewCommitIterBSF(starting, nil, nil) + err := startingIter.ForEach(func(commit *Commit) error { + if commit.Hash == excluded.Hash { + return errIsReachable + } + + startingHistory[commit.Hash] = struct{}{} + return nil + }) + + if err != nil { + return nil, err + } + + return startingHistory, nil +} + +// Independents returns a subset of the passed commits, that are not reachable the others +// It mimics the behavior of `git merge-base --independent commit...`. +func Independents(commits []*Commit) ([]*Commit, error) { + // use sortedByCommitDateDesc strategy + candidates := sortByCommitDateDesc(commits...) + candidates = removeDuplicated(candidates) + + seen := map[plumbing.Hash]struct{}{} + var isLimit CommitFilter = func(commit *Commit) bool { + _, ok := seen[commit.Hash] + return ok + } + + if len(candidates) < 2 { + return candidates, nil + } + + pos := 0 + for { + from := candidates[pos] + others := remove(candidates, from) + fromHistoryIter := NewFilterCommitIter(from, nil, &isLimit) + err := fromHistoryIter.ForEach(func(fromAncestor *Commit) error { + for _, other := range others { + if fromAncestor.Hash == other.Hash { + candidates = remove(candidates, other) + others = remove(others, other) + } + } + + if len(candidates) == 1 { + return storer.ErrStop + } + + seen[fromAncestor.Hash] = struct{}{} + return nil + }) + + if err != nil { + return nil, err + } + + nextPos := indexOf(candidates, from) + 1 + if nextPos >= len(candidates) { + break + } + + pos = nextPos + } + + return candidates, nil +} + +// sortByCommitDateDesc returns the passed commits, sorted by `committer.When desc` +// +// Following this strategy, it is tried to reduce the time needed when walking +// the history from one commit to reach the others. It is assumed that ancestors +// use to be committed before its descendant; +// That way `Independents(A^, A)` will be processed as being `Independents(A, A^)`; +// so starting by `A` it will be reached `A^` way sooner than walking from `A^` +// to the initial commit, and then from `A` to `A^`. +func sortByCommitDateDesc(commits ...*Commit) []*Commit { + sorted := make([]*Commit, len(commits)) + copy(sorted, commits) + sort.Slice(sorted, func(i, j int) bool { + return sorted[i].Committer.When.After(sorted[j].Committer.When) + }) + + return sorted +} + +// indexOf returns the first position where target was found in the passed commits +func indexOf(commits []*Commit, target *Commit) int { + for i, commit := range commits { + if target.Hash == commit.Hash { + return i + } + } + + return -1 +} + +// remove returns the passed commits excluding the commit toDelete +func remove(commits []*Commit, toDelete *Commit) []*Commit { + res := make([]*Commit, len(commits)) + j := 0 + for _, commit := range commits { + if commit.Hash == toDelete.Hash { + continue + } + + res[j] = commit + j++ + } + + return res[:j] +} + +// removeDuplicated removes duplicated commits from the passed slice of commits +func removeDuplicated(commits []*Commit) []*Commit { + seen := make(map[plumbing.Hash]struct{}, len(commits)) + res := make([]*Commit, len(commits)) + j := 0 + for _, commit := range commits { + if _, ok := seen[commit.Hash]; ok { + continue + } + + seen[commit.Hash] = struct{}{} + res[j] = commit + j++ + } + + return res[:j] +} + +// isInIndexCommitFilter returns a commitFilter that returns true +// if the commit is in the passed index. +func isInIndexCommitFilter(index map[plumbing.Hash]struct{}) CommitFilter { + return func(c *Commit) bool { + _, ok := index[c.Hash] + return ok + } +} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go index 068589eff8e..32454ac48d6 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/patch.go @@ -278,7 +278,7 @@ func printStat(fileStats []FileStat) string { var scaleFactor float64 if longestTotalChange > heightOfHistogram { // Scale down to heightOfHistogram. - scaleFactor = float64(longestTotalChange / heightOfHistogram) + scaleFactor = longestTotalChange / heightOfHistogram } else { scaleFactor = 1.0 } @@ -321,6 +321,10 @@ func getFileStatsFromFilePatches(filePatches []fdiff.FilePatch) FileStats { for _, chunk := range fp.Chunks() { s := chunk.Content() + if len(s) == 0 { + continue + } + switch chunk.Type() { case fdiff.Add: cs.Addition += strings.Count(s, "\n") diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go index 03749f9a406..9ee550925dd 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tag.go @@ -93,7 +93,9 @@ func (t *Tag) Decode(o plumbing.EncodedObject) (err error) { } defer ioutil.CheckClose(reader, &err) - r := bufio.NewReader(reader) + r := bufPool.Get().(*bufio.Reader) + defer bufPool.Put(r) + r.Reset(reader) for { var line []byte line, err = r.ReadBytes('\n') @@ -141,7 +143,7 @@ func (t *Tag) Decode(o plumbing.EncodedObject) (err error) { if pgpsig { if bytes.Contains(l, []byte(endpgp)) { t.PGPSignature += endpgp + "\n" - pgpsig = false + break } else { t.PGPSignature += string(l) + "\n" } @@ -169,6 +171,11 @@ func (t *Tag) Encode(o plumbing.EncodedObject) error { return t.encode(o, true) } +// EncodeWithoutSignature export a Tag into a plumbing.EncodedObject without the signature (correspond to the payload of the PGP signature). +func (t *Tag) EncodeWithoutSignature(o plumbing.EncodedObject) error { + return t.encode(o, false) +} + func (t *Tag) encode(o plumbing.EncodedObject, includeSig bool) (err error) { o.SetType(plumbing.TagObject) w, err := o.Writer() @@ -289,7 +296,7 @@ func (t *Tag) Verify(armoredKeyRing string) (*openpgp.Entity, error) { encoded := &plumbing.MemoryObject{} // Encode tag components, excluding signature and get a reader object. - if err := t.encode(encoded, false); err != nil { + if err := t.EncodeWithoutSignature(encoded); err != nil { return nil, err } er, err := encoded.Reader() diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go index 1f9ea2651c5..d0b4fff15c6 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/object/tree.go @@ -230,7 +230,9 @@ func (t *Tree) Decode(o plumbing.EncodedObject) (err error) { } defer ioutil.CheckClose(reader, &err) - r := bufio.NewReader(reader) + r := bufPool.Get().(*bufio.Reader) + defer bufPool.Put(r) + r.Reset(reader) for { str, err := r.ReadString(' ') if err != nil { @@ -286,7 +288,7 @@ func (t *Tree) Encode(o plumbing.EncodedObject) (err error) { return err } - if _, err = w.Write([]byte(entry.Hash[:])); err != nil { + if _, err = w.Write(entry.Hash[:]); err != nil { return err } } @@ -383,7 +385,7 @@ func NewTreeWalker(t *Tree, recursive bool, seen map[plumbing.Hash]bool) *TreeWa // underlying repository will be skipped automatically. It is possible that this // may change in future versions. func (w *TreeWalker) Next() (name string, entry TreeEntry, err error) { - var obj Object + var obj *Tree for { current := len(w.stack) - 1 if current < 0 { @@ -403,7 +405,7 @@ func (w *TreeWalker) Next() (name string, entry TreeEntry, err error) { // Finished with the current tree, move back up to the parent w.stack = w.stack[:current] w.base, _ = path.Split(w.base) - w.base = path.Clean(w.base) // Remove trailing slash + w.base = strings.TrimSuffix(w.base, "/") continue } @@ -419,7 +421,7 @@ func (w *TreeWalker) Next() (name string, entry TreeEntry, err error) { obj, err = GetTree(w.s, entry.Hash) } - name = path.Join(w.base, entry.Name) + name = simpleJoin(w.base, entry.Name) if err != nil { err = io.EOF @@ -433,9 +435,9 @@ func (w *TreeWalker) Next() (name string, entry TreeEntry, err error) { return } - if t, ok := obj.(*Tree); ok { - w.stack = append(w.stack, &treeEntryIter{t, 0}) - w.base = path.Join(w.base, entry.Name) + if obj != nil { + w.stack = append(w.stack, &treeEntryIter{obj, 0}) + w.base = simpleJoin(w.base, entry.Name) } return @@ -509,3 +511,10 @@ func (iter *TreeIter) ForEach(cb func(*Tree) error) error { return cb(t) }) } + +func simpleJoin(parent, child string) string { + if len(parent) > 0 { + return parent + "/" + child + } + return child +} diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go index 684e76a56e7..487ee19bd8d 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/advrefs.go @@ -107,7 +107,7 @@ func (a *AdvRefs) resolveHead(s storer.ReferenceStorer) error { return nil } - ref, err := s.Reference(plumbing.ReferenceName(plumbing.Master)) + ref, err := s.Reference(plumbing.Master) // check first if HEAD is pointing to master if err == nil { diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq_decode.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq_decode.go index c15d49cfb75..51e8183d1fd 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq_decode.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/updreq_decode.go @@ -225,7 +225,7 @@ func parseCommand(b []byte) (*Command, error) { return nil, errInvalidNewObjId(err) } - return &Command{Old: oh, New: nh, Name: plumbing.ReferenceName(n)}, nil + return &Command{Old: oh, New: nh, Name: n}, nil } func parseHash(s string) (plumbing.Hash, error) { diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/common.go index 5d3535e8229..38e903d4566 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/common.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/http/common.go @@ -139,7 +139,7 @@ func (s *session) ApplyAuthToRequest(req *http.Request) { return } - s.auth.setAuth(req) + s.auth.SetAuth(req) } func (s *session) ModifyEndpointIfRedirect(res *http.Response) { @@ -175,7 +175,7 @@ func (*session) Close() error { // AuthMethod is concrete implementation of common.AuthMethod for HTTP services type AuthMethod interface { transport.AuthMethod - setAuth(r *http.Request) + SetAuth(r *http.Request) } func basicAuthFromEndpoint(ep *transport.Endpoint) *BasicAuth { @@ -192,7 +192,7 @@ type BasicAuth struct { Username, Password string } -func (a *BasicAuth) setAuth(r *http.Request) { +func (a *BasicAuth) SetAuth(r *http.Request) { if a == nil { return } @@ -226,7 +226,7 @@ type TokenAuth struct { Token string } -func (a *TokenAuth) setAuth(r *http.Request) { +func (a *TokenAuth) SetAuth(r *http.Request) { if a == nil { return } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/server/server.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/server/server.go index 20bd12e211e..8e0dcc1192e 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/server/server.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/server/server.go @@ -286,11 +286,6 @@ func (s *rpSession) updateReferences(req *packp.ReferenceUpdateRequest) { continue } - if err != nil { - s.setStatus(cmd.Name, err) - continue - } - ref := plumbing.NewHashReference(cmd.Name, cmd.New) err := s.storer.SetReference(ref) s.setStatus(cmd.Name, err) diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/auth_method.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/auth_method.go index dbb47c56bbe..1e5c38375e9 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/auth_method.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/auth_method.go @@ -61,7 +61,7 @@ func (a *KeyboardInteractive) ClientConfig() (*ssh.ClientConfig, error) { return a.SetHostKeyCallback(&ssh.ClientConfig{ User: a.User, Auth: []ssh.AuthMethod{ - ssh.KeyboardInteractiveChallenge(a.Challenge), + a.Challenge, }, }) } diff --git a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/common.go b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/common.go index e4a3d18fd2a..d320d433867 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/common.go +++ b/vendor/gopkg.in/src-d/go-git.v4/plumbing/transport/ssh/common.go @@ -2,6 +2,7 @@ package ssh import ( + "context" "fmt" "reflect" "strconv" @@ -11,6 +12,7 @@ import ( "github.com/kevinburke/ssh_config" "golang.org/x/crypto/ssh" + "golang.org/x/net/proxy" ) // DefaultClient is the default SSH client. @@ -115,7 +117,7 @@ func (c *command) connect() error { overrideConfig(c.config, config) - c.client, err = ssh.Dial("tcp", c.getHostWithPort(), config) + c.client, err = dial("tcp", c.getHostWithPort(), config) if err != nil { return err } @@ -130,6 +132,29 @@ func (c *command) connect() error { return nil } +func dial(network, addr string, config *ssh.ClientConfig) (*ssh.Client, error) { + var ( + ctx = context.Background() + cancel context.CancelFunc + ) + if config.Timeout > 0 { + ctx, cancel = context.WithTimeout(ctx, config.Timeout) + } else { + ctx, cancel = context.WithCancel(ctx) + } + defer cancel() + + conn, err := proxy.Dial(ctx, network, addr) + if err != nil { + return nil, err + } + c, chans, reqs, err := ssh.NewClientConn(conn, addr, config) + if err != nil { + return nil, err + } + return ssh.NewClient(c, chans, reqs), nil +} + func (c *command) getHostWithPort() string { if addr, found := c.doGetHostWithPortFromSSHConfig(); found { return addr diff --git a/vendor/gopkg.in/src-d/go-git.v4/remote.go b/vendor/gopkg.in/src-d/go-git.v4/remote.go index 80604092ab1..baee7a08267 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/remote.go +++ b/vendor/gopkg.in/src-d/go-git.v4/remote.go @@ -45,7 +45,10 @@ type Remote struct { s storage.Storer } -func newRemote(s storage.Storer, c *config.RemoteConfig) *Remote { +// NewRemote creates a new Remote. +// The intended purpose is to use the Remote for tasks such as listing remote references (like using git ls-remote). +// Otherwise Remotes should be created via the use of a Repository. +func NewRemote(s storage.Storer, c *config.RemoteConfig) *Remote { return &Remote{s: s, c: c} } @@ -168,7 +171,17 @@ func (r *Remote) PushContext(ctx context.Context, o *PushOptions) (err error) { } } - rs, err := pushHashes(ctx, s, r.s, req, hashesToPush, r.useRefDeltas(ar)) + if len(hashesToPush) == 0 { + allDelete = true + for _, command := range req.Commands { + if command.Action() != packp.Delete { + allDelete = false + break + } + } + } + + rs, err := pushHashes(ctx, s, r.s, req, hashesToPush, r.useRefDeltas(ar), allDelete) if err != nil { return err } @@ -201,7 +214,7 @@ func (r *Remote) newReferenceUpdateRequest( } } - if err := r.addReferencesToUpdate(o.RefSpecs, localRefs, remoteRefs, req); err != nil { + if err := r.addReferencesToUpdate(o.RefSpecs, localRefs, remoteRefs, req, o.Prune); err != nil { return nil, err } @@ -389,6 +402,7 @@ func (r *Remote) addReferencesToUpdate( localRefs []*plumbing.Reference, remoteRefs storer.ReferenceStorer, req *packp.ReferenceUpdateRequest, + prune bool, ) error { // This references dictionary will be used to search references by name. refsDict := make(map[string]*plumbing.Reference) @@ -398,7 +412,7 @@ func (r *Remote) addReferencesToUpdate( for _, rs := range refspecs { if rs.IsDelete() { - if err := r.deleteReferences(rs, remoteRefs, req); err != nil { + if err := r.deleteReferences(rs, remoteRefs, refsDict, req, false); err != nil { return err } } else { @@ -406,6 +420,12 @@ func (r *Remote) addReferencesToUpdate( if err != nil { return err } + + if prune { + if err := r.deleteReferences(rs, remoteRefs, refsDict, req, true); err != nil { + return err + } + } } } @@ -441,7 +461,10 @@ func (r *Remote) addOrUpdateReferences( } func (r *Remote) deleteReferences(rs config.RefSpec, - remoteRefs storer.ReferenceStorer, req *packp.ReferenceUpdateRequest) error { + remoteRefs storer.ReferenceStorer, + refsDict map[string]*plumbing.Reference, + req *packp.ReferenceUpdateRequest, + prune bool) error { iter, err := remoteRefs.IterReferences() if err != nil { return err @@ -452,8 +475,19 @@ func (r *Remote) deleteReferences(rs config.RefSpec, return nil } - if rs.Dst("") != ref.Name() { - return nil + if prune { + rs := rs.Reverse() + if !rs.Match(ref.Name()) { + return nil + } + + if _, ok := refsDict[rs.Dst(ref.Name()).String()]; ok { + return nil + } + } else { + if rs.Dst("") != ref.Name() { + return nil + } } cmd := &packp.Command{ @@ -903,7 +937,7 @@ func (r *Remote) updateLocalReferenceStorage( updated = true } - if err == nil && forceNeeded { + if forceNeeded { err = ErrForceNeeded } @@ -1012,10 +1046,11 @@ func pushHashes( req *packp.ReferenceUpdateRequest, hs []plumbing.Hash, useRefDeltas bool, + allDelete bool, ) (*packp.ReportStatus, error) { rd, wr := io.Pipe() - req.Packfile = rd + config, err := s.Config() if err != nil { return nil, err @@ -1026,15 +1061,20 @@ func pushHashes( // to the channel. done := make(chan error, 1) - go func() { - e := packfile.NewEncoder(wr, s, useRefDeltas) - if _, err := e.Encode(hs, config.Pack.Window); err != nil { - done <- wr.CloseWithError(err) - return - } + if !allDelete { + req.Packfile = rd + go func() { + e := packfile.NewEncoder(wr, s, useRefDeltas) + if _, err := e.Encode(hs, config.Pack.Window); err != nil { + done <- wr.CloseWithError(err) + return + } - done <- wr.Close() - }() + done <- wr.Close() + }() + } else { + close(done) + } rs, err := sess.ReceivePack(ctx, req) if err != nil { diff --git a/vendor/gopkg.in/src-d/go-git.v4/repository.go b/vendor/gopkg.in/src-d/go-git.v4/repository.go index e5b12b0c52f..2251d6cfe27 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/repository.go +++ b/vendor/gopkg.in/src-d/go-git.v4/repository.go @@ -451,7 +451,7 @@ func (r *Repository) Remote(name string) (*Remote, error) { return nil, ErrRemoteNotFound } - return newRemote(r.Storer, c), nil + return NewRemote(r.Storer, c), nil } // Remotes returns a list with all the remotes @@ -465,7 +465,7 @@ func (r *Repository) Remotes() ([]*Remote, error) { var i int for _, c := range cfg.Remotes { - remotes[i] = newRemote(r.Storer, c) + remotes[i] = NewRemote(r.Storer, c) i++ } @@ -478,7 +478,7 @@ func (r *Repository) CreateRemote(c *config.RemoteConfig) (*Remote, error) { return nil, err } - remote := newRemote(r.Storer, c) + remote := NewRemote(r.Storer, c) cfg, err := r.Storer.Config() if err != nil { @@ -504,7 +504,7 @@ func (r *Repository) CreateRemoteAnonymous(c *config.RemoteConfig) (*Remote, err return nil, ErrAnonymousRemoteName } - remote := newRemote(r.Storer, c) + remote := NewRemote(r.Storer, c) return remote, nil } @@ -1306,16 +1306,6 @@ func (r *Repository) Worktree() (*Worktree, error) { return &Worktree{r: r, Filesystem: r.wt}, nil } -func countTrue(vals ...bool) int { - sum := 0 - for _, v := range vals { - if v { - sum++ - } - } - return sum -} - // ResolveRevision resolves revision to corresponding hash. It will always // resolve to a commit hash, not a tree or annotated tag. // @@ -1336,54 +1326,57 @@ func (r *Repository) ResolveRevision(rev plumbing.Revision) (*plumbing.Hash, err switch item.(type) { case revision.Ref: revisionRef := item.(revision.Ref) - var ref *plumbing.Reference - var hashCommit, refCommit, tagCommit *object.Commit - var rErr, hErr, tErr error + + var tryHashes []plumbing.Hash + + maybeHash := plumbing.NewHash(string(revisionRef)) + + if !maybeHash.IsZero() { + tryHashes = append(tryHashes, maybeHash) + } for _, rule := range append([]string{"%s"}, plumbing.RefRevParseRules...) { - ref, err = storer.ResolveReference(r.Storer, plumbing.ReferenceName(fmt.Sprintf(rule, revisionRef))) + ref, err := storer.ResolveReference(r.Storer, plumbing.ReferenceName(fmt.Sprintf(rule, revisionRef))) if err == nil { + tryHashes = append(tryHashes, ref.Hash()) break } } - if ref != nil { - tag, tObjErr := r.TagObject(ref.Hash()) - if tObjErr != nil { - tErr = tObjErr - } else { - tagCommit, tErr = tag.Commit() + // in ambiguous cases, `git rev-parse` will emit a warning, but + // will always return the oid in preference to a ref; we don't have + // the ability to emit a warning here, so (for speed purposes) + // don't bother to detect the ambiguity either, just return in the + // priority that git would. + gotOne := false + for _, hash := range tryHashes { + commitObj, err := r.CommitObject(hash) + if err == nil { + commit = commitObj + gotOne = true + break } - refCommit, rErr = r.CommitObject(ref.Hash()) - } else { - rErr = plumbing.ErrReferenceNotFound - tErr = plumbing.ErrReferenceNotFound - } - maybeHash := plumbing.NewHash(string(revisionRef)).String() == string(revisionRef) - if maybeHash { - hashCommit, hErr = r.CommitObject(plumbing.NewHash(string(revisionRef))) - } else { - hErr = plumbing.ErrReferenceNotFound + tagObj, err := r.TagObject(hash) + if err == nil { + // If the tag target lookup fails here, this most likely + // represents some sort of repo corruption, so let the + // error bubble up. + tagCommit, err := tagObj.Commit() + if err != nil { + return &plumbing.ZeroHash, err + } + commit = tagCommit + gotOne = true + break + } } - isTag := tErr == nil - isCommit := rErr == nil - isHash := hErr == nil - - switch { - case countTrue(isTag, isCommit, isHash) > 1: - return &plumbing.ZeroHash, fmt.Errorf(`refname "%s" is ambiguous`, revisionRef) - case isTag: - commit = tagCommit - case isCommit: - commit = refCommit - case isHash: - commit = hashCommit - default: + if !gotOne { return &plumbing.ZeroHash, plumbing.ErrReferenceNotFound } + case revision.CaretPath: depth := item.(revision.CaretPath).Depth diff --git a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit.go b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit.go index ba9667e65e2..111769bf210 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit.go +++ b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/dotgit/dotgit.go @@ -83,7 +83,7 @@ type DotGit struct { packList []plumbing.Hash packMap map[plumbing.Hash]struct{} - files map[string]billy.File + files map[plumbing.Hash]billy.File } // New returns a DotGit value ready to be used. The path argument must @@ -245,8 +245,15 @@ func (d *DotGit) objectPackPath(hash plumbing.Hash, extension string) string { } func (d *DotGit) objectPackOpen(hash plumbing.Hash, extension string) (billy.File, error) { - if d.files == nil { - d.files = make(map[string]billy.File) + if d.options.KeepDescriptors && extension == "pack" { + if d.files == nil { + d.files = make(map[plumbing.Hash]billy.File) + } + + f, ok := d.files[hash] + if ok { + return f, nil + } } err := d.hasPack(hash) @@ -255,11 +262,6 @@ func (d *DotGit) objectPackOpen(hash plumbing.Hash, extension string) (billy.Fil } path := d.objectPackPath(hash, extension) - f, ok := d.files[path] - if ok { - return f, nil - } - pack, err := d.fs.Open(path) if err != nil { if os.IsNotExist(err) { @@ -270,7 +272,7 @@ func (d *DotGit) objectPackOpen(hash plumbing.Hash, extension string) (billy.Fil } if d.options.KeepDescriptors && extension == "pack" { - d.files[path] = pack + d.files[hash] = pack } return pack, nil diff --git a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/index.go b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/index.go index 2ebf57e6109..be800eff3bd 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/index.go +++ b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/index.go @@ -1,6 +1,7 @@ package filesystem import ( + "bufio" "os" "gopkg.in/src-d/go-git.v4/plumbing/format/index" @@ -19,8 +20,14 @@ func (s *IndexStorage) SetIndex(idx *index.Index) (err error) { } defer ioutil.CheckClose(f, &err) + bw := bufio.NewWriter(f) + defer func() { + if e := bw.Flush(); err == nil && e != nil { + err = e + } + }() - e := index.NewEncoder(f) + e := index.NewEncoder(bw) err = e.Encode(idx) return err } @@ -41,7 +48,7 @@ func (s *IndexStorage) Index() (i *index.Index, err error) { defer ioutil.CheckClose(f, &err) - d := index.NewDecoder(f) + d := index.NewDecoder(bufio.NewReader(f)) err = d.Decode(idx) return idx, err } diff --git a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/object.go b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/object.go index 3eb62a22f41..ad5d8d00092 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/object.go +++ b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/object.go @@ -26,6 +26,10 @@ type ObjectStorage struct { dir *dotgit.DotGit index map[plumbing.Hash]idxfile.Index + + packList []plumbing.Hash + packListIdx int + packfiles map[plumbing.Hash]*packfile.Packfile } // NewObjectStorage creates a new ObjectStorage with the given .git directory and cache. @@ -187,6 +191,73 @@ func (s *ObjectStorage) encodedObjectSizeFromUnpacked(h plumbing.Hash) ( return size, err } +func (s *ObjectStorage) packfile(idx idxfile.Index, pack plumbing.Hash) (*packfile.Packfile, error) { + if p := s.packfileFromCache(pack); p != nil { + return p, nil + } + + f, err := s.dir.ObjectPack(pack) + if err != nil { + return nil, err + } + + var p *packfile.Packfile + if s.objectCache != nil { + p = packfile.NewPackfileWithCache(idx, s.dir.Fs(), f, s.objectCache) + } else { + p = packfile.NewPackfile(idx, s.dir.Fs(), f) + } + + return p, s.storePackfileInCache(pack, p) +} + +func (s *ObjectStorage) packfileFromCache(hash plumbing.Hash) *packfile.Packfile { + if s.packfiles == nil { + if s.options.KeepDescriptors { + s.packfiles = make(map[plumbing.Hash]*packfile.Packfile) + } else if s.options.MaxOpenDescriptors > 0 { + s.packList = make([]plumbing.Hash, s.options.MaxOpenDescriptors) + s.packfiles = make(map[plumbing.Hash]*packfile.Packfile, s.options.MaxOpenDescriptors) + } + } + + return s.packfiles[hash] +} + +func (s *ObjectStorage) storePackfileInCache(hash plumbing.Hash, p *packfile.Packfile) error { + if s.options.KeepDescriptors { + s.packfiles[hash] = p + return nil + } + + if s.options.MaxOpenDescriptors <= 0 { + return nil + } + + // start over as the limit of packList is hit + if s.packListIdx >= len(s.packList) { + s.packListIdx = 0 + } + + // close the existing packfile if open + if next := s.packList[s.packListIdx]; !next.IsZero() { + open := s.packfiles[next] + delete(s.packfiles, next) + if open != nil { + if err := open.Close(); err != nil { + return err + } + } + } + + // cache newly open packfile + s.packList[s.packListIdx] = hash + s.packfiles[hash] = p + s.packListIdx++ + + return nil +} + func (s *ObjectStorage) encodedObjectSizeFromPackfile(h plumbing.Hash) ( size int64, err error) { if err := s.requireIndex(); err != nil { @@ -198,12 +269,6 @@ func (s *ObjectStorage) encodedObjectSizeFromPackfile(h plumbing.Hash) ( return 0, plumbing.ErrObjectNotFound } - f, err := s.dir.ObjectPack(pack) - if err != nil { - return 0, err - } - defer ioutil.CheckClose(f, &err) - idx := s.index[pack] hash, err := idx.FindHash(offset) if err == nil { @@ -215,11 +280,13 @@ func (s *ObjectStorage) encodedObjectSizeFromPackfile(h plumbing.Hash) ( return 0, err } - var p *packfile.Packfile - if s.objectCache != nil { - p = packfile.NewPackfileWithCache(idx, s.dir.Fs(), f, s.objectCache) - } else { - p = packfile.NewPackfile(idx, s.dir.Fs(), f) + p, err := s.packfile(idx, pack) + if err != nil { + return 0, err + } + + if !s.options.KeepDescriptors && s.options.MaxOpenDescriptors == 0 { + defer ioutil.CheckClose(p, &err) } return p.GetSizeByOffset(offset) @@ -361,29 +428,28 @@ func (s *ObjectStorage) getFromPackfile(h plumbing.Hash, canBeDelta bool) ( return nil, plumbing.ErrObjectNotFound } - f, err := s.dir.ObjectPack(pack) + idx := s.index[pack] + p, err := s.packfile(idx, pack) if err != nil { return nil, err } - if !s.options.KeepDescriptors { - defer ioutil.CheckClose(f, &err) + if !s.options.KeepDescriptors && s.options.MaxOpenDescriptors == 0 { + defer ioutil.CheckClose(p, &err) } - idx := s.index[pack] if canBeDelta { - return s.decodeDeltaObjectAt(f, idx, offset, hash) + return s.decodeDeltaObjectAt(p, offset, hash) } - return s.decodeObjectAt(f, idx, offset) + return s.decodeObjectAt(p, offset) } func (s *ObjectStorage) decodeObjectAt( - f billy.File, - idx idxfile.Index, + p *packfile.Packfile, offset int64, ) (plumbing.EncodedObject, error) { - hash, err := idx.FindHash(offset) + hash, err := p.FindHash(offset) if err == nil { obj, ok := s.objectCache.Get(hash) if ok { @@ -395,28 +461,16 @@ func (s *ObjectStorage) decodeObjectAt( return nil, err } - var p *packfile.Packfile - if s.objectCache != nil { - p = packfile.NewPackfileWithCache(idx, s.dir.Fs(), f, s.objectCache) - } else { - p = packfile.NewPackfile(idx, s.dir.Fs(), f) - } - return p.GetByOffset(offset) } func (s *ObjectStorage) decodeDeltaObjectAt( - f billy.File, - idx idxfile.Index, + p *packfile.Packfile, offset int64, hash plumbing.Hash, ) (plumbing.EncodedObject, error) { - if _, err := f.Seek(0, io.SeekStart); err != nil { - return nil, err - } - - p := packfile.NewScanner(f) - header, err := p.SeekObjectHeader(offset) + scan := p.Scanner() + header, err := scan.SeekObjectHeader(offset) if err != nil { return nil, err } @@ -429,12 +483,12 @@ func (s *ObjectStorage) decodeDeltaObjectAt( case plumbing.REFDeltaObject: base = header.Reference case plumbing.OFSDeltaObject: - base, err = idx.FindHash(header.OffsetReference) + base, err = p.FindHash(header.OffsetReference) if err != nil { return nil, err } default: - return s.decodeObjectAt(f, idx, offset) + return s.decodeObjectAt(p, offset) } obj := &plumbing.MemoryObject{} @@ -444,7 +498,7 @@ func (s *ObjectStorage) decodeDeltaObjectAt( return nil, err } - if _, _, err := p.NextObject(w); err != nil { + if _, _, err := scan.NextObject(w); err != nil { return nil, err } @@ -515,7 +569,20 @@ func (s *ObjectStorage) buildPackfileIters( // Close closes all opened files. func (s *ObjectStorage) Close() error { - return s.dir.Close() + var firstError error + if s.options.KeepDescriptors || s.options.MaxOpenDescriptors > 0 { + for _, packfile := range s.packfiles { + err := packfile.Close() + if firstError == nil && err != nil { + firstError = err + } + } + } + + s.packfiles = nil + s.dir.Close() + + return firstError } type lazyPackfilesIter struct { diff --git a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/storage.go b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/storage.go index 370f7bd34a7..88d1ed483c3 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/storage.go +++ b/vendor/gopkg.in/src-d/go-git.v4/storage/filesystem/storage.go @@ -31,6 +31,9 @@ type Options struct { // KeepDescriptors makes the file descriptors to be reused but they will // need to be manually closed calling Close(). KeepDescriptors bool + // MaxOpenDescriptors is the max number of file descriptors to keep + // open. If KeepDescriptors is true, all file descriptors will remain open. + MaxOpenDescriptors int } // NewStorage returns a new Storage backed by a given `fs.Filesystem` and cache. @@ -43,7 +46,6 @@ func NewStorage(fs billy.Filesystem, cache cache.Object) *Storage { func NewStorageWithOptions(fs billy.Filesystem, cache cache.Object, ops Options) *Storage { dirOps := dotgit.Options{ ExclusiveAccess: ops.ExclusiveAccess, - KeepDescriptors: ops.KeepDescriptors, } dir := dotgit.NewWithOptions(fs, dirOps) diff --git a/vendor/gopkg.in/src-d/go-git.v4/utils/binary/read.go b/vendor/gopkg.in/src-d/go-git.v4/utils/binary/read.go index 50da1ff3e5b..12e57c300ee 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/utils/binary/read.go +++ b/vendor/gopkg.in/src-d/go-git.v4/utils/binary/read.go @@ -25,6 +25,10 @@ func Read(r io.Reader, data ...interface{}) error { // ReadUntil reads from r untin delim is found func ReadUntil(r io.Reader, delim byte) ([]byte, error) { + if bufr, ok := r.(*bufio.Reader); ok { + return ReadUntilFromBufioReader(bufr, delim) + } + var buf [1]byte value := make([]byte, 0, 16) for { @@ -44,6 +48,17 @@ func ReadUntil(r io.Reader, delim byte) ([]byte, error) { } } +// ReadUntilFromBufioReader is like bufio.ReadBytes but drops the delimiter +// from the result. +func ReadUntilFromBufioReader(r *bufio.Reader, delim byte) ([]byte, error) { + value, err := r.ReadBytes(delim) + if err != nil || len(value) == 0 { + return nil, err + } + + return value[:len(value)-1], nil +} + // ReadVariableWidthInt reads and returns an int in Git VLQ special format: // // Ordinary VLQ has some redundancies, example: the number 358 can be diff --git a/vendor/gopkg.in/src-d/go-git.v4/worktree.go b/vendor/gopkg.in/src-d/go-git.v4/worktree.go index dae40a38a71..4a609e9eab5 100644 --- a/vendor/gopkg.in/src-d/go-git.v4/worktree.go +++ b/vendor/gopkg.in/src-d/go-git.v4/worktree.go @@ -9,6 +9,7 @@ import ( "os" "path/filepath" "strings" + "sync" "gopkg.in/src-d/go-git.v4/config" "gopkg.in/src-d/go-git.v4/plumbing" @@ -160,6 +161,8 @@ func (w *Worktree) Checkout(opts *CheckoutOptions) error { ro := &ResetOptions{Commit: c, Mode: MergeReset} if opts.Force { ro.Mode = HardReset + } else if opts.Keep { + ro.Mode = SoftReset } if !opts.Hash.IsZero() && !opts.Create { @@ -302,6 +305,7 @@ func (w *Worktree) resetIndex(t *object.Tree) error { if err != nil { return err } + b := newIndexBuilder(idx) changes, err := w.diffTreeWithStaging(t, true) if err != nil { @@ -328,12 +332,12 @@ func (w *Worktree) resetIndex(t *object.Tree) error { name = ch.From.String() } - _, _ = idx.Remove(name) + b.Remove(name) if e == nil { continue } - idx.Entries = append(idx.Entries, &index.Entry{ + b.Add(&index.Entry{ Name: name, Hash: e.Hash, Mode: e.Mode, @@ -341,6 +345,7 @@ func (w *Worktree) resetIndex(t *object.Tree) error { } + b.Write(idx) return w.r.Storer.SetIndex(idx) } @@ -354,17 +359,19 @@ func (w *Worktree) resetWorktree(t *object.Tree) error { if err != nil { return err } + b := newIndexBuilder(idx) for _, ch := range changes { - if err := w.checkoutChange(ch, t, idx); err != nil { + if err := w.checkoutChange(ch, t, b); err != nil { return err } } + b.Write(idx) return w.r.Storer.SetIndex(idx) } -func (w *Worktree) checkoutChange(ch merkletrie.Change, t *object.Tree, idx *index.Index) error { +func (w *Worktree) checkoutChange(ch merkletrie.Change, t *object.Tree, idx *indexBuilder) error { a, err := ch.Action() if err != nil { return err @@ -443,7 +450,7 @@ func (w *Worktree) setHEADCommit(commit plumbing.Hash) error { func (w *Worktree) checkoutChangeSubmodule(name string, a merkletrie.Action, e *object.TreeEntry, - idx *index.Index, + idx *indexBuilder, ) error { switch a { case merkletrie.Modify: @@ -477,11 +484,11 @@ func (w *Worktree) checkoutChangeRegularFile(name string, a merkletrie.Action, t *object.Tree, e *object.TreeEntry, - idx *index.Index, + idx *indexBuilder, ) error { switch a { case merkletrie.Modify: - _, _ = idx.Remove(name) + idx.Remove(name) // to apply perm changes the file is deleted, billy doesn't implement // chmod @@ -506,6 +513,12 @@ func (w *Worktree) checkoutChangeRegularFile(name string, return nil } +var copyBufferPool = sync.Pool{ + New: func() interface{} { + return make([]byte, 32*1024) + }, +} + func (w *Worktree) checkoutFile(f *object.File) (err error) { mode, err := f.Mode.ToOSFileMode() if err != nil { @@ -529,8 +542,9 @@ func (w *Worktree) checkoutFile(f *object.File) (err error) { } defer ioutil.CheckClose(to, &err) - - _, err = io.Copy(to, from) + buf := copyBufferPool.Get().([]byte) + _, err = io.CopyBuffer(to, from, buf) + copyBufferPool.Put(buf) return } @@ -567,19 +581,18 @@ func (w *Worktree) checkoutFileSymlink(f *object.File) (err error) { return } -func (w *Worktree) addIndexFromTreeEntry(name string, f *object.TreeEntry, idx *index.Index) error { - _, _ = idx.Remove(name) - idx.Entries = append(idx.Entries, &index.Entry{ +func (w *Worktree) addIndexFromTreeEntry(name string, f *object.TreeEntry, idx *indexBuilder) error { + idx.Remove(name) + idx.Add(&index.Entry{ Hash: f.Hash, Name: name, Mode: filemode.Submodule, }) - return nil } -func (w *Worktree) addIndexFromFile(name string, h plumbing.Hash, idx *index.Index) error { - _, _ = idx.Remove(name) +func (w *Worktree) addIndexFromFile(name string, h plumbing.Hash, idx *indexBuilder) error { + idx.Remove(name) fi, err := w.Filesystem.Lstat(name) if err != nil { return err @@ -603,8 +616,7 @@ func (w *Worktree) addIndexFromFile(name string, h plumbing.Hash, idx *index.Ind if fillSystemInfo != nil { fillSystemInfo(e, fi.Sys()) } - - idx.Entries = append(idx.Entries, e) + idx.Add(e) return nil } @@ -720,7 +732,7 @@ func (w *Worktree) Clean(opts *CleanOptions) error { func (w *Worktree) doClean(status Status, opts *CleanOptions, dir string, files []os.FileInfo) error { for _, fi := range files { - if fi.Name() == ".git" { + if fi.Name() == GitDirName { continue } @@ -911,3 +923,32 @@ func doCleanDirectories(fs billy.Filesystem, dir string) error { } return nil } + +type indexBuilder struct { + entries map[string]*index.Entry +} + +func newIndexBuilder(idx *index.Index) *indexBuilder { + entries := make(map[string]*index.Entry, len(idx.Entries)) + for _, e := range idx.Entries { + entries[e.Name] = e + } + return &indexBuilder{ + entries: entries, + } +} + +func (b *indexBuilder) Write(idx *index.Index) { + idx.Entries = idx.Entries[:0] + for _, e := range b.entries { + idx.Entries = append(idx.Entries, e) + } +} + +func (b *indexBuilder) Add(e *index.Entry) { + b.entries[e.Name] = e +} + +func (b *indexBuilder) Remove(name string) { + delete(b.entries, filepath.ToSlash(name)) +} diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go index e4e56e28e0e..53108765555 100644 --- a/vendor/gopkg.in/yaml.v2/decode.go +++ b/vendor/gopkg.in/yaml.v2/decode.go @@ -229,6 +229,10 @@ type decoder struct { mapType reflect.Type terrors []string strict bool + + decodeCount int + aliasCount int + aliasDepth int } var ( @@ -314,7 +318,39 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm 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) @@ -353,7 +389,9 @@ func (d *decoder) alias(n *node, out reflect.Value) (good bool) { 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 } diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go index 6c151db6fbd..4120e0c9160 100644 --- a/vendor/gopkg.in/yaml.v2/resolve.go +++ b/vendor/gopkg.in/yaml.v2/resolve.go @@ -81,7 +81,7 @@ func resolvableTag(tag string) bool { return false } -var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) +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) { diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go index 077fd1dd2d4..570b8ecd10f 100644 --- a/vendor/gopkg.in/yaml.v2/scannerc.go +++ b/vendor/gopkg.in/yaml.v2/scannerc.go @@ -906,6 +906,9 @@ func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { 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. @@ -913,6 +916,11 @@ func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { // 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 } @@ -925,6 +933,9 @@ func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { 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. @@ -939,6 +950,11 @@ func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml // 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{ diff --git a/vendor/honnef.co/go/tools/LICENSE b/vendor/honnef.co/go/tools/LICENSE new file mode 100644 index 00000000000..dfd03145460 --- /dev/null +++ b/vendor/honnef.co/go/tools/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2016 Dominik Honnef + +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/honnef.co/go/tools/LICENSE-THIRD-PARTY b/vendor/honnef.co/go/tools/LICENSE-THIRD-PARTY new file mode 100644 index 00000000000..7c241b71aef --- /dev/null +++ b/vendor/honnef.co/go/tools/LICENSE-THIRD-PARTY @@ -0,0 +1,226 @@ +Staticcheck and its related tools make use of third party projects, +either by reusing their code, or by statically linking them into +resulting binaries. These projects are: + +* The Go Programming Language - https://golang.org/ + + 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. + + +* github.com/BurntSushi/toml - https://github.com/BurntSushi/toml + + The MIT License (MIT) + + Copyright (c) 2013 TOML authors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + +* github.com/google/renameio - https://github.com/google/renameio + + Copyright 2018 Google Inc. + + 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. + + +* github.com/kisielk/gotool – https://github.com/kisielk/gotool + + Copyright (c) 2013 Kamil Kisiel + + 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. + + All the files in this distribution are covered under either the MIT + license (see the file LICENSE) except some files mentioned below. + + match.go, match_test.go: + + 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. + + +* github.com/rogpeppe/go-internal - https://github.com/rogpeppe/go-internal + + Copyright (c) 2018 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. + + +* golang.org/x/mod/module - https://github.com/golang/mod + + 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. + + +* golang.org/x/tools/go/analysis - https://github.com/golang/tools + + 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/honnef.co/go/tools/arg/arg.go b/vendor/honnef.co/go/tools/arg/arg.go new file mode 100644 index 00000000000..1e7f30db42d --- /dev/null +++ b/vendor/honnef.co/go/tools/arg/arg.go @@ -0,0 +1,48 @@ +package arg + +var args = map[string]int{ + "(*encoding/json.Decoder).Decode.v": 0, + "(*encoding/json.Encoder).Encode.v": 0, + "(*encoding/xml.Decoder).Decode.v": 0, + "(*encoding/xml.Encoder).Encode.v": 0, + "(*sync.Pool).Put.x": 0, + "(*text/template.Template).Parse.text": 0, + "(io.Seeker).Seek.offset": 0, + "(time.Time).Sub.u": 0, + "append.elems": 1, + "append.slice": 0, + "bytes.Equal.a": 0, + "bytes.Equal.b": 1, + "encoding/binary.Write.data": 2, + "errors.New.text": 0, + "fmt.Fprintf.format": 1, + "fmt.Printf.format": 0, + "fmt.Sprintf.a[0]": 1, + "fmt.Sprintf.format": 0, + "json.Marshal.v": 0, + "json.Unmarshal.v": 1, + "len.v": 0, + "make.size[0]": 1, + "make.size[1]": 2, + "make.t": 0, + "net/url.Parse.rawurl": 0, + "os.OpenFile.flag": 1, + "os/exec.Command.name": 0, + "os/signal.Notify.c": 0, + "regexp.Compile.expr": 0, + "runtime.SetFinalizer.finalizer": 1, + "runtime.SetFinalizer.obj": 0, + "sort.Sort.data": 0, + "time.Parse.layout": 0, + "time.Sleep.d": 0, + "xml.Marshal.v": 0, + "xml.Unmarshal.v": 1, +} + +func Arg(name string) int { + n, ok := args[name] + if !ok { + panic("unknown argument " + name) + } + return n +} diff --git a/vendor/honnef.co/go/tools/cmd/staticcheck/README.md b/vendor/honnef.co/go/tools/cmd/staticcheck/README.md new file mode 100644 index 00000000000..4d14577fdf7 --- /dev/null +++ b/vendor/honnef.co/go/tools/cmd/staticcheck/README.md @@ -0,0 +1,15 @@ +# staticcheck + +_staticcheck_ offers extensive analysis of Go code, covering a myriad +of categories. It will detect bugs, suggest code simplifications, +point out dead code, and more. + +## Installation + +See [the main README](https://github.com/dominikh/go-tools#installation) for installation instructions. + +## Documentation + +Detailed documentation can be found on +[staticcheck.io](https://staticcheck.io/docs/). + diff --git a/vendor/honnef.co/go/tools/cmd/staticcheck/staticcheck.go b/vendor/honnef.co/go/tools/cmd/staticcheck/staticcheck.go new file mode 100644 index 00000000000..4f504dc39db --- /dev/null +++ b/vendor/honnef.co/go/tools/cmd/staticcheck/staticcheck.go @@ -0,0 +1,44 @@ +// staticcheck analyses Go code and makes it better. +package main // import "honnef.co/go/tools/cmd/staticcheck" + +import ( + "log" + "os" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/lint" + "honnef.co/go/tools/lint/lintutil" + "honnef.co/go/tools/simple" + "honnef.co/go/tools/staticcheck" + "honnef.co/go/tools/stylecheck" + "honnef.co/go/tools/unused" +) + +func main() { + fs := lintutil.FlagSet("staticcheck") + wholeProgram := fs.Bool("unused.whole-program", false, "Run unused in whole program mode") + debug := fs.String("debug.unused-graph", "", "Write unused's object graph to `file`") + fs.Parse(os.Args[1:]) + + var cs []*analysis.Analyzer + for _, v := range simple.Analyzers { + cs = append(cs, v) + } + for _, v := range staticcheck.Analyzers { + cs = append(cs, v) + } + for _, v := range stylecheck.Analyzers { + cs = append(cs, v) + } + + u := unused.NewChecker(*wholeProgram) + if *debug != "" { + f, err := os.OpenFile(*debug, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) + if err != nil { + log.Fatal(err) + } + u.Debug = f + } + cums := []lint.CumulativeChecker{u} + lintutil.ProcessFlagSet(cs, cums, fs) +} diff --git a/vendor/honnef.co/go/tools/config/config.go b/vendor/honnef.co/go/tools/config/config.go new file mode 100644 index 00000000000..c22093a6d98 --- /dev/null +++ b/vendor/honnef.co/go/tools/config/config.go @@ -0,0 +1,224 @@ +package config + +import ( + "bytes" + "fmt" + "os" + "path/filepath" + "reflect" + "strings" + + "github.com/BurntSushi/toml" + "golang.org/x/tools/go/analysis" +) + +var Analyzer = &analysis.Analyzer{ + Name: "config", + Doc: "loads configuration for the current package tree", + Run: func(pass *analysis.Pass) (interface{}, error) { + if len(pass.Files) == 0 { + cfg := DefaultConfig + return &cfg, nil + } + cache, err := os.UserCacheDir() + if err != nil { + cache = "" + } + var path string + for _, f := range pass.Files { + p := pass.Fset.PositionFor(f.Pos(), true).Filename + // FIXME(dh): using strings.HasPrefix isn't technically + // correct, but it should be good enough for now. + if cache != "" && strings.HasPrefix(p, cache) { + // File in the build cache of the standard Go build system + continue + } + path = p + break + } + + if path == "" { + // The package only consists of generated files. + cfg := DefaultConfig + return &cfg, nil + } + + dir := filepath.Dir(path) + cfg, err := Load(dir) + if err != nil { + return nil, fmt.Errorf("error loading staticcheck.conf: %s", err) + } + return &cfg, nil + }, + RunDespiteErrors: true, + ResultType: reflect.TypeOf((*Config)(nil)), +} + +func For(pass *analysis.Pass) *Config { + return pass.ResultOf[Analyzer].(*Config) +} + +func mergeLists(a, b []string) []string { + out := make([]string, 0, len(a)+len(b)) + for _, el := range b { + if el == "inherit" { + out = append(out, a...) + } else { + out = append(out, el) + } + } + + return out +} + +func normalizeList(list []string) []string { + if len(list) > 1 { + nlist := make([]string, 0, len(list)) + nlist = append(nlist, list[0]) + for i, el := range list[1:] { + if el != list[i] { + nlist = append(nlist, el) + } + } + list = nlist + } + + for _, el := range list { + if el == "inherit" { + // This should never happen, because the default config + // should not use "inherit" + panic(`unresolved "inherit"`) + } + } + + return list +} + +func (cfg Config) Merge(ocfg Config) Config { + if ocfg.Checks != nil { + cfg.Checks = mergeLists(cfg.Checks, ocfg.Checks) + } + if ocfg.Initialisms != nil { + cfg.Initialisms = mergeLists(cfg.Initialisms, ocfg.Initialisms) + } + if ocfg.DotImportWhitelist != nil { + cfg.DotImportWhitelist = mergeLists(cfg.DotImportWhitelist, ocfg.DotImportWhitelist) + } + if ocfg.HTTPStatusCodeWhitelist != nil { + cfg.HTTPStatusCodeWhitelist = mergeLists(cfg.HTTPStatusCodeWhitelist, ocfg.HTTPStatusCodeWhitelist) + } + return cfg +} + +type Config struct { + // TODO(dh): this implementation makes it impossible for external + // clients to add their own checkers with configuration. At the + // moment, we don't really care about that; we don't encourage + // that people use this package. In the future, we may. The + // obvious solution would be using map[string]interface{}, but + // that's obviously subpar. + + Checks []string `toml:"checks"` + Initialisms []string `toml:"initialisms"` + DotImportWhitelist []string `toml:"dot_import_whitelist"` + HTTPStatusCodeWhitelist []string `toml:"http_status_code_whitelist"` +} + +func (c Config) String() string { + buf := &bytes.Buffer{} + + fmt.Fprintf(buf, "Checks: %#v\n", c.Checks) + fmt.Fprintf(buf, "Initialisms: %#v\n", c.Initialisms) + fmt.Fprintf(buf, "DotImportWhitelist: %#v\n", c.DotImportWhitelist) + fmt.Fprintf(buf, "HTTPStatusCodeWhitelist: %#v", c.HTTPStatusCodeWhitelist) + + return buf.String() +} + +var DefaultConfig = Config{ + Checks: []string{"all", "-ST1000", "-ST1003", "-ST1016"}, + Initialisms: []string{ + "ACL", "API", "ASCII", "CPU", "CSS", "DNS", + "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", + "IP", "JSON", "QPS", "RAM", "RPC", "SLA", + "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", + "UDP", "UI", "GID", "UID", "UUID", "URI", + "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", + "XSS", "SIP", "RTP", + }, + DotImportWhitelist: []string{}, + HTTPStatusCodeWhitelist: []string{"200", "400", "404", "500"}, +} + +const configName = "staticcheck.conf" + +func parseConfigs(dir string) ([]Config, error) { + var out []Config + + // TODO(dh): consider stopping at the GOPATH/module boundary + for dir != "" { + f, err := os.Open(filepath.Join(dir, configName)) + if os.IsNotExist(err) { + ndir := filepath.Dir(dir) + if ndir == dir { + break + } + dir = ndir + continue + } + if err != nil { + return nil, err + } + var cfg Config + _, err = toml.DecodeReader(f, &cfg) + f.Close() + if err != nil { + return nil, err + } + out = append(out, cfg) + ndir := filepath.Dir(dir) + if ndir == dir { + break + } + dir = ndir + } + out = append(out, DefaultConfig) + if len(out) < 2 { + return out, nil + } + for i := 0; i < len(out)/2; i++ { + out[i], out[len(out)-1-i] = out[len(out)-1-i], out[i] + } + return out, nil +} + +func mergeConfigs(confs []Config) Config { + if len(confs) == 0 { + // This shouldn't happen because we always have at least a + // default config. + panic("trying to merge zero configs") + } + if len(confs) == 1 { + return confs[0] + } + conf := confs[0] + for _, oconf := range confs[1:] { + conf = conf.Merge(oconf) + } + return conf +} + +func Load(dir string) (Config, error) { + confs, err := parseConfigs(dir) + if err != nil { + return Config{}, err + } + conf := mergeConfigs(confs) + + conf.Checks = normalizeList(conf.Checks) + conf.Initialisms = normalizeList(conf.Initialisms) + conf.DotImportWhitelist = normalizeList(conf.DotImportWhitelist) + conf.HTTPStatusCodeWhitelist = normalizeList(conf.HTTPStatusCodeWhitelist) + + return conf, nil +} diff --git a/vendor/honnef.co/go/tools/config/example.conf b/vendor/honnef.co/go/tools/config/example.conf new file mode 100644 index 00000000000..a715a24d4fc --- /dev/null +++ b/vendor/honnef.co/go/tools/config/example.conf @@ -0,0 +1,10 @@ +checks = ["all", "-ST1003", "-ST1014"] +initialisms = ["ACL", "API", "ASCII", "CPU", "CSS", "DNS", + "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", + "IP", "JSON", "QPS", "RAM", "RPC", "SLA", + "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", + "UDP", "UI", "GID", "UID", "UUID", "URI", + "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", + "XSS", "SIP", "RTP"] +dot_import_whitelist = [] +http_status_code_whitelist = ["200", "400", "404", "500"] diff --git a/vendor/honnef.co/go/tools/deprecated/stdlib.go b/vendor/honnef.co/go/tools/deprecated/stdlib.go new file mode 100644 index 00000000000..5d8ce186b16 --- /dev/null +++ b/vendor/honnef.co/go/tools/deprecated/stdlib.go @@ -0,0 +1,112 @@ +package deprecated + +type Deprecation struct { + DeprecatedSince int + AlternativeAvailableSince int +} + +var Stdlib = map[string]Deprecation{ + "image/jpeg.Reader": {4, 0}, + // FIXME(dh): AllowBinary isn't being detected as deprecated + // because the comment has a newline right after "Deprecated:" + "go/build.AllowBinary": {7, 7}, + "(archive/zip.FileHeader).CompressedSize": {1, 1}, + "(archive/zip.FileHeader).UncompressedSize": {1, 1}, + "(archive/zip.FileHeader).ModifiedTime": {10, 10}, + "(archive/zip.FileHeader).ModifiedDate": {10, 10}, + "(*archive/zip.FileHeader).ModTime": {10, 10}, + "(*archive/zip.FileHeader).SetModTime": {10, 10}, + "(go/doc.Package).Bugs": {1, 1}, + "os.SEEK_SET": {7, 7}, + "os.SEEK_CUR": {7, 7}, + "os.SEEK_END": {7, 7}, + "(net.Dialer).Cancel": {7, 7}, + "runtime.CPUProfile": {9, 0}, + "compress/flate.ReadError": {6, 6}, + "compress/flate.WriteError": {6, 6}, + "path/filepath.HasPrefix": {0, 0}, + "(net/http.Transport).Dial": {7, 7}, + "(*net/http.Transport).CancelRequest": {6, 5}, + "net/http.ErrWriteAfterFlush": {7, 0}, + "net/http.ErrHeaderTooLong": {8, 0}, + "net/http.ErrShortBody": {8, 0}, + "net/http.ErrMissingContentLength": {8, 0}, + "net/http/httputil.ErrPersistEOF": {0, 0}, + "net/http/httputil.ErrClosed": {0, 0}, + "net/http/httputil.ErrPipeline": {0, 0}, + "net/http/httputil.ServerConn": {0, 0}, + "net/http/httputil.NewServerConn": {0, 0}, + "net/http/httputil.ClientConn": {0, 0}, + "net/http/httputil.NewClientConn": {0, 0}, + "net/http/httputil.NewProxyClientConn": {0, 0}, + "(net/http.Request).Cancel": {7, 7}, + "(text/template/parse.PipeNode).Line": {1, 1}, + "(text/template/parse.ActionNode).Line": {1, 1}, + "(text/template/parse.BranchNode).Line": {1, 1}, + "(text/template/parse.TemplateNode).Line": {1, 1}, + "database/sql/driver.ColumnConverter": {9, 9}, + "database/sql/driver.Execer": {8, 8}, + "database/sql/driver.Queryer": {8, 8}, + "(database/sql/driver.Conn).Begin": {8, 8}, + "(database/sql/driver.Stmt).Exec": {8, 8}, + "(database/sql/driver.Stmt).Query": {8, 8}, + "syscall.StringByteSlice": {1, 1}, + "syscall.StringBytePtr": {1, 1}, + "syscall.StringSlicePtr": {1, 1}, + "syscall.StringToUTF16": {1, 1}, + "syscall.StringToUTF16Ptr": {1, 1}, + "(*regexp.Regexp).Copy": {12, 12}, + "(archive/tar.Header).Xattrs": {10, 10}, + "archive/tar.TypeRegA": {11, 1}, + "go/types.NewInterface": {11, 11}, + "(*go/types.Interface).Embedded": {11, 11}, + "go/importer.For": {12, 12}, + "encoding/json.InvalidUTF8Error": {2, 2}, + "encoding/json.UnmarshalFieldError": {2, 2}, + "encoding/csv.ErrTrailingComma": {2, 2}, + "(encoding/csv.Reader).TrailingComma": {2, 2}, + "(net.Dialer).DualStack": {12, 12}, + "net/http.ErrUnexpectedTrailer": {12, 12}, + "net/http.CloseNotifier": {11, 7}, + "net/http.ProtocolError": {8, 8}, + "(crypto/x509.CertificateRequest).Attributes": {5, 3}, + // This function has no alternative, but also no purpose. + "(*crypto/rc4.Cipher).Reset": {12, 0}, + "(net/http/httptest.ResponseRecorder).HeaderMap": {11, 7}, + + // All of these have been deprecated in favour of external libraries + "syscall.AttachLsf": {7, 0}, + "syscall.DetachLsf": {7, 0}, + "syscall.LsfSocket": {7, 0}, + "syscall.SetLsfPromisc": {7, 0}, + "syscall.LsfJump": {7, 0}, + "syscall.LsfStmt": {7, 0}, + "syscall.BpfStmt": {7, 0}, + "syscall.BpfJump": {7, 0}, + "syscall.BpfBuflen": {7, 0}, + "syscall.SetBpfBuflen": {7, 0}, + "syscall.BpfDatalink": {7, 0}, + "syscall.SetBpfDatalink": {7, 0}, + "syscall.SetBpfPromisc": {7, 0}, + "syscall.FlushBpf": {7, 0}, + "syscall.BpfInterface": {7, 0}, + "syscall.SetBpfInterface": {7, 0}, + "syscall.BpfTimeout": {7, 0}, + "syscall.SetBpfTimeout": {7, 0}, + "syscall.BpfStats": {7, 0}, + "syscall.SetBpfImmediate": {7, 0}, + "syscall.SetBpf": {7, 0}, + "syscall.CheckBpfVersion": {7, 0}, + "syscall.BpfHeadercmpl": {7, 0}, + "syscall.SetBpfHeadercmpl": {7, 0}, + "syscall.RouteRIB": {8, 0}, + "syscall.RoutingMessage": {8, 0}, + "syscall.RouteMessage": {8, 0}, + "syscall.InterfaceMessage": {8, 0}, + "syscall.InterfaceAddrMessage": {8, 0}, + "syscall.ParseRoutingMessage": {8, 0}, + "syscall.ParseRoutingSockaddr": {8, 0}, + "InterfaceAnnounceMessage": {7, 0}, + "InterfaceMulticastAddrMessage": {7, 0}, + "syscall.FormatMessage": {5, 0}, +} diff --git a/vendor/honnef.co/go/tools/facts/deprecated.go b/vendor/honnef.co/go/tools/facts/deprecated.go new file mode 100644 index 00000000000..8587b0e0eae --- /dev/null +++ b/vendor/honnef.co/go/tools/facts/deprecated.go @@ -0,0 +1,144 @@ +package facts + +import ( + "go/ast" + "go/token" + "go/types" + "reflect" + "strings" + + "golang.org/x/tools/go/analysis" +) + +type IsDeprecated struct{ Msg string } + +func (*IsDeprecated) AFact() {} +func (d *IsDeprecated) String() string { return "Deprecated: " + d.Msg } + +type DeprecatedResult struct { + Objects map[types.Object]*IsDeprecated + Packages map[*types.Package]*IsDeprecated +} + +var Deprecated = &analysis.Analyzer{ + Name: "fact_deprecated", + Doc: "Mark deprecated objects", + Run: deprecated, + FactTypes: []analysis.Fact{(*IsDeprecated)(nil)}, + ResultType: reflect.TypeOf(DeprecatedResult{}), +} + +func deprecated(pass *analysis.Pass) (interface{}, error) { + var names []*ast.Ident + + extractDeprecatedMessage := func(docs []*ast.CommentGroup) string { + for _, doc := range docs { + if doc == nil { + continue + } + parts := strings.Split(doc.Text(), "\n\n") + last := parts[len(parts)-1] + if !strings.HasPrefix(last, "Deprecated: ") { + continue + } + alt := last[len("Deprecated: "):] + alt = strings.Replace(alt, "\n", " ", -1) + return alt + } + return "" + } + doDocs := func(names []*ast.Ident, docs []*ast.CommentGroup) { + alt := extractDeprecatedMessage(docs) + if alt == "" { + return + } + + for _, name := range names { + obj := pass.TypesInfo.ObjectOf(name) + pass.ExportObjectFact(obj, &IsDeprecated{alt}) + } + } + + var docs []*ast.CommentGroup + for _, f := range pass.Files { + docs = append(docs, f.Doc) + } + if alt := extractDeprecatedMessage(docs); alt != "" { + // Don't mark package syscall as deprecated, even though + // it is. A lot of people still use it for simple + // constants like SIGKILL, and I am not comfortable + // telling them to use x/sys for that. + if pass.Pkg.Path() != "syscall" { + pass.ExportPackageFact(&IsDeprecated{alt}) + } + } + + docs = docs[:0] + for _, f := range pass.Files { + fn := func(node ast.Node) bool { + if node == nil { + return true + } + var ret bool + switch node := node.(type) { + case *ast.GenDecl: + switch node.Tok { + case token.TYPE, token.CONST, token.VAR: + docs = append(docs, node.Doc) + return true + default: + return false + } + case *ast.FuncDecl: + docs = append(docs, node.Doc) + names = []*ast.Ident{node.Name} + ret = false + case *ast.TypeSpec: + docs = append(docs, node.Doc) + names = []*ast.Ident{node.Name} + ret = true + case *ast.ValueSpec: + docs = append(docs, node.Doc) + names = node.Names + ret = false + case *ast.File: + return true + case *ast.StructType: + for _, field := range node.Fields.List { + doDocs(field.Names, []*ast.CommentGroup{field.Doc}) + } + return false + case *ast.InterfaceType: + for _, field := range node.Methods.List { + doDocs(field.Names, []*ast.CommentGroup{field.Doc}) + } + return false + default: + return false + } + if len(names) == 0 || len(docs) == 0 { + return ret + } + doDocs(names, docs) + + docs = docs[:0] + names = nil + return ret + } + ast.Inspect(f, fn) + } + + out := DeprecatedResult{ + Objects: map[types.Object]*IsDeprecated{}, + Packages: map[*types.Package]*IsDeprecated{}, + } + + for _, fact := range pass.AllObjectFacts() { + out.Objects[fact.Object] = fact.Fact.(*IsDeprecated) + } + for _, fact := range pass.AllPackageFacts() { + out.Packages[fact.Package] = fact.Fact.(*IsDeprecated) + } + + return out, nil +} diff --git a/vendor/honnef.co/go/tools/facts/generated.go b/vendor/honnef.co/go/tools/facts/generated.go new file mode 100644 index 00000000000..1ed9563a30b --- /dev/null +++ b/vendor/honnef.co/go/tools/facts/generated.go @@ -0,0 +1,86 @@ +package facts + +import ( + "bufio" + "bytes" + "io" + "os" + "reflect" + "strings" + + "golang.org/x/tools/go/analysis" +) + +type Generator int + +// A list of known generators we can detect +const ( + Unknown Generator = iota + Goyacc + Cgo + Stringer +) + +var ( + // used by cgo before Go 1.11 + oldCgo = []byte("// Created by cgo - DO NOT EDIT") + prefix = []byte("// Code generated ") + suffix = []byte(" DO NOT EDIT.") + nl = []byte("\n") + crnl = []byte("\r\n") +) + +func isGenerated(path string) (Generator, bool) { + f, err := os.Open(path) + if err != nil { + return 0, false + } + defer f.Close() + br := bufio.NewReader(f) + for { + s, err := br.ReadBytes('\n') + if err != nil && err != io.EOF { + return 0, false + } + s = bytes.TrimSuffix(s, crnl) + s = bytes.TrimSuffix(s, nl) + if bytes.HasPrefix(s, prefix) && bytes.HasSuffix(s, suffix) { + text := string(s[len(prefix) : len(s)-len(suffix)]) + switch text { + case "by goyacc.": + return Goyacc, true + case "by cmd/cgo;": + return Cgo, true + } + if strings.HasPrefix(text, `by "stringer `) { + return Stringer, true + } + return Unknown, true + } + if bytes.Equal(s, oldCgo) { + return Cgo, true + } + if err == io.EOF { + break + } + } + return 0, false +} + +var Generated = &analysis.Analyzer{ + Name: "isgenerated", + Doc: "annotate file names that have been code generated", + Run: func(pass *analysis.Pass) (interface{}, error) { + m := map[string]Generator{} + for _, f := range pass.Files { + path := pass.Fset.PositionFor(f.Pos(), false).Filename + g, ok := isGenerated(path) + if ok { + m[path] = g + } + } + return m, nil + }, + RunDespiteErrors: true, + ResultType: reflect.TypeOf(map[string]Generator{}), +} diff --git a/vendor/honnef.co/go/tools/facts/purity.go b/vendor/honnef.co/go/tools/facts/purity.go new file mode 100644 index 00000000000..861ca41104a --- /dev/null +++ b/vendor/honnef.co/go/tools/facts/purity.go @@ -0,0 +1,175 @@ +package facts + +import ( + "go/token" + "go/types" + "reflect" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/functions" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/ssa" +) + +type IsPure struct{} + +func (*IsPure) AFact() {} +func (d *IsPure) String() string { return "is pure" } + +type PurityResult map[*types.Func]*IsPure + +var Purity = &analysis.Analyzer{ + Name: "fact_purity", + Doc: "Mark pure functions", + Run: purity, + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + FactTypes: []analysis.Fact{(*IsPure)(nil)}, + ResultType: reflect.TypeOf(PurityResult{}), +} + +var pureStdlib = map[string]struct{}{ + "errors.New": {}, + "fmt.Errorf": {}, + "fmt.Sprintf": {}, + "fmt.Sprint": {}, + "sort.Reverse": {}, + "strings.Map": {}, + "strings.Repeat": {}, + "strings.Replace": {}, + "strings.Title": {}, + "strings.ToLower": {}, + "strings.ToLowerSpecial": {}, + "strings.ToTitle": {}, + "strings.ToTitleSpecial": {}, + "strings.ToUpper": {}, + "strings.ToUpperSpecial": {}, + "strings.Trim": {}, + "strings.TrimFunc": {}, + "strings.TrimLeft": {}, + "strings.TrimLeftFunc": {}, + "strings.TrimPrefix": {}, + "strings.TrimRight": {}, + "strings.TrimRightFunc": {}, + "strings.TrimSpace": {}, + "strings.TrimSuffix": {}, + "(*net/http.Request).WithContext": {}, +} + +func purity(pass *analysis.Pass) (interface{}, error) { + seen := map[*ssa.Function]struct{}{} + ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).Pkg + var check func(ssafn *ssa.Function) (ret bool) + check = func(ssafn *ssa.Function) (ret bool) { + if ssafn.Object() == nil { + // TODO(dh): support closures + return false + } + if pass.ImportObjectFact(ssafn.Object(), new(IsPure)) { + return true + } + if ssafn.Pkg != ssapkg { + // Function is in another package but wasn't marked as + // pure, ergo it isn't pure + return false + } + // Break recursion + if _, ok := seen[ssafn]; ok { + return false + } + + seen[ssafn] = struct{}{} + defer func() { + if ret { + pass.ExportObjectFact(ssafn.Object(), &IsPure{}) + } + }() + + if functions.IsStub(ssafn) { + return false + } + + if _, ok := pureStdlib[ssafn.Object().(*types.Func).FullName()]; ok { + return true + } + + if ssafn.Signature.Results().Len() == 0 { + // A function with no return values is empty or is doing some + // work we cannot see (for example because of build tags); + // don't consider it pure. + return false + } + + for _, param := range ssafn.Params { + if _, ok := param.Type().Underlying().(*types.Basic); !ok { + return false + } + } + + if ssafn.Blocks == nil { + return false + } + checkCall := func(common *ssa.CallCommon) bool { + if common.IsInvoke() { + return false + } + builtin, ok := common.Value.(*ssa.Builtin) + if !ok { + if common.StaticCallee() != ssafn { + if common.StaticCallee() == nil { + return false + } + if !check(common.StaticCallee()) { + return false + } + } + } else { + switch builtin.Name() { + case "len", "cap", "make", "new": + default: + return false + } + } + return true + } + for _, b := range ssafn.Blocks { + for _, ins := range b.Instrs { + switch ins := ins.(type) { + case *ssa.Call: + if !checkCall(ins.Common()) { + return false + } + case *ssa.Defer: + if !checkCall(&ins.Call) { + return false + } + case *ssa.Select: + return false + case *ssa.Send: + return false + case *ssa.Go: + return false + case *ssa.Panic: + return false + case *ssa.Store: + return false + case *ssa.FieldAddr: + return false + case *ssa.UnOp: + if ins.Op == token.MUL || ins.Op == token.AND { + return false + } + } + } + } + return true + } + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + check(ssafn) + } + + out := PurityResult{} + for _, fact := range pass.AllObjectFacts() { + out[fact.Object.(*types.Func)] = fact.Fact.(*IsPure) + } + return out, nil +} diff --git a/vendor/honnef.co/go/tools/facts/token.go b/vendor/honnef.co/go/tools/facts/token.go new file mode 100644 index 00000000000..26e76ff73d5 --- /dev/null +++ b/vendor/honnef.co/go/tools/facts/token.go @@ -0,0 +1,24 @@ +package facts + +import ( + "go/ast" + "go/token" + "reflect" + + "golang.org/x/tools/go/analysis" +) + +var TokenFile = &analysis.Analyzer{ + Name: "tokenfileanalyzer", + Doc: "creates a mapping of *token.File to *ast.File", + Run: func(pass *analysis.Pass) (interface{}, error) { + m := map[*token.File]*ast.File{} + for _, af := range pass.Files { + tf := pass.Fset.File(af.Pos()) + m[tf] = af + } + return m, nil + }, + RunDespiteErrors: true, + ResultType: reflect.TypeOf(map[*token.File]*ast.File{}), +} diff --git a/vendor/honnef.co/go/tools/functions/loops.go b/vendor/honnef.co/go/tools/functions/loops.go new file mode 100644 index 00000000000..15877a2f96b --- /dev/null +++ b/vendor/honnef.co/go/tools/functions/loops.go @@ -0,0 +1,54 @@ +package functions + +import "honnef.co/go/tools/ssa" + +type Loop struct{ ssa.BlockSet } + +func FindLoops(fn *ssa.Function) []Loop { + if fn.Blocks == nil { + return nil + } + tree := fn.DomPreorder() + var sets []Loop + for _, h := range tree { + for _, n := range h.Preds { + if !h.Dominates(n) { + continue + } + // n is a back-edge to h + // h is the loop header + if n == h { + set := Loop{} + set.Add(n) + sets = append(sets, set) + continue + } + set := Loop{} + set.Add(h) + set.Add(n) + for _, b := range allPredsBut(n, h, nil) { + set.Add(b) + } + sets = append(sets, set) + } + } + return sets +} + +func allPredsBut(b, but *ssa.BasicBlock, list []*ssa.BasicBlock) []*ssa.BasicBlock { +outer: + for _, pred := range b.Preds { + if pred == but { + continue + } + for _, p := range list { + // TODO improve big-o complexity of this function + if pred == p { + continue outer + } + } + list = append(list, pred) + list = allPredsBut(pred, but, list) + } + return list +} diff --git a/vendor/honnef.co/go/tools/functions/pure.go b/vendor/honnef.co/go/tools/functions/pure.go new file mode 100644 index 00000000000..8bc5587713a --- /dev/null +++ b/vendor/honnef.co/go/tools/functions/pure.go @@ -0,0 +1,46 @@ +package functions + +import ( + "honnef.co/go/tools/ssa" +) + +func filterDebug(instr []ssa.Instruction) []ssa.Instruction { + var out []ssa.Instruction + for _, ins := range instr { + if _, ok := ins.(*ssa.DebugRef); !ok { + out = append(out, ins) + } + } + return out +} + +// IsStub reports whether a function is a stub. A function is +// considered a stub if it has no instructions or exactly one +// instruction, which must be either returning only constant values or +// a panic. +func IsStub(fn *ssa.Function) bool { + if len(fn.Blocks) == 0 { + return true + } + if len(fn.Blocks) > 1 { + return false + } + instrs := filterDebug(fn.Blocks[0].Instrs) + if len(instrs) != 1 { + return false + } + + switch instrs[0].(type) { + case *ssa.Return: + // Since this is the only instruction, the return value must + // be a constant. We consider all constants as stubs, not just + // the zero value. This does not, unfortunately, cover zero + // initialised structs, as these cause additional + // instructions. + return true + case *ssa.Panic: + return true + default: + return false + } +} diff --git a/vendor/honnef.co/go/tools/functions/terminates.go b/vendor/honnef.co/go/tools/functions/terminates.go new file mode 100644 index 00000000000..3e9c3a23f37 --- /dev/null +++ b/vendor/honnef.co/go/tools/functions/terminates.go @@ -0,0 +1,24 @@ +package functions + +import "honnef.co/go/tools/ssa" + +// Terminates reports whether fn is supposed to return, that is if it +// has at least one theoretic path that returns from the function. +// Explicit panics do not count as terminating. +func Terminates(fn *ssa.Function) bool { + if fn.Blocks == nil { + // assuming that a function terminates is the conservative + // choice + return true + } + + for _, block := range fn.Blocks { + if len(block.Instrs) == 0 { + continue + } + if _, ok := block.Instrs[len(block.Instrs)-1].(*ssa.Return); ok { + return true + } + } + return false +} diff --git a/vendor/honnef.co/go/tools/go/types/typeutil/callee.go b/vendor/honnef.co/go/tools/go/types/typeutil/callee.go new file mode 100644 index 00000000000..38f596daf9e --- /dev/null +++ b/vendor/honnef.co/go/tools/go/types/typeutil/callee.go @@ -0,0 +1,46 @@ +// 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 typeutil + +import ( + "go/ast" + "go/types" + + "golang.org/x/tools/go/ast/astutil" +) + +// Callee returns the named target of a function call, if any: +// a function, method, builtin, or variable. +func Callee(info *types.Info, call *ast.CallExpr) types.Object { + var obj types.Object + switch fun := astutil.Unparen(call.Fun).(type) { + case *ast.Ident: + obj = info.Uses[fun] // type, var, builtin, or declared func + case *ast.SelectorExpr: + if sel, ok := info.Selections[fun]; ok { + obj = sel.Obj() // method or field + } else { + obj = info.Uses[fun.Sel] // qualified identifier? + } + } + if _, ok := obj.(*types.TypeName); ok { + return nil // T(x) is a conversion, not a call + } + return obj +} + +// StaticCallee returns the target (function or method) of a static +// function call, if any. It returns nil for calls to builtins. +func StaticCallee(info *types.Info, call *ast.CallExpr) *types.Func { + if f, ok := Callee(info, call).(*types.Func); ok && !interfaceMethod(f) { + return f + } + return nil +} + +func interfaceMethod(f *types.Func) bool { + recv := f.Type().(*types.Signature).Recv() + return recv != nil && types.IsInterface(recv.Type()) +} diff --git a/vendor/honnef.co/go/tools/go/types/typeutil/identical.go b/vendor/honnef.co/go/tools/go/types/typeutil/identical.go new file mode 100644 index 00000000000..c0ca441c327 --- /dev/null +++ b/vendor/honnef.co/go/tools/go/types/typeutil/identical.go @@ -0,0 +1,75 @@ +package typeutil + +import ( + "go/types" +) + +// Identical reports whether x and y are identical types. +// Unlike types.Identical, receivers of Signature types are not ignored. +// Unlike types.Identical, interfaces are compared via pointer equality (except for the empty interface, which gets deduplicated). +// Unlike types.Identical, structs are compared via pointer equality. +func Identical(x, y types.Type) (ret bool) { + if !types.Identical(x, y) { + return false + } + + switch x := x.(type) { + case *types.Struct: + y, ok := y.(*types.Struct) + if !ok { + // should be impossible + return true + } + return x == y + case *types.Interface: + // The issue with interfaces, typeutil.Map and types.Identical + // + // types.Identical, when comparing two interfaces, only looks at the set + // of all methods, not differentiating between implicit (embedded) and + // explicit methods. + // + // When we see the following two types, in source order + // + // type I1 interface { foo() } + // type I2 interface { I1 } + // + // then we will first correctly process I1 and its underlying type. When + // we get to I2, we will see that its underlying type is identical to + // that of I1 and not process it again. This, however, means that we will + // not record the fact that I2 embeds I1. If only I2 is reachable via the + // graph root, then I1 will not be considered used. + // + // We choose to be lazy and compare interfaces by their + // pointers. This will obviously miss identical interfaces, + // but this only has a runtime cost, it doesn't affect + // correctness. + y, ok := y.(*types.Interface) + if !ok { + // should be impossible + return true + } + if x.NumEmbeddeds() == 0 && + y.NumEmbeddeds() == 0 && + x.NumMethods() == 0 && + y.NumMethods() == 0 { + // all truly empty interfaces are the same + return true + } + return x == y + case *types.Signature: + y, ok := y.(*types.Signature) + if !ok { + // should be impossible + return true + } + if x.Recv() == y.Recv() { + return true + } + if x.Recv() == nil || y.Recv() == nil { + return false + } + return Identical(x.Recv().Type(), y.Recv().Type()) + default: + return true + } +} diff --git a/vendor/honnef.co/go/tools/go/types/typeutil/imports.go b/vendor/honnef.co/go/tools/go/types/typeutil/imports.go new file mode 100644 index 00000000000..9c441dba9c0 --- /dev/null +++ b/vendor/honnef.co/go/tools/go/types/typeutil/imports.go @@ -0,0 +1,31 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +import "go/types" + +// Dependencies returns all dependencies of the specified packages. +// +// Dependent packages appear in topological order: if package P imports +// package Q, Q appears earlier than P in the result. +// The algorithm follows import statements in the order they +// appear in the source code, so the result is a total order. +// +func Dependencies(pkgs ...*types.Package) []*types.Package { + var result []*types.Package + seen := make(map[*types.Package]bool) + var visit func(pkgs []*types.Package) + visit = func(pkgs []*types.Package) { + for _, p := range pkgs { + if !seen[p] { + seen[p] = true + visit(p.Imports()) + result = append(result, p) + } + } + } + visit(pkgs) + return result +} diff --git a/vendor/honnef.co/go/tools/go/types/typeutil/map.go b/vendor/honnef.co/go/tools/go/types/typeutil/map.go new file mode 100644 index 00000000000..f929353ccbd --- /dev/null +++ b/vendor/honnef.co/go/tools/go/types/typeutil/map.go @@ -0,0 +1,319 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package typeutil defines various utilities for types, such as Map, +// a mapping from types.Type to interface{} values. +package typeutil + +import ( + "bytes" + "fmt" + "go/types" + "reflect" +) + +// Map is a hash-table-based mapping from types (types.Type) to +// arbitrary interface{} values. The concrete types that implement +// the Type interface are pointers. Since they are not canonicalized, +// == cannot be used to check for equivalence, and thus we cannot +// simply use a Go map. +// +// Just as with map[K]V, a nil *Map is a valid empty map. +// +// Not thread-safe. +// +// This fork handles Signatures correctly, respecting method +// receivers. Furthermore, it doesn't deduplicate interfaces or +// structs. Interfaces aren't deduplicated as not to conflate implicit +// and explicit methods. Structs aren't deduplicated because we track +// fields of each type separately. +// +type Map struct { + hasher Hasher // shared by many Maps + table map[uint32][]entry // maps hash to bucket; entry.key==nil means unused + length int // number of map entries +} + +// entry is an entry (key/value association) in a hash bucket. +type entry struct { + key types.Type + value interface{} +} + +// SetHasher sets the hasher used by Map. +// +// All Hashers are functionally equivalent but contain internal state +// used to cache the results of hashing previously seen types. +// +// A single Hasher created by MakeHasher() may be shared among many +// Maps. This is recommended if the instances have many keys in +// common, as it will amortize the cost of hash computation. +// +// A Hasher may grow without bound as new types are seen. Even when a +// type is deleted from the map, the Hasher never shrinks, since other +// types in the map may reference the deleted type indirectly. +// +// Hashers are not thread-safe, and read-only operations such as +// Map.Lookup require updates to the hasher, so a full Mutex lock (not a +// read-lock) is require around all Map operations if a shared +// hasher is accessed from multiple threads. +// +// If SetHasher is not called, the Map will create a private hasher at +// the first call to Insert. +// +func (m *Map) SetHasher(hasher Hasher) { + m.hasher = hasher +} + +// Delete removes the entry with the given key, if any. +// It returns true if the entry was found. +// +func (m *Map) Delete(key types.Type) bool { + if m != nil && m.table != nil { + hash := m.hasher.Hash(key) + bucket := m.table[hash] + for i, e := range bucket { + if e.key != nil && Identical(key, e.key) { + // We can't compact the bucket as it + // would disturb iterators. + bucket[i] = entry{} + m.length-- + return true + } + } + } + return false +} + +// At returns the map entry for the given key. +// The result is nil if the entry is not present. +// +func (m *Map) At(key types.Type) interface{} { + if m != nil && m.table != nil { + for _, e := range m.table[m.hasher.Hash(key)] { + if e.key != nil && Identical(key, e.key) { + return e.value + } + } + } + return nil +} + +// Set sets the map entry for key to val, +// and returns the previous entry, if any. +func (m *Map) Set(key types.Type, value interface{}) (prev interface{}) { + if m.table != nil { + hash := m.hasher.Hash(key) + bucket := m.table[hash] + var hole *entry + for i, e := range bucket { + if e.key == nil { + hole = &bucket[i] + } else if Identical(key, e.key) { + prev = e.value + bucket[i].value = value + return + } + } + + if hole != nil { + *hole = entry{key, value} // overwrite deleted entry + } else { + m.table[hash] = append(bucket, entry{key, value}) + } + } else { + if m.hasher.memo == nil { + m.hasher = MakeHasher() + } + hash := m.hasher.Hash(key) + m.table = map[uint32][]entry{hash: {entry{key, value}}} + } + + m.length++ + return +} + +// Len returns the number of map entries. +func (m *Map) Len() int { + if m != nil { + return m.length + } + return 0 +} + +// Iterate calls function f on each entry in the map in unspecified order. +// +// If f should mutate the map, Iterate provides the same guarantees as +// Go maps: if f deletes a map entry that Iterate has not yet reached, +// f will not be invoked for it, but if f inserts a map entry that +// Iterate has not yet reached, whether or not f will be invoked for +// it is unspecified. +// +func (m *Map) Iterate(f func(key types.Type, value interface{})) { + if m != nil { + for _, bucket := range m.table { + for _, e := range bucket { + if e.key != nil { + f(e.key, e.value) + } + } + } + } +} + +// Keys returns a new slice containing the set of map keys. +// The order is unspecified. +func (m *Map) Keys() []types.Type { + keys := make([]types.Type, 0, m.Len()) + m.Iterate(func(key types.Type, _ interface{}) { + keys = append(keys, key) + }) + return keys +} + +func (m *Map) toString(values bool) string { + if m == nil { + return "{}" + } + var buf bytes.Buffer + fmt.Fprint(&buf, "{") + sep := "" + m.Iterate(func(key types.Type, value interface{}) { + fmt.Fprint(&buf, sep) + sep = ", " + fmt.Fprint(&buf, key) + if values { + fmt.Fprintf(&buf, ": %q", value) + } + }) + fmt.Fprint(&buf, "}") + return buf.String() +} + +// String returns a string representation of the map's entries. +// Values are printed using fmt.Sprintf("%v", v). +// Order is unspecified. +// +func (m *Map) String() string { + return m.toString(true) +} + +// KeysString returns a string representation of the map's key set. +// Order is unspecified. +// +func (m *Map) KeysString() string { + return m.toString(false) +} + +//////////////////////////////////////////////////////////////////////// +// Hasher + +// A Hasher maps each type to its hash value. +// For efficiency, a hasher uses memoization; thus its memory +// footprint grows monotonically over time. +// Hashers are not thread-safe. +// Hashers have reference semantics. +// Call MakeHasher to create a Hasher. +type Hasher struct { + memo map[types.Type]uint32 +} + +// MakeHasher returns a new Hasher instance. +func MakeHasher() Hasher { + return Hasher{make(map[types.Type]uint32)} +} + +// Hash computes a hash value for the given type t such that +// Identical(t, t') => Hash(t) == Hash(t'). +func (h Hasher) Hash(t types.Type) uint32 { + hash, ok := h.memo[t] + if !ok { + hash = h.hashFor(t) + h.memo[t] = hash + } + return hash +} + +// hashString computes the Fowler–Noll–Vo hash of s. +func hashString(s string) uint32 { + var h uint32 + for i := 0; i < len(s); i++ { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +// hashFor computes the hash of t. +func (h Hasher) hashFor(t types.Type) uint32 { + // See Identical for rationale. + switch t := t.(type) { + case *types.Basic: + return uint32(t.Kind()) + + case *types.Array: + return 9043 + 2*uint32(t.Len()) + 3*h.Hash(t.Elem()) + + case *types.Slice: + return 9049 + 2*h.Hash(t.Elem()) + + case *types.Struct: + var hash uint32 = 9059 + for i, n := 0, t.NumFields(); i < n; i++ { + f := t.Field(i) + if f.Anonymous() { + hash += 8861 + } + hash += hashString(t.Tag(i)) + hash += hashString(f.Name()) // (ignore f.Pkg) + hash += h.Hash(f.Type()) + } + return hash + + case *types.Pointer: + return 9067 + 2*h.Hash(t.Elem()) + + case *types.Signature: + var hash uint32 = 9091 + if t.Variadic() { + hash *= 8863 + } + return hash + 3*h.hashTuple(t.Params()) + 5*h.hashTuple(t.Results()) + + case *types.Interface: + var hash uint32 = 9103 + for i, n := 0, t.NumMethods(); i < n; i++ { + // See go/types.identicalMethods for rationale. + // Method order is not significant. + // Ignore m.Pkg(). + m := t.Method(i) + hash += 3*hashString(m.Name()) + 5*h.Hash(m.Type()) + } + return hash + + case *types.Map: + return 9109 + 2*h.Hash(t.Key()) + 3*h.Hash(t.Elem()) + + case *types.Chan: + return 9127 + 2*uint32(t.Dir()) + 3*h.Hash(t.Elem()) + + case *types.Named: + // Not safe with a copying GC; objects may move. + return uint32(reflect.ValueOf(t.Obj()).Pointer()) + + case *types.Tuple: + return h.hashTuple(t) + } + panic(t) +} + +func (h Hasher) hashTuple(tuple *types.Tuple) uint32 { + // See go/types.identicalTypes for rationale. + n := tuple.Len() + var hash uint32 = 9137 + 2*uint32(n) + for i := 0; i < n; i++ { + hash += 3 * h.Hash(tuple.At(i).Type()) + } + return hash +} diff --git a/vendor/honnef.co/go/tools/go/types/typeutil/methodsetcache.go b/vendor/honnef.co/go/tools/go/types/typeutil/methodsetcache.go new file mode 100644 index 00000000000..32084610f49 --- /dev/null +++ b/vendor/honnef.co/go/tools/go/types/typeutil/methodsetcache.go @@ -0,0 +1,72 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file implements a cache of method sets. + +package typeutil + +import ( + "go/types" + "sync" +) + +// A MethodSetCache records the method set of each type T for which +// MethodSet(T) is called so that repeat queries are fast. +// The zero value is a ready-to-use cache instance. +type MethodSetCache struct { + mu sync.Mutex + named map[*types.Named]struct{ value, pointer *types.MethodSet } // method sets for named N and *N + others map[types.Type]*types.MethodSet // all other types +} + +// MethodSet returns the method set of type T. It is thread-safe. +// +// If cache is nil, this function is equivalent to types.NewMethodSet(T). +// Utility functions can thus expose an optional *MethodSetCache +// parameter to clients that care about performance. +// +func (cache *MethodSetCache) MethodSet(T types.Type) *types.MethodSet { + if cache == nil { + return types.NewMethodSet(T) + } + cache.mu.Lock() + defer cache.mu.Unlock() + + switch T := T.(type) { + case *types.Named: + return cache.lookupNamed(T).value + + case *types.Pointer: + if N, ok := T.Elem().(*types.Named); ok { + return cache.lookupNamed(N).pointer + } + } + + // all other types + // (The map uses pointer equivalence, not type identity.) + mset := cache.others[T] + if mset == nil { + mset = types.NewMethodSet(T) + if cache.others == nil { + cache.others = make(map[types.Type]*types.MethodSet) + } + cache.others[T] = mset + } + return mset +} + +func (cache *MethodSetCache) lookupNamed(named *types.Named) struct{ value, pointer *types.MethodSet } { + if cache.named == nil { + cache.named = make(map[*types.Named]struct{ value, pointer *types.MethodSet }) + } + // Avoid recomputing mset(*T) for each distinct Pointer + // instance whose underlying type is a named type. + msets, ok := cache.named[named] + if !ok { + msets.value = types.NewMethodSet(named) + msets.pointer = types.NewMethodSet(types.NewPointer(named)) + cache.named[named] = msets + } + return msets +} diff --git a/vendor/honnef.co/go/tools/go/types/typeutil/ui.go b/vendor/honnef.co/go/tools/go/types/typeutil/ui.go new file mode 100644 index 00000000000..9849c24cef3 --- /dev/null +++ b/vendor/honnef.co/go/tools/go/types/typeutil/ui.go @@ -0,0 +1,52 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeutil + +// This file defines utilities for user interfaces that display types. + +import "go/types" + +// IntuitiveMethodSet returns the intuitive method set of a type T, +// which is the set of methods you can call on an addressable value of +// that type. +// +// The result always contains MethodSet(T), and is exactly MethodSet(T) +// for interface types and for pointer-to-concrete types. +// For all other concrete types T, the result additionally +// contains each method belonging to *T if there is no identically +// named method on T itself. +// +// This corresponds to user intuition about method sets; +// this function is intended only for user interfaces. +// +// The order of the result is as for types.MethodSet(T). +// +func IntuitiveMethodSet(T types.Type, msets *MethodSetCache) []*types.Selection { + isPointerToConcrete := func(T types.Type) bool { + ptr, ok := T.(*types.Pointer) + return ok && !types.IsInterface(ptr.Elem()) + } + + var result []*types.Selection + mset := msets.MethodSet(T) + if types.IsInterface(T) || isPointerToConcrete(T) { + for i, n := 0, mset.Len(); i < n; i++ { + result = append(result, mset.At(i)) + } + } else { + // T is some other concrete type. + // Report methods of T and *T, preferring those of T. + pmset := msets.MethodSet(types.NewPointer(T)) + for i, n := 0, pmset.Len(); i < n; i++ { + meth := pmset.At(i) + if m := mset.Lookup(meth.Obj().Pkg(), meth.Obj().Name()); m != nil { + meth = m + } + result = append(result, meth) + } + + } + return result +} diff --git a/vendor/honnef.co/go/tools/internal/cache/cache.go b/vendor/honnef.co/go/tools/internal/cache/cache.go new file mode 100644 index 00000000000..2b33ca10671 --- /dev/null +++ b/vendor/honnef.co/go/tools/internal/cache/cache.go @@ -0,0 +1,474 @@ +// 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 cache implements a build artifact cache. +// +// This package is a slightly modified fork of Go's +// cmd/go/internal/cache package. +package cache + +import ( + "bytes" + "crypto/sha256" + "encoding/hex" + "errors" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + "honnef.co/go/tools/internal/renameio" +) + +// An ActionID is a cache action key, the hash of a complete description of a +// repeatable computation (command line, environment variables, +// input file contents, executable contents). +type ActionID [HashSize]byte + +// An OutputID is a cache output key, the hash of an output of a computation. +type OutputID [HashSize]byte + +// A Cache is a package cache, backed by a file system directory tree. +type Cache struct { + dir string + now func() time.Time +} + +// Open opens and returns the cache in the given directory. +// +// It is safe for multiple processes on a single machine to use the +// same cache directory in a local file system simultaneously. +// They will coordinate using operating system file locks and may +// duplicate effort but will not corrupt the cache. +// +// However, it is NOT safe for multiple processes on different machines +// to share a cache directory (for example, if the directory were stored +// in a network file system). File locking is notoriously unreliable in +// network file systems and may not suffice to protect the cache. +// +func Open(dir string) (*Cache, error) { + info, err := os.Stat(dir) + if err != nil { + return nil, err + } + if !info.IsDir() { + return nil, &os.PathError{Op: "open", Path: dir, Err: fmt.Errorf("not a directory")} + } + for i := 0; i < 256; i++ { + name := filepath.Join(dir, fmt.Sprintf("%02x", i)) + if err := os.MkdirAll(name, 0777); err != nil { + return nil, err + } + } + c := &Cache{ + dir: dir, + now: time.Now, + } + return c, nil +} + +// fileName returns the name of the file corresponding to the given id. +func (c *Cache) fileName(id [HashSize]byte, key string) string { + return filepath.Join(c.dir, fmt.Sprintf("%02x", id[0]), fmt.Sprintf("%x", id)+"-"+key) +} + +var errMissing = errors.New("cache entry not found") + +const ( + // action entry file is "v1 \n" + hexSize = HashSize * 2 + entrySize = 2 + 1 + hexSize + 1 + hexSize + 1 + 20 + 1 + 20 + 1 +) + +// verify controls whether to run the cache in verify mode. +// In verify mode, the cache always returns errMissing from Get +// but then double-checks in Put that the data being written +// exactly matches any existing entry. This provides an easy +// way to detect program behavior that would have been different +// had the cache entry been returned from Get. +// +// verify is enabled by setting the environment variable +// GODEBUG=gocacheverify=1. +var verify = false + +// DebugTest is set when GODEBUG=gocachetest=1 is in the environment. +var DebugTest = false + +func init() { initEnv() } + +func initEnv() { + verify = false + debugHash = false + debug := strings.Split(os.Getenv("GODEBUG"), ",") + for _, f := range debug { + if f == "gocacheverify=1" { + verify = true + } + if f == "gocachehash=1" { + debugHash = true + } + if f == "gocachetest=1" { + DebugTest = true + } + } +} + +// Get looks up the action ID in the cache, +// returning the corresponding output ID and file size, if any. +// Note that finding an output ID does not guarantee that the +// saved file for that output ID is still available. +func (c *Cache) Get(id ActionID) (Entry, error) { + if verify { + return Entry{}, errMissing + } + return c.get(id) +} + +type Entry struct { + OutputID OutputID + Size int64 + Time time.Time +} + +// get is Get but does not respect verify mode, so that Put can use it. +func (c *Cache) get(id ActionID) (Entry, error) { + missing := func() (Entry, error) { + return Entry{}, errMissing + } + f, err := os.Open(c.fileName(id, "a")) + if err != nil { + return missing() + } + defer f.Close() + entry := make([]byte, entrySize+1) // +1 to detect whether f is too long + if n, err := io.ReadFull(f, entry); n != entrySize || err != io.ErrUnexpectedEOF { + return missing() + } + if entry[0] != 'v' || entry[1] != '1' || entry[2] != ' ' || entry[3+hexSize] != ' ' || entry[3+hexSize+1+hexSize] != ' ' || entry[3+hexSize+1+hexSize+1+20] != ' ' || entry[entrySize-1] != '\n' { + return missing() + } + eid, entry := entry[3:3+hexSize], entry[3+hexSize:] + eout, entry := entry[1:1+hexSize], entry[1+hexSize:] + esize, entry := entry[1:1+20], entry[1+20:] + //lint:ignore SA4006 See https://github.com/dominikh/go-tools/issues/465 + etime, entry := entry[1:1+20], entry[1+20:] + var buf [HashSize]byte + if _, err := hex.Decode(buf[:], eid); err != nil || buf != id { + return missing() + } + if _, err := hex.Decode(buf[:], eout); err != nil { + return missing() + } + i := 0 + for i < len(esize) && esize[i] == ' ' { + i++ + } + size, err := strconv.ParseInt(string(esize[i:]), 10, 64) + if err != nil || size < 0 { + return missing() + } + i = 0 + for i < len(etime) && etime[i] == ' ' { + i++ + } + tm, err := strconv.ParseInt(string(etime[i:]), 10, 64) + if err != nil || size < 0 { + return missing() + } + + c.used(c.fileName(id, "a")) + + return Entry{buf, size, time.Unix(0, tm)}, nil +} + +// GetFile looks up the action ID in the cache and returns +// the name of the corresponding data file. +func (c *Cache) GetFile(id ActionID) (file string, entry Entry, err error) { + entry, err = c.Get(id) + if err != nil { + return "", Entry{}, err + } + file = c.OutputFile(entry.OutputID) + info, err := os.Stat(file) + if err != nil || info.Size() != entry.Size { + return "", Entry{}, errMissing + } + return file, entry, nil +} + +// GetBytes looks up the action ID in the cache and returns +// the corresponding output bytes. +// GetBytes should only be used for data that can be expected to fit in memory. +func (c *Cache) GetBytes(id ActionID) ([]byte, Entry, error) { + entry, err := c.Get(id) + if err != nil { + return nil, entry, err + } + data, _ := ioutil.ReadFile(c.OutputFile(entry.OutputID)) + if sha256.Sum256(data) != entry.OutputID { + return nil, entry, errMissing + } + return data, entry, nil +} + +// OutputFile returns the name of the cache file storing output with the given OutputID. +func (c *Cache) OutputFile(out OutputID) string { + file := c.fileName(out, "d") + c.used(file) + return file +} + +// Time constants for cache expiration. +// +// We set the mtime on a cache file on each use, but at most one per mtimeInterval (1 hour), +// to avoid causing many unnecessary inode updates. The mtimes therefore +// roughly reflect "time of last use" but may in fact be older by at most an hour. +// +// We scan the cache for entries to delete at most once per trimInterval (1 day). +// +// When we do scan the cache, we delete entries that have not been used for +// at least trimLimit (5 days). Statistics gathered from a month of usage by +// Go developers found that essentially all reuse of cached entries happened +// within 5 days of the previous reuse. See golang.org/issue/22990. +const ( + mtimeInterval = 1 * time.Hour + trimInterval = 24 * time.Hour + trimLimit = 5 * 24 * time.Hour +) + +// used makes a best-effort attempt to update mtime on file, +// so that mtime reflects cache access time. +// +// Because the reflection only needs to be approximate, +// and to reduce the amount of disk activity caused by using +// cache entries, used only updates the mtime if the current +// mtime is more than an hour old. This heuristic eliminates +// nearly all of the mtime updates that would otherwise happen, +// while still keeping the mtimes useful for cache trimming. +func (c *Cache) used(file string) { + info, err := os.Stat(file) + if err == nil && c.now().Sub(info.ModTime()) < mtimeInterval { + return + } + os.Chtimes(file, c.now(), c.now()) +} + +// Trim removes old cache entries that are likely not to be reused. +func (c *Cache) Trim() { + now := c.now() + + // We maintain in dir/trim.txt the time of the last completed cache trim. + // If the cache has been trimmed recently enough, do nothing. + // This is the common case. + data, _ := ioutil.ReadFile(filepath.Join(c.dir, "trim.txt")) + t, err := strconv.ParseInt(strings.TrimSpace(string(data)), 10, 64) + if err == nil && now.Sub(time.Unix(t, 0)) < trimInterval { + return + } + + // Trim each of the 256 subdirectories. + // We subtract an additional mtimeInterval + // to account for the imprecision of our "last used" mtimes. + cutoff := now.Add(-trimLimit - mtimeInterval) + for i := 0; i < 256; i++ { + subdir := filepath.Join(c.dir, fmt.Sprintf("%02x", i)) + c.trimSubdir(subdir, cutoff) + } + + // Ignore errors from here: if we don't write the complete timestamp, the + // cache will appear older than it is, and we'll trim it again next time. + renameio.WriteFile(filepath.Join(c.dir, "trim.txt"), []byte(fmt.Sprintf("%d", now.Unix()))) +} + +// trimSubdir trims a single cache subdirectory. +func (c *Cache) trimSubdir(subdir string, cutoff time.Time) { + // Read all directory entries from subdir before removing + // any files, in case removing files invalidates the file offset + // in the directory scan. Also, ignore error from f.Readdirnames, + // because we don't care about reporting the error and we still + // want to process any entries found before the error. + f, err := os.Open(subdir) + if err != nil { + return + } + names, _ := f.Readdirnames(-1) + f.Close() + + for _, name := range names { + // Remove only cache entries (xxxx-a and xxxx-d). + if !strings.HasSuffix(name, "-a") && !strings.HasSuffix(name, "-d") { + continue + } + entry := filepath.Join(subdir, name) + info, err := os.Stat(entry) + if err == nil && info.ModTime().Before(cutoff) { + os.Remove(entry) + } + } +} + +// putIndexEntry adds an entry to the cache recording that executing the action +// with the given id produces an output with the given output id (hash) and size. +func (c *Cache) putIndexEntry(id ActionID, out OutputID, size int64, allowVerify bool) error { + // Note: We expect that for one reason or another it may happen + // that repeating an action produces a different output hash + // (for example, if the output contains a time stamp or temp dir name). + // While not ideal, this is also not a correctness problem, so we + // don't make a big deal about it. In particular, we leave the action + // cache entries writable specifically so that they can be overwritten. + // + // Setting GODEBUG=gocacheverify=1 does make a big deal: + // in verify mode we are double-checking that the cache entries + // are entirely reproducible. As just noted, this may be unrealistic + // in some cases but the check is also useful for shaking out real bugs. + entry := []byte(fmt.Sprintf("v1 %x %x %20d %20d\n", id, out, size, time.Now().UnixNano())) + if verify && allowVerify { + old, err := c.get(id) + if err == nil && (old.OutputID != out || old.Size != size) { + // panic to show stack trace, so we can see what code is generating this cache entry. + msg := fmt.Sprintf("go: internal cache error: cache verify failed: id=%x changed:<<<\n%s\n>>>\nold: %x %d\nnew: %x %d", id, reverseHash(id), out, size, old.OutputID, old.Size) + panic(msg) + } + } + file := c.fileName(id, "a") + if err := ioutil.WriteFile(file, entry, 0666); err != nil { + // TODO(bcmills): This Remove potentially races with another go command writing to file. + // Can we eliminate it? + os.Remove(file) + return err + } + os.Chtimes(file, c.now(), c.now()) // mainly for tests + + return nil +} + +// Put stores the given output in the cache as the output for the action ID. +// It may read file twice. The content of file must not change between the two passes. +func (c *Cache) Put(id ActionID, file io.ReadSeeker) (OutputID, int64, error) { + return c.put(id, file, true) +} + +// PutNoVerify is like Put but disables the verify check +// when GODEBUG=goverifycache=1 is set. +// It is meant for data that is OK to cache but that we expect to vary slightly from run to run, +// like test output containing times and the like. +func (c *Cache) PutNoVerify(id ActionID, file io.ReadSeeker) (OutputID, int64, error) { + return c.put(id, file, false) +} + +func (c *Cache) put(id ActionID, file io.ReadSeeker, allowVerify bool) (OutputID, int64, error) { + // Compute output ID. + h := sha256.New() + if _, err := file.Seek(0, 0); err != nil { + return OutputID{}, 0, err + } + size, err := io.Copy(h, file) + if err != nil { + return OutputID{}, 0, err + } + var out OutputID + h.Sum(out[:0]) + + // Copy to cached output file (if not already present). + if err := c.copyFile(file, out, size); err != nil { + return out, size, err + } + + // Add to cache index. + return out, size, c.putIndexEntry(id, out, size, allowVerify) +} + +// PutBytes stores the given bytes in the cache as the output for the action ID. +func (c *Cache) PutBytes(id ActionID, data []byte) error { + _, _, err := c.Put(id, bytes.NewReader(data)) + return err +} + +// copyFile copies file into the cache, expecting it to have the given +// output ID and size, if that file is not present already. +func (c *Cache) copyFile(file io.ReadSeeker, out OutputID, size int64) error { + name := c.fileName(out, "d") + info, err := os.Stat(name) + if err == nil && info.Size() == size { + // Check hash. + if f, err := os.Open(name); err == nil { + h := sha256.New() + io.Copy(h, f) + f.Close() + var out2 OutputID + h.Sum(out2[:0]) + if out == out2 { + return nil + } + } + // Hash did not match. Fall through and rewrite file. + } + + // Copy file to cache directory. + mode := os.O_RDWR | os.O_CREATE + if err == nil && info.Size() > size { // shouldn't happen but fix in case + mode |= os.O_TRUNC + } + f, err := os.OpenFile(name, mode, 0666) + if err != nil { + return err + } + defer f.Close() + if size == 0 { + // File now exists with correct size. + // Only one possible zero-length file, so contents are OK too. + // Early return here makes sure there's a "last byte" for code below. + return nil + } + + // From here on, if any of the I/O writing the file fails, + // we make a best-effort attempt to truncate the file f + // before returning, to avoid leaving bad bytes in the file. + + // Copy file to f, but also into h to double-check hash. + if _, err := file.Seek(0, 0); err != nil { + f.Truncate(0) + return err + } + h := sha256.New() + w := io.MultiWriter(f, h) + if _, err := io.CopyN(w, file, size-1); err != nil { + f.Truncate(0) + return err + } + // Check last byte before writing it; writing it will make the size match + // what other processes expect to find and might cause them to start + // using the file. + buf := make([]byte, 1) + if _, err := file.Read(buf); err != nil { + f.Truncate(0) + return err + } + h.Write(buf) + sum := h.Sum(nil) + if !bytes.Equal(sum, out[:]) { + f.Truncate(0) + return fmt.Errorf("file content changed underfoot") + } + + // Commit cache file entry. + if _, err := f.Write(buf); err != nil { + f.Truncate(0) + return err + } + if err := f.Close(); err != nil { + // Data might not have been written, + // but file may look like it is the right size. + // To be extra careful, remove cached file. + os.Remove(name) + return err + } + os.Chtimes(name, c.now(), c.now()) // mainly for tests + + return nil +} diff --git a/vendor/honnef.co/go/tools/internal/cache/default.go b/vendor/honnef.co/go/tools/internal/cache/default.go new file mode 100644 index 00000000000..3034f76a538 --- /dev/null +++ b/vendor/honnef.co/go/tools/internal/cache/default.go @@ -0,0 +1,85 @@ +// 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 cache + +import ( + "fmt" + "io/ioutil" + "log" + "os" + "path/filepath" + "sync" +) + +// Default returns the default cache to use. +func Default() (*Cache, error) { + defaultOnce.Do(initDefaultCache) + return defaultCache, defaultDirErr +} + +var ( + defaultOnce sync.Once + defaultCache *Cache +) + +// cacheREADME is a message stored in a README in the cache directory. +// Because the cache lives outside the normal Go trees, we leave the +// README as a courtesy to explain where it came from. +const cacheREADME = `This directory holds cached build artifacts from staticcheck. +` + +// initDefaultCache does the work of finding the default cache +// the first time Default is called. +func initDefaultCache() { + dir := DefaultDir() + if err := os.MkdirAll(dir, 0777); err != nil { + log.Fatalf("failed to initialize build cache at %s: %s\n", dir, err) + } + if _, err := os.Stat(filepath.Join(dir, "README")); err != nil { + // Best effort. + ioutil.WriteFile(filepath.Join(dir, "README"), []byte(cacheREADME), 0666) + } + + c, err := Open(dir) + if err != nil { + log.Fatalf("failed to initialize build cache at %s: %s\n", dir, err) + } + defaultCache = c +} + +var ( + defaultDirOnce sync.Once + defaultDir string + defaultDirErr error +) + +// DefaultDir returns the effective STATICCHECK_CACHE setting. +func DefaultDir() string { + // Save the result of the first call to DefaultDir for later use in + // initDefaultCache. cmd/go/main.go explicitly sets GOCACHE so that + // subprocesses will inherit it, but that means initDefaultCache can't + // otherwise distinguish between an explicit "off" and a UserCacheDir error. + + defaultDirOnce.Do(func() { + defaultDir = os.Getenv("STATICCHECK_CACHE") + if filepath.IsAbs(defaultDir) { + return + } + if defaultDir != "" { + defaultDirErr = fmt.Errorf("STATICCHECK_CACHE is not an absolute path") + return + } + + // Compute default location. + dir, err := os.UserCacheDir() + if err != nil { + defaultDirErr = fmt.Errorf("STATICCHECK_CACHE is not defined and %v", err) + return + } + defaultDir = filepath.Join(dir, "staticcheck") + }) + + return defaultDir +} diff --git a/vendor/honnef.co/go/tools/internal/cache/hash.go b/vendor/honnef.co/go/tools/internal/cache/hash.go new file mode 100644 index 00000000000..a53543ec501 --- /dev/null +++ b/vendor/honnef.co/go/tools/internal/cache/hash.go @@ -0,0 +1,176 @@ +// 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 cache + +import ( + "bytes" + "crypto/sha256" + "fmt" + "hash" + "io" + "os" + "sync" +) + +var debugHash = false // set when GODEBUG=gocachehash=1 + +// HashSize is the number of bytes in a hash. +const HashSize = 32 + +// A Hash provides access to the canonical hash function used to index the cache. +// The current implementation uses salted SHA256, but clients must not assume this. +type Hash struct { + h hash.Hash + name string // for debugging + buf *bytes.Buffer // for verify +} + +// hashSalt is a salt string added to the beginning of every hash +// created by NewHash. Using the Staticcheck version makes sure that different +// versions of the command do not address the same cache +// entries, so that a bug in one version does not affect the execution +// of other versions. This salt will result in additional ActionID files +// in the cache, but not additional copies of the large output files, +// which are still addressed by unsalted SHA256. +var hashSalt []byte + +func SetSalt(b []byte) { + hashSalt = b +} + +// Subkey returns an action ID corresponding to mixing a parent +// action ID with a string description of the subkey. +func Subkey(parent ActionID, desc string) ActionID { + h := sha256.New() + h.Write([]byte("subkey:")) + h.Write(parent[:]) + h.Write([]byte(desc)) + var out ActionID + h.Sum(out[:0]) + if debugHash { + fmt.Fprintf(os.Stderr, "HASH subkey %x %q = %x\n", parent, desc, out) + } + if verify { + hashDebug.Lock() + hashDebug.m[out] = fmt.Sprintf("subkey %x %q", parent, desc) + hashDebug.Unlock() + } + return out +} + +// NewHash returns a new Hash. +// The caller is expected to Write data to it and then call Sum. +func NewHash(name string) *Hash { + h := &Hash{h: sha256.New(), name: name} + if debugHash { + fmt.Fprintf(os.Stderr, "HASH[%s]\n", h.name) + } + h.Write(hashSalt) + if verify { + h.buf = new(bytes.Buffer) + } + return h +} + +// Write writes data to the running hash. +func (h *Hash) Write(b []byte) (int, error) { + if debugHash { + fmt.Fprintf(os.Stderr, "HASH[%s]: %q\n", h.name, b) + } + if h.buf != nil { + h.buf.Write(b) + } + return h.h.Write(b) +} + +// Sum returns the hash of the data written previously. +func (h *Hash) Sum() [HashSize]byte { + var out [HashSize]byte + h.h.Sum(out[:0]) + if debugHash { + fmt.Fprintf(os.Stderr, "HASH[%s]: %x\n", h.name, out) + } + if h.buf != nil { + hashDebug.Lock() + if hashDebug.m == nil { + hashDebug.m = make(map[[HashSize]byte]string) + } + hashDebug.m[out] = h.buf.String() + hashDebug.Unlock() + } + return out +} + +// In GODEBUG=gocacheverify=1 mode, +// hashDebug holds the input to every computed hash ID, +// so that we can work backward from the ID involved in a +// cache entry mismatch to a description of what should be there. +var hashDebug struct { + sync.Mutex + m map[[HashSize]byte]string +} + +// reverseHash returns the input used to compute the hash id. +func reverseHash(id [HashSize]byte) string { + hashDebug.Lock() + s := hashDebug.m[id] + hashDebug.Unlock() + return s +} + +var hashFileCache struct { + sync.Mutex + m map[string][HashSize]byte +} + +// FileHash returns the hash of the named file. +// It caches repeated lookups for a given file, +// and the cache entry for a file can be initialized +// using SetFileHash. +// The hash used by FileHash is not the same as +// the hash used by NewHash. +func FileHash(file string) ([HashSize]byte, error) { + hashFileCache.Lock() + out, ok := hashFileCache.m[file] + hashFileCache.Unlock() + + if ok { + return out, nil + } + + h := sha256.New() + f, err := os.Open(file) + if err != nil { + if debugHash { + fmt.Fprintf(os.Stderr, "HASH %s: %v\n", file, err) + } + return [HashSize]byte{}, err + } + _, err = io.Copy(h, f) + f.Close() + if err != nil { + if debugHash { + fmt.Fprintf(os.Stderr, "HASH %s: %v\n", file, err) + } + return [HashSize]byte{}, err + } + h.Sum(out[:0]) + if debugHash { + fmt.Fprintf(os.Stderr, "HASH %s: %x\n", file, out) + } + + SetFileHash(file, out) + return out, nil +} + +// SetFileHash sets the hash returned by FileHash for file. +func SetFileHash(file string, sum [HashSize]byte) { + hashFileCache.Lock() + if hashFileCache.m == nil { + hashFileCache.m = make(map[string][HashSize]byte) + } + hashFileCache.m[file] = sum + hashFileCache.Unlock() +} diff --git a/vendor/honnef.co/go/tools/internal/passes/buildssa/buildssa.go b/vendor/honnef.co/go/tools/internal/passes/buildssa/buildssa.go new file mode 100644 index 00000000000..fde918d1213 --- /dev/null +++ b/vendor/honnef.co/go/tools/internal/passes/buildssa/buildssa.go @@ -0,0 +1,116 @@ +// 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 buildssa defines an Analyzer that constructs the SSA +// representation of an error-free package and returns the set of all +// functions within it. It does not report any diagnostics itself but +// may be used as an input to other analyzers. +// +// THIS INTERFACE IS EXPERIMENTAL AND MAY BE SUBJECT TO INCOMPATIBLE CHANGE. +package buildssa + +import ( + "go/ast" + "go/types" + "reflect" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/ssa" +) + +var Analyzer = &analysis.Analyzer{ + Name: "buildssa", + Doc: "build SSA-form IR for later passes", + Run: run, + ResultType: reflect.TypeOf(new(SSA)), +} + +// SSA provides SSA-form intermediate representation for all the +// non-blank source functions in the current package. +type SSA struct { + Pkg *ssa.Package + SrcFuncs []*ssa.Function +} + +func run(pass *analysis.Pass) (interface{}, error) { + // Plundered from ssautil.BuildPackage. + + // We must create a new Program for each Package because the + // analysis API provides no place to hang a Program shared by + // all Packages. Consequently, SSA Packages and Functions do not + // have a canonical representation across an analysis session of + // multiple packages. This is unlikely to be a problem in + // practice because the analysis API essentially forces all + // packages to be analysed independently, so any given call to + // Analysis.Run on a package will see only SSA objects belonging + // to a single Program. + + mode := ssa.GlobalDebug + + prog := ssa.NewProgram(pass.Fset, mode) + + // Create SSA packages for all imports. + // Order is not significant. + created := make(map[*types.Package]bool) + var createAll func(pkgs []*types.Package) + createAll = func(pkgs []*types.Package) { + for _, p := range pkgs { + if !created[p] { + created[p] = true + prog.CreatePackage(p, nil, nil, true) + createAll(p.Imports()) + } + } + } + createAll(pass.Pkg.Imports()) + + // Create and build the primary package. + ssapkg := prog.CreatePackage(pass.Pkg, pass.Files, pass.TypesInfo, false) + ssapkg.Build() + + // Compute list of source functions, including literals, + // in source order. + var funcs []*ssa.Function + var addAnons func(f *ssa.Function) + addAnons = func(f *ssa.Function) { + funcs = append(funcs, f) + for _, anon := range f.AnonFuncs { + addAnons(anon) + } + } + addAnons(ssapkg.Members["init"].(*ssa.Function)) + for _, f := range pass.Files { + for _, decl := range f.Decls { + if fdecl, ok := decl.(*ast.FuncDecl); ok { + + // SSA will not build a Function + // for a FuncDecl named blank. + // That's arguably too strict but + // relaxing it would break uniqueness of + // names of package members. + if fdecl.Name.Name == "_" { + continue + } + + // (init functions have distinct Func + // objects named "init" and distinct + // ssa.Functions named "init#1", ...) + + fn := pass.TypesInfo.Defs[fdecl.Name].(*types.Func) + if fn == nil { + panic(fn) + } + + f := ssapkg.Prog.FuncValue(fn) + if f == nil { + panic(fn) + } + + addAnons(f) + } + } + } + + return &SSA{Pkg: ssapkg, SrcFuncs: funcs}, nil +} diff --git a/vendor/honnef.co/go/tools/internal/renameio/renameio.go b/vendor/honnef.co/go/tools/internal/renameio/renameio.go new file mode 100644 index 00000000000..3f3f1708fa4 --- /dev/null +++ b/vendor/honnef.co/go/tools/internal/renameio/renameio.go @@ -0,0 +1,83 @@ +// 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 renameio writes files atomically by renaming temporary files. +package renameio + +import ( + "bytes" + "io" + "io/ioutil" + "os" + "path/filepath" + "runtime" + "strings" + "time" +) + +const patternSuffix = "*.tmp" + +// Pattern returns a glob pattern that matches the unrenamed temporary files +// created when writing to filename. +func Pattern(filename string) string { + return filepath.Join(filepath.Dir(filename), filepath.Base(filename)+patternSuffix) +} + +// WriteFile is like ioutil.WriteFile, but first writes data to an arbitrary +// file in the same directory as filename, then renames it atomically to the +// final name. +// +// That ensures that the final location, if it exists, is always a complete file. +func WriteFile(filename string, data []byte) (err error) { + return WriteToFile(filename, bytes.NewReader(data)) +} + +// WriteToFile is a variant of WriteFile that accepts the data as an io.Reader +// instead of a slice. +func WriteToFile(filename string, data io.Reader) (err error) { + f, err := ioutil.TempFile(filepath.Dir(filename), filepath.Base(filename)+patternSuffix) + if err != nil { + return err + } + defer func() { + // Only call os.Remove on f.Name() if we failed to rename it: otherwise, + // some other process may have created a new file with the same name after + // that. + if err != nil { + f.Close() + os.Remove(f.Name()) + } + }() + + if _, err := io.Copy(f, data); err != nil { + return err + } + // Sync the file before renaming it: otherwise, after a crash the reader may + // observe a 0-length file instead of the actual contents. + // See https://golang.org/issue/22397#issuecomment-380831736. + if err := f.Sync(); err != nil { + return err + } + if err := f.Close(); err != nil { + return err + } + + var start time.Time + for { + err := os.Rename(f.Name(), filename) + if err == nil || runtime.GOOS != "windows" || !strings.HasSuffix(err.Error(), "Access is denied.") { + return err + } + + // Windows seems to occasionally trigger spurious "Access is denied" errors + // here (see golang.org/issue/31247). We're not sure why. It's probably + // worth a little extra latency to avoid propagating the spurious errors. + if start.IsZero() { + start = time.Now() + } else if time.Since(start) >= 500*time.Millisecond { + return err + } + time.Sleep(5 * time.Millisecond) + } +} diff --git a/vendor/honnef.co/go/tools/internal/sharedcheck/lint.go b/vendor/honnef.co/go/tools/internal/sharedcheck/lint.go new file mode 100644 index 00000000000..affee660726 --- /dev/null +++ b/vendor/honnef.co/go/tools/internal/sharedcheck/lint.go @@ -0,0 +1,70 @@ +package sharedcheck + +import ( + "go/ast" + "go/types" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/internal/passes/buildssa" + . "honnef.co/go/tools/lint/lintdsl" + "honnef.co/go/tools/ssa" +) + +func CheckRangeStringRunes(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + fn := func(node ast.Node) bool { + rng, ok := node.(*ast.RangeStmt) + if !ok || !IsBlank(rng.Key) { + return true + } + + v, _ := ssafn.ValueForExpr(rng.X) + + // Check that we're converting from string to []rune + val, _ := v.(*ssa.Convert) + if val == nil { + return true + } + Tsrc, ok := val.X.Type().(*types.Basic) + if !ok || Tsrc.Kind() != types.String { + return true + } + Tdst, ok := val.Type().(*types.Slice) + if !ok { + return true + } + TdstElem, ok := Tdst.Elem().(*types.Basic) + if !ok || TdstElem.Kind() != types.Int32 { + return true + } + + // Check that the result of the conversion is only used to + // range over + refs := val.Referrers() + if refs == nil { + return true + } + + // Expect two refs: one for obtaining the length of the slice, + // one for accessing the elements + if len(FilterDebug(*refs)) != 2 { + // TODO(dh): right now, we check that only one place + // refers to our slice. This will miss cases such as + // ranging over the slice twice. Ideally, we'd ensure that + // the slice is only used for ranging over (without + // accessing the key), but that is harder to do because in + // SSA form, ranging over a slice looks like an ordinary + // loop with index increments and slice accesses. We'd + // have to look at the associated AST node to check that + // it's a range statement. + return true + } + + pass.Reportf(rng.Pos(), "should range over string, not []rune(string)") + + return true + } + Inspect(ssafn.Syntax(), fn) + } + return nil, nil +} diff --git a/vendor/honnef.co/go/tools/lint/LICENSE b/vendor/honnef.co/go/tools/lint/LICENSE new file mode 100644 index 00000000000..796130a123a --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2013 The Go Authors. All rights reserved. +Copyright (c) 2016 Dominik Honnef. 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/honnef.co/go/tools/lint/lint.go b/vendor/honnef.co/go/tools/lint/lint.go new file mode 100644 index 00000000000..de5a8f1288d --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lint.go @@ -0,0 +1,491 @@ +// Package lint provides the foundation for tools like staticcheck +package lint // import "honnef.co/go/tools/lint" + +import ( + "bytes" + "fmt" + "go/scanner" + "go/token" + "go/types" + "path/filepath" + "sort" + "strings" + "sync" + "sync/atomic" + "unicode" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/packages" + "honnef.co/go/tools/config" +) + +type Documentation struct { + Title string + Text string + Since string + NonDefault bool + Options []string +} + +func (doc *Documentation) String() string { + b := &strings.Builder{} + fmt.Fprintf(b, "%s\n\n", doc.Title) + if doc.Text != "" { + fmt.Fprintf(b, "%s\n\n", doc.Text) + } + fmt.Fprint(b, "Available since\n ") + if doc.Since == "" { + fmt.Fprint(b, "unreleased") + } else { + fmt.Fprintf(b, "%s", doc.Since) + } + if doc.NonDefault { + fmt.Fprint(b, ", non-default") + } + fmt.Fprint(b, "\n") + if len(doc.Options) > 0 { + fmt.Fprintf(b, "\nOptions\n") + for _, opt := range doc.Options { + fmt.Fprintf(b, " %s", opt) + } + fmt.Fprint(b, "\n") + } + return b.String() +} + +type Ignore interface { + Match(p Problem) bool +} + +type LineIgnore struct { + File string + Line int + Checks []string + Matched bool + Pos token.Pos +} + +func (li *LineIgnore) Match(p Problem) bool { + pos := p.Pos + if pos.Filename != li.File || pos.Line != li.Line { + return false + } + for _, c := range li.Checks { + if m, _ := filepath.Match(c, p.Check); m { + li.Matched = true + return true + } + } + return false +} + +func (li *LineIgnore) String() string { + matched := "not matched" + if li.Matched { + matched = "matched" + } + return fmt.Sprintf("%s:%d %s (%s)", li.File, li.Line, strings.Join(li.Checks, ", "), matched) +} + +type FileIgnore struct { + File string + Checks []string +} + +func (fi *FileIgnore) Match(p Problem) bool { + if p.Pos.Filename != fi.File { + return false + } + for _, c := range fi.Checks { + if m, _ := filepath.Match(c, p.Check); m { + return true + } + } + return false +} + +type Severity uint8 + +const ( + Error Severity = iota + Warning + Ignored +) + +// Problem represents a problem in some source code. +type Problem struct { + Pos token.Position + End token.Position + Message string + Check string + Severity Severity +} + +func (p *Problem) String() string { + return fmt.Sprintf("%s (%s)", p.Message, p.Check) +} + +// A Linter lints Go source code. +type Linter struct { + Checkers []*analysis.Analyzer + CumulativeCheckers []CumulativeChecker + GoVersion int + Config config.Config + Stats Stats +} + +type CumulativeChecker interface { + Analyzer() *analysis.Analyzer + Result() []types.Object + ProblemObject(*token.FileSet, types.Object) Problem +} + +func (l *Linter) Lint(cfg *packages.Config, patterns []string) ([]Problem, error) { + var allAnalyzers []*analysis.Analyzer + allAnalyzers = append(allAnalyzers, l.Checkers...) + for _, cum := range l.CumulativeCheckers { + allAnalyzers = append(allAnalyzers, cum.Analyzer()) + } + + // The -checks command line flag overrules all configuration + // files, which means that for `-checks="foo"`, no check other + // than foo can ever be reported to the user. Make use of this + // fact to cull the list of analyses we need to run. + + // replace "inherit" with "all", as we don't want to base the + // list of all checks on the default configuration, which + // disables certain checks. + checks := make([]string, len(l.Config.Checks)) + copy(checks, l.Config.Checks) + for i, c := range checks { + if c == "inherit" { + checks[i] = "all" + } + } + + allowed := FilterChecks(allAnalyzers, checks) + var allowedAnalyzers []*analysis.Analyzer + for _, c := range l.Checkers { + if allowed[c.Name] { + allowedAnalyzers = append(allowedAnalyzers, c) + } + } + hasCumulative := false + for _, cum := range l.CumulativeCheckers { + a := cum.Analyzer() + if allowed[a.Name] { + hasCumulative = true + allowedAnalyzers = append(allowedAnalyzers, a) + } + } + + r, err := NewRunner(&l.Stats) + if err != nil { + return nil, err + } + r.goVersion = l.GoVersion + + pkgs, err := r.Run(cfg, patterns, allowedAnalyzers, hasCumulative) + if err != nil { + return nil, err + } + + tpkgToPkg := map[*types.Package]*Package{} + for _, pkg := range pkgs { + tpkgToPkg[pkg.Types] = pkg + + for _, e := range pkg.errs { + switch e := e.(type) { + case types.Error: + p := Problem{ + Pos: e.Fset.PositionFor(e.Pos, false), + Message: e.Msg, + Severity: Error, + Check: "compile", + } + pkg.problems = append(pkg.problems, p) + case packages.Error: + msg := e.Msg + if len(msg) != 0 && msg[0] == '\n' { + // TODO(dh): See https://github.com/golang/go/issues/32363 + msg = msg[1:] + } + + var pos token.Position + if e.Pos == "" { + // Under certain conditions (malformed package + // declarations, multiple packages in the same + // directory), go list emits an error on stderr + // instead of JSON. Those errors do not have + // associated position information in + // go/packages.Error, even though the output on + // stderr may contain it. + if p, n, err := parsePos(msg); err == nil { + if abs, err := filepath.Abs(p.Filename); err == nil { + p.Filename = abs + } + pos = p + msg = msg[n+2:] + } + } else { + var err error + pos, _, err = parsePos(e.Pos) + if err != nil { + panic(fmt.Sprintf("internal error: %s", e)) + } + } + p := Problem{ + Pos: pos, + Message: msg, + Severity: Error, + Check: "compile", + } + pkg.problems = append(pkg.problems, p) + case scanner.ErrorList: + for _, e := range e { + p := Problem{ + Pos: e.Pos, + Message: e.Msg, + Severity: Error, + Check: "compile", + } + pkg.problems = append(pkg.problems, p) + } + case error: + p := Problem{ + Pos: token.Position{}, + Message: e.Error(), + Severity: Error, + Check: "compile", + } + pkg.problems = append(pkg.problems, p) + } + } + } + + atomic.StoreUint32(&r.stats.State, StateCumulative) + var problems []Problem + for _, cum := range l.CumulativeCheckers { + for _, res := range cum.Result() { + pkg := tpkgToPkg[res.Pkg()] + allowedChecks := FilterChecks(allowedAnalyzers, pkg.cfg.Merge(l.Config).Checks) + if allowedChecks[cum.Analyzer().Name] { + pos := DisplayPosition(pkg.Fset, res.Pos()) + // FIXME(dh): why are we ignoring generated files + // here? Surely this is specific to 'unused', not all + // cumulative checkers + if _, ok := pkg.gen[pos.Filename]; ok { + continue + } + p := cum.ProblemObject(pkg.Fset, res) + problems = append(problems, p) + } + } + } + + for _, pkg := range pkgs { + for _, ig := range pkg.ignores { + for i := range pkg.problems { + p := &pkg.problems[i] + if ig.Match(*p) { + p.Severity = Ignored + } + } + for i := range problems { + p := &problems[i] + if ig.Match(*p) { + p.Severity = Ignored + } + } + } + + if pkg.cfg == nil { + // The package failed to load, otherwise we would have a + // valid config. Pass through all errors. + problems = append(problems, pkg.problems...) + } else { + for _, p := range pkg.problems { + allowedChecks := FilterChecks(allowedAnalyzers, pkg.cfg.Merge(l.Config).Checks) + allowedChecks["compile"] = true + if allowedChecks[p.Check] { + problems = append(problems, p) + } + } + } + + for _, ig := range pkg.ignores { + ig, ok := ig.(*LineIgnore) + if !ok { + continue + } + if ig.Matched { + continue + } + + couldveMatched := false + allowedChecks := FilterChecks(allowedAnalyzers, pkg.cfg.Merge(l.Config).Checks) + for _, c := range ig.Checks { + if !allowedChecks[c] { + continue + } + couldveMatched = true + break + } + + if !couldveMatched { + // The ignored checks were disabled for the containing package. + // Don't flag the ignore for not having matched. + continue + } + p := Problem{ + Pos: DisplayPosition(pkg.Fset, ig.Pos), + Message: "this linter directive didn't match anything; should it be removed?", + Check: "", + } + problems = append(problems, p) + } + } + + if len(problems) == 0 { + return nil, nil + } + + sort.Slice(problems, func(i, j int) bool { + pi := problems[i].Pos + pj := problems[j].Pos + + if pi.Filename != pj.Filename { + return pi.Filename < pj.Filename + } + if pi.Line != pj.Line { + return pi.Line < pj.Line + } + if pi.Column != pj.Column { + return pi.Column < pj.Column + } + + return problems[i].Message < problems[j].Message + }) + + var out []Problem + out = append(out, problems[0]) + for i, p := range problems[1:] { + // We may encounter duplicate problems because one file + // can be part of many packages. + if problems[i] != p { + out = append(out, p) + } + } + return out, nil +} + +func FilterChecks(allChecks []*analysis.Analyzer, checks []string) map[string]bool { + // OPT(dh): this entire computation could be cached per package + allowedChecks := map[string]bool{} + + for _, check := range checks { + b := true + if len(check) > 1 && check[0] == '-' { + b = false + check = check[1:] + } + if check == "*" || check == "all" { + // Match all + for _, c := range allChecks { + allowedChecks[c.Name] = b + } + } else if strings.HasSuffix(check, "*") { + // Glob + prefix := check[:len(check)-1] + isCat := strings.IndexFunc(prefix, func(r rune) bool { return unicode.IsNumber(r) }) == -1 + + for _, c := range allChecks { + idx := strings.IndexFunc(c.Name, func(r rune) bool { return unicode.IsNumber(r) }) + if isCat { + // Glob is S*, which should match S1000 but not SA1000 + cat := c.Name[:idx] + if prefix == cat { + allowedChecks[c.Name] = b + } + } else { + // Glob is S1* + if strings.HasPrefix(c.Name, prefix) { + allowedChecks[c.Name] = b + } + } + } + } else { + // Literal check name + allowedChecks[check] = b + } + } + return allowedChecks +} + +type Positioner interface { + Pos() token.Pos +} + +func DisplayPosition(fset *token.FileSet, p token.Pos) token.Position { + if p == token.NoPos { + return token.Position{} + } + + // Only use the adjusted position if it points to another Go file. + // This means we'll point to the original file for cgo files, but + // we won't point to a YACC grammar file. + pos := fset.PositionFor(p, false) + adjPos := fset.PositionFor(p, true) + + if filepath.Ext(adjPos.Filename) == ".go" { + return adjPos + } + return pos +} + +var bufferPool = &sync.Pool{ + New: func() interface{} { + buf := bytes.NewBuffer(nil) + buf.Grow(64) + return buf + }, +} + +func FuncName(f *types.Func) string { + buf := bufferPool.Get().(*bytes.Buffer) + buf.Reset() + if f.Type() != nil { + sig := f.Type().(*types.Signature) + if recv := sig.Recv(); recv != nil { + buf.WriteByte('(') + if _, ok := recv.Type().(*types.Interface); ok { + // gcimporter creates abstract methods of + // named interfaces using the interface type + // (not the named type) as the receiver. + // Don't print it in full. + buf.WriteString("interface") + } else { + types.WriteType(buf, recv.Type(), nil) + } + buf.WriteByte(')') + buf.WriteByte('.') + } else if f.Pkg() != nil { + writePackage(buf, f.Pkg()) + } + } + buf.WriteString(f.Name()) + s := buf.String() + bufferPool.Put(buf) + return s +} + +func writePackage(buf *bytes.Buffer, pkg *types.Package) { + if pkg == nil { + return + } + s := pkg.Path() + if s != "" { + buf.WriteString(s) + buf.WriteByte('.') + } +} diff --git a/vendor/honnef.co/go/tools/lint/lintdsl/lintdsl.go b/vendor/honnef.co/go/tools/lint/lintdsl/lintdsl.go new file mode 100644 index 00000000000..3b939e95f2f --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lintdsl/lintdsl.go @@ -0,0 +1,400 @@ +// Package lintdsl provides helpers for implementing static analysis +// checks. Dot-importing this package is encouraged. +package lintdsl + +import ( + "bytes" + "flag" + "fmt" + "go/ast" + "go/constant" + "go/printer" + "go/token" + "go/types" + "strings" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/facts" + "honnef.co/go/tools/lint" + "honnef.co/go/tools/ssa" +) + +type packager interface { + Package() *ssa.Package +} + +func CallName(call *ssa.CallCommon) string { + if call.IsInvoke() { + return "" + } + switch v := call.Value.(type) { + case *ssa.Function: + fn, ok := v.Object().(*types.Func) + if !ok { + return "" + } + return lint.FuncName(fn) + case *ssa.Builtin: + return v.Name() + } + return "" +} + +func IsCallTo(call *ssa.CallCommon, name string) bool { return CallName(call) == name } +func IsType(T types.Type, name string) bool { return types.TypeString(T, nil) == name } + +func FilterDebug(instr []ssa.Instruction) []ssa.Instruction { + var out []ssa.Instruction + for _, ins := range instr { + if _, ok := ins.(*ssa.DebugRef); !ok { + out = append(out, ins) + } + } + return out +} + +func IsExample(fn *ssa.Function) bool { + if !strings.HasPrefix(fn.Name(), "Example") { + return false + } + f := fn.Prog.Fset.File(fn.Pos()) + if f == nil { + return false + } + return strings.HasSuffix(f.Name(), "_test.go") +} + +func IsPointerLike(T types.Type) bool { + switch T := T.Underlying().(type) { + case *types.Interface, *types.Chan, *types.Map, *types.Signature, *types.Pointer: + return true + case *types.Basic: + return T.Kind() == types.UnsafePointer + } + return false +} + +func IsIdent(expr ast.Expr, ident string) bool { + id, ok := expr.(*ast.Ident) + return ok && id.Name == ident +} + +// isBlank returns whether id is the blank identifier "_". +// If id == nil, the answer is false. +func IsBlank(id ast.Expr) bool { + ident, _ := id.(*ast.Ident) + return ident != nil && ident.Name == "_" +} + +func IsIntLiteral(expr ast.Expr, literal string) bool { + lit, ok := expr.(*ast.BasicLit) + return ok && lit.Kind == token.INT && lit.Value == literal +} + +// Deprecated: use IsIntLiteral instead +func IsZero(expr ast.Expr) bool { + return IsIntLiteral(expr, "0") +} + +func IsOfType(pass *analysis.Pass, expr ast.Expr, name string) bool { + return IsType(pass.TypesInfo.TypeOf(expr), name) +} + +func IsInTest(pass *analysis.Pass, node lint.Positioner) bool { + // FIXME(dh): this doesn't work for global variables with + // initializers + f := pass.Fset.File(node.Pos()) + return f != nil && strings.HasSuffix(f.Name(), "_test.go") +} + +func IsInMain(pass *analysis.Pass, node lint.Positioner) bool { + if node, ok := node.(packager); ok { + return node.Package().Pkg.Name() == "main" + } + return pass.Pkg.Name() == "main" +} + +func SelectorName(pass *analysis.Pass, expr *ast.SelectorExpr) string { + info := pass.TypesInfo + sel := info.Selections[expr] + if sel == nil { + if x, ok := expr.X.(*ast.Ident); ok { + pkg, ok := info.ObjectOf(x).(*types.PkgName) + if !ok { + // This shouldn't happen + return fmt.Sprintf("%s.%s", x.Name, expr.Sel.Name) + } + return fmt.Sprintf("%s.%s", pkg.Imported().Path(), expr.Sel.Name) + } + panic(fmt.Sprintf("unsupported selector: %v", expr)) + } + return fmt.Sprintf("(%s).%s", sel.Recv(), sel.Obj().Name()) +} + +func IsNil(pass *analysis.Pass, expr ast.Expr) bool { + return pass.TypesInfo.Types[expr].IsNil() +} + +func BoolConst(pass *analysis.Pass, expr ast.Expr) bool { + val := pass.TypesInfo.ObjectOf(expr.(*ast.Ident)).(*types.Const).Val() + return constant.BoolVal(val) +} + +func IsBoolConst(pass *analysis.Pass, expr ast.Expr) bool { + // We explicitly don't support typed bools because more often than + // not, custom bool types are used as binary enums and the + // explicit comparison is desired. + + ident, ok := expr.(*ast.Ident) + if !ok { + return false + } + obj := pass.TypesInfo.ObjectOf(ident) + c, ok := obj.(*types.Const) + if !ok { + return false + } + basic, ok := c.Type().(*types.Basic) + if !ok { + return false + } + if basic.Kind() != types.UntypedBool && basic.Kind() != types.Bool { + return false + } + return true +} + +func ExprToInt(pass *analysis.Pass, expr ast.Expr) (int64, bool) { + tv := pass.TypesInfo.Types[expr] + if tv.Value == nil { + return 0, false + } + if tv.Value.Kind() != constant.Int { + return 0, false + } + return constant.Int64Val(tv.Value) +} + +func ExprToString(pass *analysis.Pass, expr ast.Expr) (string, bool) { + val := pass.TypesInfo.Types[expr].Value + if val == nil { + return "", false + } + if val.Kind() != constant.String { + return "", false + } + return constant.StringVal(val), true +} + +// Dereference returns a pointer's element type; otherwise it returns +// T. +func Dereference(T types.Type) types.Type { + if p, ok := T.Underlying().(*types.Pointer); ok { + return p.Elem() + } + return T +} + +// DereferenceR returns a pointer's element type; otherwise it returns +// T. If the element type is itself a pointer, DereferenceR will be +// applied recursively. +func DereferenceR(T types.Type) types.Type { + if p, ok := T.Underlying().(*types.Pointer); ok { + return DereferenceR(p.Elem()) + } + return T +} + +func IsGoVersion(pass *analysis.Pass, minor int) bool { + version := pass.Analyzer.Flags.Lookup("go").Value.(flag.Getter).Get().(int) + return version >= minor +} + +func CallNameAST(pass *analysis.Pass, call *ast.CallExpr) string { + switch fun := call.Fun.(type) { + case *ast.SelectorExpr: + fn, ok := pass.TypesInfo.ObjectOf(fun.Sel).(*types.Func) + if !ok { + return "" + } + return lint.FuncName(fn) + case *ast.Ident: + obj := pass.TypesInfo.ObjectOf(fun) + switch obj := obj.(type) { + case *types.Func: + return lint.FuncName(obj) + case *types.Builtin: + return obj.Name() + default: + return "" + } + default: + return "" + } +} + +func IsCallToAST(pass *analysis.Pass, node ast.Node, name string) bool { + call, ok := node.(*ast.CallExpr) + if !ok { + return false + } + return CallNameAST(pass, call) == name +} + +func IsCallToAnyAST(pass *analysis.Pass, node ast.Node, names ...string) bool { + for _, name := range names { + if IsCallToAST(pass, node, name) { + return true + } + } + return false +} + +func Render(pass *analysis.Pass, x interface{}) string { + var buf bytes.Buffer + if err := printer.Fprint(&buf, pass.Fset, x); err != nil { + panic(err) + } + return buf.String() +} + +func RenderArgs(pass *analysis.Pass, args []ast.Expr) string { + var ss []string + for _, arg := range args { + ss = append(ss, Render(pass, arg)) + } + return strings.Join(ss, ", ") +} + +func Preamble(f *ast.File) string { + cutoff := f.Package + if f.Doc != nil { + cutoff = f.Doc.Pos() + } + var out []string + for _, cmt := range f.Comments { + if cmt.Pos() >= cutoff { + break + } + out = append(out, cmt.Text()) + } + return strings.Join(out, "\n") +} + +func Inspect(node ast.Node, fn func(node ast.Node) bool) { + if node == nil { + return + } + ast.Inspect(node, fn) +} + +func GroupSpecs(fset *token.FileSet, specs []ast.Spec) [][]ast.Spec { + if len(specs) == 0 { + return nil + } + groups := make([][]ast.Spec, 1) + groups[0] = append(groups[0], specs[0]) + + for _, spec := range specs[1:] { + g := groups[len(groups)-1] + if fset.PositionFor(spec.Pos(), false).Line-1 != + fset.PositionFor(g[len(g)-1].End(), false).Line { + + groups = append(groups, nil) + } + + groups[len(groups)-1] = append(groups[len(groups)-1], spec) + } + + return groups +} + +func IsObject(obj types.Object, name string) bool { + var path string + if pkg := obj.Pkg(); pkg != nil { + path = pkg.Path() + "." + } + return path+obj.Name() == name +} + +type Field struct { + Var *types.Var + Tag string + Path []int +} + +// FlattenFields recursively flattens T and embedded structs, +// returning a list of fields. If multiple fields with the same name +// exist, all will be returned. +func FlattenFields(T *types.Struct) []Field { + return flattenFields(T, nil, nil) +} + +func flattenFields(T *types.Struct, path []int, seen map[types.Type]bool) []Field { + if seen == nil { + seen = map[types.Type]bool{} + } + if seen[T] { + return nil + } + seen[T] = true + var out []Field + for i := 0; i < T.NumFields(); i++ { + field := T.Field(i) + tag := T.Tag(i) + np := append(path[:len(path):len(path)], i) + if field.Anonymous() { + if s, ok := Dereference(field.Type()).Underlying().(*types.Struct); ok { + out = append(out, flattenFields(s, np, seen)...) + } + } else { + out = append(out, Field{field, tag, np}) + } + } + return out +} + +func File(pass *analysis.Pass, node lint.Positioner) *ast.File { + pass.Fset.PositionFor(node.Pos(), true) + m := pass.ResultOf[facts.TokenFile].(map[*token.File]*ast.File) + return m[pass.Fset.File(node.Pos())] +} + +// IsGenerated reports whether pos is in a generated file, It ignores +// //line directives. +func IsGenerated(pass *analysis.Pass, pos token.Pos) bool { + _, ok := Generator(pass, pos) + return ok +} + +// Generator returns the generator that generated the file containing +// pos. It ignores //line directives. +func Generator(pass *analysis.Pass, pos token.Pos) (facts.Generator, bool) { + file := pass.Fset.PositionFor(pos, false).Filename + m := pass.ResultOf[facts.Generated].(map[string]facts.Generator) + g, ok := m[file] + return g, ok +} + +func ReportfFG(pass *analysis.Pass, pos token.Pos, f string, args ...interface{}) { + file := lint.DisplayPosition(pass.Fset, pos).Filename + m := pass.ResultOf[facts.Generated].(map[string]facts.Generator) + if _, ok := m[file]; ok { + return + } + pass.Reportf(pos, f, args...) +} + +func ReportNodef(pass *analysis.Pass, node ast.Node, format string, args ...interface{}) { + msg := fmt.Sprintf(format, args...) + pass.Report(analysis.Diagnostic{Pos: node.Pos(), End: node.End(), Message: msg}) +} + +func ReportNodefFG(pass *analysis.Pass, node ast.Node, format string, args ...interface{}) { + file := lint.DisplayPosition(pass.Fset, node.Pos()).Filename + m := pass.ResultOf[facts.Generated].(map[string]facts.Generator) + if _, ok := m[file]; ok { + return + } + ReportNodef(pass, node, format, args...) +} diff --git a/vendor/honnef.co/go/tools/lint/lintutil/format/format.go b/vendor/honnef.co/go/tools/lint/lintutil/format/format.go new file mode 100644 index 00000000000..9385431f88b --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lintutil/format/format.go @@ -0,0 +1,135 @@ +// Package format provides formatters for linter problems. +package format + +import ( + "encoding/json" + "fmt" + "go/token" + "io" + "os" + "path/filepath" + "text/tabwriter" + + "honnef.co/go/tools/lint" +) + +func shortPath(path string) string { + cwd, err := os.Getwd() + if err != nil { + return path + } + if rel, err := filepath.Rel(cwd, path); err == nil && len(rel) < len(path) { + return rel + } + return path +} + +func relativePositionString(pos token.Position) string { + s := shortPath(pos.Filename) + if pos.IsValid() { + if s != "" { + s += ":" + } + s += fmt.Sprintf("%d:%d", pos.Line, pos.Column) + } + if s == "" { + s = "-" + } + return s +} + +type Statter interface { + Stats(total, errors, warnings int) +} + +type Formatter interface { + Format(p lint.Problem) +} + +type Text struct { + W io.Writer +} + +func (o Text) Format(p lint.Problem) { + fmt.Fprintf(o.W, "%v: %s\n", relativePositionString(p.Pos), p.String()) +} + +type JSON struct { + W io.Writer +} + +func severity(s lint.Severity) string { + switch s { + case lint.Error: + return "error" + case lint.Warning: + return "warning" + case lint.Ignored: + return "ignored" + } + return "" +} + +func (o JSON) Format(p lint.Problem) { + type location struct { + File string `json:"file"` + Line int `json:"line"` + Column int `json:"column"` + } + jp := struct { + Code string `json:"code"` + Severity string `json:"severity,omitempty"` + Location location `json:"location"` + End location `json:"end"` + Message string `json:"message"` + }{ + Code: p.Check, + Severity: severity(p.Severity), + Location: location{ + File: p.Pos.Filename, + Line: p.Pos.Line, + Column: p.Pos.Column, + }, + End: location{ + File: p.End.Filename, + Line: p.End.Line, + Column: p.End.Column, + }, + Message: p.Message, + } + _ = json.NewEncoder(o.W).Encode(jp) +} + +type Stylish struct { + W io.Writer + + prevFile string + tw *tabwriter.Writer +} + +func (o *Stylish) Format(p lint.Problem) { + pos := p.Pos + if pos.Filename == "" { + pos.Filename = "-" + } + + if pos.Filename != o.prevFile { + if o.prevFile != "" { + o.tw.Flush() + fmt.Fprintln(o.W) + } + fmt.Fprintln(o.W, pos.Filename) + o.prevFile = pos.Filename + o.tw = tabwriter.NewWriter(o.W, 0, 4, 2, ' ', 0) + } + fmt.Fprintf(o.tw, " (%d, %d)\t%s\t%s\n", pos.Line, pos.Column, p.Check, p.Message) +} + +func (o *Stylish) Stats(total, errors, warnings int) { + if o.tw != nil { + o.tw.Flush() + fmt.Fprintln(o.W) + } + fmt.Fprintf(o.W, " ✖ %d problems (%d errors, %d warnings)\n", + total, errors, warnings) +} diff --git a/vendor/honnef.co/go/tools/lint/lintutil/stats.go b/vendor/honnef.co/go/tools/lint/lintutil/stats.go new file mode 100644 index 00000000000..ba8caf0afdd --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lintutil/stats.go @@ -0,0 +1,7 @@ +// +build !aix,!android,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package lintutil + +import "os" + +var infoSignals = []os.Signal{} diff --git a/vendor/honnef.co/go/tools/lint/lintutil/stats_bsd.go b/vendor/honnef.co/go/tools/lint/lintutil/stats_bsd.go new file mode 100644 index 00000000000..3a62ede031c --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lintutil/stats_bsd.go @@ -0,0 +1,10 @@ +// +build darwin dragonfly freebsd netbsd openbsd + +package lintutil + +import ( + "os" + "syscall" +) + +var infoSignals = []os.Signal{syscall.SIGINFO} diff --git a/vendor/honnef.co/go/tools/lint/lintutil/stats_posix.go b/vendor/honnef.co/go/tools/lint/lintutil/stats_posix.go new file mode 100644 index 00000000000..53f21c666b1 --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lintutil/stats_posix.go @@ -0,0 +1,10 @@ +// +build aix android linux solaris + +package lintutil + +import ( + "os" + "syscall" +) + +var infoSignals = []os.Signal{syscall.SIGUSR1} diff --git a/vendor/honnef.co/go/tools/lint/lintutil/util.go b/vendor/honnef.co/go/tools/lint/lintutil/util.go new file mode 100644 index 00000000000..fe0279f921c --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/lintutil/util.go @@ -0,0 +1,392 @@ +// Copyright (c) 2013 The Go Authors. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd. + +// Package lintutil provides helpers for writing linter command lines. +package lintutil // import "honnef.co/go/tools/lint/lintutil" + +import ( + "crypto/sha256" + "errors" + "flag" + "fmt" + "go/build" + "go/token" + "io" + "log" + "os" + "os/signal" + "regexp" + "runtime" + "runtime/pprof" + "strconv" + "strings" + "sync/atomic" + + "honnef.co/go/tools/config" + "honnef.co/go/tools/internal/cache" + "honnef.co/go/tools/lint" + "honnef.co/go/tools/lint/lintutil/format" + "honnef.co/go/tools/version" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/buildutil" + "golang.org/x/tools/go/packages" +) + +func NewVersionFlag() flag.Getter { + tags := build.Default.ReleaseTags + v := tags[len(tags)-1][2:] + version := new(VersionFlag) + if err := version.Set(v); err != nil { + panic(fmt.Sprintf("internal error: %s", err)) + } + return version +} + +type VersionFlag int + +func (v *VersionFlag) String() string { + return fmt.Sprintf("1.%d", *v) + +} + +func (v *VersionFlag) Set(s string) error { + if len(s) < 3 { + return errors.New("invalid Go version") + } + if s[0] != '1' { + return errors.New("invalid Go version") + } + if s[1] != '.' { + return errors.New("invalid Go version") + } + i, err := strconv.Atoi(s[2:]) + *v = VersionFlag(i) + return err +} + +func (v *VersionFlag) Get() interface{} { + return int(*v) +} + +func usage(name string, flags *flag.FlagSet) func() { + return func() { + fmt.Fprintf(os.Stderr, "Usage of %s:\n", name) + fmt.Fprintf(os.Stderr, "\t%s [flags] # runs on package in current directory\n", name) + fmt.Fprintf(os.Stderr, "\t%s [flags] packages\n", name) + fmt.Fprintf(os.Stderr, "\t%s [flags] directory\n", name) + fmt.Fprintf(os.Stderr, "\t%s [flags] files... # must be a single package\n", name) + fmt.Fprintf(os.Stderr, "Flags:\n") + flags.PrintDefaults() + } +} + +type list []string + +func (list *list) String() string { + return `"` + strings.Join(*list, ",") + `"` +} + +func (list *list) Set(s string) error { + if s == "" { + *list = nil + return nil + } + + *list = strings.Split(s, ",") + return nil +} + +func FlagSet(name string) *flag.FlagSet { + flags := flag.NewFlagSet("", flag.ExitOnError) + flags.Usage = usage(name, flags) + flags.String("tags", "", "List of `build tags`") + flags.Bool("tests", true, "Include tests") + flags.Bool("version", false, "Print version and exit") + flags.Bool("show-ignored", false, "Don't filter ignored problems") + flags.String("f", "text", "Output `format` (valid choices are 'stylish', 'text' and 'json')") + flags.String("explain", "", "Print description of `check`") + + flags.String("debug.cpuprofile", "", "Write CPU profile to `file`") + flags.String("debug.memprofile", "", "Write memory profile to `file`") + flags.Bool("debug.version", false, "Print detailed version information about this program") + flags.Bool("debug.no-compile-errors", false, "Don't print compile errors") + + checks := list{"inherit"} + fail := list{"all"} + flags.Var(&checks, "checks", "Comma-separated list of `checks` to enable.") + flags.Var(&fail, "fail", "Comma-separated list of `checks` that can cause a non-zero exit status.") + + tags := build.Default.ReleaseTags + v := tags[len(tags)-1][2:] + version := new(VersionFlag) + if err := version.Set(v); err != nil { + panic(fmt.Sprintf("internal error: %s", err)) + } + + flags.Var(version, "go", "Target Go `version` in the format '1.x'") + return flags +} + +func findCheck(cs []*analysis.Analyzer, check string) (*analysis.Analyzer, bool) { + for _, c := range cs { + if c.Name == check { + return c, true + } + } + return nil, false +} + +func ProcessFlagSet(cs []*analysis.Analyzer, cums []lint.CumulativeChecker, fs *flag.FlagSet) { + tags := fs.Lookup("tags").Value.(flag.Getter).Get().(string) + tests := fs.Lookup("tests").Value.(flag.Getter).Get().(bool) + goVersion := fs.Lookup("go").Value.(flag.Getter).Get().(int) + formatter := fs.Lookup("f").Value.(flag.Getter).Get().(string) + printVersion := fs.Lookup("version").Value.(flag.Getter).Get().(bool) + showIgnored := fs.Lookup("show-ignored").Value.(flag.Getter).Get().(bool) + explain := fs.Lookup("explain").Value.(flag.Getter).Get().(string) + + cpuProfile := fs.Lookup("debug.cpuprofile").Value.(flag.Getter).Get().(string) + memProfile := fs.Lookup("debug.memprofile").Value.(flag.Getter).Get().(string) + debugVersion := fs.Lookup("debug.version").Value.(flag.Getter).Get().(bool) + debugNoCompile := fs.Lookup("debug.no-compile-errors").Value.(flag.Getter).Get().(bool) + + cfg := config.Config{} + cfg.Checks = *fs.Lookup("checks").Value.(*list) + + exit := func(code int) { + if cpuProfile != "" { + pprof.StopCPUProfile() + } + if memProfile != "" { + f, err := os.Create(memProfile) + if err != nil { + panic(err) + } + runtime.GC() + pprof.WriteHeapProfile(f) + } + os.Exit(code) + } + if cpuProfile != "" { + f, err := os.Create(cpuProfile) + if err != nil { + log.Fatal(err) + } + pprof.StartCPUProfile(f) + } + + if debugVersion { + version.Verbose() + exit(0) + } + + if printVersion { + version.Print() + exit(0) + } + + // Validate that the tags argument is well-formed. go/packages + // doesn't detect malformed build flags and returns unhelpful + // errors. + tf := buildutil.TagsFlag{} + if err := tf.Set(tags); err != nil { + fmt.Fprintln(os.Stderr, fmt.Errorf("invalid value %q for flag -tags: %s", tags, err)) + exit(1) + } + + if explain != "" { + var haystack []*analysis.Analyzer + haystack = append(haystack, cs...) + for _, cum := range cums { + haystack = append(haystack, cum.Analyzer()) + } + check, ok := findCheck(haystack, explain) + if !ok { + fmt.Fprintln(os.Stderr, "Couldn't find check", explain) + exit(1) + } + if check.Doc == "" { + fmt.Fprintln(os.Stderr, explain, "has no documentation") + exit(1) + } + fmt.Println(check.Doc) + exit(0) + } + + ps, err := Lint(cs, cums, fs.Args(), &Options{ + Tags: tags, + LintTests: tests, + GoVersion: goVersion, + Config: cfg, + }) + if err != nil { + fmt.Fprintln(os.Stderr, err) + exit(1) + } + + var f format.Formatter + switch formatter { + case "text": + f = format.Text{W: os.Stdout} + case "stylish": + f = &format.Stylish{W: os.Stdout} + case "json": + f = format.JSON{W: os.Stdout} + default: + fmt.Fprintf(os.Stderr, "unsupported output format %q\n", formatter) + exit(2) + } + + var ( + total int + errors int + warnings int + ) + + fail := *fs.Lookup("fail").Value.(*list) + analyzers := make([]*analysis.Analyzer, len(cs), len(cs)+len(cums)) + copy(analyzers, cs) + for _, cum := range cums { + analyzers = append(analyzers, cum.Analyzer()) + } + shouldExit := lint.FilterChecks(analyzers, fail) + shouldExit["compile"] = true + + total = len(ps) + for _, p := range ps { + if p.Check == "compile" && debugNoCompile { + continue + } + if p.Severity == lint.Ignored && !showIgnored { + continue + } + if shouldExit[p.Check] { + errors++ + } else { + p.Severity = lint.Warning + warnings++ + } + f.Format(p) + } + if f, ok := f.(format.Statter); ok { + f.Stats(total, errors, warnings) + } + if errors > 0 { + exit(1) + } + exit(0) +} + +type Options struct { + Config config.Config + + Tags string + LintTests bool + GoVersion int +} + +func computeSalt() ([]byte, error) { + if version.Version != "devel" { + return []byte(version.Version), nil + } + p, err := os.Executable() + if err != nil { + return nil, err + } + f, err := os.Open(p) + if err != nil { + return nil, err + } + defer f.Close() + h := sha256.New() + if _, err := io.Copy(h, f); err != nil { + return nil, err + } + return h.Sum(nil), nil +} + +func Lint(cs []*analysis.Analyzer, cums []lint.CumulativeChecker, paths []string, opt *Options) ([]lint.Problem, error) { + salt, err := computeSalt() + if err != nil { + return nil, fmt.Errorf("could not compute salt for cache: %s", err) + } + cache.SetSalt(salt) + + if opt == nil { + opt = &Options{} + } + + l := &lint.Linter{ + Checkers: cs, + CumulativeCheckers: cums, + GoVersion: opt.GoVersion, + Config: opt.Config, + } + cfg := &packages.Config{} + if opt.LintTests { + cfg.Tests = true + } + if opt.Tags != "" { + cfg.BuildFlags = append(cfg.BuildFlags, "-tags", opt.Tags) + } + + printStats := func() { + // Individual stats are read atomically, but overall there + // is no synchronisation. For printing rough progress + // information, this doesn't matter. + switch atomic.LoadUint32(&l.Stats.State) { + case lint.StateInitializing: + fmt.Fprintln(os.Stderr, "Status: initializing") + case lint.StateGraph: + fmt.Fprintln(os.Stderr, "Status: loading package graph") + case lint.StateProcessing: + fmt.Fprintf(os.Stderr, "Packages: %d/%d initial, %d/%d total; Workers: %d/%d; Problems: %d\n", + atomic.LoadUint32(&l.Stats.ProcessedInitialPackages), + atomic.LoadUint32(&l.Stats.InitialPackages), + atomic.LoadUint32(&l.Stats.ProcessedPackages), + atomic.LoadUint32(&l.Stats.TotalPackages), + atomic.LoadUint32(&l.Stats.ActiveWorkers), + atomic.LoadUint32(&l.Stats.TotalWorkers), + atomic.LoadUint32(&l.Stats.Problems), + ) + case lint.StateCumulative: + fmt.Fprintln(os.Stderr, "Status: processing cumulative checkers") + } + } + if len(infoSignals) > 0 { + ch := make(chan os.Signal, 1) + signal.Notify(ch, infoSignals...) + defer signal.Stop(ch) + go func() { + for range ch { + printStats() + } + }() + } + + return l.Lint(cfg, paths) +} + +var posRe = regexp.MustCompile(`^(.+?):(\d+)(?::(\d+)?)?$`) + +func parsePos(pos string) token.Position { + if pos == "-" || pos == "" { + return token.Position{} + } + parts := posRe.FindStringSubmatch(pos) + if parts == nil { + panic(fmt.Sprintf("internal error: malformed position %q", pos)) + } + file := parts[1] + line, _ := strconv.Atoi(parts[2]) + col, _ := strconv.Atoi(parts[3]) + return token.Position{ + Filename: file, + Line: line, + Column: col, + } +} diff --git a/vendor/honnef.co/go/tools/lint/runner.go b/vendor/honnef.co/go/tools/lint/runner.go new file mode 100644 index 00000000000..3b22a63fa21 --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/runner.go @@ -0,0 +1,970 @@ +package lint + +/* +Parallelism + +Runner implements parallel processing of packages by spawning one +goroutine per package in the dependency graph, without any semaphores. +Each goroutine initially waits on the completion of all of its +dependencies, thus establishing correct order of processing. Once all +dependencies finish processing, the goroutine will load the package +from export data or source – this loading is guarded by a semaphore, +sized according to the number of CPU cores. This way, we only have as +many packages occupying memory and CPU resources as there are actual +cores to process them. + +This combination of unbounded goroutines but bounded package loading +means that if we have many parallel, independent subgraphs, they will +all execute in parallel, while not wasting resources for long linear +chains or trying to process more subgraphs in parallel than the system +can handle. + +*/ + +import ( + "bytes" + "encoding/gob" + "encoding/hex" + "fmt" + "go/ast" + "go/token" + "go/types" + "reflect" + "regexp" + "runtime" + "sort" + "strconv" + "strings" + "sync" + "sync/atomic" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/packages" + "golang.org/x/tools/go/types/objectpath" + "honnef.co/go/tools/config" + "honnef.co/go/tools/facts" + "honnef.co/go/tools/internal/cache" + "honnef.co/go/tools/loader" +) + +// If enabled, abuse of the go/analysis API will lead to panics +const sanityCheck = true + +// OPT(dh): for a dependency tree A->B->C->D, if we have cached data +// for B, there should be no need to load C and D individually. Go's +// export data for B contains all the data we need on types, and our +// fact cache could store the union of B, C and D in B. +// +// This may change unused's behavior, however, as it may observe fewer +// interfaces from transitive dependencies. + +type Package struct { + dependents uint64 + + *packages.Package + Imports []*Package + initial bool + fromSource bool + hash string + done chan struct{} + + resultsMu sync.Mutex + // results maps analyzer IDs to analyzer results + results []*result + + cfg *config.Config + gen map[string]facts.Generator + problems []Problem + ignores []Ignore + errs []error + + // these slices are indexed by analysis + facts []map[types.Object][]analysis.Fact + pkgFacts [][]analysis.Fact + + canClearTypes bool +} + +func (pkg *Package) decUse() { + atomic.AddUint64(&pkg.dependents, ^uint64(0)) + if atomic.LoadUint64(&pkg.dependents) == 0 { + // nobody depends on this package anymore + if pkg.canClearTypes { + pkg.Types = nil + } + pkg.facts = nil + pkg.pkgFacts = nil + + for _, imp := range pkg.Imports { + imp.decUse() + } + } +} + +type result struct { + v interface{} + err error + ready chan struct{} +} + +type Runner struct { + ld loader.Loader + cache *cache.Cache + + analyzerIDs analyzerIDs + + // limits parallelism of loading packages + loadSem chan struct{} + + goVersion int + stats *Stats +} + +type analyzerIDs struct { + m map[*analysis.Analyzer]int +} + +func (ids analyzerIDs) get(a *analysis.Analyzer) int { + id, ok := ids.m[a] + if !ok { + panic(fmt.Sprintf("no analyzer ID for %s", a.Name)) + } + return id +} + +type Fact struct { + Path string + Fact analysis.Fact +} + +type analysisAction struct { + analyzer *analysis.Analyzer + analyzerID int + pkg *Package + newPackageFacts []analysis.Fact + problems []Problem + + pkgFacts map[*types.Package][]analysis.Fact +} + +func (ac *analysisAction) String() string { + return fmt.Sprintf("%s @ %s", ac.analyzer, ac.pkg) +} + +func (ac *analysisAction) allObjectFacts() []analysis.ObjectFact { + out := make([]analysis.ObjectFact, 0, len(ac.pkg.facts[ac.analyzerID])) + for obj, facts := range ac.pkg.facts[ac.analyzerID] { + for _, fact := range facts { + out = append(out, analysis.ObjectFact{ + Object: obj, + Fact: fact, + }) + } + } + return out +} + +func (ac *analysisAction) allPackageFacts() []analysis.PackageFact { + out := make([]analysis.PackageFact, 0, len(ac.pkgFacts)) + for pkg, facts := range ac.pkgFacts { + for _, fact := range facts { + out = append(out, analysis.PackageFact{ + Package: pkg, + Fact: fact, + }) + } + } + return out +} + +func (ac *analysisAction) importObjectFact(obj types.Object, fact analysis.Fact) bool { + if sanityCheck && len(ac.analyzer.FactTypes) == 0 { + panic("analysis doesn't export any facts") + } + for _, f := range ac.pkg.facts[ac.analyzerID][obj] { + if reflect.TypeOf(f) == reflect.TypeOf(fact) { + reflect.ValueOf(fact).Elem().Set(reflect.ValueOf(f).Elem()) + return true + } + } + return false +} + +func (ac *analysisAction) importPackageFact(pkg *types.Package, fact analysis.Fact) bool { + if sanityCheck && len(ac.analyzer.FactTypes) == 0 { + panic("analysis doesn't export any facts") + } + for _, f := range ac.pkgFacts[pkg] { + if reflect.TypeOf(f) == reflect.TypeOf(fact) { + reflect.ValueOf(fact).Elem().Set(reflect.ValueOf(f).Elem()) + return true + } + } + return false +} + +func (ac *analysisAction) exportObjectFact(obj types.Object, fact analysis.Fact) { + if sanityCheck && len(ac.analyzer.FactTypes) == 0 { + panic("analysis doesn't export any facts") + } + ac.pkg.facts[ac.analyzerID][obj] = append(ac.pkg.facts[ac.analyzerID][obj], fact) +} + +func (ac *analysisAction) exportPackageFact(fact analysis.Fact) { + if sanityCheck && len(ac.analyzer.FactTypes) == 0 { + panic("analysis doesn't export any facts") + } + ac.pkgFacts[ac.pkg.Types] = append(ac.pkgFacts[ac.pkg.Types], fact) + ac.newPackageFacts = append(ac.newPackageFacts, fact) +} + +func (ac *analysisAction) report(pass *analysis.Pass, d analysis.Diagnostic) { + p := Problem{ + Pos: DisplayPosition(pass.Fset, d.Pos), + End: DisplayPosition(pass.Fset, d.End), + Message: d.Message, + Check: pass.Analyzer.Name, + } + ac.problems = append(ac.problems, p) +} + +func (r *Runner) runAnalysis(ac *analysisAction) (ret interface{}, err error) { + ac.pkg.resultsMu.Lock() + res := ac.pkg.results[r.analyzerIDs.get(ac.analyzer)] + if res != nil { + ac.pkg.resultsMu.Unlock() + <-res.ready + return res.v, res.err + } else { + res = &result{ + ready: make(chan struct{}), + } + ac.pkg.results[r.analyzerIDs.get(ac.analyzer)] = res + ac.pkg.resultsMu.Unlock() + + defer func() { + res.v = ret + res.err = err + close(res.ready) + }() + + pass := new(analysis.Pass) + *pass = analysis.Pass{ + Analyzer: ac.analyzer, + Fset: ac.pkg.Fset, + Files: ac.pkg.Syntax, + // type information may be nil or may be populated. if it is + // nil, it will get populated later. + Pkg: ac.pkg.Types, + TypesInfo: ac.pkg.TypesInfo, + TypesSizes: ac.pkg.TypesSizes, + ResultOf: map[*analysis.Analyzer]interface{}{}, + ImportObjectFact: ac.importObjectFact, + ImportPackageFact: ac.importPackageFact, + ExportObjectFact: ac.exportObjectFact, + ExportPackageFact: ac.exportPackageFact, + Report: func(d analysis.Diagnostic) { + ac.report(pass, d) + }, + AllObjectFacts: ac.allObjectFacts, + AllPackageFacts: ac.allPackageFacts, + } + + if !ac.pkg.initial { + // Don't report problems in dependencies + pass.Report = func(analysis.Diagnostic) {} + } + return r.runAnalysisUser(pass, ac) + } +} + +func (r *Runner) loadCachedFacts(a *analysis.Analyzer, pkg *Package) ([]Fact, bool) { + if len(a.FactTypes) == 0 { + return nil, true + } + + var facts []Fact + // Look in the cache for facts + aID, err := passActionID(pkg, a) + if err != nil { + return nil, false + } + aID = cache.Subkey(aID, "facts") + b, _, err := r.cache.GetBytes(aID) + if err != nil { + // No cached facts, analyse this package like a user-provided one, but ignore diagnostics + return nil, false + } + + if err := gob.NewDecoder(bytes.NewReader(b)).Decode(&facts); err != nil { + // Cached facts are broken, analyse this package like a user-provided one, but ignore diagnostics + return nil, false + } + return facts, true +} + +type dependencyError struct { + dep string + err error +} + +func (err dependencyError) nested() dependencyError { + if o, ok := err.err.(dependencyError); ok { + return o.nested() + } + return err +} + +func (err dependencyError) Error() string { + if o, ok := err.err.(dependencyError); ok { + return o.Error() + } + return fmt.Sprintf("error running dependency %s: %s", err.dep, err.err) +} + +func (r *Runner) makeAnalysisAction(a *analysis.Analyzer, pkg *Package) *analysisAction { + aid := r.analyzerIDs.get(a) + ac := &analysisAction{ + analyzer: a, + analyzerID: aid, + pkg: pkg, + } + + if len(a.FactTypes) == 0 { + return ac + } + + // Merge all package facts of dependencies + ac.pkgFacts = map[*types.Package][]analysis.Fact{} + seen := map[*Package]struct{}{} + var dfs func(*Package) + dfs = func(pkg *Package) { + if _, ok := seen[pkg]; ok { + return + } + seen[pkg] = struct{}{} + s := pkg.pkgFacts[aid] + ac.pkgFacts[pkg.Types] = s[0:len(s):len(s)] + for _, imp := range pkg.Imports { + dfs(imp) + } + } + dfs(pkg) + + return ac +} + +// analyzes that we always want to run, even if they're not being run +// explicitly or as dependencies. these are necessary for the inner +// workings of the runner. +var injectedAnalyses = []*analysis.Analyzer{facts.Generated, config.Analyzer} + +func (r *Runner) runAnalysisUser(pass *analysis.Pass, ac *analysisAction) (interface{}, error) { + if !ac.pkg.fromSource { + panic(fmt.Sprintf("internal error: %s was not loaded from source", ac.pkg)) + } + + // User-provided package, analyse it + // First analyze it with dependencies + for _, req := range ac.analyzer.Requires { + acReq := r.makeAnalysisAction(req, ac.pkg) + ret, err := r.runAnalysis(acReq) + if err != nil { + // We couldn't run a dependency, no point in going on + return nil, dependencyError{req.Name, err} + } + + pass.ResultOf[req] = ret + } + + // Then with this analyzer + ret, err := ac.analyzer.Run(pass) + if err != nil { + return nil, err + } + + if len(ac.analyzer.FactTypes) > 0 { + // Merge new facts into the package and persist them. + var facts []Fact + for _, fact := range ac.newPackageFacts { + id := r.analyzerIDs.get(ac.analyzer) + ac.pkg.pkgFacts[id] = append(ac.pkg.pkgFacts[id], fact) + facts = append(facts, Fact{"", fact}) + } + for obj, afacts := range ac.pkg.facts[ac.analyzerID] { + if obj.Pkg() != ac.pkg.Package.Types { + continue + } + path, err := objectpath.For(obj) + if err != nil { + continue + } + for _, fact := range afacts { + facts = append(facts, Fact{string(path), fact}) + } + } + + buf := &bytes.Buffer{} + if err := gob.NewEncoder(buf).Encode(facts); err != nil { + return nil, err + } + aID, err := passActionID(ac.pkg, ac.analyzer) + if err != nil { + return nil, err + } + aID = cache.Subkey(aID, "facts") + if err := r.cache.PutBytes(aID, buf.Bytes()); err != nil { + return nil, err + } + } + + return ret, nil +} + +func NewRunner(stats *Stats) (*Runner, error) { + cache, err := cache.Default() + if err != nil { + return nil, err + } + + return &Runner{ + cache: cache, + stats: stats, + }, nil +} + +// Run loads packages corresponding to patterns and analyses them with +// analyzers. It returns the loaded packages, which contain reported +// diagnostics as well as extracted ignore directives. +// +// Note that diagnostics have not been filtered at this point yet, to +// accomodate cumulative analyzes that require additional steps to +// produce diagnostics. +func (r *Runner) Run(cfg *packages.Config, patterns []string, analyzers []*analysis.Analyzer, hasCumulative bool) ([]*Package, error) { + r.analyzerIDs = analyzerIDs{m: map[*analysis.Analyzer]int{}} + id := 0 + seen := map[*analysis.Analyzer]struct{}{} + var dfs func(a *analysis.Analyzer) + dfs = func(a *analysis.Analyzer) { + if _, ok := seen[a]; ok { + return + } + seen[a] = struct{}{} + r.analyzerIDs.m[a] = id + id++ + for _, f := range a.FactTypes { + gob.Register(f) + } + for _, req := range a.Requires { + dfs(req) + } + } + for _, a := range analyzers { + if v := a.Flags.Lookup("go"); v != nil { + v.Value.Set(fmt.Sprintf("1.%d", r.goVersion)) + } + dfs(a) + } + for _, a := range injectedAnalyses { + dfs(a) + } + + var dcfg packages.Config + if cfg != nil { + dcfg = *cfg + } + + atomic.StoreUint32(&r.stats.State, StateGraph) + initialPkgs, err := r.ld.Graph(dcfg, patterns...) + if err != nil { + return nil, err + } + + defer r.cache.Trim() + + var allPkgs []*Package + m := map[*packages.Package]*Package{} + packages.Visit(initialPkgs, nil, func(l *packages.Package) { + m[l] = &Package{ + Package: l, + results: make([]*result, len(r.analyzerIDs.m)), + facts: make([]map[types.Object][]analysis.Fact, len(r.analyzerIDs.m)), + pkgFacts: make([][]analysis.Fact, len(r.analyzerIDs.m)), + done: make(chan struct{}), + // every package needs itself + dependents: 1, + canClearTypes: !hasCumulative, + } + allPkgs = append(allPkgs, m[l]) + for i := range m[l].facts { + m[l].facts[i] = map[types.Object][]analysis.Fact{} + } + for _, err := range l.Errors { + m[l].errs = append(m[l].errs, err) + } + for _, v := range l.Imports { + m[v].dependents++ + m[l].Imports = append(m[l].Imports, m[v]) + } + + m[l].hash, err = packageHash(m[l]) + if err != nil { + m[l].errs = append(m[l].errs, err) + } + }) + + pkgs := make([]*Package, len(initialPkgs)) + for i, l := range initialPkgs { + pkgs[i] = m[l] + pkgs[i].initial = true + } + + atomic.StoreUint32(&r.stats.InitialPackages, uint32(len(initialPkgs))) + atomic.StoreUint32(&r.stats.TotalPackages, uint32(len(allPkgs))) + atomic.StoreUint32(&r.stats.State, StateProcessing) + + var wg sync.WaitGroup + wg.Add(len(allPkgs)) + r.loadSem = make(chan struct{}, runtime.GOMAXPROCS(-1)) + atomic.StoreUint32(&r.stats.TotalWorkers, uint32(cap(r.loadSem))) + for _, pkg := range allPkgs { + pkg := pkg + go func() { + r.processPkg(pkg, analyzers) + + if pkg.initial { + atomic.AddUint32(&r.stats.ProcessedInitialPackages, 1) + } + atomic.AddUint32(&r.stats.Problems, uint32(len(pkg.problems))) + wg.Done() + }() + } + wg.Wait() + + return pkgs, nil +} + +var posRe = regexp.MustCompile(`^(.+?):(\d+)(?::(\d+)?)?`) + +func parsePos(pos string) (token.Position, int, error) { + if pos == "-" || pos == "" { + return token.Position{}, 0, nil + } + parts := posRe.FindStringSubmatch(pos) + if parts == nil { + return token.Position{}, 0, fmt.Errorf("malformed position %q", pos) + } + file := parts[1] + line, _ := strconv.Atoi(parts[2]) + col, _ := strconv.Atoi(parts[3]) + return token.Position{ + Filename: file, + Line: line, + Column: col, + }, len(parts[0]), nil +} + +// loadPkg loads a Go package. If the package is in the set of initial +// packages, it will be loaded from source, otherwise it will be +// loaded from export data. In the case that the package was loaded +// from export data, cached facts will also be loaded. +// +// Currently, only cached facts for this package will be loaded, not +// for any of its dependencies. +func (r *Runner) loadPkg(pkg *Package, analyzers []*analysis.Analyzer) error { + if pkg.Types != nil { + panic(fmt.Sprintf("internal error: %s has already been loaded", pkg.Package)) + } + + // Load type information + if pkg.initial { + // Load package from source + pkg.fromSource = true + return r.ld.LoadFromSource(pkg.Package) + } + + // Load package from export data + if err := r.ld.LoadFromExport(pkg.Package); err != nil { + // We asked Go to give us up to date export data, yet + // we can't load it. There must be something wrong. + // + // Attempt loading from source. This should fail (because + // otherwise there would be export data); we just want to + // get the compile errors. If loading from source succeeds + // we discard the result, anyway. Otherwise we'll fail + // when trying to reload from export data later. + // + // FIXME(dh): we no longer reload from export data, so + // theoretically we should be able to continue + pkg.fromSource = true + if err := r.ld.LoadFromSource(pkg.Package); err != nil { + return err + } + // Make sure this package can't be imported successfully + pkg.Package.Errors = append(pkg.Package.Errors, packages.Error{ + Pos: "-", + Msg: fmt.Sprintf("could not load export data: %s", err), + Kind: packages.ParseError, + }) + return fmt.Errorf("could not load export data: %s", err) + } + + failed := false + seen := make([]bool, len(r.analyzerIDs.m)) + var dfs func(*analysis.Analyzer) + dfs = func(a *analysis.Analyzer) { + if seen[r.analyzerIDs.get(a)] { + return + } + seen[r.analyzerIDs.get(a)] = true + + if len(a.FactTypes) > 0 { + facts, ok := r.loadCachedFacts(a, pkg) + if !ok { + failed = true + return + } + + for _, f := range facts { + if f.Path == "" { + // This is a package fact + pkg.pkgFacts[r.analyzerIDs.get(a)] = append(pkg.pkgFacts[r.analyzerIDs.get(a)], f.Fact) + continue + } + obj, err := objectpath.Object(pkg.Types, objectpath.Path(f.Path)) + if err != nil { + // Be lenient about these errors. For example, when + // analysing io/ioutil from source, we may get a fact + // for methods on the devNull type, and objectpath + // will happily create a path for them. However, when + // we later load io/ioutil from export data, the path + // no longer resolves. + // + // If an exported type embeds the unexported type, + // then (part of) the unexported type will become part + // of the type information and our path will resolve + // again. + continue + } + pkg.facts[r.analyzerIDs.get(a)][obj] = append(pkg.facts[r.analyzerIDs.get(a)][obj], f.Fact) + } + } + + for _, req := range a.Requires { + dfs(req) + } + } + for _, a := range analyzers { + dfs(a) + } + + if failed { + pkg.fromSource = true + // XXX we added facts to the maps, we need to get rid of those + return r.ld.LoadFromSource(pkg.Package) + } + + return nil +} + +type analysisError struct { + analyzer *analysis.Analyzer + pkg *Package + err error +} + +func (err analysisError) Error() string { + return fmt.Sprintf("error running analyzer %s on %s: %s", err.analyzer, err.pkg, err.err) +} + +// processPkg processes a package. This involves loading the package, +// either from export data or from source. For packages loaded from +// source, the provides analyzers will be run on the package. +func (r *Runner) processPkg(pkg *Package, analyzers []*analysis.Analyzer) { + defer func() { + // Clear information we no longer need. Make sure to do this + // when returning from processPkg so that we clear + // dependencies, not just initial packages. + pkg.TypesInfo = nil + pkg.Syntax = nil + pkg.results = nil + + atomic.AddUint32(&r.stats.ProcessedPackages, 1) + pkg.decUse() + close(pkg.done) + }() + + // Ensure all packages have the generated map and config. This is + // required by interna of the runner. Analyses that themselves + // make use of either have an explicit dependency so that other + // runners work correctly, too. + analyzers = append(analyzers[0:len(analyzers):len(analyzers)], injectedAnalyses...) + + if len(pkg.errs) != 0 { + return + } + + for _, imp := range pkg.Imports { + <-imp.done + if len(imp.errs) > 0 { + if imp.initial { + // Don't print the error of the dependency since it's + // an initial package and we're already printing the + // error. + pkg.errs = append(pkg.errs, fmt.Errorf("could not analyze dependency %s of %s", imp, pkg)) + } else { + var s string + for _, err := range imp.errs { + s += "\n\t" + err.Error() + } + pkg.errs = append(pkg.errs, fmt.Errorf("could not analyze dependency %s of %s: %s", imp, pkg, s)) + } + return + } + } + if pkg.PkgPath == "unsafe" { + pkg.Types = types.Unsafe + return + } + + r.loadSem <- struct{}{} + atomic.AddUint32(&r.stats.ActiveWorkers, 1) + defer func() { + <-r.loadSem + atomic.AddUint32(&r.stats.ActiveWorkers, ^uint32(0)) + }() + if err := r.loadPkg(pkg, analyzers); err != nil { + pkg.errs = append(pkg.errs, err) + return + } + + // A package's object facts is the union of all of its dependencies. + for _, imp := range pkg.Imports { + for ai, m := range imp.facts { + for obj, facts := range m { + pkg.facts[ai][obj] = facts[0:len(facts):len(facts)] + } + } + } + + if !pkg.fromSource { + // Nothing left to do for the package. + return + } + + // Run analyses on initial packages and those missing facts + var wg sync.WaitGroup + wg.Add(len(analyzers)) + errs := make([]error, len(analyzers)) + var acs []*analysisAction + for i, a := range analyzers { + i := i + a := a + ac := r.makeAnalysisAction(a, pkg) + acs = append(acs, ac) + go func() { + defer wg.Done() + // Only initial packages and packages with missing + // facts will have been loaded from source. + if pkg.initial || r.hasFacts(a) { + if _, err := r.runAnalysis(ac); err != nil { + errs[i] = analysisError{a, pkg, err} + return + } + } + }() + } + wg.Wait() + + depErrors := map[dependencyError]int{} + for _, err := range errs { + if err == nil { + continue + } + switch err := err.(type) { + case analysisError: + switch err := err.err.(type) { + case dependencyError: + depErrors[err.nested()]++ + default: + pkg.errs = append(pkg.errs, err) + } + default: + pkg.errs = append(pkg.errs, err) + } + } + for err, count := range depErrors { + pkg.errs = append(pkg.errs, + fmt.Errorf("could not run %s@%s, preventing %d analyzers from running: %s", err.dep, pkg, count, err.err)) + } + + // We can't process ignores at this point because `unused` needs + // to see more than one package to make its decision. + ignores, problems := parseDirectives(pkg.Package) + pkg.ignores = append(pkg.ignores, ignores...) + pkg.problems = append(pkg.problems, problems...) + for _, ac := range acs { + pkg.problems = append(pkg.problems, ac.problems...) + } + + if pkg.initial { + // Only initial packages have these analyzers run, and only + // initial packages need these. + if pkg.results[r.analyzerIDs.get(config.Analyzer)].v != nil { + pkg.cfg = pkg.results[r.analyzerIDs.get(config.Analyzer)].v.(*config.Config) + } + pkg.gen = pkg.results[r.analyzerIDs.get(facts.Generated)].v.(map[string]facts.Generator) + } + + // In a previous version of the code, we would throw away all type + // information and reload it from export data. That was + // nonsensical. The *types.Package doesn't keep any information + // live that export data wouldn't also. We only need to discard + // the AST and the TypesInfo maps; that happens after we return + // from processPkg. +} + +// hasFacts reports whether an analysis exports any facts. An analysis +// that has a transitive dependency that exports facts is considered +// to be exporting facts. +func (r *Runner) hasFacts(a *analysis.Analyzer) bool { + ret := false + seen := make([]bool, len(r.analyzerIDs.m)) + var dfs func(*analysis.Analyzer) + dfs = func(a *analysis.Analyzer) { + if seen[r.analyzerIDs.get(a)] { + return + } + seen[r.analyzerIDs.get(a)] = true + if len(a.FactTypes) > 0 { + ret = true + } + for _, req := range a.Requires { + if ret { + break + } + dfs(req) + } + } + dfs(a) + return ret +} + +func parseDirective(s string) (cmd string, args []string) { + if !strings.HasPrefix(s, "//lint:") { + return "", nil + } + s = strings.TrimPrefix(s, "//lint:") + fields := strings.Split(s, " ") + return fields[0], fields[1:] +} + +// parseDirectives extracts all linter directives from the source +// files of the package. Malformed directives are returned as problems. +func parseDirectives(pkg *packages.Package) ([]Ignore, []Problem) { + var ignores []Ignore + var problems []Problem + + for _, f := range pkg.Syntax { + found := false + commentLoop: + for _, cg := range f.Comments { + for _, c := range cg.List { + if strings.Contains(c.Text, "//lint:") { + found = true + break commentLoop + } + } + } + if !found { + continue + } + cm := ast.NewCommentMap(pkg.Fset, f, f.Comments) + for node, cgs := range cm { + for _, cg := range cgs { + for _, c := range cg.List { + if !strings.HasPrefix(c.Text, "//lint:") { + continue + } + cmd, args := parseDirective(c.Text) + switch cmd { + case "ignore", "file-ignore": + if len(args) < 2 { + p := Problem{ + Pos: DisplayPosition(pkg.Fset, c.Pos()), + Message: "malformed linter directive; missing the required reason field?", + Severity: Error, + Check: "compile", + } + problems = append(problems, p) + continue + } + default: + // unknown directive, ignore + continue + } + checks := strings.Split(args[0], ",") + pos := DisplayPosition(pkg.Fset, node.Pos()) + var ig Ignore + switch cmd { + case "ignore": + ig = &LineIgnore{ + File: pos.Filename, + Line: pos.Line, + Checks: checks, + Pos: c.Pos(), + } + case "file-ignore": + ig = &FileIgnore{ + File: pos.Filename, + Checks: checks, + } + } + ignores = append(ignores, ig) + } + } + } + } + + return ignores, problems +} + +// packageHash computes a package's hash. The hash is based on all Go +// files that make up the package, as well as the hashes of imported +// packages. +func packageHash(pkg *Package) (string, error) { + key := cache.NewHash("package hash") + fmt.Fprintf(key, "pkgpath %s\n", pkg.PkgPath) + for _, f := range pkg.CompiledGoFiles { + h, err := cache.FileHash(f) + if err != nil { + return "", err + } + fmt.Fprintf(key, "file %s %x\n", f, h) + } + + imps := make([]*Package, len(pkg.Imports)) + copy(imps, pkg.Imports) + sort.Slice(imps, func(i, j int) bool { + return imps[i].PkgPath < imps[j].PkgPath + }) + for _, dep := range imps { + if dep.PkgPath == "unsafe" { + continue + } + + fmt.Fprintf(key, "import %s %s\n", dep.PkgPath, dep.hash) + } + h := key.Sum() + return hex.EncodeToString(h[:]), nil +} + +// passActionID computes an ActionID for an analysis pass. +func passActionID(pkg *Package, analyzer *analysis.Analyzer) (cache.ActionID, error) { + key := cache.NewHash("action ID") + fmt.Fprintf(key, "pkgpath %s\n", pkg.PkgPath) + fmt.Fprintf(key, "pkghash %s\n", pkg.hash) + fmt.Fprintf(key, "analyzer %s\n", analyzer.Name) + + return key.Sum(), nil +} diff --git a/vendor/honnef.co/go/tools/lint/stats.go b/vendor/honnef.co/go/tools/lint/stats.go new file mode 100644 index 00000000000..2f650855937 --- /dev/null +++ b/vendor/honnef.co/go/tools/lint/stats.go @@ -0,0 +1,20 @@ +package lint + +const ( + StateInitializing = 0 + StateGraph = 1 + StateProcessing = 2 + StateCumulative = 3 +) + +type Stats struct { + State uint32 + + InitialPackages uint32 + TotalPackages uint32 + ProcessedPackages uint32 + ProcessedInitialPackages uint32 + Problems uint32 + ActiveWorkers uint32 + TotalWorkers uint32 +} diff --git a/vendor/honnef.co/go/tools/loader/loader.go b/vendor/honnef.co/go/tools/loader/loader.go new file mode 100644 index 00000000000..9c6885d485f --- /dev/null +++ b/vendor/honnef.co/go/tools/loader/loader.go @@ -0,0 +1,197 @@ +package loader + +import ( + "fmt" + "go/ast" + "go/parser" + "go/scanner" + "go/token" + "go/types" + "log" + "os" + "sync" + + "golang.org/x/tools/go/gcexportdata" + "golang.org/x/tools/go/packages" +) + +type Loader struct { + exportMu sync.RWMutex +} + +// Graph resolves patterns and returns packages with all the +// information required to later load type information, and optionally +// syntax trees. +// +// The provided config can set any setting with the exception of Mode. +func (ld *Loader) Graph(cfg packages.Config, patterns ...string) ([]*packages.Package, error) { + cfg.Mode = packages.NeedName | packages.NeedImports | packages.NeedDeps | packages.NeedExportsFile | packages.NeedFiles | packages.NeedCompiledGoFiles | packages.NeedTypesSizes + pkgs, err := packages.Load(&cfg, patterns...) + if err != nil { + return nil, err + } + fset := token.NewFileSet() + packages.Visit(pkgs, nil, func(pkg *packages.Package) { + pkg.Fset = fset + }) + return pkgs, nil +} + +// LoadFromExport loads a package from export data. All of its +// dependencies must have been loaded already. +func (ld *Loader) LoadFromExport(pkg *packages.Package) error { + ld.exportMu.Lock() + defer ld.exportMu.Unlock() + + pkg.IllTyped = true + for path, pkg := range pkg.Imports { + if pkg.Types == nil { + return fmt.Errorf("dependency %q hasn't been loaded yet", path) + } + } + if pkg.ExportFile == "" { + return fmt.Errorf("no export data for %q", pkg.ID) + } + f, err := os.Open(pkg.ExportFile) + if err != nil { + return err + } + defer f.Close() + + r, err := gcexportdata.NewReader(f) + if err != nil { + return err + } + + view := make(map[string]*types.Package) // view seen by gcexportdata + seen := make(map[*packages.Package]bool) // all visited packages + var visit func(pkgs map[string]*packages.Package) + visit = func(pkgs map[string]*packages.Package) { + for _, pkg := range pkgs { + if !seen[pkg] { + seen[pkg] = true + view[pkg.PkgPath] = pkg.Types + visit(pkg.Imports) + } + } + } + visit(pkg.Imports) + tpkg, err := gcexportdata.Read(r, pkg.Fset, view, pkg.PkgPath) + if err != nil { + return err + } + pkg.Types = tpkg + pkg.IllTyped = false + return nil +} + +// LoadFromSource loads a package from source. All of its dependencies +// must have been loaded already. +func (ld *Loader) LoadFromSource(pkg *packages.Package) error { + ld.exportMu.RLock() + defer ld.exportMu.RUnlock() + + pkg.IllTyped = true + pkg.Types = types.NewPackage(pkg.PkgPath, pkg.Name) + + // OPT(dh): many packages have few files, much fewer than there + // are CPU cores. Additionally, parsing each individual file is + // very fast. A naive parallel implementation of this loop won't + // be faster, and tends to be slower due to extra scheduling, + // bookkeeping and potentially false sharing of cache lines. + pkg.Syntax = make([]*ast.File, len(pkg.CompiledGoFiles)) + for i, file := range pkg.CompiledGoFiles { + f, err := parser.ParseFile(pkg.Fset, file, nil, parser.ParseComments) + if err != nil { + pkg.Errors = append(pkg.Errors, convertError(err)...) + return err + } + pkg.Syntax[i] = f + } + pkg.TypesInfo = &types.Info{ + Types: make(map[ast.Expr]types.TypeAndValue), + Defs: make(map[*ast.Ident]types.Object), + Uses: make(map[*ast.Ident]types.Object), + Implicits: make(map[ast.Node]types.Object), + Scopes: make(map[ast.Node]*types.Scope), + Selections: make(map[*ast.SelectorExpr]*types.Selection), + } + + importer := func(path string) (*types.Package, error) { + if path == "unsafe" { + return types.Unsafe, nil + } + imp := pkg.Imports[path] + if imp == nil { + return nil, nil + } + if len(imp.Errors) > 0 { + return nil, imp.Errors[0] + } + return imp.Types, nil + } + tc := &types.Config{ + Importer: importerFunc(importer), + Error: func(err error) { + pkg.Errors = append(pkg.Errors, convertError(err)...) + }, + } + err := types.NewChecker(tc, pkg.Fset, pkg.Types, pkg.TypesInfo).Files(pkg.Syntax) + if err != nil { + return err + } + pkg.IllTyped = false + return nil +} + +func convertError(err error) []packages.Error { + var errs []packages.Error + // taken from go/packages + switch err := err.(type) { + case packages.Error: + // from driver + errs = append(errs, err) + + case *os.PathError: + // from parser + errs = append(errs, packages.Error{ + Pos: err.Path + ":1", + Msg: err.Err.Error(), + Kind: packages.ParseError, + }) + + case scanner.ErrorList: + // from parser + for _, err := range err { + errs = append(errs, packages.Error{ + Pos: err.Pos.String(), + Msg: err.Msg, + Kind: packages.ParseError, + }) + } + + case types.Error: + // from type checker + errs = append(errs, packages.Error{ + Pos: err.Fset.Position(err.Pos).String(), + Msg: err.Msg, + Kind: packages.TypeError, + }) + + default: + // unexpected impoverished error from parser? + errs = append(errs, packages.Error{ + Pos: "-", + Msg: err.Error(), + Kind: packages.UnknownError, + }) + + // If you see this error message, please file a bug. + log.Printf("internal error: error %q (%T) without position", err, err) + } + return errs +} + +type importerFunc func(path string) (*types.Package, error) + +func (f importerFunc) Import(path string) (*types.Package, error) { return f(path) } diff --git a/vendor/honnef.co/go/tools/printf/fuzz.go b/vendor/honnef.co/go/tools/printf/fuzz.go new file mode 100644 index 00000000000..8ebf357fb42 --- /dev/null +++ b/vendor/honnef.co/go/tools/printf/fuzz.go @@ -0,0 +1,11 @@ +// +build gofuzz + +package printf + +func Fuzz(data []byte) int { + _, err := Parse(string(data)) + if err == nil { + return 1 + } + return 0 +} diff --git a/vendor/honnef.co/go/tools/printf/printf.go b/vendor/honnef.co/go/tools/printf/printf.go new file mode 100644 index 00000000000..754db9b16d8 --- /dev/null +++ b/vendor/honnef.co/go/tools/printf/printf.go @@ -0,0 +1,197 @@ +// Package printf implements a parser for fmt.Printf-style format +// strings. +// +// It parses verbs according to the following syntax: +// Numeric -> '0'-'9' +// Letter -> 'a'-'z' | 'A'-'Z' +// Index -> '[' Numeric+ ']' +// Star -> '*' +// Star -> Index '*' +// +// Precision -> Numeric+ | Star +// Width -> Numeric+ | Star +// +// WidthAndPrecision -> Width '.' Precision +// WidthAndPrecision -> Width '.' +// WidthAndPrecision -> Width +// WidthAndPrecision -> '.' Precision +// WidthAndPrecision -> '.' +// +// Flag -> '+' | '-' | '#' | ' ' | '0' +// Verb -> Letter | '%' +// +// Input -> '%' [ Flag+ ] [ WidthAndPrecision ] [ Index ] Verb +package printf + +import ( + "errors" + "regexp" + "strconv" + "strings" +) + +// ErrInvalid is returned for invalid format strings or verbs. +var ErrInvalid = errors.New("invalid format string") + +type Verb struct { + Letter rune + Flags string + + Width Argument + Precision Argument + // Which value in the argument list the verb uses. + // -1 denotes the next argument, + // values > 0 denote explicit arguments. + // The value 0 denotes that no argument is consumed. This is the case for %%. + Value int + + Raw string +} + +// Argument is an implicit or explicit width or precision. +type Argument interface { + isArgument() +} + +// The Default value, when no width or precision is provided. +type Default struct{} + +// Zero is the implicit zero value. +// This value may only appear for precisions in format strings like %6.f +type Zero struct{} + +// Star is a * value, which may either refer to the next argument (Index == -1) or an explicit argument. +type Star struct{ Index int } + +// A Literal value, such as 6 in %6d. +type Literal int + +func (Default) isArgument() {} +func (Zero) isArgument() {} +func (Star) isArgument() {} +func (Literal) isArgument() {} + +// Parse parses f and returns a list of actions. +// An action may either be a literal string, or a Verb. +func Parse(f string) ([]interface{}, error) { + var out []interface{} + for len(f) > 0 { + if f[0] == '%' { + v, n, err := ParseVerb(f) + if err != nil { + return nil, err + } + f = f[n:] + out = append(out, v) + } else { + n := strings.IndexByte(f, '%') + if n > -1 { + out = append(out, f[:n]) + f = f[n:] + } else { + out = append(out, f) + f = "" + } + } + } + + return out, nil +} + +func atoi(s string) int { + n, _ := strconv.Atoi(s) + return n +} + +// ParseVerb parses the verb at the beginning of f. +// It returns the verb, how much of the input was consumed, and an error, if any. +func ParseVerb(f string) (Verb, int, error) { + if len(f) < 2 { + return Verb{}, 0, ErrInvalid + } + const ( + flags = 1 + + width = 2 + widthStar = 3 + widthIndex = 5 + + dot = 6 + prec = 7 + precStar = 8 + precIndex = 10 + + verbIndex = 11 + verb = 12 + ) + + m := re.FindStringSubmatch(f) + if m == nil { + return Verb{}, 0, ErrInvalid + } + + v := Verb{ + Letter: []rune(m[verb])[0], + Flags: m[flags], + Raw: m[0], + } + + if m[width] != "" { + // Literal width + v.Width = Literal(atoi(m[width])) + } else if m[widthStar] != "" { + // Star width + if m[widthIndex] != "" { + v.Width = Star{atoi(m[widthIndex])} + } else { + v.Width = Star{-1} + } + } else { + // Default width + v.Width = Default{} + } + + if m[dot] == "" { + // default precision + v.Precision = Default{} + } else { + if m[prec] != "" { + // Literal precision + v.Precision = Literal(atoi(m[prec])) + } else if m[precStar] != "" { + // Star precision + if m[precIndex] != "" { + v.Precision = Star{atoi(m[precIndex])} + } else { + v.Precision = Star{-1} + } + } else { + // Zero precision + v.Precision = Zero{} + } + } + + if m[verb] == "%" { + v.Value = 0 + } else if m[verbIndex] != "" { + v.Value = atoi(m[verbIndex]) + } else { + v.Value = -1 + } + + return v, len(m[0]), nil +} + +const ( + flags = `([+#0 -]*)` + verb = `([a-zA-Z%])` + index = `(?:\[([0-9]+)\])` + star = `((` + index + `)?\*)` + width1 = `([0-9]+)` + width2 = star + width = `(?:` + width1 + `|` + width2 + `)` + precision = width + widthAndPrecision = `(?:(?:` + width + `)?(?:(\.)(?:` + precision + `)?)?)` +) + +var re = regexp.MustCompile(`^%` + flags + widthAndPrecision + `?` + index + `?` + verb) diff --git a/vendor/honnef.co/go/tools/simple/CONTRIBUTING.md b/vendor/honnef.co/go/tools/simple/CONTRIBUTING.md new file mode 100644 index 00000000000..c54c6c50ac9 --- /dev/null +++ b/vendor/honnef.co/go/tools/simple/CONTRIBUTING.md @@ -0,0 +1,15 @@ +# Contributing to gosimple + +## Before filing an issue: + +### Are you having trouble building gosimple? + +Check you have the latest version of its dependencies. Run +``` +go get -u honnef.co/go/tools/simple +``` +If you still have problems, consider searching for existing issues before filing a new issue. + +## Before sending a pull request: + +Have you understood the purpose of gosimple? Make sure to carefully read `README`. diff --git a/vendor/honnef.co/go/tools/simple/analysis.go b/vendor/honnef.co/go/tools/simple/analysis.go new file mode 100644 index 00000000000..abb1648fab0 --- /dev/null +++ b/vendor/honnef.co/go/tools/simple/analysis.go @@ -0,0 +1,223 @@ +package simple + +import ( + "flag" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/analysis/passes/inspect" + "honnef.co/go/tools/facts" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/lint/lintutil" +) + +func newFlagSet() flag.FlagSet { + fs := flag.NewFlagSet("", flag.PanicOnError) + fs.Var(lintutil.NewVersionFlag(), "go", "Target Go version") + return *fs +} + +var Analyzers = map[string]*analysis.Analyzer{ + "S1000": { + Name: "S1000", + Run: LintSingleCaseSelect, + Doc: Docs["S1000"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1001": { + Name: "S1001", + Run: LintLoopCopy, + Doc: Docs["S1001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1002": { + Name: "S1002", + Run: LintIfBoolCmp, + Doc: Docs["S1002"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1003": { + Name: "S1003", + Run: LintStringsContains, + Doc: Docs["S1003"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1004": { + Name: "S1004", + Run: LintBytesCompare, + Doc: Docs["S1004"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1005": { + Name: "S1005", + Run: LintUnnecessaryBlank, + Doc: Docs["S1005"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1006": { + Name: "S1006", + Run: LintForTrue, + Doc: Docs["S1006"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1007": { + Name: "S1007", + Run: LintRegexpRaw, + Doc: Docs["S1007"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1008": { + Name: "S1008", + Run: LintIfReturn, + Doc: Docs["S1008"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1009": { + Name: "S1009", + Run: LintRedundantNilCheckWithLen, + Doc: Docs["S1009"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1010": { + Name: "S1010", + Run: LintSlicing, + Doc: Docs["S1010"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1011": { + Name: "S1011", + Run: LintLoopAppend, + Doc: Docs["S1011"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1012": { + Name: "S1012", + Run: LintTimeSince, + Doc: Docs["S1012"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1016": { + Name: "S1016", + Run: LintSimplerStructConversion, + Doc: Docs["S1016"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1017": { + Name: "S1017", + Run: LintTrim, + Doc: Docs["S1017"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1018": { + Name: "S1018", + Run: LintLoopSlide, + Doc: Docs["S1018"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1019": { + Name: "S1019", + Run: LintMakeLenCap, + Doc: Docs["S1019"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1020": { + Name: "S1020", + Run: LintAssertNotNil, + Doc: Docs["S1020"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1021": { + Name: "S1021", + Run: LintDeclareAssign, + Doc: Docs["S1021"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1023": { + Name: "S1023", + Run: LintRedundantBreak, + Doc: Docs["S1023"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1024": { + Name: "S1024", + Run: LintTimeUntil, + Doc: Docs["S1024"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1025": { + Name: "S1025", + Run: LintRedundantSprintf, + Doc: Docs["S1025"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1028": { + Name: "S1028", + Run: LintErrorsNewSprintf, + Doc: Docs["S1028"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1029": { + Name: "S1029", + Run: LintRangeStringRunes, + Doc: Docs["S1029"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "S1030": { + Name: "S1030", + Run: LintBytesBufferConversions, + Doc: Docs["S1030"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1031": { + Name: "S1031", + Run: LintNilCheckAroundRange, + Doc: Docs["S1031"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1032": { + Name: "S1032", + Run: LintSortHelpers, + Doc: Docs["S1032"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1033": { + Name: "S1033", + Run: LintGuardedDelete, + Doc: Docs["S1033"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "S1034": { + Name: "S1034", + Run: LintSimplifyTypeSwitch, + Doc: Docs["S1034"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, +} diff --git a/vendor/honnef.co/go/tools/simple/doc.go b/vendor/honnef.co/go/tools/simple/doc.go new file mode 100644 index 00000000000..eb0072de5dc --- /dev/null +++ b/vendor/honnef.co/go/tools/simple/doc.go @@ -0,0 +1,425 @@ +package simple + +import "honnef.co/go/tools/lint" + +var Docs = map[string]*lint.Documentation{ + "S1000": &lint.Documentation{ + Title: `Use plain channel send or receive instead of single-case select`, + Text: `Select statements with a single case can be replaced with a simple +send or receive. + +Before: + + select { + case x := <-ch: + fmt.Println(x) + } + +After: + + x := <-ch + fmt.Println(x)`, + Since: "2017.1", + }, + + "S1001": &lint.Documentation{ + Title: `Replace for loop with call to copy`, + Text: `Use copy() for copying elements from one slice to another. + +Before: + + for i, x := range src { + dst[i] = x + } + +After: + + copy(dst, src)`, + Since: "2017.1", + }, + + "S1002": &lint.Documentation{ + Title: `Omit comparison with boolean constant`, + Text: `Before: + + if x == true {} + +After: + + if x {}`, + Since: "2017.1", + }, + + "S1003": &lint.Documentation{ + Title: `Replace call to strings.Index with strings.Contains`, + Text: `Before: + + if strings.Index(x, y) != -1 {} + +After: + + if strings.Contains(x, y) {}`, + Since: "2017.1", + }, + + "S1004": &lint.Documentation{ + Title: `Replace call to bytes.Compare with bytes.Equal`, + Text: `Before: + + if bytes.Compare(x, y) == 0 {} + +After: + + if bytes.Equal(x, y) {}`, + Since: "2017.1", + }, + + "S1005": &lint.Documentation{ + Title: `Drop unnecessary use of the blank identifier`, + Text: `In many cases, assigning to the blank identifier is unnecessary. + +Before: + + for _ = range s {} + x, _ = someMap[key] + _ = <-ch + +After: + + for range s{} + x = someMap[key] + <-ch`, + Since: "2017.1", + }, + + "S1006": &lint.Documentation{ + Title: `Use for { ... } for infinite loops`, + Text: `For infinite loops, using for { ... } is the most idiomatic choice.`, + Since: "2017.1", + }, + + "S1007": &lint.Documentation{ + Title: `Simplify regular expression by using raw string literal`, + Text: `Raw string literals use ` + "`" + ` instead of " and do not support +any escape sequences. This means that the backslash (\) can be used +freely, without the need of escaping. + +Since regular expressions have their own escape sequences, raw strings +can improve their readability. + +Before: + + regexp.Compile("\\A(\\w+) profile: total \\d+\\n\\z") + +After: + + regexp.Compile(` + "`" + `\A(\w+) profile: total \d+\n\z` + "`" + `)`, + Since: "2017.1", + }, + + "S1008": &lint.Documentation{ + Title: `Simplify returning boolean expression`, + Text: `Before: + + if { + return true + } + return false + +After: + + return `, + Since: "2017.1", + }, + + "S1009": &lint.Documentation{ + Title: `Omit redundant nil check on slices`, + Text: `The len function is defined for all slices, even nil ones, which have +a length of zero. It is not necessary to check if a slice is not nil +before checking that its length is not zero. + +Before: + + if x != nil && len(x) != 0 {} + +After: + + if len(x) != 0 {}`, + Since: "2017.1", + }, + + "S1010": &lint.Documentation{ + Title: `Omit default slice index`, + Text: `When slicing, the second index defaults to the length of the value, +making s[n:len(s)] and s[n:] equivalent.`, + Since: "2017.1", + }, + + "S1011": &lint.Documentation{ + Title: `Use a single append to concatenate two slices`, + Text: `Before: + + for _, e := range y { + x = append(x, e) + } + +After: + + x = append(x, y...)`, + Since: "2017.1", + }, + + "S1012": &lint.Documentation{ + Title: `Replace time.Now().Sub(x) with time.Since(x)`, + Text: `The time.Since helper has the same effect as using time.Now().Sub(x) +but is easier to read. + +Before: + + time.Now().Sub(x) + +After: + + time.Since(x)`, + Since: "2017.1", + }, + + "S1016": &lint.Documentation{ + Title: `Use a type conversion instead of manually copying struct fields`, + Text: `Two struct types with identical fields can be converted between each +other. In older versions of Go, the fields had to have identical +struct tags. Since Go 1.8, however, struct tags are ignored during +conversions. It is thus not necessary to manually copy every field +individually. + +Before: + + var x T1 + y := T2{ + Field1: x.Field1, + Field2: x.Field2, + } + +After: + + var x T1 + y := T2(x)`, + Since: "2017.1", + }, + + "S1017": &lint.Documentation{ + Title: `Replace manual trimming with strings.TrimPrefix`, + Text: `Instead of using strings.HasPrefix and manual slicing, use the +strings.TrimPrefix function. If the string doesn't start with the +prefix, the original string will be returned. Using strings.TrimPrefix +reduces complexity, and avoids common bugs, such as off-by-one +mistakes. + +Before: + + if strings.HasPrefix(str, prefix) { + str = str[len(prefix):] + } + +After: + + str = strings.TrimPrefix(str, prefix)`, + Since: "2017.1", + }, + + "S1018": &lint.Documentation{ + Title: `Use copy for sliding elements`, + Text: `copy() permits using the same source and destination slice, even with +overlapping ranges. This makes it ideal for sliding elements in a +slice. + +Before: + + for i := 0; i < n; i++ { + bs[i] = bs[offset+i] + } + +After: + + copy(bs[:n], bs[offset:])`, + Since: "2017.1", + }, + + "S1019": &lint.Documentation{ + Title: `Simplify make call by omitting redundant arguments`, + Text: `The make function has default values for the length and capacity +arguments. For channels and maps, the length defaults to zero. +Additionally, for slices the capacity defaults to the length.`, + Since: "2017.1", + }, + + "S1020": &lint.Documentation{ + Title: `Omit redundant nil check in type assertion`, + Text: `Before: + + if _, ok := i.(T); ok && i != nil {} + +After: + + if _, ok := i.(T); ok {}`, + Since: "2017.1", + }, + + "S1021": &lint.Documentation{ + Title: `Merge variable declaration and assignment`, + Text: `Before: + + var x uint + x = 1 + +After: + + var x uint = 1`, + Since: "2017.1", + }, + + "S1023": &lint.Documentation{ + Title: `Omit redundant control flow`, + Text: `Functions that have no return value do not need a return statement as +the final statement of the function. + +Switches in Go do not have automatic fallthrough, unlike languages +like C. It is not necessary to have a break statement as the final +statement in a case block.`, + Since: "2017.1", + }, + + "S1024": &lint.Documentation{ + Title: `Replace x.Sub(time.Now()) with time.Until(x)`, + Text: `The time.Until helper has the same effect as using x.Sub(time.Now()) +but is easier to read. + +Before: + + x.Sub(time.Now()) + +After: + + time.Until(x)`, + Since: "2017.1", + }, + + "S1025": &lint.Documentation{ + Title: `Don't use fmt.Sprintf("%s", x) unnecessarily`, + Text: `In many instances, there are easier and more efficient ways of getting +a value's string representation. Whenever a value's underlying type is +a string already, or the type has a String method, they should be used +directly. + +Given the following shared definitions + + type T1 string + type T2 int + + func (T2) String() string { return "Hello, world" } + + var x string + var y T1 + var z T2 + +we can simplify the following + + fmt.Sprintf("%s", x) + fmt.Sprintf("%s", y) + fmt.Sprintf("%s", z) + +to + + x + string(y) + z.String()`, + Since: "2017.1", + }, + + "S1028": &lint.Documentation{ + Title: `Simplify error construction with fmt.Errorf`, + Text: `Before: + + errors.New(fmt.Sprintf(...)) + +After: + + fmt.Errorf(...)`, + Since: "2017.1", + }, + + "S1029": &lint.Documentation{ + Title: `Range over the string directly`, + Text: `Ranging over a string will yield byte offsets and runes. If the offset +isn't used, this is functionally equivalent to converting the string +to a slice of runes and ranging over that. Ranging directly over the +string will be more performant, however, as it avoids allocating a new +slice, the size of which depends on the length of the string. + +Before: + + for _, r := range []rune(s) {} + +After: + + for _, r := range s {}`, + Since: "2017.1", + }, + + "S1030": &lint.Documentation{ + Title: `Use bytes.Buffer.String or bytes.Buffer.Bytes`, + Text: `bytes.Buffer has both a String and a Bytes method. It is never +necessary to use string(buf.Bytes()) or []byte(buf.String()) – simply +use the other method.`, + Since: "2017.1", + }, + + "S1031": &lint.Documentation{ + Title: `Omit redundant nil check around loop`, + Text: `You can use range on nil slices and maps, the loop will simply never +execute. This makes an additional nil check around the loop +unnecessary. + +Before: + + if s != nil { + for _, x := range s { + ... + } + } + +After: + + for _, x := range s { + ... + }`, + Since: "2017.1", + }, + + "S1032": &lint.Documentation{ + Title: `Use sort.Ints(x), sort.Float64s(x), and sort.Strings(x)`, + Text: `The sort.Ints, sort.Float64s and sort.Strings functions are easier to +read than sort.Sort(sort.IntSlice(x)), sort.Sort(sort.Float64Slice(x)) +and sort.Sort(sort.StringSlice(x)). + +Before: + + sort.Sort(sort.StringSlice(x)) + +After: + + sort.Strings(x)`, + Since: "2019.1", + }, + + "S1033": &lint.Documentation{ + Title: `Unnecessary guard around call to delete`, + Text: `Calling delete on a nil map is a no-op.`, + Since: "2019.2", + }, + + "S1034": &lint.Documentation{ + Title: `Use result of type assertion to simplify cases`, + Since: "2019.2", + }, +} diff --git a/vendor/honnef.co/go/tools/simple/lint.go b/vendor/honnef.co/go/tools/simple/lint.go new file mode 100644 index 00000000000..c78a7bb7a42 --- /dev/null +++ b/vendor/honnef.co/go/tools/simple/lint.go @@ -0,0 +1,1816 @@ +// Package simple contains a linter for Go source code. +package simple // import "honnef.co/go/tools/simple" + +import ( + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + "reflect" + "sort" + "strings" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/analysis/passes/inspect" + "golang.org/x/tools/go/ast/inspector" + "golang.org/x/tools/go/types/typeutil" + . "honnef.co/go/tools/arg" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/internal/sharedcheck" + "honnef.co/go/tools/lint" + . "honnef.co/go/tools/lint/lintdsl" +) + +func LintSingleCaseSelect(pass *analysis.Pass) (interface{}, error) { + isSingleSelect := func(node ast.Node) bool { + v, ok := node.(*ast.SelectStmt) + if !ok { + return false + } + return len(v.Body.List) == 1 + } + + seen := map[ast.Node]struct{}{} + fn := func(node ast.Node) { + switch v := node.(type) { + case *ast.ForStmt: + if len(v.Body.List) != 1 { + return + } + if !isSingleSelect(v.Body.List[0]) { + return + } + if _, ok := v.Body.List[0].(*ast.SelectStmt).Body.List[0].(*ast.CommClause).Comm.(*ast.SendStmt); ok { + // Don't suggest using range for channel sends + return + } + seen[v.Body.List[0]] = struct{}{} + ReportNodefFG(pass, node, "should use for range instead of for { select {} }") + case *ast.SelectStmt: + if _, ok := seen[v]; ok { + return + } + if !isSingleSelect(v) { + return + } + ReportNodefFG(pass, node, "should use a simple channel send/receive instead of select with a single case") + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil), (*ast.SelectStmt)(nil)}, fn) + return nil, nil +} + +func LintLoopCopy(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + loop := node.(*ast.RangeStmt) + + if loop.Key == nil { + return + } + if len(loop.Body.List) != 1 { + return + } + stmt, ok := loop.Body.List[0].(*ast.AssignStmt) + if !ok { + return + } + if stmt.Tok != token.ASSIGN || len(stmt.Lhs) != 1 || len(stmt.Rhs) != 1 { + return + } + lhs, ok := stmt.Lhs[0].(*ast.IndexExpr) + if !ok { + return + } + + if _, ok := pass.TypesInfo.TypeOf(lhs.X).(*types.Slice); !ok { + return + } + lidx, ok := lhs.Index.(*ast.Ident) + if !ok { + return + } + key, ok := loop.Key.(*ast.Ident) + if !ok { + return + } + if pass.TypesInfo.TypeOf(lhs) == nil || pass.TypesInfo.TypeOf(stmt.Rhs[0]) == nil { + return + } + if pass.TypesInfo.ObjectOf(lidx) != pass.TypesInfo.ObjectOf(key) { + return + } + if !types.Identical(pass.TypesInfo.TypeOf(lhs), pass.TypesInfo.TypeOf(stmt.Rhs[0])) { + return + } + if _, ok := pass.TypesInfo.TypeOf(loop.X).(*types.Slice); !ok { + return + } + + if rhs, ok := stmt.Rhs[0].(*ast.IndexExpr); ok { + rx, ok := rhs.X.(*ast.Ident) + _ = rx + if !ok { + return + } + ridx, ok := rhs.Index.(*ast.Ident) + if !ok { + return + } + if pass.TypesInfo.ObjectOf(ridx) != pass.TypesInfo.ObjectOf(key) { + return + } + } else if rhs, ok := stmt.Rhs[0].(*ast.Ident); ok { + value, ok := loop.Value.(*ast.Ident) + if !ok { + return + } + if pass.TypesInfo.ObjectOf(rhs) != pass.TypesInfo.ObjectOf(value) { + return + } + } else { + return + } + ReportNodefFG(pass, loop, "should use copy() instead of a loop") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.RangeStmt)(nil)}, fn) + return nil, nil +} + +func LintIfBoolCmp(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + expr := node.(*ast.BinaryExpr) + if expr.Op != token.EQL && expr.Op != token.NEQ { + return + } + x := IsBoolConst(pass, expr.X) + y := IsBoolConst(pass, expr.Y) + if !x && !y { + return + } + var other ast.Expr + var val bool + if x { + val = BoolConst(pass, expr.X) + other = expr.Y + } else { + val = BoolConst(pass, expr.Y) + other = expr.X + } + basic, ok := pass.TypesInfo.TypeOf(other).Underlying().(*types.Basic) + if !ok || basic.Kind() != types.Bool { + return + } + op := "" + if (expr.Op == token.EQL && !val) || (expr.Op == token.NEQ && val) { + op = "!" + } + r := op + Render(pass, other) + l1 := len(r) + r = strings.TrimLeft(r, "!") + if (l1-len(r))%2 == 1 { + r = "!" + r + } + if IsInTest(pass, node) { + return + } + ReportNodefFG(pass, expr, "should omit comparison to bool constant, can be simplified to %s", r) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func LintBytesBufferConversions(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if len(call.Args) != 1 { + return + } + + argCall, ok := call.Args[0].(*ast.CallExpr) + if !ok { + return + } + sel, ok := argCall.Fun.(*ast.SelectorExpr) + if !ok { + return + } + + typ := pass.TypesInfo.TypeOf(call.Fun) + if typ == types.Universe.Lookup("string").Type() && IsCallToAST(pass, call.Args[0], "(*bytes.Buffer).Bytes") { + ReportNodefFG(pass, call, "should use %v.String() instead of %v", Render(pass, sel.X), Render(pass, call)) + } else if typ, ok := typ.(*types.Slice); ok && typ.Elem() == types.Universe.Lookup("byte").Type() && IsCallToAST(pass, call.Args[0], "(*bytes.Buffer).String") { + ReportNodefFG(pass, call, "should use %v.Bytes() instead of %v", Render(pass, sel.X), Render(pass, call)) + } + + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintStringsContains(pass *analysis.Pass) (interface{}, error) { + // map of value to token to bool value + allowed := map[int64]map[token.Token]bool{ + -1: {token.GTR: true, token.NEQ: true, token.EQL: false}, + 0: {token.GEQ: true, token.LSS: false}, + } + fn := func(node ast.Node) { + expr := node.(*ast.BinaryExpr) + switch expr.Op { + case token.GEQ, token.GTR, token.NEQ, token.LSS, token.EQL: + default: + return + } + + value, ok := ExprToInt(pass, expr.Y) + if !ok { + return + } + + allowedOps, ok := allowed[value] + if !ok { + return + } + b, ok := allowedOps[expr.Op] + if !ok { + return + } + + call, ok := expr.X.(*ast.CallExpr) + if !ok { + return + } + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return + } + pkgIdent, ok := sel.X.(*ast.Ident) + if !ok { + return + } + funIdent := sel.Sel + if pkgIdent.Name != "strings" && pkgIdent.Name != "bytes" { + return + } + newFunc := "" + switch funIdent.Name { + case "IndexRune": + newFunc = "ContainsRune" + case "IndexAny": + newFunc = "ContainsAny" + case "Index": + newFunc = "Contains" + default: + return + } + + prefix := "" + if !b { + prefix = "!" + } + ReportNodefFG(pass, node, "should use %s%s.%s(%s) instead", prefix, pkgIdent.Name, newFunc, RenderArgs(pass, call.Args)) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func LintBytesCompare(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + expr := node.(*ast.BinaryExpr) + if expr.Op != token.NEQ && expr.Op != token.EQL { + return + } + call, ok := expr.X.(*ast.CallExpr) + if !ok { + return + } + if !IsCallToAST(pass, call, "bytes.Compare") { + return + } + value, ok := ExprToInt(pass, expr.Y) + if !ok || value != 0 { + return + } + args := RenderArgs(pass, call.Args) + prefix := "" + if expr.Op == token.NEQ { + prefix = "!" + } + ReportNodefFG(pass, node, "should use %sbytes.Equal(%s) instead", prefix, args) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func LintForTrue(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + loop := node.(*ast.ForStmt) + if loop.Init != nil || loop.Post != nil { + return + } + if !IsBoolConst(pass, loop.Cond) || !BoolConst(pass, loop.Cond) { + return + } + ReportNodefFG(pass, loop, "should use for {} instead of for true {}") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil)}, fn) + return nil, nil +} + +func LintRegexpRaw(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if !IsCallToAST(pass, call, "regexp.MustCompile") && + !IsCallToAST(pass, call, "regexp.Compile") { + return + } + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return + } + if len(call.Args) != 1 { + // invalid function call + return + } + lit, ok := call.Args[Arg("regexp.Compile.expr")].(*ast.BasicLit) + if !ok { + // TODO(dominikh): support string concat, maybe support constants + return + } + if lit.Kind != token.STRING { + // invalid function call + return + } + if lit.Value[0] != '"' { + // already a raw string + return + } + val := lit.Value + if !strings.Contains(val, `\\`) { + return + } + if strings.Contains(val, "`") { + return + } + + bs := false + for _, c := range val { + if !bs && c == '\\' { + bs = true + continue + } + if bs && c == '\\' { + bs = false + continue + } + if bs { + // backslash followed by non-backslash -> escape sequence + return + } + } + + ReportNodefFG(pass, call, "should use raw string (`...`) with regexp.%s to avoid having to escape twice", sel.Sel.Name) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintIfReturn(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + block := node.(*ast.BlockStmt) + l := len(block.List) + if l < 2 { + return + } + n1, n2 := block.List[l-2], block.List[l-1] + + if len(block.List) >= 3 { + if _, ok := block.List[l-3].(*ast.IfStmt); ok { + // Do not flag a series of if statements + return + } + } + // if statement with no init, no else, a single condition + // checking an identifier or function call and just a return + // statement in the body, that returns a boolean constant + ifs, ok := n1.(*ast.IfStmt) + if !ok { + return + } + if ifs.Else != nil || ifs.Init != nil { + return + } + if len(ifs.Body.List) != 1 { + return + } + if op, ok := ifs.Cond.(*ast.BinaryExpr); ok { + switch op.Op { + case token.EQL, token.LSS, token.GTR, token.NEQ, token.LEQ, token.GEQ: + default: + return + } + } + ret1, ok := ifs.Body.List[0].(*ast.ReturnStmt) + if !ok { + return + } + if len(ret1.Results) != 1 { + return + } + if !IsBoolConst(pass, ret1.Results[0]) { + return + } + + ret2, ok := n2.(*ast.ReturnStmt) + if !ok { + return + } + if len(ret2.Results) != 1 { + return + } + if !IsBoolConst(pass, ret2.Results[0]) { + return + } + + if ret1.Results[0].(*ast.Ident).Name == ret2.Results[0].(*ast.Ident).Name { + // we want the function to return true and false, not the + // same value both times. + return + } + + ReportNodefFG(pass, n1, "should use 'return ' instead of 'if { return }; return '") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BlockStmt)(nil)}, fn) + return nil, nil +} + +// LintRedundantNilCheckWithLen checks for the following reduntant nil-checks: +// +// if x == nil || len(x) == 0 {} +// if x != nil && len(x) != 0 {} +// if x != nil && len(x) == N {} (where N != 0) +// if x != nil && len(x) > N {} +// if x != nil && len(x) >= N {} (where N != 0) +// +func LintRedundantNilCheckWithLen(pass *analysis.Pass) (interface{}, error) { + isConstZero := func(expr ast.Expr) (isConst bool, isZero bool) { + _, ok := expr.(*ast.BasicLit) + if ok { + return true, IsZero(expr) + } + id, ok := expr.(*ast.Ident) + if !ok { + return false, false + } + c, ok := pass.TypesInfo.ObjectOf(id).(*types.Const) + if !ok { + return false, false + } + return true, c.Val().Kind() == constant.Int && c.Val().String() == "0" + } + + fn := func(node ast.Node) { + // check that expr is "x || y" or "x && y" + expr := node.(*ast.BinaryExpr) + if expr.Op != token.LOR && expr.Op != token.LAND { + return + } + eqNil := expr.Op == token.LOR + + // check that x is "xx == nil" or "xx != nil" + x, ok := expr.X.(*ast.BinaryExpr) + if !ok { + return + } + if eqNil && x.Op != token.EQL { + return + } + if !eqNil && x.Op != token.NEQ { + return + } + xx, ok := x.X.(*ast.Ident) + if !ok { + return + } + if !IsNil(pass, x.Y) { + return + } + + // check that y is "len(xx) == 0" or "len(xx) ... " + y, ok := expr.Y.(*ast.BinaryExpr) + if !ok { + return + } + if eqNil && y.Op != token.EQL { // must be len(xx) *==* 0 + return + } + yx, ok := y.X.(*ast.CallExpr) + if !ok { + return + } + yxFun, ok := yx.Fun.(*ast.Ident) + if !ok || yxFun.Name != "len" || len(yx.Args) != 1 { + return + } + yxArg, ok := yx.Args[Arg("len.v")].(*ast.Ident) + if !ok { + return + } + if yxArg.Name != xx.Name { + return + } + + if eqNil && !IsZero(y.Y) { // must be len(x) == *0* + return + } + + if !eqNil { + isConst, isZero := isConstZero(y.Y) + if !isConst { + return + } + switch y.Op { + case token.EQL: + // avoid false positive for "xx != nil && len(xx) == 0" + if isZero { + return + } + case token.GEQ: + // avoid false positive for "xx != nil && len(xx) >= 0" + if isZero { + return + } + case token.NEQ: + // avoid false positive for "xx != nil && len(xx) != " + if !isZero { + return + } + case token.GTR: + // ok + default: + return + } + } + + // finally check that xx type is one of array, slice, map or chan + // this is to prevent false positive in case if xx is a pointer to an array + var nilType string + switch pass.TypesInfo.TypeOf(xx).(type) { + case *types.Slice: + nilType = "nil slices" + case *types.Map: + nilType = "nil maps" + case *types.Chan: + nilType = "nil channels" + default: + return + } + ReportNodefFG(pass, expr, "should omit nil check; len() for %s is defined as zero", nilType) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func LintSlicing(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + n := node.(*ast.SliceExpr) + if n.Max != nil { + return + } + s, ok := n.X.(*ast.Ident) + if !ok || s.Obj == nil { + return + } + call, ok := n.High.(*ast.CallExpr) + if !ok || len(call.Args) != 1 || call.Ellipsis.IsValid() { + return + } + fun, ok := call.Fun.(*ast.Ident) + if !ok || fun.Name != "len" { + return + } + if _, ok := pass.TypesInfo.ObjectOf(fun).(*types.Builtin); !ok { + return + } + arg, ok := call.Args[Arg("len.v")].(*ast.Ident) + if !ok || arg.Obj != s.Obj { + return + } + ReportNodefFG(pass, n, "should omit second index in slice, s[a:len(s)] is identical to s[a:]") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.SliceExpr)(nil)}, fn) + return nil, nil +} + +func refersTo(pass *analysis.Pass, expr ast.Expr, ident *ast.Ident) bool { + found := false + fn := func(node ast.Node) bool { + ident2, ok := node.(*ast.Ident) + if !ok { + return true + } + if pass.TypesInfo.ObjectOf(ident) == pass.TypesInfo.ObjectOf(ident2) { + found = true + return false + } + return true + } + ast.Inspect(expr, fn) + return found +} + +func LintLoopAppend(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + loop := node.(*ast.RangeStmt) + if !IsBlank(loop.Key) { + return + } + val, ok := loop.Value.(*ast.Ident) + if !ok { + return + } + if len(loop.Body.List) != 1 { + return + } + stmt, ok := loop.Body.List[0].(*ast.AssignStmt) + if !ok { + return + } + if stmt.Tok != token.ASSIGN || len(stmt.Lhs) != 1 || len(stmt.Rhs) != 1 { + return + } + if refersTo(pass, stmt.Lhs[0], val) { + return + } + call, ok := stmt.Rhs[0].(*ast.CallExpr) + if !ok { + return + } + if len(call.Args) != 2 || call.Ellipsis.IsValid() { + return + } + fun, ok := call.Fun.(*ast.Ident) + if !ok { + return + } + obj := pass.TypesInfo.ObjectOf(fun) + fn, ok := obj.(*types.Builtin) + if !ok || fn.Name() != "append" { + return + } + + src := pass.TypesInfo.TypeOf(loop.X) + dst := pass.TypesInfo.TypeOf(call.Args[Arg("append.slice")]) + // TODO(dominikh) remove nil check once Go issue #15173 has + // been fixed + if src == nil { + return + } + if !types.Identical(src, dst) { + return + } + + if Render(pass, stmt.Lhs[0]) != Render(pass, call.Args[Arg("append.slice")]) { + return + } + + el, ok := call.Args[Arg("append.elems")].(*ast.Ident) + if !ok { + return + } + if pass.TypesInfo.ObjectOf(val) != pass.TypesInfo.ObjectOf(el) { + return + } + ReportNodefFG(pass, loop, "should replace loop with %s = append(%s, %s...)", + Render(pass, stmt.Lhs[0]), Render(pass, call.Args[Arg("append.slice")]), Render(pass, loop.X)) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.RangeStmt)(nil)}, fn) + return nil, nil +} + +func LintTimeSince(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return + } + if !IsCallToAST(pass, sel.X, "time.Now") { + return + } + if sel.Sel.Name != "Sub" { + return + } + ReportNodefFG(pass, call, "should use time.Since instead of time.Now().Sub") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintTimeUntil(pass *analysis.Pass) (interface{}, error) { + if !IsGoVersion(pass, 8) { + return nil, nil + } + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if !IsCallToAST(pass, call, "(time.Time).Sub") { + return + } + if !IsCallToAST(pass, call.Args[Arg("(time.Time).Sub.u")], "time.Now") { + return + } + ReportNodefFG(pass, call, "should use time.Until instead of t.Sub(time.Now())") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintUnnecessaryBlank(pass *analysis.Pass) (interface{}, error) { + fn1 := func(node ast.Node) { + assign := node.(*ast.AssignStmt) + if len(assign.Lhs) != 2 || len(assign.Rhs) != 1 { + return + } + if !IsBlank(assign.Lhs[1]) { + return + } + switch rhs := assign.Rhs[0].(type) { + case *ast.IndexExpr: + // The type-checker should make sure that it's a map, but + // let's be safe. + if _, ok := pass.TypesInfo.TypeOf(rhs.X).Underlying().(*types.Map); !ok { + return + } + case *ast.UnaryExpr: + if rhs.Op != token.ARROW { + return + } + default: + return + } + cp := *assign + cp.Lhs = cp.Lhs[0:1] + ReportNodefFG(pass, assign, "should write %s instead of %s", Render(pass, &cp), Render(pass, assign)) + } + + fn2 := func(node ast.Node) { + stmt := node.(*ast.AssignStmt) + if len(stmt.Lhs) != len(stmt.Rhs) { + return + } + for i, lh := range stmt.Lhs { + rh := stmt.Rhs[i] + if !IsBlank(lh) { + continue + } + expr, ok := rh.(*ast.UnaryExpr) + if !ok { + continue + } + if expr.Op != token.ARROW { + continue + } + ReportNodefFG(pass, lh, "'_ = <-ch' can be simplified to '<-ch'") + } + } + + fn3 := func(node ast.Node) { + rs := node.(*ast.RangeStmt) + + // for x, _ + if !IsBlank(rs.Key) && IsBlank(rs.Value) { + ReportNodefFG(pass, rs.Value, "should omit value from range; this loop is equivalent to `for %s %s range ...`", Render(pass, rs.Key), rs.Tok) + } + // for _, _ || for _ + if IsBlank(rs.Key) && (IsBlank(rs.Value) || rs.Value == nil) { + ReportNodefFG(pass, rs.Key, "should omit values from range; this loop is equivalent to `for range ...`") + } + } + + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.AssignStmt)(nil)}, fn1) + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.AssignStmt)(nil)}, fn2) + if IsGoVersion(pass, 4) { + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.RangeStmt)(nil)}, fn3) + } + return nil, nil +} + +func LintSimplerStructConversion(pass *analysis.Pass) (interface{}, error) { + var skip ast.Node + fn := func(node ast.Node) { + // Do not suggest type conversion between pointers + if unary, ok := node.(*ast.UnaryExpr); ok && unary.Op == token.AND { + if lit, ok := unary.X.(*ast.CompositeLit); ok { + skip = lit + } + return + } + + if node == skip { + return + } + + lit, ok := node.(*ast.CompositeLit) + if !ok { + return + } + typ1, _ := pass.TypesInfo.TypeOf(lit.Type).(*types.Named) + if typ1 == nil { + return + } + s1, ok := typ1.Underlying().(*types.Struct) + if !ok { + return + } + + var typ2 *types.Named + var ident *ast.Ident + getSelType := func(expr ast.Expr) (types.Type, *ast.Ident, bool) { + sel, ok := expr.(*ast.SelectorExpr) + if !ok { + return nil, nil, false + } + ident, ok := sel.X.(*ast.Ident) + if !ok { + return nil, nil, false + } + typ := pass.TypesInfo.TypeOf(sel.X) + return typ, ident, typ != nil + } + if len(lit.Elts) == 0 { + return + } + if s1.NumFields() != len(lit.Elts) { + return + } + for i, elt := range lit.Elts { + var t types.Type + var id *ast.Ident + var ok bool + switch elt := elt.(type) { + case *ast.SelectorExpr: + t, id, ok = getSelType(elt) + if !ok { + return + } + if i >= s1.NumFields() || s1.Field(i).Name() != elt.Sel.Name { + return + } + case *ast.KeyValueExpr: + var sel *ast.SelectorExpr + sel, ok = elt.Value.(*ast.SelectorExpr) + if !ok { + return + } + + if elt.Key.(*ast.Ident).Name != sel.Sel.Name { + return + } + t, id, ok = getSelType(elt.Value) + } + if !ok { + return + } + // All fields must be initialized from the same object + if ident != nil && ident.Obj != id.Obj { + return + } + typ2, _ = t.(*types.Named) + if typ2 == nil { + return + } + ident = id + } + + if typ2 == nil { + return + } + + if typ1.Obj().Pkg() != typ2.Obj().Pkg() { + // Do not suggest type conversions between different + // packages. Types in different packages might only match + // by coincidence. Furthermore, if the dependency ever + // adds more fields to its type, it could break the code + // that relies on the type conversion to work. + return + } + + s2, ok := typ2.Underlying().(*types.Struct) + if !ok { + return + } + if typ1 == typ2 { + return + } + if IsGoVersion(pass, 8) { + if !types.IdenticalIgnoreTags(s1, s2) { + return + } + } else { + if !types.Identical(s1, s2) { + return + } + } + ReportNodefFG(pass, node, "should convert %s (type %s) to %s instead of using struct literal", + ident.Name, typ2.Obj().Name(), typ1.Obj().Name()) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.UnaryExpr)(nil), (*ast.CompositeLit)(nil)}, fn) + return nil, nil +} + +func LintTrim(pass *analysis.Pass) (interface{}, error) { + sameNonDynamic := func(node1, node2 ast.Node) bool { + if reflect.TypeOf(node1) != reflect.TypeOf(node2) { + return false + } + + switch node1 := node1.(type) { + case *ast.Ident: + return node1.Obj == node2.(*ast.Ident).Obj + case *ast.SelectorExpr: + return Render(pass, node1) == Render(pass, node2) + case *ast.IndexExpr: + return Render(pass, node1) == Render(pass, node2) + } + return false + } + + isLenOnIdent := func(fn ast.Expr, ident ast.Expr) bool { + call, ok := fn.(*ast.CallExpr) + if !ok { + return false + } + if fn, ok := call.Fun.(*ast.Ident); !ok || fn.Name != "len" { + return false + } + if len(call.Args) != 1 { + return false + } + return sameNonDynamic(call.Args[Arg("len.v")], ident) + } + + fn := func(node ast.Node) { + var pkg string + var fun string + + ifstmt := node.(*ast.IfStmt) + if ifstmt.Init != nil { + return + } + if ifstmt.Else != nil { + return + } + if len(ifstmt.Body.List) != 1 { + return + } + condCall, ok := ifstmt.Cond.(*ast.CallExpr) + if !ok { + return + } + switch { + case IsCallToAST(pass, condCall, "strings.HasPrefix"): + pkg = "strings" + fun = "HasPrefix" + case IsCallToAST(pass, condCall, "strings.HasSuffix"): + pkg = "strings" + fun = "HasSuffix" + case IsCallToAST(pass, condCall, "strings.Contains"): + pkg = "strings" + fun = "Contains" + case IsCallToAST(pass, condCall, "bytes.HasPrefix"): + pkg = "bytes" + fun = "HasPrefix" + case IsCallToAST(pass, condCall, "bytes.HasSuffix"): + pkg = "bytes" + fun = "HasSuffix" + case IsCallToAST(pass, condCall, "bytes.Contains"): + pkg = "bytes" + fun = "Contains" + default: + return + } + + assign, ok := ifstmt.Body.List[0].(*ast.AssignStmt) + if !ok { + return + } + if assign.Tok != token.ASSIGN { + return + } + if len(assign.Lhs) != 1 || len(assign.Rhs) != 1 { + return + } + if !sameNonDynamic(condCall.Args[0], assign.Lhs[0]) { + return + } + + switch rhs := assign.Rhs[0].(type) { + case *ast.CallExpr: + if len(rhs.Args) < 2 || !sameNonDynamic(condCall.Args[0], rhs.Args[0]) || !sameNonDynamic(condCall.Args[1], rhs.Args[1]) { + return + } + if IsCallToAST(pass, condCall, "strings.HasPrefix") && IsCallToAST(pass, rhs, "strings.TrimPrefix") || + IsCallToAST(pass, condCall, "strings.HasSuffix") && IsCallToAST(pass, rhs, "strings.TrimSuffix") || + IsCallToAST(pass, condCall, "strings.Contains") && IsCallToAST(pass, rhs, "strings.Replace") || + IsCallToAST(pass, condCall, "bytes.HasPrefix") && IsCallToAST(pass, rhs, "bytes.TrimPrefix") || + IsCallToAST(pass, condCall, "bytes.HasSuffix") && IsCallToAST(pass, rhs, "bytes.TrimSuffix") || + IsCallToAST(pass, condCall, "bytes.Contains") && IsCallToAST(pass, rhs, "bytes.Replace") { + ReportNodefFG(pass, ifstmt, "should replace this if statement with an unconditional %s", CallNameAST(pass, rhs)) + } + return + case *ast.SliceExpr: + slice := rhs + if !ok { + return + } + if slice.Slice3 { + return + } + if !sameNonDynamic(slice.X, condCall.Args[0]) { + return + } + var index ast.Expr + switch fun { + case "HasPrefix": + // TODO(dh) We could detect a High that is len(s), but another + // rule will already flag that, anyway. + if slice.High != nil { + return + } + index = slice.Low + case "HasSuffix": + if slice.Low != nil { + n, ok := ExprToInt(pass, slice.Low) + if !ok || n != 0 { + return + } + } + index = slice.High + } + + switch index := index.(type) { + case *ast.CallExpr: + if fun != "HasPrefix" { + return + } + if fn, ok := index.Fun.(*ast.Ident); !ok || fn.Name != "len" { + return + } + if len(index.Args) != 1 { + return + } + id3 := index.Args[Arg("len.v")] + switch oid3 := condCall.Args[1].(type) { + case *ast.BasicLit: + if pkg != "strings" { + return + } + lit, ok := id3.(*ast.BasicLit) + if !ok { + return + } + s1, ok1 := ExprToString(pass, lit) + s2, ok2 := ExprToString(pass, condCall.Args[1]) + if !ok1 || !ok2 || s1 != s2 { + return + } + default: + if !sameNonDynamic(id3, oid3) { + return + } + } + case *ast.BasicLit, *ast.Ident: + if fun != "HasPrefix" { + return + } + if pkg != "strings" { + return + } + string, ok1 := ExprToString(pass, condCall.Args[1]) + int, ok2 := ExprToInt(pass, slice.Low) + if !ok1 || !ok2 || int != int64(len(string)) { + return + } + case *ast.BinaryExpr: + if fun != "HasSuffix" { + return + } + if index.Op != token.SUB { + return + } + if !isLenOnIdent(index.X, condCall.Args[0]) || + !isLenOnIdent(index.Y, condCall.Args[1]) { + return + } + default: + return + } + + var replacement string + switch fun { + case "HasPrefix": + replacement = "TrimPrefix" + case "HasSuffix": + replacement = "TrimSuffix" + } + ReportNodefFG(pass, ifstmt, "should replace this if statement with an unconditional %s.%s", pkg, replacement) + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.IfStmt)(nil)}, fn) + return nil, nil +} + +func LintLoopSlide(pass *analysis.Pass) (interface{}, error) { + // TODO(dh): detect bs[i+offset] in addition to bs[offset+i] + // TODO(dh): consider merging this function with LintLoopCopy + // TODO(dh): detect length that is an expression, not a variable name + // TODO(dh): support sliding to a different offset than the beginning of the slice + + fn := func(node ast.Node) { + /* + for i := 0; i < n; i++ { + bs[i] = bs[offset+i] + } + + ↓ + + copy(bs[:n], bs[offset:offset+n]) + */ + + loop := node.(*ast.ForStmt) + if len(loop.Body.List) != 1 || loop.Init == nil || loop.Cond == nil || loop.Post == nil { + return + } + assign, ok := loop.Init.(*ast.AssignStmt) + if !ok || len(assign.Lhs) != 1 || len(assign.Rhs) != 1 || !IsZero(assign.Rhs[0]) { + return + } + initvar, ok := assign.Lhs[0].(*ast.Ident) + if !ok { + return + } + post, ok := loop.Post.(*ast.IncDecStmt) + if !ok || post.Tok != token.INC { + return + } + postvar, ok := post.X.(*ast.Ident) + if !ok || pass.TypesInfo.ObjectOf(postvar) != pass.TypesInfo.ObjectOf(initvar) { + return + } + bin, ok := loop.Cond.(*ast.BinaryExpr) + if !ok || bin.Op != token.LSS { + return + } + binx, ok := bin.X.(*ast.Ident) + if !ok || pass.TypesInfo.ObjectOf(binx) != pass.TypesInfo.ObjectOf(initvar) { + return + } + biny, ok := bin.Y.(*ast.Ident) + if !ok { + return + } + + assign, ok = loop.Body.List[0].(*ast.AssignStmt) + if !ok || len(assign.Lhs) != 1 || len(assign.Rhs) != 1 || assign.Tok != token.ASSIGN { + return + } + lhs, ok := assign.Lhs[0].(*ast.IndexExpr) + if !ok { + return + } + rhs, ok := assign.Rhs[0].(*ast.IndexExpr) + if !ok { + return + } + + bs1, ok := lhs.X.(*ast.Ident) + if !ok { + return + } + bs2, ok := rhs.X.(*ast.Ident) + if !ok { + return + } + obj1 := pass.TypesInfo.ObjectOf(bs1) + obj2 := pass.TypesInfo.ObjectOf(bs2) + if obj1 != obj2 { + return + } + if _, ok := obj1.Type().Underlying().(*types.Slice); !ok { + return + } + + index1, ok := lhs.Index.(*ast.Ident) + if !ok || pass.TypesInfo.ObjectOf(index1) != pass.TypesInfo.ObjectOf(initvar) { + return + } + index2, ok := rhs.Index.(*ast.BinaryExpr) + if !ok || index2.Op != token.ADD { + return + } + add1, ok := index2.X.(*ast.Ident) + if !ok { + return + } + add2, ok := index2.Y.(*ast.Ident) + if !ok || pass.TypesInfo.ObjectOf(add2) != pass.TypesInfo.ObjectOf(initvar) { + return + } + + ReportNodefFG(pass, loop, "should use copy(%s[:%s], %s[%s:]) instead", Render(pass, bs1), Render(pass, biny), Render(pass, bs1), Render(pass, add1)) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil)}, fn) + return nil, nil +} + +func LintMakeLenCap(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if fn, ok := call.Fun.(*ast.Ident); !ok || fn.Name != "make" { + // FIXME check whether make is indeed the built-in function + return + } + switch len(call.Args) { + case 2: + // make(T, len) + if _, ok := pass.TypesInfo.TypeOf(call.Args[Arg("make.t")]).Underlying().(*types.Slice); ok { + break + } + if IsZero(call.Args[Arg("make.size[0]")]) { + ReportNodefFG(pass, call.Args[Arg("make.size[0]")], "should use make(%s) instead", Render(pass, call.Args[Arg("make.t")])) + } + case 3: + // make(T, len, cap) + if Render(pass, call.Args[Arg("make.size[0]")]) == Render(pass, call.Args[Arg("make.size[1]")]) { + ReportNodefFG(pass, call.Args[Arg("make.size[0]")], + "should use make(%s, %s) instead", + Render(pass, call.Args[Arg("make.t")]), Render(pass, call.Args[Arg("make.size[0]")])) + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintAssertNotNil(pass *analysis.Pass) (interface{}, error) { + isNilCheck := func(ident *ast.Ident, expr ast.Expr) bool { + xbinop, ok := expr.(*ast.BinaryExpr) + if !ok || xbinop.Op != token.NEQ { + return false + } + xident, ok := xbinop.X.(*ast.Ident) + if !ok || xident.Obj != ident.Obj { + return false + } + if !IsNil(pass, xbinop.Y) { + return false + } + return true + } + isOKCheck := func(ident *ast.Ident, expr ast.Expr) bool { + yident, ok := expr.(*ast.Ident) + if !ok || yident.Obj != ident.Obj { + return false + } + return true + } + fn1 := func(node ast.Node) { + ifstmt := node.(*ast.IfStmt) + assign, ok := ifstmt.Init.(*ast.AssignStmt) + if !ok || len(assign.Lhs) != 2 || len(assign.Rhs) != 1 || !IsBlank(assign.Lhs[0]) { + return + } + assert, ok := assign.Rhs[0].(*ast.TypeAssertExpr) + if !ok { + return + } + binop, ok := ifstmt.Cond.(*ast.BinaryExpr) + if !ok || binop.Op != token.LAND { + return + } + assertIdent, ok := assert.X.(*ast.Ident) + if !ok { + return + } + assignIdent, ok := assign.Lhs[1].(*ast.Ident) + if !ok { + return + } + if !(isNilCheck(assertIdent, binop.X) && isOKCheck(assignIdent, binop.Y)) && + !(isNilCheck(assertIdent, binop.Y) && isOKCheck(assignIdent, binop.X)) { + return + } + ReportNodefFG(pass, ifstmt, "when %s is true, %s can't be nil", Render(pass, assignIdent), Render(pass, assertIdent)) + } + fn2 := func(node ast.Node) { + // Check that outer ifstmt is an 'if x != nil {}' + ifstmt := node.(*ast.IfStmt) + if ifstmt.Init != nil { + return + } + if ifstmt.Else != nil { + return + } + if len(ifstmt.Body.List) != 1 { + return + } + binop, ok := ifstmt.Cond.(*ast.BinaryExpr) + if !ok { + return + } + if binop.Op != token.NEQ { + return + } + lhs, ok := binop.X.(*ast.Ident) + if !ok { + return + } + if !IsNil(pass, binop.Y) { + return + } + + // Check that inner ifstmt is an `if _, ok := x.(T); ok {}` + ifstmt, ok = ifstmt.Body.List[0].(*ast.IfStmt) + if !ok { + return + } + assign, ok := ifstmt.Init.(*ast.AssignStmt) + if !ok || len(assign.Lhs) != 2 || len(assign.Rhs) != 1 || !IsBlank(assign.Lhs[0]) { + return + } + assert, ok := assign.Rhs[0].(*ast.TypeAssertExpr) + if !ok { + return + } + assertIdent, ok := assert.X.(*ast.Ident) + if !ok { + return + } + if lhs.Obj != assertIdent.Obj { + return + } + assignIdent, ok := assign.Lhs[1].(*ast.Ident) + if !ok { + return + } + if !isOKCheck(assignIdent, ifstmt.Cond) { + return + } + ReportNodefFG(pass, ifstmt, "when %s is true, %s can't be nil", Render(pass, assignIdent), Render(pass, assertIdent)) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.IfStmt)(nil)}, fn1) + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.IfStmt)(nil)}, fn2) + return nil, nil +} + +func LintDeclareAssign(pass *analysis.Pass) (interface{}, error) { + hasMultipleAssignments := func(root ast.Node, ident *ast.Ident) bool { + num := 0 + ast.Inspect(root, func(node ast.Node) bool { + if num >= 2 { + return false + } + assign, ok := node.(*ast.AssignStmt) + if !ok { + return true + } + for _, lhs := range assign.Lhs { + if oident, ok := lhs.(*ast.Ident); ok { + if oident.Obj == ident.Obj { + num++ + } + } + } + + return true + }) + return num >= 2 + } + fn := func(node ast.Node) { + block := node.(*ast.BlockStmt) + if len(block.List) < 2 { + return + } + for i, stmt := range block.List[:len(block.List)-1] { + _ = i + decl, ok := stmt.(*ast.DeclStmt) + if !ok { + continue + } + gdecl, ok := decl.Decl.(*ast.GenDecl) + if !ok || gdecl.Tok != token.VAR || len(gdecl.Specs) != 1 { + continue + } + vspec, ok := gdecl.Specs[0].(*ast.ValueSpec) + if !ok || len(vspec.Names) != 1 || len(vspec.Values) != 0 { + continue + } + + assign, ok := block.List[i+1].(*ast.AssignStmt) + if !ok || assign.Tok != token.ASSIGN { + continue + } + if len(assign.Lhs) != 1 || len(assign.Rhs) != 1 { + continue + } + ident, ok := assign.Lhs[0].(*ast.Ident) + if !ok { + continue + } + if vspec.Names[0].Obj != ident.Obj { + continue + } + + if refersTo(pass, assign.Rhs[0], ident) { + continue + } + if hasMultipleAssignments(block, ident) { + continue + } + + ReportNodefFG(pass, decl, "should merge variable declaration with assignment on next line") + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BlockStmt)(nil)}, fn) + return nil, nil +} + +func LintRedundantBreak(pass *analysis.Pass) (interface{}, error) { + fn1 := func(node ast.Node) { + clause := node.(*ast.CaseClause) + if len(clause.Body) < 2 { + return + } + branch, ok := clause.Body[len(clause.Body)-1].(*ast.BranchStmt) + if !ok || branch.Tok != token.BREAK || branch.Label != nil { + return + } + ReportNodefFG(pass, branch, "redundant break statement") + } + fn2 := func(node ast.Node) { + var ret *ast.FieldList + var body *ast.BlockStmt + switch x := node.(type) { + case *ast.FuncDecl: + ret = x.Type.Results + body = x.Body + case *ast.FuncLit: + ret = x.Type.Results + body = x.Body + default: + panic(fmt.Sprintf("unreachable: %T", node)) + } + // if the func has results, a return can't be redundant. + // similarly, if there are no statements, there can be + // no return. + if ret != nil || body == nil || len(body.List) < 1 { + return + } + rst, ok := body.List[len(body.List)-1].(*ast.ReturnStmt) + if !ok { + return + } + // we don't need to check rst.Results as we already + // checked x.Type.Results to be nil. + ReportNodefFG(pass, rst, "redundant return statement") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CaseClause)(nil)}, fn1) + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.FuncDecl)(nil), (*ast.FuncLit)(nil)}, fn2) + return nil, nil +} + +func isStringer(T types.Type, msCache *typeutil.MethodSetCache) bool { + ms := msCache.MethodSet(T) + sel := ms.Lookup(nil, "String") + if sel == nil { + return false + } + fn, ok := sel.Obj().(*types.Func) + if !ok { + // should be unreachable + return false + } + sig := fn.Type().(*types.Signature) + if sig.Params().Len() != 0 { + return false + } + if sig.Results().Len() != 1 { + return false + } + if !IsType(sig.Results().At(0).Type(), "string") { + return false + } + return true +} + +func LintRedundantSprintf(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if !IsCallToAST(pass, call, "fmt.Sprintf") { + return + } + if len(call.Args) != 2 { + return + } + if s, ok := ExprToString(pass, call.Args[Arg("fmt.Sprintf.format")]); !ok || s != "%s" { + return + } + arg := call.Args[Arg("fmt.Sprintf.a[0]")] + typ := pass.TypesInfo.TypeOf(arg) + + ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).Pkg + if isStringer(typ, &ssapkg.Prog.MethodSets) { + ReportNodef(pass, call, "should use String() instead of fmt.Sprintf") + return + } + + if typ.Underlying() == types.Universe.Lookup("string").Type() { + if typ == types.Universe.Lookup("string").Type() { + ReportNodefFG(pass, call, "the argument is already a string, there's no need to use fmt.Sprintf") + } else { + ReportNodefFG(pass, call, "the argument's underlying type is a string, should use a simple conversion instead of fmt.Sprintf") + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintErrorsNewSprintf(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + if !IsCallToAST(pass, node, "errors.New") { + return + } + call := node.(*ast.CallExpr) + if !IsCallToAST(pass, call.Args[Arg("errors.New.text")], "fmt.Sprintf") { + return + } + ReportNodefFG(pass, node, "should use fmt.Errorf(...) instead of errors.New(fmt.Sprintf(...))") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func LintRangeStringRunes(pass *analysis.Pass) (interface{}, error) { + return sharedcheck.CheckRangeStringRunes(pass) +} + +func LintNilCheckAroundRange(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + ifstmt := node.(*ast.IfStmt) + cond, ok := ifstmt.Cond.(*ast.BinaryExpr) + if !ok { + return + } + + if cond.Op != token.NEQ || !IsNil(pass, cond.Y) || len(ifstmt.Body.List) != 1 { + return + } + + loop, ok := ifstmt.Body.List[0].(*ast.RangeStmt) + if !ok { + return + } + ifXIdent, ok := cond.X.(*ast.Ident) + if !ok { + return + } + rangeXIdent, ok := loop.X.(*ast.Ident) + if !ok { + return + } + if ifXIdent.Obj != rangeXIdent.Obj { + return + } + switch pass.TypesInfo.TypeOf(rangeXIdent).(type) { + case *types.Slice, *types.Map: + ReportNodefFG(pass, node, "unnecessary nil check around range") + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.IfStmt)(nil)}, fn) + return nil, nil +} + +func isPermissibleSort(pass *analysis.Pass, node ast.Node) bool { + call := node.(*ast.CallExpr) + typeconv, ok := call.Args[0].(*ast.CallExpr) + if !ok { + return true + } + + sel, ok := typeconv.Fun.(*ast.SelectorExpr) + if !ok { + return true + } + name := SelectorName(pass, sel) + switch name { + case "sort.IntSlice", "sort.Float64Slice", "sort.StringSlice": + default: + return true + } + + return false +} + +func LintSortHelpers(pass *analysis.Pass) (interface{}, error) { + type Error struct { + node ast.Node + msg string + } + var allErrors []Error + fn := func(node ast.Node) { + var body *ast.BlockStmt + switch node := node.(type) { + case *ast.FuncLit: + body = node.Body + case *ast.FuncDecl: + body = node.Body + default: + panic(fmt.Sprintf("unreachable: %T", node)) + } + if body == nil { + return + } + + var errors []Error + permissible := false + fnSorts := func(node ast.Node) bool { + if permissible { + return false + } + if !IsCallToAST(pass, node, "sort.Sort") { + return true + } + if isPermissibleSort(pass, node) { + permissible = true + return false + } + call := node.(*ast.CallExpr) + typeconv := call.Args[Arg("sort.Sort.data")].(*ast.CallExpr) + sel := typeconv.Fun.(*ast.SelectorExpr) + name := SelectorName(pass, sel) + + switch name { + case "sort.IntSlice": + errors = append(errors, Error{node, "should use sort.Ints(...) instead of sort.Sort(sort.IntSlice(...))"}) + case "sort.Float64Slice": + errors = append(errors, Error{node, "should use sort.Float64s(...) instead of sort.Sort(sort.Float64Slice(...))"}) + case "sort.StringSlice": + errors = append(errors, Error{node, "should use sort.Strings(...) instead of sort.Sort(sort.StringSlice(...))"}) + } + return true + } + ast.Inspect(body, fnSorts) + + if permissible { + return + } + allErrors = append(allErrors, errors...) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.FuncLit)(nil), (*ast.FuncDecl)(nil)}, fn) + sort.Slice(allErrors, func(i, j int) bool { + return allErrors[i].node.Pos() < allErrors[j].node.Pos() + }) + var prev token.Pos + for _, err := range allErrors { + if err.node.Pos() == prev { + continue + } + prev = err.node.Pos() + ReportNodefFG(pass, err.node, "%s", err.msg) + } + return nil, nil +} + +func LintGuardedDelete(pass *analysis.Pass) (interface{}, error) { + isCommaOkMapIndex := func(stmt ast.Stmt) (b *ast.Ident, m ast.Expr, key ast.Expr, ok bool) { + // Has to be of the form `_, = [] + + assign, ok := stmt.(*ast.AssignStmt) + if !ok { + return nil, nil, nil, false + } + if len(assign.Lhs) != 2 || len(assign.Rhs) != 1 { + return nil, nil, nil, false + } + if !IsBlank(assign.Lhs[0]) { + return nil, nil, nil, false + } + ident, ok := assign.Lhs[1].(*ast.Ident) + if !ok { + return nil, nil, nil, false + } + index, ok := assign.Rhs[0].(*ast.IndexExpr) + if !ok { + return nil, nil, nil, false + } + if _, ok := pass.TypesInfo.TypeOf(index.X).(*types.Map); !ok { + return nil, nil, nil, false + } + key = index.Index + return ident, index.X, key, true + } + fn := func(node ast.Node) { + stmt := node.(*ast.IfStmt) + if len(stmt.Body.List) != 1 { + return + } + if stmt.Else != nil { + return + } + expr, ok := stmt.Body.List[0].(*ast.ExprStmt) + if !ok { + return + } + call, ok := expr.X.(*ast.CallExpr) + if !ok { + return + } + if !IsCallToAST(pass, call, "delete") { + return + } + b, m, key, ok := isCommaOkMapIndex(stmt.Init) + if !ok { + return + } + if cond, ok := stmt.Cond.(*ast.Ident); !ok || pass.TypesInfo.ObjectOf(cond) != pass.TypesInfo.ObjectOf(b) { + return + } + if Render(pass, call.Args[0]) != Render(pass, m) || Render(pass, call.Args[1]) != Render(pass, key) { + return + } + ReportNodefFG(pass, stmt, "unnecessary guard around call to delete") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.IfStmt)(nil)}, fn) + return nil, nil +} + +func LintSimplifyTypeSwitch(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + stmt := node.(*ast.TypeSwitchStmt) + if stmt.Init != nil { + // bailing out for now, can't anticipate how type switches with initializers are being used + return + } + expr, ok := stmt.Assign.(*ast.ExprStmt) + if !ok { + // the user is in fact assigning the result + return + } + assert := expr.X.(*ast.TypeAssertExpr) + ident, ok := assert.X.(*ast.Ident) + if !ok { + return + } + x := pass.TypesInfo.ObjectOf(ident) + var allOffenders []ast.Node + for _, clause := range stmt.Body.List { + clause := clause.(*ast.CaseClause) + if len(clause.List) != 1 { + continue + } + hasUnrelatedAssertion := false + var offenders []ast.Node + ast.Inspect(clause, func(node ast.Node) bool { + assert2, ok := node.(*ast.TypeAssertExpr) + if !ok { + return true + } + ident, ok := assert2.X.(*ast.Ident) + if !ok { + hasUnrelatedAssertion = true + return false + } + if pass.TypesInfo.ObjectOf(ident) != x { + hasUnrelatedAssertion = true + return false + } + + if !types.Identical(pass.TypesInfo.TypeOf(clause.List[0]), pass.TypesInfo.TypeOf(assert2.Type)) { + hasUnrelatedAssertion = true + return false + } + offenders = append(offenders, assert2) + return true + }) + if !hasUnrelatedAssertion { + // don't flag cases that have other type assertions + // unrelated to the one in the case clause. often + // times, this is done for symmetry, when two + // different values have to be asserted to the same + // type. + allOffenders = append(allOffenders, offenders...) + } + } + if len(allOffenders) != 0 { + at := "" + for _, offender := range allOffenders { + pos := lint.DisplayPosition(pass.Fset, offender.Pos()) + at += "\n\t" + pos.String() + } + ReportNodefFG(pass, expr, "assigning the result of this type assertion to a variable (switch %s := %s.(type)) could eliminate the following type assertions:%s", Render(pass, ident), Render(pass, ident), at) + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.TypeSwitchStmt)(nil)}, fn) + return nil, nil +} diff --git a/vendor/honnef.co/go/tools/ssa/LICENSE b/vendor/honnef.co/go/tools/ssa/LICENSE new file mode 100644 index 00000000000..aee48041e11 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright (c) 2016 Dominik Honnef. 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/honnef.co/go/tools/ssa/blockopt.go b/vendor/honnef.co/go/tools/ssa/blockopt.go new file mode 100644 index 00000000000..22c9a4c0d42 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/blockopt.go @@ -0,0 +1,195 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// Simple block optimizations to simplify the control flow graph. + +// TODO(adonovan): opt: instead of creating several "unreachable" blocks +// per function in the Builder, reuse a single one (e.g. at Blocks[1]) +// to reduce garbage. + +import ( + "fmt" + "os" +) + +// If true, perform sanity checking and show progress at each +// successive iteration of optimizeBlocks. Very verbose. +const debugBlockOpt = false + +// markReachable sets Index=-1 for all blocks reachable from b. +func markReachable(b *BasicBlock) { + b.Index = -1 + for _, succ := range b.Succs { + if succ.Index == 0 { + markReachable(succ) + } + } +} + +func DeleteUnreachableBlocks(f *Function) { + deleteUnreachableBlocks(f) +} + +// deleteUnreachableBlocks marks all reachable blocks of f and +// eliminates (nils) all others, including possibly cyclic subgraphs. +// +func deleteUnreachableBlocks(f *Function) { + const white, black = 0, -1 + // We borrow b.Index temporarily as the mark bit. + for _, b := range f.Blocks { + b.Index = white + } + markReachable(f.Blocks[0]) + if f.Recover != nil { + markReachable(f.Recover) + } + for i, b := range f.Blocks { + if b.Index == white { + for _, c := range b.Succs { + if c.Index == black { + c.removePred(b) // delete white->black edge + } + } + if debugBlockOpt { + fmt.Fprintln(os.Stderr, "unreachable", b) + } + f.Blocks[i] = nil // delete b + } + } + f.removeNilBlocks() +} + +// jumpThreading attempts to apply simple jump-threading to block b, +// in which a->b->c become a->c if b is just a Jump. +// The result is true if the optimization was applied. +// +func jumpThreading(f *Function, b *BasicBlock) bool { + if b.Index == 0 { + return false // don't apply to entry block + } + if b.Instrs == nil { + return false + } + if _, ok := b.Instrs[0].(*Jump); !ok { + return false // not just a jump + } + c := b.Succs[0] + if c == b { + return false // don't apply to degenerate jump-to-self. + } + if c.hasPhi() { + return false // not sound without more effort + } + for j, a := range b.Preds { + a.replaceSucc(b, c) + + // If a now has two edges to c, replace its degenerate If by Jump. + if len(a.Succs) == 2 && a.Succs[0] == c && a.Succs[1] == c { + jump := new(Jump) + jump.setBlock(a) + a.Instrs[len(a.Instrs)-1] = jump + a.Succs = a.Succs[:1] + c.removePred(b) + } else { + if j == 0 { + c.replacePred(b, a) + } else { + c.Preds = append(c.Preds, a) + } + } + + if debugBlockOpt { + fmt.Fprintln(os.Stderr, "jumpThreading", a, b, c) + } + } + f.Blocks[b.Index] = nil // delete b + return true +} + +// fuseBlocks attempts to apply the block fusion optimization to block +// a, in which a->b becomes ab if len(a.Succs)==len(b.Preds)==1. +// The result is true if the optimization was applied. +// +func fuseBlocks(f *Function, a *BasicBlock) bool { + if len(a.Succs) != 1 { + return false + } + b := a.Succs[0] + if len(b.Preds) != 1 { + return false + } + + // Degenerate &&/|| ops may result in a straight-line CFG + // containing φ-nodes. (Ideally we'd replace such them with + // their sole operand but that requires Referrers, built later.) + if b.hasPhi() { + return false // not sound without further effort + } + + // Eliminate jump at end of A, then copy all of B across. + a.Instrs = append(a.Instrs[:len(a.Instrs)-1], b.Instrs...) + for _, instr := range b.Instrs { + instr.setBlock(a) + } + + // A inherits B's successors + a.Succs = append(a.succs2[:0], b.Succs...) + + // Fix up Preds links of all successors of B. + for _, c := range b.Succs { + c.replacePred(b, a) + } + + if debugBlockOpt { + fmt.Fprintln(os.Stderr, "fuseBlocks", a, b) + } + + f.Blocks[b.Index] = nil // delete b + return true +} + +func OptimizeBlocks(f *Function) { + optimizeBlocks(f) +} + +// optimizeBlocks() performs some simple block optimizations on a +// completed function: dead block elimination, block fusion, jump +// threading. +// +func optimizeBlocks(f *Function) { + deleteUnreachableBlocks(f) + + // Loop until no further progress. + changed := true + for changed { + changed = false + + if debugBlockOpt { + f.WriteTo(os.Stderr) + mustSanityCheck(f, nil) + } + + for _, b := range f.Blocks { + // f.Blocks will temporarily contain nils to indicate + // deleted blocks; we remove them at the end. + if b == nil { + continue + } + + // Fuse blocks. b->c becomes bc. + if fuseBlocks(f, b) { + changed = true + } + + // a->b->c becomes a->c if b contains only a Jump. + if jumpThreading(f, b) { + changed = true + continue // (b was disconnected) + } + } + } + f.removeNilBlocks() +} diff --git a/vendor/honnef.co/go/tools/ssa/builder.go b/vendor/honnef.co/go/tools/ssa/builder.go new file mode 100644 index 00000000000..317ac061166 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/builder.go @@ -0,0 +1,2379 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file implements the BUILD phase of SSA construction. +// +// SSA construction has two phases, CREATE and BUILD. In the CREATE phase +// (create.go), all packages are constructed and type-checked and +// definitions of all package members are created, method-sets are +// computed, and wrapper methods are synthesized. +// ssa.Packages are created in arbitrary order. +// +// In the BUILD phase (builder.go), the builder traverses the AST of +// each Go source function and generates SSA instructions for the +// function body. Initializer expressions for package-level variables +// are emitted to the package's init() function in the order specified +// by go/types.Info.InitOrder, then code for each function in the +// package is generated in lexical order. +// The BUILD phases for distinct packages are independent and are +// executed in parallel. +// +// TODO(adonovan): indeed, building functions is now embarrassingly parallel. +// Audit for concurrency then benchmark using more goroutines. +// +// The builder's and Program's indices (maps) are populated and +// mutated during the CREATE phase, but during the BUILD phase they +// remain constant. The sole exception is Prog.methodSets and its +// related maps, which are protected by a dedicated mutex. + +import ( + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + "os" + "sync" +) + +type opaqueType struct { + types.Type + name string +} + +func (t *opaqueType) String() string { return t.name } + +var ( + varOk = newVar("ok", tBool) + varIndex = newVar("index", tInt) + + // Type constants. + tBool = types.Typ[types.Bool] + tByte = types.Typ[types.Byte] + tInt = types.Typ[types.Int] + tInvalid = types.Typ[types.Invalid] + tString = types.Typ[types.String] + tUntypedNil = types.Typ[types.UntypedNil] + tRangeIter = &opaqueType{nil, "iter"} // the type of all "range" iterators + tEface = types.NewInterfaceType(nil, nil).Complete() + + // SSA Value constants. + vZero = intConst(0) + vOne = intConst(1) + vTrue = NewConst(constant.MakeBool(true), tBool) +) + +// builder holds state associated with the package currently being built. +// Its methods contain all the logic for AST-to-SSA conversion. +type builder struct{} + +// cond emits to fn code to evaluate boolean condition e and jump +// to t or f depending on its value, performing various simplifications. +// +// Postcondition: fn.currentBlock is nil. +// +func (b *builder) cond(fn *Function, e ast.Expr, t, f *BasicBlock) { + switch e := e.(type) { + case *ast.ParenExpr: + b.cond(fn, e.X, t, f) + return + + case *ast.BinaryExpr: + switch e.Op { + case token.LAND: + ltrue := fn.newBasicBlock("cond.true") + b.cond(fn, e.X, ltrue, f) + fn.currentBlock = ltrue + b.cond(fn, e.Y, t, f) + return + + case token.LOR: + lfalse := fn.newBasicBlock("cond.false") + b.cond(fn, e.X, t, lfalse) + fn.currentBlock = lfalse + b.cond(fn, e.Y, t, f) + return + } + + case *ast.UnaryExpr: + if e.Op == token.NOT { + b.cond(fn, e.X, f, t) + return + } + } + + // A traditional compiler would simplify "if false" (etc) here + // but we do not, for better fidelity to the source code. + // + // The value of a constant condition may be platform-specific, + // and may cause blocks that are reachable in some configuration + // to be hidden from subsequent analyses such as bug-finding tools. + emitIf(fn, b.expr(fn, e), t, f) +} + +// logicalBinop emits code to fn to evaluate e, a &&- or +// ||-expression whose reified boolean value is wanted. +// The value is returned. +// +func (b *builder) logicalBinop(fn *Function, e *ast.BinaryExpr) Value { + rhs := fn.newBasicBlock("binop.rhs") + done := fn.newBasicBlock("binop.done") + + // T(e) = T(e.X) = T(e.Y) after untyped constants have been + // eliminated. + // TODO(adonovan): not true; MyBool==MyBool yields UntypedBool. + t := fn.Pkg.typeOf(e) + + var short Value // value of the short-circuit path + switch e.Op { + case token.LAND: + b.cond(fn, e.X, rhs, done) + short = NewConst(constant.MakeBool(false), t) + + case token.LOR: + b.cond(fn, e.X, done, rhs) + short = NewConst(constant.MakeBool(true), t) + } + + // Is rhs unreachable? + if rhs.Preds == nil { + // Simplify false&&y to false, true||y to true. + fn.currentBlock = done + return short + } + + // Is done unreachable? + if done.Preds == nil { + // Simplify true&&y (or false||y) to y. + fn.currentBlock = rhs + return b.expr(fn, e.Y) + } + + // All edges from e.X to done carry the short-circuit value. + var edges []Value + for range done.Preds { + edges = append(edges, short) + } + + // The edge from e.Y to done carries the value of e.Y. + fn.currentBlock = rhs + edges = append(edges, b.expr(fn, e.Y)) + emitJump(fn, done) + fn.currentBlock = done + + phi := &Phi{Edges: edges, Comment: e.Op.String()} + phi.pos = e.OpPos + phi.typ = t + return done.emit(phi) +} + +// exprN lowers a multi-result expression e to SSA form, emitting code +// to fn and returning a single Value whose type is a *types.Tuple. +// The caller must access the components via Extract. +// +// Multi-result expressions include CallExprs in a multi-value +// assignment or return statement, and "value,ok" uses of +// TypeAssertExpr, IndexExpr (when X is a map), and UnaryExpr (when Op +// is token.ARROW). +// +func (b *builder) exprN(fn *Function, e ast.Expr) Value { + typ := fn.Pkg.typeOf(e).(*types.Tuple) + switch e := e.(type) { + case *ast.ParenExpr: + return b.exprN(fn, e.X) + + case *ast.CallExpr: + // Currently, no built-in function nor type conversion + // has multiple results, so we can avoid some of the + // cases for single-valued CallExpr. + var c Call + b.setCall(fn, e, &c.Call) + c.typ = typ + return fn.emit(&c) + + case *ast.IndexExpr: + mapt := fn.Pkg.typeOf(e.X).Underlying().(*types.Map) + lookup := &Lookup{ + X: b.expr(fn, e.X), + Index: emitConv(fn, b.expr(fn, e.Index), mapt.Key()), + CommaOk: true, + } + lookup.setType(typ) + lookup.setPos(e.Lbrack) + return fn.emit(lookup) + + case *ast.TypeAssertExpr: + return emitTypeTest(fn, b.expr(fn, e.X), typ.At(0).Type(), e.Lparen) + + case *ast.UnaryExpr: // must be receive <- + unop := &UnOp{ + Op: token.ARROW, + X: b.expr(fn, e.X), + CommaOk: true, + } + unop.setType(typ) + unop.setPos(e.OpPos) + return fn.emit(unop) + } + panic(fmt.Sprintf("exprN(%T) in %s", e, fn)) +} + +// builtin emits to fn SSA instructions to implement a call to the +// built-in function obj with the specified arguments +// and return type. It returns the value defined by the result. +// +// The result is nil if no special handling was required; in this case +// the caller should treat this like an ordinary library function +// call. +// +func (b *builder) builtin(fn *Function, obj *types.Builtin, args []ast.Expr, typ types.Type, pos token.Pos) Value { + switch obj.Name() { + case "make": + switch typ.Underlying().(type) { + case *types.Slice: + n := b.expr(fn, args[1]) + m := n + if len(args) == 3 { + m = b.expr(fn, args[2]) + } + if m, ok := m.(*Const); ok { + // treat make([]T, n, m) as new([m]T)[:n] + cap := m.Int64() + at := types.NewArray(typ.Underlying().(*types.Slice).Elem(), cap) + alloc := emitNew(fn, at, pos) + alloc.Comment = "makeslice" + v := &Slice{ + X: alloc, + High: n, + } + v.setPos(pos) + v.setType(typ) + return fn.emit(v) + } + v := &MakeSlice{ + Len: n, + Cap: m, + } + v.setPos(pos) + v.setType(typ) + return fn.emit(v) + + case *types.Map: + var res Value + if len(args) == 2 { + res = b.expr(fn, args[1]) + } + v := &MakeMap{Reserve: res} + v.setPos(pos) + v.setType(typ) + return fn.emit(v) + + case *types.Chan: + var sz Value = vZero + if len(args) == 2 { + sz = b.expr(fn, args[1]) + } + v := &MakeChan{Size: sz} + v.setPos(pos) + v.setType(typ) + return fn.emit(v) + } + + case "new": + alloc := emitNew(fn, deref(typ), pos) + alloc.Comment = "new" + return alloc + + case "len", "cap": + // Special case: len or cap of an array or *array is + // based on the type, not the value which may be nil. + // We must still evaluate the value, though. (If it + // was side-effect free, the whole call would have + // been constant-folded.) + t := deref(fn.Pkg.typeOf(args[0])).Underlying() + if at, ok := t.(*types.Array); ok { + b.expr(fn, args[0]) // for effects only + return intConst(at.Len()) + } + // Otherwise treat as normal. + + case "panic": + fn.emit(&Panic{ + X: emitConv(fn, b.expr(fn, args[0]), tEface), + pos: pos, + }) + fn.currentBlock = fn.newBasicBlock("unreachable") + return vTrue // any non-nil Value will do + } + return nil // treat all others as a regular function call +} + +// addr lowers a single-result addressable expression e to SSA form, +// emitting code to fn and returning the location (an lvalue) defined +// by the expression. +// +// If escaping is true, addr marks the base variable of the +// addressable expression e as being a potentially escaping pointer +// value. For example, in this code: +// +// a := A{ +// b: [1]B{B{c: 1}} +// } +// return &a.b[0].c +// +// the application of & causes a.b[0].c to have its address taken, +// which means that ultimately the local variable a must be +// heap-allocated. This is a simple but very conservative escape +// analysis. +// +// Operations forming potentially escaping pointers include: +// - &x, including when implicit in method call or composite literals. +// - a[:] iff a is an array (not *array) +// - references to variables in lexically enclosing functions. +// +func (b *builder) addr(fn *Function, e ast.Expr, escaping bool) lvalue { + switch e := e.(type) { + case *ast.Ident: + if isBlankIdent(e) { + return blank{} + } + obj := fn.Pkg.objectOf(e) + v := fn.Prog.packageLevelValue(obj) // var (address) + if v == nil { + v = fn.lookup(obj, escaping) + } + return &address{addr: v, pos: e.Pos(), expr: e} + + case *ast.CompositeLit: + t := deref(fn.Pkg.typeOf(e)) + var v *Alloc + if escaping { + v = emitNew(fn, t, e.Lbrace) + } else { + v = fn.addLocal(t, e.Lbrace) + } + v.Comment = "complit" + var sb storebuf + b.compLit(fn, v, e, true, &sb) + sb.emit(fn) + return &address{addr: v, pos: e.Lbrace, expr: e} + + case *ast.ParenExpr: + return b.addr(fn, e.X, escaping) + + case *ast.SelectorExpr: + sel, ok := fn.Pkg.info.Selections[e] + if !ok { + // qualified identifier + return b.addr(fn, e.Sel, escaping) + } + if sel.Kind() != types.FieldVal { + panic(sel) + } + wantAddr := true + v := b.receiver(fn, e.X, wantAddr, escaping, sel) + last := len(sel.Index()) - 1 + return &address{ + addr: emitFieldSelection(fn, v, sel.Index()[last], true, e.Sel), + pos: e.Sel.Pos(), + expr: e.Sel, + } + + case *ast.IndexExpr: + var x Value + var et types.Type + switch t := fn.Pkg.typeOf(e.X).Underlying().(type) { + case *types.Array: + x = b.addr(fn, e.X, escaping).address(fn) + et = types.NewPointer(t.Elem()) + case *types.Pointer: // *array + x = b.expr(fn, e.X) + et = types.NewPointer(t.Elem().Underlying().(*types.Array).Elem()) + case *types.Slice: + x = b.expr(fn, e.X) + et = types.NewPointer(t.Elem()) + case *types.Map: + return &element{ + m: b.expr(fn, e.X), + k: emitConv(fn, b.expr(fn, e.Index), t.Key()), + t: t.Elem(), + pos: e.Lbrack, + } + default: + panic("unexpected container type in IndexExpr: " + t.String()) + } + v := &IndexAddr{ + X: x, + Index: emitConv(fn, b.expr(fn, e.Index), tInt), + } + v.setPos(e.Lbrack) + v.setType(et) + return &address{addr: fn.emit(v), pos: e.Lbrack, expr: e} + + case *ast.StarExpr: + return &address{addr: b.expr(fn, e.X), pos: e.Star, expr: e} + } + + panic(fmt.Sprintf("unexpected address expression: %T", e)) +} + +type store struct { + lhs lvalue + rhs Value +} + +type storebuf struct{ stores []store } + +func (sb *storebuf) store(lhs lvalue, rhs Value) { + sb.stores = append(sb.stores, store{lhs, rhs}) +} + +func (sb *storebuf) emit(fn *Function) { + for _, s := range sb.stores { + s.lhs.store(fn, s.rhs) + } +} + +// assign emits to fn code to initialize the lvalue loc with the value +// of expression e. If isZero is true, assign assumes that loc holds +// the zero value for its type. +// +// This is equivalent to loc.store(fn, b.expr(fn, e)), but may generate +// better code in some cases, e.g., for composite literals in an +// addressable location. +// +// If sb is not nil, assign generates code to evaluate expression e, but +// not to update loc. Instead, the necessary stores are appended to the +// storebuf sb so that they can be executed later. This allows correct +// in-place update of existing variables when the RHS is a composite +// literal that may reference parts of the LHS. +// +func (b *builder) assign(fn *Function, loc lvalue, e ast.Expr, isZero bool, sb *storebuf) { + // Can we initialize it in place? + if e, ok := unparen(e).(*ast.CompositeLit); ok { + // A CompositeLit never evaluates to a pointer, + // so if the type of the location is a pointer, + // an &-operation is implied. + if _, ok := loc.(blank); !ok { // avoid calling blank.typ() + if isPointer(loc.typ()) { + ptr := b.addr(fn, e, true).address(fn) + // copy address + if sb != nil { + sb.store(loc, ptr) + } else { + loc.store(fn, ptr) + } + return + } + } + + if _, ok := loc.(*address); ok { + if isInterface(loc.typ()) { + // e.g. var x interface{} = T{...} + // Can't in-place initialize an interface value. + // Fall back to copying. + } else { + // x = T{...} or x := T{...} + addr := loc.address(fn) + if sb != nil { + b.compLit(fn, addr, e, isZero, sb) + } else { + var sb storebuf + b.compLit(fn, addr, e, isZero, &sb) + sb.emit(fn) + } + + // Subtle: emit debug ref for aggregate types only; + // slice and map are handled by store ops in compLit. + switch loc.typ().Underlying().(type) { + case *types.Struct, *types.Array: + emitDebugRef(fn, e, addr, true) + } + + return + } + } + } + + // simple case: just copy + rhs := b.expr(fn, e) + if sb != nil { + sb.store(loc, rhs) + } else { + loc.store(fn, rhs) + } +} + +// expr lowers a single-result expression e to SSA form, emitting code +// to fn and returning the Value defined by the expression. +// +func (b *builder) expr(fn *Function, e ast.Expr) Value { + e = unparen(e) + + tv := fn.Pkg.info.Types[e] + + // Is expression a constant? + if tv.Value != nil { + return NewConst(tv.Value, tv.Type) + } + + var v Value + if tv.Addressable() { + // Prefer pointer arithmetic ({Index,Field}Addr) followed + // by Load over subelement extraction (e.g. Index, Field), + // to avoid large copies. + v = b.addr(fn, e, false).load(fn) + } else { + v = b.expr0(fn, e, tv) + } + if fn.debugInfo() { + emitDebugRef(fn, e, v, false) + } + return v +} + +func (b *builder) expr0(fn *Function, e ast.Expr, tv types.TypeAndValue) Value { + switch e := e.(type) { + case *ast.BasicLit: + panic("non-constant BasicLit") // unreachable + + case *ast.FuncLit: + fn2 := &Function{ + name: fmt.Sprintf("%s$%d", fn.Name(), 1+len(fn.AnonFuncs)), + Signature: fn.Pkg.typeOf(e.Type).Underlying().(*types.Signature), + pos: e.Type.Func, + parent: fn, + Pkg: fn.Pkg, + Prog: fn.Prog, + syntax: e, + } + fn.AnonFuncs = append(fn.AnonFuncs, fn2) + b.buildFunction(fn2) + if fn2.FreeVars == nil { + return fn2 + } + v := &MakeClosure{Fn: fn2} + v.setType(tv.Type) + for _, fv := range fn2.FreeVars { + v.Bindings = append(v.Bindings, fv.outer) + fv.outer = nil + } + return fn.emit(v) + + case *ast.TypeAssertExpr: // single-result form only + return emitTypeAssert(fn, b.expr(fn, e.X), tv.Type, e.Lparen) + + case *ast.CallExpr: + if fn.Pkg.info.Types[e.Fun].IsType() { + // Explicit type conversion, e.g. string(x) or big.Int(x) + x := b.expr(fn, e.Args[0]) + y := emitConv(fn, x, tv.Type) + if y != x { + switch y := y.(type) { + case *Convert: + y.pos = e.Lparen + case *ChangeType: + y.pos = e.Lparen + case *MakeInterface: + y.pos = e.Lparen + } + } + return y + } + // Call to "intrinsic" built-ins, e.g. new, make, panic. + if id, ok := unparen(e.Fun).(*ast.Ident); ok { + if obj, ok := fn.Pkg.info.Uses[id].(*types.Builtin); ok { + if v := b.builtin(fn, obj, e.Args, tv.Type, e.Lparen); v != nil { + return v + } + } + } + // Regular function call. + var v Call + b.setCall(fn, e, &v.Call) + v.setType(tv.Type) + return fn.emit(&v) + + case *ast.UnaryExpr: + switch e.Op { + case token.AND: // &X --- potentially escaping. + addr := b.addr(fn, e.X, true) + if _, ok := unparen(e.X).(*ast.StarExpr); ok { + // &*p must panic if p is nil (http://golang.org/s/go12nil). + // For simplicity, we'll just (suboptimally) rely + // on the side effects of a load. + // TODO(adonovan): emit dedicated nilcheck. + addr.load(fn) + } + return addr.address(fn) + case token.ADD: + return b.expr(fn, e.X) + case token.NOT, token.ARROW, token.SUB, token.XOR: // ! <- - ^ + v := &UnOp{ + Op: e.Op, + X: b.expr(fn, e.X), + } + v.setPos(e.OpPos) + v.setType(tv.Type) + return fn.emit(v) + default: + panic(e.Op) + } + + case *ast.BinaryExpr: + switch e.Op { + case token.LAND, token.LOR: + return b.logicalBinop(fn, e) + case token.SHL, token.SHR: + fallthrough + case token.ADD, token.SUB, token.MUL, token.QUO, token.REM, token.AND, token.OR, token.XOR, token.AND_NOT: + return emitArith(fn, e.Op, b.expr(fn, e.X), b.expr(fn, e.Y), tv.Type, e.OpPos) + + case token.EQL, token.NEQ, token.GTR, token.LSS, token.LEQ, token.GEQ: + cmp := emitCompare(fn, e.Op, b.expr(fn, e.X), b.expr(fn, e.Y), e.OpPos) + // The type of x==y may be UntypedBool. + return emitConv(fn, cmp, DefaultType(tv.Type)) + default: + panic("illegal op in BinaryExpr: " + e.Op.String()) + } + + case *ast.SliceExpr: + var low, high, max Value + var x Value + switch fn.Pkg.typeOf(e.X).Underlying().(type) { + case *types.Array: + // Potentially escaping. + x = b.addr(fn, e.X, true).address(fn) + case *types.Basic, *types.Slice, *types.Pointer: // *array + x = b.expr(fn, e.X) + default: + panic("unreachable") + } + if e.High != nil { + high = b.expr(fn, e.High) + } + if e.Low != nil { + low = b.expr(fn, e.Low) + } + if e.Slice3 { + max = b.expr(fn, e.Max) + } + v := &Slice{ + X: x, + Low: low, + High: high, + Max: max, + } + v.setPos(e.Lbrack) + v.setType(tv.Type) + return fn.emit(v) + + case *ast.Ident: + obj := fn.Pkg.info.Uses[e] + // Universal built-in or nil? + switch obj := obj.(type) { + case *types.Builtin: + return &Builtin{name: obj.Name(), sig: tv.Type.(*types.Signature)} + case *types.Nil: + return nilConst(tv.Type) + } + // Package-level func or var? + if v := fn.Prog.packageLevelValue(obj); v != nil { + if _, ok := obj.(*types.Var); ok { + return emitLoad(fn, v) // var (address) + } + return v // (func) + } + // Local var. + return emitLoad(fn, fn.lookup(obj, false)) // var (address) + + case *ast.SelectorExpr: + sel, ok := fn.Pkg.info.Selections[e] + if !ok { + // qualified identifier + return b.expr(fn, e.Sel) + } + switch sel.Kind() { + case types.MethodExpr: + // (*T).f or T.f, the method f from the method-set of type T. + // The result is a "thunk". + return emitConv(fn, makeThunk(fn.Prog, sel), tv.Type) + + case types.MethodVal: + // e.f where e is an expression and f is a method. + // The result is a "bound". + obj := sel.Obj().(*types.Func) + rt := recvType(obj) + wantAddr := isPointer(rt) + escaping := true + v := b.receiver(fn, e.X, wantAddr, escaping, sel) + if isInterface(rt) { + // If v has interface type I, + // we must emit a check that v is non-nil. + // We use: typeassert v.(I). + emitTypeAssert(fn, v, rt, token.NoPos) + } + c := &MakeClosure{ + Fn: makeBound(fn.Prog, obj), + Bindings: []Value{v}, + } + c.setPos(e.Sel.Pos()) + c.setType(tv.Type) + return fn.emit(c) + + case types.FieldVal: + indices := sel.Index() + last := len(indices) - 1 + v := b.expr(fn, e.X) + v = emitImplicitSelections(fn, v, indices[:last]) + v = emitFieldSelection(fn, v, indices[last], false, e.Sel) + return v + } + + panic("unexpected expression-relative selector") + + case *ast.IndexExpr: + switch t := fn.Pkg.typeOf(e.X).Underlying().(type) { + case *types.Array: + // Non-addressable array (in a register). + v := &Index{ + X: b.expr(fn, e.X), + Index: emitConv(fn, b.expr(fn, e.Index), tInt), + } + v.setPos(e.Lbrack) + v.setType(t.Elem()) + return fn.emit(v) + + case *types.Map: + // Maps are not addressable. + mapt := fn.Pkg.typeOf(e.X).Underlying().(*types.Map) + v := &Lookup{ + X: b.expr(fn, e.X), + Index: emitConv(fn, b.expr(fn, e.Index), mapt.Key()), + } + v.setPos(e.Lbrack) + v.setType(mapt.Elem()) + return fn.emit(v) + + case *types.Basic: // => string + // Strings are not addressable. + v := &Lookup{ + X: b.expr(fn, e.X), + Index: b.expr(fn, e.Index), + } + v.setPos(e.Lbrack) + v.setType(tByte) + return fn.emit(v) + + case *types.Slice, *types.Pointer: // *array + // Addressable slice/array; use IndexAddr and Load. + return b.addr(fn, e, false).load(fn) + + default: + panic("unexpected container type in IndexExpr: " + t.String()) + } + + case *ast.CompositeLit, *ast.StarExpr: + // Addressable types (lvalues) + return b.addr(fn, e, false).load(fn) + } + + panic(fmt.Sprintf("unexpected expr: %T", e)) +} + +// stmtList emits to fn code for all statements in list. +func (b *builder) stmtList(fn *Function, list []ast.Stmt) { + for _, s := range list { + b.stmt(fn, s) + } +} + +// receiver emits to fn code for expression e in the "receiver" +// position of selection e.f (where f may be a field or a method) and +// returns the effective receiver after applying the implicit field +// selections of sel. +// +// wantAddr requests that the result is an an address. If +// !sel.Indirect(), this may require that e be built in addr() mode; it +// must thus be addressable. +// +// escaping is defined as per builder.addr(). +// +func (b *builder) receiver(fn *Function, e ast.Expr, wantAddr, escaping bool, sel *types.Selection) Value { + var v Value + if wantAddr && !sel.Indirect() && !isPointer(fn.Pkg.typeOf(e)) { + v = b.addr(fn, e, escaping).address(fn) + } else { + v = b.expr(fn, e) + } + + last := len(sel.Index()) - 1 + v = emitImplicitSelections(fn, v, sel.Index()[:last]) + if !wantAddr && isPointer(v.Type()) { + v = emitLoad(fn, v) + } + return v +} + +// setCallFunc populates the function parts of a CallCommon structure +// (Func, Method, Recv, Args[0]) based on the kind of invocation +// occurring in e. +// +func (b *builder) setCallFunc(fn *Function, e *ast.CallExpr, c *CallCommon) { + c.pos = e.Lparen + + // Is this a method call? + if selector, ok := unparen(e.Fun).(*ast.SelectorExpr); ok { + sel, ok := fn.Pkg.info.Selections[selector] + if ok && sel.Kind() == types.MethodVal { + obj := sel.Obj().(*types.Func) + recv := recvType(obj) + wantAddr := isPointer(recv) + escaping := true + v := b.receiver(fn, selector.X, wantAddr, escaping, sel) + if isInterface(recv) { + // Invoke-mode call. + c.Value = v + c.Method = obj + } else { + // "Call"-mode call. + c.Value = fn.Prog.declaredFunc(obj) + c.Args = append(c.Args, v) + } + return + } + + // sel.Kind()==MethodExpr indicates T.f() or (*T).f(): + // a statically dispatched call to the method f in the + // method-set of T or *T. T may be an interface. + // + // e.Fun would evaluate to a concrete method, interface + // wrapper function, or promotion wrapper. + // + // For now, we evaluate it in the usual way. + // + // TODO(adonovan): opt: inline expr() here, to make the + // call static and to avoid generation of wrappers. + // It's somewhat tricky as it may consume the first + // actual parameter if the call is "invoke" mode. + // + // Examples: + // type T struct{}; func (T) f() {} // "call" mode + // type T interface { f() } // "invoke" mode + // + // type S struct{ T } + // + // var s S + // S.f(s) + // (*S).f(&s) + // + // Suggested approach: + // - consume the first actual parameter expression + // and build it with b.expr(). + // - apply implicit field selections. + // - use MethodVal logic to populate fields of c. + } + + // Evaluate the function operand in the usual way. + c.Value = b.expr(fn, e.Fun) +} + +// emitCallArgs emits to f code for the actual parameters of call e to +// a (possibly built-in) function of effective type sig. +// The argument values are appended to args, which is then returned. +// +func (b *builder) emitCallArgs(fn *Function, sig *types.Signature, e *ast.CallExpr, args []Value) []Value { + // f(x, y, z...): pass slice z straight through. + if e.Ellipsis != 0 { + for i, arg := range e.Args { + v := emitConv(fn, b.expr(fn, arg), sig.Params().At(i).Type()) + args = append(args, v) + } + return args + } + + offset := len(args) // 1 if call has receiver, 0 otherwise + + // Evaluate actual parameter expressions. + // + // If this is a chained call of the form f(g()) where g has + // multiple return values (MRV), they are flattened out into + // args; a suffix of them may end up in a varargs slice. + for _, arg := range e.Args { + v := b.expr(fn, arg) + if ttuple, ok := v.Type().(*types.Tuple); ok { // MRV chain + for i, n := 0, ttuple.Len(); i < n; i++ { + args = append(args, emitExtract(fn, v, i)) + } + } else { + args = append(args, v) + } + } + + // Actual->formal assignability conversions for normal parameters. + np := sig.Params().Len() // number of normal parameters + if sig.Variadic() { + np-- + } + for i := 0; i < np; i++ { + args[offset+i] = emitConv(fn, args[offset+i], sig.Params().At(i).Type()) + } + + // Actual->formal assignability conversions for variadic parameter, + // and construction of slice. + if sig.Variadic() { + varargs := args[offset+np:] + st := sig.Params().At(np).Type().(*types.Slice) + vt := st.Elem() + if len(varargs) == 0 { + args = append(args, nilConst(st)) + } else { + // Replace a suffix of args with a slice containing it. + at := types.NewArray(vt, int64(len(varargs))) + a := emitNew(fn, at, token.NoPos) + a.setPos(e.Rparen) + a.Comment = "varargs" + for i, arg := range varargs { + iaddr := &IndexAddr{ + X: a, + Index: intConst(int64(i)), + } + iaddr.setType(types.NewPointer(vt)) + fn.emit(iaddr) + emitStore(fn, iaddr, arg, arg.Pos()) + } + s := &Slice{X: a} + s.setType(st) + args[offset+np] = fn.emit(s) + args = args[:offset+np+1] + } + } + return args +} + +// setCall emits to fn code to evaluate all the parameters of a function +// call e, and populates *c with those values. +// +func (b *builder) setCall(fn *Function, e *ast.CallExpr, c *CallCommon) { + // First deal with the f(...) part and optional receiver. + b.setCallFunc(fn, e, c) + + // Then append the other actual parameters. + sig, _ := fn.Pkg.typeOf(e.Fun).Underlying().(*types.Signature) + if sig == nil { + panic(fmt.Sprintf("no signature for call of %s", e.Fun)) + } + c.Args = b.emitCallArgs(fn, sig, e, c.Args) +} + +// assignOp emits to fn code to perform loc = val. +func (b *builder) assignOp(fn *Function, loc lvalue, val Value, op token.Token, pos token.Pos) { + oldv := loc.load(fn) + loc.store(fn, emitArith(fn, op, oldv, emitConv(fn, val, oldv.Type()), loc.typ(), pos)) +} + +// localValueSpec emits to fn code to define all of the vars in the +// function-local ValueSpec, spec. +// +func (b *builder) localValueSpec(fn *Function, spec *ast.ValueSpec) { + switch { + case len(spec.Values) == len(spec.Names): + // e.g. var x, y = 0, 1 + // 1:1 assignment + for i, id := range spec.Names { + if !isBlankIdent(id) { + fn.addLocalForIdent(id) + } + lval := b.addr(fn, id, false) // non-escaping + b.assign(fn, lval, spec.Values[i], true, nil) + } + + case len(spec.Values) == 0: + // e.g. var x, y int + // Locals are implicitly zero-initialized. + for _, id := range spec.Names { + if !isBlankIdent(id) { + lhs := fn.addLocalForIdent(id) + if fn.debugInfo() { + emitDebugRef(fn, id, lhs, true) + } + } + } + + default: + // e.g. var x, y = pos() + tuple := b.exprN(fn, spec.Values[0]) + for i, id := range spec.Names { + if !isBlankIdent(id) { + fn.addLocalForIdent(id) + lhs := b.addr(fn, id, false) // non-escaping + lhs.store(fn, emitExtract(fn, tuple, i)) + } + } + } +} + +// assignStmt emits code to fn for a parallel assignment of rhss to lhss. +// isDef is true if this is a short variable declaration (:=). +// +// Note the similarity with localValueSpec. +// +func (b *builder) assignStmt(fn *Function, lhss, rhss []ast.Expr, isDef bool) { + // Side effects of all LHSs and RHSs must occur in left-to-right order. + lvals := make([]lvalue, len(lhss)) + isZero := make([]bool, len(lhss)) + for i, lhs := range lhss { + var lval lvalue = blank{} + if !isBlankIdent(lhs) { + if isDef { + if obj := fn.Pkg.info.Defs[lhs.(*ast.Ident)]; obj != nil { + fn.addNamedLocal(obj) + isZero[i] = true + } + } + lval = b.addr(fn, lhs, false) // non-escaping + } + lvals[i] = lval + } + if len(lhss) == len(rhss) { + // Simple assignment: x = f() (!isDef) + // Parallel assignment: x, y = f(), g() (!isDef) + // or short var decl: x, y := f(), g() (isDef) + // + // In all cases, the RHSs may refer to the LHSs, + // so we need a storebuf. + var sb storebuf + for i := range rhss { + b.assign(fn, lvals[i], rhss[i], isZero[i], &sb) + } + sb.emit(fn) + } else { + // e.g. x, y = pos() + tuple := b.exprN(fn, rhss[0]) + emitDebugRef(fn, rhss[0], tuple, false) + for i, lval := range lvals { + lval.store(fn, emitExtract(fn, tuple, i)) + } + } +} + +// arrayLen returns the length of the array whose composite literal elements are elts. +func (b *builder) arrayLen(fn *Function, elts []ast.Expr) int64 { + var max int64 = -1 + var i int64 = -1 + for _, e := range elts { + if kv, ok := e.(*ast.KeyValueExpr); ok { + i = b.expr(fn, kv.Key).(*Const).Int64() + } else { + i++ + } + if i > max { + max = i + } + } + return max + 1 +} + +// compLit emits to fn code to initialize a composite literal e at +// address addr with type typ. +// +// Nested composite literals are recursively initialized in place +// where possible. If isZero is true, compLit assumes that addr +// holds the zero value for typ. +// +// Because the elements of a composite literal may refer to the +// variables being updated, as in the second line below, +// x := T{a: 1} +// x = T{a: x.a} +// all the reads must occur before all the writes. Thus all stores to +// loc are emitted to the storebuf sb for later execution. +// +// A CompositeLit may have pointer type only in the recursive (nested) +// case when the type name is implicit. e.g. in []*T{{}}, the inner +// literal has type *T behaves like &T{}. +// In that case, addr must hold a T, not a *T. +// +func (b *builder) compLit(fn *Function, addr Value, e *ast.CompositeLit, isZero bool, sb *storebuf) { + typ := deref(fn.Pkg.typeOf(e)) + switch t := typ.Underlying().(type) { + case *types.Struct: + if !isZero && len(e.Elts) != t.NumFields() { + // memclear + sb.store(&address{addr, e.Lbrace, nil}, + zeroValue(fn, deref(addr.Type()))) + isZero = true + } + for i, e := range e.Elts { + fieldIndex := i + pos := e.Pos() + if kv, ok := e.(*ast.KeyValueExpr); ok { + fname := kv.Key.(*ast.Ident).Name + for i, n := 0, t.NumFields(); i < n; i++ { + sf := t.Field(i) + if sf.Name() == fname { + fieldIndex = i + pos = kv.Colon + e = kv.Value + break + } + } + } + sf := t.Field(fieldIndex) + faddr := &FieldAddr{ + X: addr, + Field: fieldIndex, + } + faddr.setType(types.NewPointer(sf.Type())) + fn.emit(faddr) + b.assign(fn, &address{addr: faddr, pos: pos, expr: e}, e, isZero, sb) + } + + case *types.Array, *types.Slice: + var at *types.Array + var array Value + switch t := t.(type) { + case *types.Slice: + at = types.NewArray(t.Elem(), b.arrayLen(fn, e.Elts)) + alloc := emitNew(fn, at, e.Lbrace) + alloc.Comment = "slicelit" + array = alloc + case *types.Array: + at = t + array = addr + + if !isZero && int64(len(e.Elts)) != at.Len() { + // memclear + sb.store(&address{array, e.Lbrace, nil}, + zeroValue(fn, deref(array.Type()))) + } + } + + var idx *Const + for _, e := range e.Elts { + pos := e.Pos() + if kv, ok := e.(*ast.KeyValueExpr); ok { + idx = b.expr(fn, kv.Key).(*Const) + pos = kv.Colon + e = kv.Value + } else { + var idxval int64 + if idx != nil { + idxval = idx.Int64() + 1 + } + idx = intConst(idxval) + } + iaddr := &IndexAddr{ + X: array, + Index: idx, + } + iaddr.setType(types.NewPointer(at.Elem())) + fn.emit(iaddr) + if t != at { // slice + // backing array is unaliased => storebuf not needed. + b.assign(fn, &address{addr: iaddr, pos: pos, expr: e}, e, true, nil) + } else { + b.assign(fn, &address{addr: iaddr, pos: pos, expr: e}, e, true, sb) + } + } + + if t != at { // slice + s := &Slice{X: array} + s.setPos(e.Lbrace) + s.setType(typ) + sb.store(&address{addr: addr, pos: e.Lbrace, expr: e}, fn.emit(s)) + } + + case *types.Map: + m := &MakeMap{Reserve: intConst(int64(len(e.Elts)))} + m.setPos(e.Lbrace) + m.setType(typ) + fn.emit(m) + for _, e := range e.Elts { + e := e.(*ast.KeyValueExpr) + + // If a key expression in a map literal is itself a + // composite literal, the type may be omitted. + // For example: + // map[*struct{}]bool{{}: true} + // An &-operation may be implied: + // map[*struct{}]bool{&struct{}{}: true} + var key Value + if _, ok := unparen(e.Key).(*ast.CompositeLit); ok && isPointer(t.Key()) { + // A CompositeLit never evaluates to a pointer, + // so if the type of the location is a pointer, + // an &-operation is implied. + key = b.addr(fn, e.Key, true).address(fn) + } else { + key = b.expr(fn, e.Key) + } + + loc := element{ + m: m, + k: emitConv(fn, key, t.Key()), + t: t.Elem(), + pos: e.Colon, + } + + // We call assign() only because it takes care + // of any &-operation required in the recursive + // case, e.g., + // map[int]*struct{}{0: {}} implies &struct{}{}. + // In-place update is of course impossible, + // and no storebuf is needed. + b.assign(fn, &loc, e.Value, true, nil) + } + sb.store(&address{addr: addr, pos: e.Lbrace, expr: e}, m) + + default: + panic("unexpected CompositeLit type: " + t.String()) + } +} + +// switchStmt emits to fn code for the switch statement s, optionally +// labelled by label. +// +func (b *builder) switchStmt(fn *Function, s *ast.SwitchStmt, label *lblock) { + // We treat SwitchStmt like a sequential if-else chain. + // Multiway dispatch can be recovered later by ssautil.Switches() + // to those cases that are free of side effects. + if s.Init != nil { + b.stmt(fn, s.Init) + } + var tag Value = vTrue + if s.Tag != nil { + tag = b.expr(fn, s.Tag) + } + done := fn.newBasicBlock("switch.done") + if label != nil { + label._break = done + } + // We pull the default case (if present) down to the end. + // But each fallthrough label must point to the next + // body block in source order, so we preallocate a + // body block (fallthru) for the next case. + // Unfortunately this makes for a confusing block order. + var dfltBody *[]ast.Stmt + var dfltFallthrough *BasicBlock + var fallthru, dfltBlock *BasicBlock + ncases := len(s.Body.List) + for i, clause := range s.Body.List { + body := fallthru + if body == nil { + body = fn.newBasicBlock("switch.body") // first case only + } + + // Preallocate body block for the next case. + fallthru = done + if i+1 < ncases { + fallthru = fn.newBasicBlock("switch.body") + } + + cc := clause.(*ast.CaseClause) + if cc.List == nil { + // Default case. + dfltBody = &cc.Body + dfltFallthrough = fallthru + dfltBlock = body + continue + } + + var nextCond *BasicBlock + for _, cond := range cc.List { + nextCond = fn.newBasicBlock("switch.next") + // TODO(adonovan): opt: when tag==vTrue, we'd + // get better code if we use b.cond(cond) + // instead of BinOp(EQL, tag, b.expr(cond)) + // followed by If. Don't forget conversions + // though. + cond := emitCompare(fn, token.EQL, tag, b.expr(fn, cond), cond.Pos()) + emitIf(fn, cond, body, nextCond) + fn.currentBlock = nextCond + } + fn.currentBlock = body + fn.targets = &targets{ + tail: fn.targets, + _break: done, + _fallthrough: fallthru, + } + b.stmtList(fn, cc.Body) + fn.targets = fn.targets.tail + emitJump(fn, done) + fn.currentBlock = nextCond + } + if dfltBlock != nil { + emitJump(fn, dfltBlock) + fn.currentBlock = dfltBlock + fn.targets = &targets{ + tail: fn.targets, + _break: done, + _fallthrough: dfltFallthrough, + } + b.stmtList(fn, *dfltBody) + fn.targets = fn.targets.tail + } + emitJump(fn, done) + fn.currentBlock = done +} + +// typeSwitchStmt emits to fn code for the type switch statement s, optionally +// labelled by label. +// +func (b *builder) typeSwitchStmt(fn *Function, s *ast.TypeSwitchStmt, label *lblock) { + // We treat TypeSwitchStmt like a sequential if-else chain. + // Multiway dispatch can be recovered later by ssautil.Switches(). + + // Typeswitch lowering: + // + // var x X + // switch y := x.(type) { + // case T1, T2: S1 // >1 (y := x) + // case nil: SN // nil (y := x) + // default: SD // 0 types (y := x) + // case T3: S3 // 1 type (y := x.(T3)) + // } + // + // ...s.Init... + // x := eval x + // .caseT1: + // t1, ok1 := typeswitch,ok x + // if ok1 then goto S1 else goto .caseT2 + // .caseT2: + // t2, ok2 := typeswitch,ok x + // if ok2 then goto S1 else goto .caseNil + // .S1: + // y := x + // ...S1... + // goto done + // .caseNil: + // if t2, ok2 := typeswitch,ok x + // if x == nil then goto SN else goto .caseT3 + // .SN: + // y := x + // ...SN... + // goto done + // .caseT3: + // t3, ok3 := typeswitch,ok x + // if ok3 then goto S3 else goto default + // .S3: + // y := t3 + // ...S3... + // goto done + // .default: + // y := x + // ...SD... + // goto done + // .done: + + if s.Init != nil { + b.stmt(fn, s.Init) + } + + var x Value + switch ass := s.Assign.(type) { + case *ast.ExprStmt: // x.(type) + x = b.expr(fn, unparen(ass.X).(*ast.TypeAssertExpr).X) + case *ast.AssignStmt: // y := x.(type) + x = b.expr(fn, unparen(ass.Rhs[0]).(*ast.TypeAssertExpr).X) + } + + done := fn.newBasicBlock("typeswitch.done") + if label != nil { + label._break = done + } + var default_ *ast.CaseClause + for _, clause := range s.Body.List { + cc := clause.(*ast.CaseClause) + if cc.List == nil { + default_ = cc + continue + } + body := fn.newBasicBlock("typeswitch.body") + var next *BasicBlock + var casetype types.Type + var ti Value // ti, ok := typeassert,ok x + for _, cond := range cc.List { + next = fn.newBasicBlock("typeswitch.next") + casetype = fn.Pkg.typeOf(cond) + var condv Value + if casetype == tUntypedNil { + condv = emitCompare(fn, token.EQL, x, nilConst(x.Type()), token.NoPos) + ti = x + } else { + yok := emitTypeTest(fn, x, casetype, cc.Case) + ti = emitExtract(fn, yok, 0) + condv = emitExtract(fn, yok, 1) + } + emitIf(fn, condv, body, next) + fn.currentBlock = next + } + if len(cc.List) != 1 { + ti = x + } + fn.currentBlock = body + b.typeCaseBody(fn, cc, ti, done) + fn.currentBlock = next + } + if default_ != nil { + b.typeCaseBody(fn, default_, x, done) + } else { + emitJump(fn, done) + } + fn.currentBlock = done +} + +func (b *builder) typeCaseBody(fn *Function, cc *ast.CaseClause, x Value, done *BasicBlock) { + if obj := fn.Pkg.info.Implicits[cc]; obj != nil { + // In a switch y := x.(type), each case clause + // implicitly declares a distinct object y. + // In a single-type case, y has that type. + // In multi-type cases, 'case nil' and default, + // y has the same type as the interface operand. + emitStore(fn, fn.addNamedLocal(obj), x, obj.Pos()) + } + fn.targets = &targets{ + tail: fn.targets, + _break: done, + } + b.stmtList(fn, cc.Body) + fn.targets = fn.targets.tail + emitJump(fn, done) +} + +// selectStmt emits to fn code for the select statement s, optionally +// labelled by label. +// +func (b *builder) selectStmt(fn *Function, s *ast.SelectStmt, label *lblock) { + // A blocking select of a single case degenerates to a + // simple send or receive. + // TODO(adonovan): opt: is this optimization worth its weight? + if len(s.Body.List) == 1 { + clause := s.Body.List[0].(*ast.CommClause) + if clause.Comm != nil { + b.stmt(fn, clause.Comm) + done := fn.newBasicBlock("select.done") + if label != nil { + label._break = done + } + fn.targets = &targets{ + tail: fn.targets, + _break: done, + } + b.stmtList(fn, clause.Body) + fn.targets = fn.targets.tail + emitJump(fn, done) + fn.currentBlock = done + return + } + } + + // First evaluate all channels in all cases, and find + // the directions of each state. + var states []*SelectState + blocking := true + debugInfo := fn.debugInfo() + for _, clause := range s.Body.List { + var st *SelectState + switch comm := clause.(*ast.CommClause).Comm.(type) { + case nil: // default case + blocking = false + continue + + case *ast.SendStmt: // ch<- i + ch := b.expr(fn, comm.Chan) + st = &SelectState{ + Dir: types.SendOnly, + Chan: ch, + Send: emitConv(fn, b.expr(fn, comm.Value), + ch.Type().Underlying().(*types.Chan).Elem()), + Pos: comm.Arrow, + } + if debugInfo { + st.DebugNode = comm + } + + case *ast.AssignStmt: // x := <-ch + recv := unparen(comm.Rhs[0]).(*ast.UnaryExpr) + st = &SelectState{ + Dir: types.RecvOnly, + Chan: b.expr(fn, recv.X), + Pos: recv.OpPos, + } + if debugInfo { + st.DebugNode = recv + } + + case *ast.ExprStmt: // <-ch + recv := unparen(comm.X).(*ast.UnaryExpr) + st = &SelectState{ + Dir: types.RecvOnly, + Chan: b.expr(fn, recv.X), + Pos: recv.OpPos, + } + if debugInfo { + st.DebugNode = recv + } + } + states = append(states, st) + } + + // We dispatch on the (fair) result of Select using a + // sequential if-else chain, in effect: + // + // idx, recvOk, r0...r_n-1 := select(...) + // if idx == 0 { // receive on channel 0 (first receive => r0) + // x, ok := r0, recvOk + // ...state0... + // } else if v == 1 { // send on channel 1 + // ...state1... + // } else { + // ...default... + // } + sel := &Select{ + States: states, + Blocking: blocking, + } + sel.setPos(s.Select) + var vars []*types.Var + vars = append(vars, varIndex, varOk) + for _, st := range states { + if st.Dir == types.RecvOnly { + tElem := st.Chan.Type().Underlying().(*types.Chan).Elem() + vars = append(vars, anonVar(tElem)) + } + } + sel.setType(types.NewTuple(vars...)) + + fn.emit(sel) + idx := emitExtract(fn, sel, 0) + + done := fn.newBasicBlock("select.done") + if label != nil { + label._break = done + } + + var defaultBody *[]ast.Stmt + state := 0 + r := 2 // index in 'sel' tuple of value; increments if st.Dir==RECV + for _, cc := range s.Body.List { + clause := cc.(*ast.CommClause) + if clause.Comm == nil { + defaultBody = &clause.Body + continue + } + body := fn.newBasicBlock("select.body") + next := fn.newBasicBlock("select.next") + emitIf(fn, emitCompare(fn, token.EQL, idx, intConst(int64(state)), token.NoPos), body, next) + fn.currentBlock = body + fn.targets = &targets{ + tail: fn.targets, + _break: done, + } + switch comm := clause.Comm.(type) { + case *ast.ExprStmt: // <-ch + if debugInfo { + v := emitExtract(fn, sel, r) + emitDebugRef(fn, states[state].DebugNode.(ast.Expr), v, false) + } + r++ + + case *ast.AssignStmt: // x := <-states[state].Chan + if comm.Tok == token.DEFINE { + fn.addLocalForIdent(comm.Lhs[0].(*ast.Ident)) + } + x := b.addr(fn, comm.Lhs[0], false) // non-escaping + v := emitExtract(fn, sel, r) + if debugInfo { + emitDebugRef(fn, states[state].DebugNode.(ast.Expr), v, false) + } + x.store(fn, v) + + if len(comm.Lhs) == 2 { // x, ok := ... + if comm.Tok == token.DEFINE { + fn.addLocalForIdent(comm.Lhs[1].(*ast.Ident)) + } + ok := b.addr(fn, comm.Lhs[1], false) // non-escaping + ok.store(fn, emitExtract(fn, sel, 1)) + } + r++ + } + b.stmtList(fn, clause.Body) + fn.targets = fn.targets.tail + emitJump(fn, done) + fn.currentBlock = next + state++ + } + if defaultBody != nil { + fn.targets = &targets{ + tail: fn.targets, + _break: done, + } + b.stmtList(fn, *defaultBody) + fn.targets = fn.targets.tail + } else { + // A blocking select must match some case. + // (This should really be a runtime.errorString, not a string.) + fn.emit(&Panic{ + X: emitConv(fn, stringConst("blocking select matched no case"), tEface), + }) + fn.currentBlock = fn.newBasicBlock("unreachable") + } + emitJump(fn, done) + fn.currentBlock = done +} + +// forStmt emits to fn code for the for statement s, optionally +// labelled by label. +// +func (b *builder) forStmt(fn *Function, s *ast.ForStmt, label *lblock) { + // ...init... + // jump loop + // loop: + // if cond goto body else done + // body: + // ...body... + // jump post + // post: (target of continue) + // ...post... + // jump loop + // done: (target of break) + if s.Init != nil { + b.stmt(fn, s.Init) + } + body := fn.newBasicBlock("for.body") + done := fn.newBasicBlock("for.done") // target of 'break' + loop := body // target of back-edge + if s.Cond != nil { + loop = fn.newBasicBlock("for.loop") + } + cont := loop // target of 'continue' + if s.Post != nil { + cont = fn.newBasicBlock("for.post") + } + if label != nil { + label._break = done + label._continue = cont + } + emitJump(fn, loop) + fn.currentBlock = loop + if loop != body { + b.cond(fn, s.Cond, body, done) + fn.currentBlock = body + } + fn.targets = &targets{ + tail: fn.targets, + _break: done, + _continue: cont, + } + b.stmt(fn, s.Body) + fn.targets = fn.targets.tail + emitJump(fn, cont) + + if s.Post != nil { + fn.currentBlock = cont + b.stmt(fn, s.Post) + emitJump(fn, loop) // back-edge + } + fn.currentBlock = done +} + +// rangeIndexed emits to fn the header for an integer-indexed loop +// over array, *array or slice value x. +// The v result is defined only if tv is non-nil. +// forPos is the position of the "for" token. +// +func (b *builder) rangeIndexed(fn *Function, x Value, tv types.Type, pos token.Pos) (k, v Value, loop, done *BasicBlock) { + // + // length = len(x) + // index = -1 + // loop: (target of continue) + // index++ + // if index < length goto body else done + // body: + // k = index + // v = x[index] + // ...body... + // jump loop + // done: (target of break) + + // Determine number of iterations. + var length Value + if arr, ok := deref(x.Type()).Underlying().(*types.Array); ok { + // For array or *array, the number of iterations is + // known statically thanks to the type. We avoid a + // data dependence upon x, permitting later dead-code + // elimination if x is pure, static unrolling, etc. + // Ranging over a nil *array may have >0 iterations. + // We still generate code for x, in case it has effects. + length = intConst(arr.Len()) + } else { + // length = len(x). + var c Call + c.Call.Value = makeLen(x.Type()) + c.Call.Args = []Value{x} + c.setType(tInt) + length = fn.emit(&c) + } + + index := fn.addLocal(tInt, token.NoPos) + emitStore(fn, index, intConst(-1), pos) + + loop = fn.newBasicBlock("rangeindex.loop") + emitJump(fn, loop) + fn.currentBlock = loop + + incr := &BinOp{ + Op: token.ADD, + X: emitLoad(fn, index), + Y: vOne, + } + incr.setType(tInt) + emitStore(fn, index, fn.emit(incr), pos) + + body := fn.newBasicBlock("rangeindex.body") + done = fn.newBasicBlock("rangeindex.done") + emitIf(fn, emitCompare(fn, token.LSS, incr, length, token.NoPos), body, done) + fn.currentBlock = body + + k = emitLoad(fn, index) + if tv != nil { + switch t := x.Type().Underlying().(type) { + case *types.Array: + instr := &Index{ + X: x, + Index: k, + } + instr.setType(t.Elem()) + v = fn.emit(instr) + + case *types.Pointer: // *array + instr := &IndexAddr{ + X: x, + Index: k, + } + instr.setType(types.NewPointer(t.Elem().Underlying().(*types.Array).Elem())) + v = emitLoad(fn, fn.emit(instr)) + + case *types.Slice: + instr := &IndexAddr{ + X: x, + Index: k, + } + instr.setType(types.NewPointer(t.Elem())) + v = emitLoad(fn, fn.emit(instr)) + + default: + panic("rangeIndexed x:" + t.String()) + } + } + return +} + +// rangeIter emits to fn the header for a loop using +// Range/Next/Extract to iterate over map or string value x. +// tk and tv are the types of the key/value results k and v, or nil +// if the respective component is not wanted. +// +func (b *builder) rangeIter(fn *Function, x Value, tk, tv types.Type, pos token.Pos) (k, v Value, loop, done *BasicBlock) { + // + // it = range x + // loop: (target of continue) + // okv = next it (ok, key, value) + // ok = extract okv #0 + // if ok goto body else done + // body: + // k = extract okv #1 + // v = extract okv #2 + // ...body... + // jump loop + // done: (target of break) + // + + if tk == nil { + tk = tInvalid + } + if tv == nil { + tv = tInvalid + } + + rng := &Range{X: x} + rng.setPos(pos) + rng.setType(tRangeIter) + it := fn.emit(rng) + + loop = fn.newBasicBlock("rangeiter.loop") + emitJump(fn, loop) + fn.currentBlock = loop + + _, isString := x.Type().Underlying().(*types.Basic) + + okv := &Next{ + Iter: it, + IsString: isString, + } + okv.setType(types.NewTuple( + varOk, + newVar("k", tk), + newVar("v", tv), + )) + fn.emit(okv) + + body := fn.newBasicBlock("rangeiter.body") + done = fn.newBasicBlock("rangeiter.done") + emitIf(fn, emitExtract(fn, okv, 0), body, done) + fn.currentBlock = body + + if tk != tInvalid { + k = emitExtract(fn, okv, 1) + } + if tv != tInvalid { + v = emitExtract(fn, okv, 2) + } + return +} + +// rangeChan emits to fn the header for a loop that receives from +// channel x until it fails. +// tk is the channel's element type, or nil if the k result is +// not wanted +// pos is the position of the '=' or ':=' token. +// +func (b *builder) rangeChan(fn *Function, x Value, tk types.Type, pos token.Pos) (k Value, loop, done *BasicBlock) { + // + // loop: (target of continue) + // ko = <-x (key, ok) + // ok = extract ko #1 + // if ok goto body else done + // body: + // k = extract ko #0 + // ... + // goto loop + // done: (target of break) + + loop = fn.newBasicBlock("rangechan.loop") + emitJump(fn, loop) + fn.currentBlock = loop + recv := &UnOp{ + Op: token.ARROW, + X: x, + CommaOk: true, + } + recv.setPos(pos) + recv.setType(types.NewTuple( + newVar("k", x.Type().Underlying().(*types.Chan).Elem()), + varOk, + )) + ko := fn.emit(recv) + body := fn.newBasicBlock("rangechan.body") + done = fn.newBasicBlock("rangechan.done") + emitIf(fn, emitExtract(fn, ko, 1), body, done) + fn.currentBlock = body + if tk != nil { + k = emitExtract(fn, ko, 0) + } + return +} + +// rangeStmt emits to fn code for the range statement s, optionally +// labelled by label. +// +func (b *builder) rangeStmt(fn *Function, s *ast.RangeStmt, label *lblock) { + var tk, tv types.Type + if s.Key != nil && !isBlankIdent(s.Key) { + tk = fn.Pkg.typeOf(s.Key) + } + if s.Value != nil && !isBlankIdent(s.Value) { + tv = fn.Pkg.typeOf(s.Value) + } + + // If iteration variables are defined (:=), this + // occurs once outside the loop. + // + // Unlike a short variable declaration, a RangeStmt + // using := never redeclares an existing variable; it + // always creates a new one. + if s.Tok == token.DEFINE { + if tk != nil { + fn.addLocalForIdent(s.Key.(*ast.Ident)) + } + if tv != nil { + fn.addLocalForIdent(s.Value.(*ast.Ident)) + } + } + + x := b.expr(fn, s.X) + + var k, v Value + var loop, done *BasicBlock + switch rt := x.Type().Underlying().(type) { + case *types.Slice, *types.Array, *types.Pointer: // *array + k, v, loop, done = b.rangeIndexed(fn, x, tv, s.For) + + case *types.Chan: + k, loop, done = b.rangeChan(fn, x, tk, s.For) + + case *types.Map, *types.Basic: // string + k, v, loop, done = b.rangeIter(fn, x, tk, tv, s.For) + + default: + panic("Cannot range over: " + rt.String()) + } + + // Evaluate both LHS expressions before we update either. + var kl, vl lvalue + if tk != nil { + kl = b.addr(fn, s.Key, false) // non-escaping + } + if tv != nil { + vl = b.addr(fn, s.Value, false) // non-escaping + } + if tk != nil { + kl.store(fn, k) + } + if tv != nil { + vl.store(fn, v) + } + + if label != nil { + label._break = done + label._continue = loop + } + + fn.targets = &targets{ + tail: fn.targets, + _break: done, + _continue: loop, + } + b.stmt(fn, s.Body) + fn.targets = fn.targets.tail + emitJump(fn, loop) // back-edge + fn.currentBlock = done +} + +// stmt lowers statement s to SSA form, emitting code to fn. +func (b *builder) stmt(fn *Function, _s ast.Stmt) { + // The label of the current statement. If non-nil, its _goto + // target is always set; its _break and _continue are set only + // within the body of switch/typeswitch/select/for/range. + // It is effectively an additional default-nil parameter of stmt(). + var label *lblock +start: + switch s := _s.(type) { + case *ast.EmptyStmt: + // ignore. (Usually removed by gofmt.) + + case *ast.DeclStmt: // Con, Var or Typ + d := s.Decl.(*ast.GenDecl) + if d.Tok == token.VAR { + for _, spec := range d.Specs { + if vs, ok := spec.(*ast.ValueSpec); ok { + b.localValueSpec(fn, vs) + } + } + } + + case *ast.LabeledStmt: + label = fn.labelledBlock(s.Label) + emitJump(fn, label._goto) + fn.currentBlock = label._goto + _s = s.Stmt + goto start // effectively: tailcall stmt(fn, s.Stmt, label) + + case *ast.ExprStmt: + b.expr(fn, s.X) + + case *ast.SendStmt: + fn.emit(&Send{ + Chan: b.expr(fn, s.Chan), + X: emitConv(fn, b.expr(fn, s.Value), + fn.Pkg.typeOf(s.Chan).Underlying().(*types.Chan).Elem()), + pos: s.Arrow, + }) + + case *ast.IncDecStmt: + op := token.ADD + if s.Tok == token.DEC { + op = token.SUB + } + loc := b.addr(fn, s.X, false) + b.assignOp(fn, loc, NewConst(constant.MakeInt64(1), loc.typ()), op, s.Pos()) + + case *ast.AssignStmt: + switch s.Tok { + case token.ASSIGN, token.DEFINE: + b.assignStmt(fn, s.Lhs, s.Rhs, s.Tok == token.DEFINE) + + default: // +=, etc. + op := s.Tok + token.ADD - token.ADD_ASSIGN + b.assignOp(fn, b.addr(fn, s.Lhs[0], false), b.expr(fn, s.Rhs[0]), op, s.Pos()) + } + + case *ast.GoStmt: + // The "intrinsics" new/make/len/cap are forbidden here. + // panic is treated like an ordinary function call. + v := Go{pos: s.Go} + b.setCall(fn, s.Call, &v.Call) + fn.emit(&v) + + case *ast.DeferStmt: + // The "intrinsics" new/make/len/cap are forbidden here. + // panic is treated like an ordinary function call. + v := Defer{pos: s.Defer} + b.setCall(fn, s.Call, &v.Call) + fn.emit(&v) + + // A deferred call can cause recovery from panic, + // and control resumes at the Recover block. + createRecoverBlock(fn) + + case *ast.ReturnStmt: + var results []Value + if len(s.Results) == 1 && fn.Signature.Results().Len() > 1 { + // Return of one expression in a multi-valued function. + tuple := b.exprN(fn, s.Results[0]) + ttuple := tuple.Type().(*types.Tuple) + for i, n := 0, ttuple.Len(); i < n; i++ { + results = append(results, + emitConv(fn, emitExtract(fn, tuple, i), + fn.Signature.Results().At(i).Type())) + } + } else { + // 1:1 return, or no-arg return in non-void function. + for i, r := range s.Results { + v := emitConv(fn, b.expr(fn, r), fn.Signature.Results().At(i).Type()) + results = append(results, v) + } + } + if fn.namedResults != nil { + // Function has named result parameters (NRPs). + // Perform parallel assignment of return operands to NRPs. + for i, r := range results { + emitStore(fn, fn.namedResults[i], r, s.Return) + } + } + // Run function calls deferred in this + // function when explicitly returning from it. + fn.emit(new(RunDefers)) + if fn.namedResults != nil { + // Reload NRPs to form the result tuple. + results = results[:0] + for _, r := range fn.namedResults { + results = append(results, emitLoad(fn, r)) + } + } + fn.emit(&Return{Results: results, pos: s.Return}) + fn.currentBlock = fn.newBasicBlock("unreachable") + + case *ast.BranchStmt: + var block *BasicBlock + switch s.Tok { + case token.BREAK: + if s.Label != nil { + block = fn.labelledBlock(s.Label)._break + } else { + for t := fn.targets; t != nil && block == nil; t = t.tail { + block = t._break + } + } + + case token.CONTINUE: + if s.Label != nil { + block = fn.labelledBlock(s.Label)._continue + } else { + for t := fn.targets; t != nil && block == nil; t = t.tail { + block = t._continue + } + } + + case token.FALLTHROUGH: + for t := fn.targets; t != nil && block == nil; t = t.tail { + block = t._fallthrough + } + + case token.GOTO: + block = fn.labelledBlock(s.Label)._goto + } + emitJump(fn, block) + fn.currentBlock = fn.newBasicBlock("unreachable") + + case *ast.BlockStmt: + b.stmtList(fn, s.List) + + case *ast.IfStmt: + if s.Init != nil { + b.stmt(fn, s.Init) + } + then := fn.newBasicBlock("if.then") + done := fn.newBasicBlock("if.done") + els := done + if s.Else != nil { + els = fn.newBasicBlock("if.else") + } + b.cond(fn, s.Cond, then, els) + fn.currentBlock = then + b.stmt(fn, s.Body) + emitJump(fn, done) + + if s.Else != nil { + fn.currentBlock = els + b.stmt(fn, s.Else) + emitJump(fn, done) + } + + fn.currentBlock = done + + case *ast.SwitchStmt: + b.switchStmt(fn, s, label) + + case *ast.TypeSwitchStmt: + b.typeSwitchStmt(fn, s, label) + + case *ast.SelectStmt: + b.selectStmt(fn, s, label) + + case *ast.ForStmt: + b.forStmt(fn, s, label) + + case *ast.RangeStmt: + b.rangeStmt(fn, s, label) + + default: + panic(fmt.Sprintf("unexpected statement kind: %T", s)) + } +} + +// buildFunction builds SSA code for the body of function fn. Idempotent. +func (b *builder) buildFunction(fn *Function) { + if fn.Blocks != nil { + return // building already started + } + + var recvField *ast.FieldList + var body *ast.BlockStmt + var functype *ast.FuncType + switch n := fn.syntax.(type) { + case nil: + return // not a Go source function. (Synthetic, or from object file.) + case *ast.FuncDecl: + functype = n.Type + recvField = n.Recv + body = n.Body + case *ast.FuncLit: + functype = n.Type + body = n.Body + default: + panic(n) + } + + if body == nil { + // External function. + if fn.Params == nil { + // This condition ensures we add a non-empty + // params list once only, but we may attempt + // the degenerate empty case repeatedly. + // TODO(adonovan): opt: don't do that. + + // We set Function.Params even though there is no body + // code to reference them. This simplifies clients. + if recv := fn.Signature.Recv(); recv != nil { + fn.addParamObj(recv) + } + params := fn.Signature.Params() + for i, n := 0, params.Len(); i < n; i++ { + fn.addParamObj(params.At(i)) + } + } + return + } + if fn.Prog.mode&LogSource != 0 { + defer logStack("build function %s @ %s", fn, fn.Prog.Fset.Position(fn.pos))() + } + fn.startBody() + fn.createSyntacticParams(recvField, functype) + b.stmt(fn, body) + if cb := fn.currentBlock; cb != nil && (cb == fn.Blocks[0] || cb == fn.Recover || cb.Preds != nil) { + // Control fell off the end of the function's body block. + // + // Block optimizations eliminate the current block, if + // unreachable. It is a builder invariant that + // if this no-arg return is ill-typed for + // fn.Signature.Results, this block must be + // unreachable. The sanity checker checks this. + fn.emit(new(RunDefers)) + fn.emit(new(Return)) + } + fn.finishBody() +} + +// buildFuncDecl builds SSA code for the function or method declared +// by decl in package pkg. +// +func (b *builder) buildFuncDecl(pkg *Package, decl *ast.FuncDecl) { + id := decl.Name + if isBlankIdent(id) { + return // discard + } + fn := pkg.values[pkg.info.Defs[id]].(*Function) + if decl.Recv == nil && id.Name == "init" { + var v Call + v.Call.Value = fn + v.setType(types.NewTuple()) + pkg.init.emit(&v) + } + b.buildFunction(fn) +} + +// Build calls Package.Build for each package in prog. +// Building occurs in parallel unless the BuildSerially mode flag was set. +// +// Build is intended for whole-program analysis; a typical compiler +// need only build a single package. +// +// Build is idempotent and thread-safe. +// +func (prog *Program) Build() { + var wg sync.WaitGroup + for _, p := range prog.packages { + if prog.mode&BuildSerially != 0 { + p.Build() + } else { + wg.Add(1) + go func(p *Package) { + p.Build() + wg.Done() + }(p) + } + } + wg.Wait() +} + +// Build builds SSA code for all functions and vars in package p. +// +// Precondition: CreatePackage must have been called for all of p's +// direct imports (and hence its direct imports must have been +// error-free). +// +// Build is idempotent and thread-safe. +// +func (p *Package) Build() { p.buildOnce.Do(p.build) } + +func (p *Package) build() { + if p.info == nil { + return // synthetic package, e.g. "testmain" + } + + // Ensure we have runtime type info for all exported members. + // TODO(adonovan): ideally belongs in memberFromObject, but + // that would require package creation in topological order. + for name, mem := range p.Members { + if ast.IsExported(name) { + p.Prog.needMethodsOf(mem.Type()) + } + } + if p.Prog.mode&LogSource != 0 { + defer logStack("build %s", p)() + } + init := p.init + init.startBody() + + var done *BasicBlock + + if p.Prog.mode&BareInits == 0 { + // Make init() skip if package is already initialized. + initguard := p.Var("init$guard") + doinit := init.newBasicBlock("init.start") + done = init.newBasicBlock("init.done") + emitIf(init, emitLoad(init, initguard), done, doinit) + init.currentBlock = doinit + emitStore(init, initguard, vTrue, token.NoPos) + + // Call the init() function of each package we import. + for _, pkg := range p.Pkg.Imports() { + prereq := p.Prog.packages[pkg] + if prereq == nil { + panic(fmt.Sprintf("Package(%q).Build(): unsatisfied import: Program.CreatePackage(%q) was not called", p.Pkg.Path(), pkg.Path())) + } + var v Call + v.Call.Value = prereq.init + v.Call.pos = init.pos + v.setType(types.NewTuple()) + init.emit(&v) + } + } + + var b builder + + // Initialize package-level vars in correct order. + for _, varinit := range p.info.InitOrder { + if init.Prog.mode&LogSource != 0 { + fmt.Fprintf(os.Stderr, "build global initializer %v @ %s\n", + varinit.Lhs, p.Prog.Fset.Position(varinit.Rhs.Pos())) + } + if len(varinit.Lhs) == 1 { + // 1:1 initialization: var x, y = a(), b() + var lval lvalue + if v := varinit.Lhs[0]; v.Name() != "_" { + lval = &address{addr: p.values[v].(*Global), pos: v.Pos()} + } else { + lval = blank{} + } + b.assign(init, lval, varinit.Rhs, true, nil) + } else { + // n:1 initialization: var x, y := f() + tuple := b.exprN(init, varinit.Rhs) + for i, v := range varinit.Lhs { + if v.Name() == "_" { + continue + } + emitStore(init, p.values[v].(*Global), emitExtract(init, tuple, i), v.Pos()) + } + } + } + + // Build all package-level functions, init functions + // and methods, including unreachable/blank ones. + // We build them in source order, but it's not significant. + for _, file := range p.files { + for _, decl := range file.Decls { + if decl, ok := decl.(*ast.FuncDecl); ok { + b.buildFuncDecl(p, decl) + } + } + } + + // Finish up init(). + if p.Prog.mode&BareInits == 0 { + emitJump(init, done) + init.currentBlock = done + } + init.emit(new(Return)) + init.finishBody() + + p.info = nil // We no longer need ASTs or go/types deductions. + + if p.Prog.mode&SanityCheckFunctions != 0 { + sanityCheckPackage(p) + } +} + +// Like ObjectOf, but panics instead of returning nil. +// Only valid during p's create and build phases. +func (p *Package) objectOf(id *ast.Ident) types.Object { + if o := p.info.ObjectOf(id); o != nil { + return o + } + panic(fmt.Sprintf("no types.Object for ast.Ident %s @ %s", + id.Name, p.Prog.Fset.Position(id.Pos()))) +} + +// Like TypeOf, but panics instead of returning nil. +// Only valid during p's create and build phases. +func (p *Package) typeOf(e ast.Expr) types.Type { + if T := p.info.TypeOf(e); T != nil { + return T + } + panic(fmt.Sprintf("no type for %T @ %s", + e, p.Prog.Fset.Position(e.Pos()))) +} diff --git a/vendor/honnef.co/go/tools/ssa/const.go b/vendor/honnef.co/go/tools/ssa/const.go new file mode 100644 index 00000000000..f95d9e11400 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/const.go @@ -0,0 +1,169 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines the Const SSA value type. + +import ( + "fmt" + "go/constant" + "go/token" + "go/types" + "strconv" +) + +// NewConst returns a new constant of the specified value and type. +// val must be valid according to the specification of Const.Value. +// +func NewConst(val constant.Value, typ types.Type) *Const { + return &Const{typ, val} +} + +// intConst returns an 'int' constant that evaluates to i. +// (i is an int64 in case the host is narrower than the target.) +func intConst(i int64) *Const { + return NewConst(constant.MakeInt64(i), tInt) +} + +// nilConst returns a nil constant of the specified type, which may +// be any reference type, including interfaces. +// +func nilConst(typ types.Type) *Const { + return NewConst(nil, typ) +} + +// stringConst returns a 'string' constant that evaluates to s. +func stringConst(s string) *Const { + return NewConst(constant.MakeString(s), tString) +} + +// zeroConst returns a new "zero" constant of the specified type, +// which must not be an array or struct type: the zero values of +// aggregates are well-defined but cannot be represented by Const. +// +func zeroConst(t types.Type) *Const { + switch t := t.(type) { + case *types.Basic: + switch { + case t.Info()&types.IsBoolean != 0: + return NewConst(constant.MakeBool(false), t) + case t.Info()&types.IsNumeric != 0: + return NewConst(constant.MakeInt64(0), t) + case t.Info()&types.IsString != 0: + return NewConst(constant.MakeString(""), t) + case t.Kind() == types.UnsafePointer: + fallthrough + case t.Kind() == types.UntypedNil: + return nilConst(t) + default: + panic(fmt.Sprint("zeroConst for unexpected type:", t)) + } + case *types.Pointer, *types.Slice, *types.Interface, *types.Chan, *types.Map, *types.Signature: + return nilConst(t) + case *types.Named: + return NewConst(zeroConst(t.Underlying()).Value, t) + case *types.Array, *types.Struct, *types.Tuple: + panic(fmt.Sprint("zeroConst applied to aggregate:", t)) + } + panic(fmt.Sprint("zeroConst: unexpected ", t)) +} + +func (c *Const) RelString(from *types.Package) string { + var s string + if c.Value == nil { + s = "nil" + } else if c.Value.Kind() == constant.String { + s = constant.StringVal(c.Value) + const max = 20 + // TODO(adonovan): don't cut a rune in half. + if len(s) > max { + s = s[:max-3] + "..." // abbreviate + } + s = strconv.Quote(s) + } else { + s = c.Value.String() + } + return s + ":" + relType(c.Type(), from) +} + +func (c *Const) Name() string { + return c.RelString(nil) +} + +func (c *Const) String() string { + return c.Name() +} + +func (c *Const) Type() types.Type { + return c.typ +} + +func (c *Const) Referrers() *[]Instruction { + return nil +} + +func (c *Const) Parent() *Function { return nil } + +func (c *Const) Pos() token.Pos { + return token.NoPos +} + +// IsNil returns true if this constant represents a typed or untyped nil value. +func (c *Const) IsNil() bool { + return c.Value == nil +} + +// TODO(adonovan): move everything below into honnef.co/go/tools/ssa/interp. + +// Int64 returns the numeric value of this constant truncated to fit +// a signed 64-bit integer. +// +func (c *Const) Int64() int64 { + switch x := constant.ToInt(c.Value); x.Kind() { + case constant.Int: + if i, ok := constant.Int64Val(x); ok { + return i + } + return 0 + case constant.Float: + f, _ := constant.Float64Val(x) + return int64(f) + } + panic(fmt.Sprintf("unexpected constant value: %T", c.Value)) +} + +// Uint64 returns the numeric value of this constant truncated to fit +// an unsigned 64-bit integer. +// +func (c *Const) Uint64() uint64 { + switch x := constant.ToInt(c.Value); x.Kind() { + case constant.Int: + if u, ok := constant.Uint64Val(x); ok { + return u + } + return 0 + case constant.Float: + f, _ := constant.Float64Val(x) + return uint64(f) + } + panic(fmt.Sprintf("unexpected constant value: %T", c.Value)) +} + +// Float64 returns the numeric value of this constant truncated to fit +// a float64. +// +func (c *Const) Float64() float64 { + f, _ := constant.Float64Val(c.Value) + return f +} + +// Complex128 returns the complex value of this constant truncated to +// fit a complex128. +// +func (c *Const) Complex128() complex128 { + re, _ := constant.Float64Val(constant.Real(c.Value)) + im, _ := constant.Float64Val(constant.Imag(c.Value)) + return complex(re, im) +} diff --git a/vendor/honnef.co/go/tools/ssa/create.go b/vendor/honnef.co/go/tools/ssa/create.go new file mode 100644 index 00000000000..85163a0c5a7 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/create.go @@ -0,0 +1,270 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file implements the CREATE phase of SSA construction. +// See builder.go for explanation. + +import ( + "fmt" + "go/ast" + "go/token" + "go/types" + "os" + "sync" + + "golang.org/x/tools/go/types/typeutil" +) + +// NewProgram returns a new SSA Program. +// +// mode controls diagnostics and checking during SSA construction. +// +func NewProgram(fset *token.FileSet, mode BuilderMode) *Program { + prog := &Program{ + Fset: fset, + imported: make(map[string]*Package), + packages: make(map[*types.Package]*Package), + thunks: make(map[selectionKey]*Function), + bounds: make(map[*types.Func]*Function), + mode: mode, + } + + h := typeutil.MakeHasher() // protected by methodsMu, in effect + prog.methodSets.SetHasher(h) + prog.canon.SetHasher(h) + + return prog +} + +// memberFromObject populates package pkg with a member for the +// typechecker object obj. +// +// For objects from Go source code, syntax is the associated syntax +// tree (for funcs and vars only); it will be used during the build +// phase. +// +func memberFromObject(pkg *Package, obj types.Object, syntax ast.Node) { + name := obj.Name() + switch obj := obj.(type) { + case *types.Builtin: + if pkg.Pkg != types.Unsafe { + panic("unexpected builtin object: " + obj.String()) + } + + case *types.TypeName: + pkg.Members[name] = &Type{ + object: obj, + pkg: pkg, + } + + case *types.Const: + c := &NamedConst{ + object: obj, + Value: NewConst(obj.Val(), obj.Type()), + pkg: pkg, + } + pkg.values[obj] = c.Value + pkg.Members[name] = c + + case *types.Var: + g := &Global{ + Pkg: pkg, + name: name, + object: obj, + typ: types.NewPointer(obj.Type()), // address + pos: obj.Pos(), + } + pkg.values[obj] = g + pkg.Members[name] = g + + case *types.Func: + sig := obj.Type().(*types.Signature) + if sig.Recv() == nil && name == "init" { + pkg.ninit++ + name = fmt.Sprintf("init#%d", pkg.ninit) + } + fn := &Function{ + name: name, + object: obj, + Signature: sig, + syntax: syntax, + pos: obj.Pos(), + Pkg: pkg, + Prog: pkg.Prog, + } + if syntax == nil { + fn.Synthetic = "loaded from gc object file" + } + + pkg.values[obj] = fn + if sig.Recv() == nil { + pkg.Members[name] = fn // package-level function + } + + default: // (incl. *types.Package) + panic("unexpected Object type: " + obj.String()) + } +} + +// membersFromDecl populates package pkg with members for each +// typechecker object (var, func, const or type) associated with the +// specified decl. +// +func membersFromDecl(pkg *Package, decl ast.Decl) { + switch decl := decl.(type) { + case *ast.GenDecl: // import, const, type or var + switch decl.Tok { + case token.CONST: + for _, spec := range decl.Specs { + for _, id := range spec.(*ast.ValueSpec).Names { + if !isBlankIdent(id) { + memberFromObject(pkg, pkg.info.Defs[id], nil) + } + } + } + + case token.VAR: + for _, spec := range decl.Specs { + for _, id := range spec.(*ast.ValueSpec).Names { + if !isBlankIdent(id) { + memberFromObject(pkg, pkg.info.Defs[id], spec) + } + } + } + + case token.TYPE: + for _, spec := range decl.Specs { + id := spec.(*ast.TypeSpec).Name + if !isBlankIdent(id) { + memberFromObject(pkg, pkg.info.Defs[id], nil) + } + } + } + + case *ast.FuncDecl: + id := decl.Name + if !isBlankIdent(id) { + memberFromObject(pkg, pkg.info.Defs[id], decl) + } + } +} + +// CreatePackage constructs and returns an SSA Package from the +// specified type-checked, error-free file ASTs, and populates its +// Members mapping. +// +// importable determines whether this package should be returned by a +// subsequent call to ImportedPackage(pkg.Path()). +// +// The real work of building SSA form for each function is not done +// until a subsequent call to Package.Build(). +// +func (prog *Program) CreatePackage(pkg *types.Package, files []*ast.File, info *types.Info, importable bool) *Package { + p := &Package{ + Prog: prog, + Members: make(map[string]Member), + values: make(map[types.Object]Value), + Pkg: pkg, + info: info, // transient (CREATE and BUILD phases) + files: files, // transient (CREATE and BUILD phases) + } + + // Add init() function. + p.init = &Function{ + name: "init", + Signature: new(types.Signature), + Synthetic: "package initializer", + Pkg: p, + Prog: prog, + } + p.Members[p.init.name] = p.init + + // CREATE phase. + // Allocate all package members: vars, funcs, consts and types. + if len(files) > 0 { + // Go source package. + for _, file := range files { + for _, decl := range file.Decls { + membersFromDecl(p, decl) + } + } + } else { + // GC-compiled binary package (or "unsafe") + // No code. + // No position information. + scope := p.Pkg.Scope() + for _, name := range scope.Names() { + obj := scope.Lookup(name) + memberFromObject(p, obj, nil) + if obj, ok := obj.(*types.TypeName); ok { + if named, ok := obj.Type().(*types.Named); ok { + for i, n := 0, named.NumMethods(); i < n; i++ { + memberFromObject(p, named.Method(i), nil) + } + } + } + } + } + + if prog.mode&BareInits == 0 { + // Add initializer guard variable. + initguard := &Global{ + Pkg: p, + name: "init$guard", + typ: types.NewPointer(tBool), + } + p.Members[initguard.Name()] = initguard + } + + if prog.mode&GlobalDebug != 0 { + p.SetDebugMode(true) + } + + if prog.mode&PrintPackages != 0 { + printMu.Lock() + p.WriteTo(os.Stdout) + printMu.Unlock() + } + + if importable { + prog.imported[p.Pkg.Path()] = p + } + prog.packages[p.Pkg] = p + + return p +} + +// printMu serializes printing of Packages/Functions to stdout. +var printMu sync.Mutex + +// AllPackages returns a new slice containing all packages in the +// program prog in unspecified order. +// +func (prog *Program) AllPackages() []*Package { + pkgs := make([]*Package, 0, len(prog.packages)) + for _, pkg := range prog.packages { + pkgs = append(pkgs, pkg) + } + return pkgs +} + +// ImportedPackage returns the importable Package whose PkgPath +// is path, or nil if no such Package has been created. +// +// A parameter to CreatePackage determines whether a package should be +// considered importable. For example, no import declaration can resolve +// to the ad-hoc main package created by 'go build foo.go'. +// +// TODO(adonovan): rethink this function and the "importable" concept; +// most packages are importable. This function assumes that all +// types.Package.Path values are unique within the ssa.Program, which is +// false---yet this function remains very convenient. +// Clients should use (*Program).Package instead where possible. +// SSA doesn't really need a string-keyed map of packages. +// +func (prog *Program) ImportedPackage(path string) *Package { + return prog.imported[path] +} diff --git a/vendor/honnef.co/go/tools/ssa/doc.go b/vendor/honnef.co/go/tools/ssa/doc.go new file mode 100644 index 00000000000..0f71fda0013 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/doc.go @@ -0,0 +1,125 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package ssa defines a representation of the elements of Go programs +// (packages, types, functions, variables and constants) using a +// static single-assignment (SSA) form intermediate representation +// (IR) for the bodies of functions. +// +// THIS INTERFACE IS EXPERIMENTAL AND IS LIKELY TO CHANGE. +// +// For an introduction to SSA form, see +// http://en.wikipedia.org/wiki/Static_single_assignment_form. +// This page provides a broader reading list: +// http://www.dcs.gla.ac.uk/~jsinger/ssa.html. +// +// The level of abstraction of the SSA form is intentionally close to +// the source language to facilitate construction of source analysis +// tools. It is not intended for machine code generation. +// +// All looping, branching and switching constructs are replaced with +// unstructured control flow. Higher-level control flow constructs +// such as multi-way branch can be reconstructed as needed; see +// ssautil.Switches() for an example. +// +// The simplest way to create the SSA representation of a package is +// to load typed syntax trees using golang.org/x/tools/go/packages, then +// invoke the ssautil.Packages helper function. See ExampleLoadPackages +// and ExampleWholeProgram for examples. +// The resulting ssa.Program contains all the packages and their +// members, but SSA code is not created for function bodies until a +// subsequent call to (*Package).Build or (*Program).Build. +// +// The builder initially builds a naive SSA form in which all local +// variables are addresses of stack locations with explicit loads and +// stores. Registerisation of eligible locals and φ-node insertion +// using dominance and dataflow are then performed as a second pass +// called "lifting" to improve the accuracy and performance of +// subsequent analyses; this pass can be skipped by setting the +// NaiveForm builder flag. +// +// The primary interfaces of this package are: +// +// - Member: a named member of a Go package. +// - Value: an expression that yields a value. +// - Instruction: a statement that consumes values and performs computation. +// - Node: a Value or Instruction (emphasizing its membership in the SSA value graph) +// +// A computation that yields a result implements both the Value and +// Instruction interfaces. The following table shows for each +// concrete type which of these interfaces it implements. +// +// Value? Instruction? Member? +// *Alloc ✔ ✔ +// *BinOp ✔ ✔ +// *Builtin ✔ +// *Call ✔ ✔ +// *ChangeInterface ✔ ✔ +// *ChangeType ✔ ✔ +// *Const ✔ +// *Convert ✔ ✔ +// *DebugRef ✔ +// *Defer ✔ +// *Extract ✔ ✔ +// *Field ✔ ✔ +// *FieldAddr ✔ ✔ +// *FreeVar ✔ +// *Function ✔ ✔ (func) +// *Global ✔ ✔ (var) +// *Go ✔ +// *If ✔ +// *Index ✔ ✔ +// *IndexAddr ✔ ✔ +// *Jump ✔ +// *Lookup ✔ ✔ +// *MakeChan ✔ ✔ +// *MakeClosure ✔ ✔ +// *MakeInterface ✔ ✔ +// *MakeMap ✔ ✔ +// *MakeSlice ✔ ✔ +// *MapUpdate ✔ +// *NamedConst ✔ (const) +// *Next ✔ ✔ +// *Panic ✔ +// *Parameter ✔ +// *Phi ✔ ✔ +// *Range ✔ ✔ +// *Return ✔ +// *RunDefers ✔ +// *Select ✔ ✔ +// *Send ✔ +// *Slice ✔ ✔ +// *Store ✔ +// *Type ✔ (type) +// *TypeAssert ✔ ✔ +// *UnOp ✔ ✔ +// +// Other key types in this package include: Program, Package, Function +// and BasicBlock. +// +// The program representation constructed by this package is fully +// resolved internally, i.e. it does not rely on the names of Values, +// Packages, Functions, Types or BasicBlocks for the correct +// interpretation of the program. Only the identities of objects and +// the topology of the SSA and type graphs are semantically +// significant. (There is one exception: Ids, used to identify field +// and method names, contain strings.) Avoidance of name-based +// operations simplifies the implementation of subsequent passes and +// can make them very efficient. Many objects are nonetheless named +// to aid in debugging, but it is not essential that the names be +// either accurate or unambiguous. The public API exposes a number of +// name-based maps for client convenience. +// +// The ssa/ssautil package provides various utilities that depend only +// on the public API of this package. +// +// TODO(adonovan): Consider the exceptional control-flow implications +// of defer and recover(). +// +// TODO(adonovan): write a how-to document for all the various cases +// of trying to determine corresponding elements across the four +// domains of source locations, ast.Nodes, types.Objects, +// ssa.Values/Instructions. +// +package ssa // import "honnef.co/go/tools/ssa" diff --git a/vendor/honnef.co/go/tools/ssa/dom.go b/vendor/honnef.co/go/tools/ssa/dom.go new file mode 100644 index 00000000000..a036be87c4c --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/dom.go @@ -0,0 +1,343 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines algorithms related to dominance. + +// Dominator tree construction ---------------------------------------- +// +// We use the algorithm described in Lengauer & Tarjan. 1979. A fast +// algorithm for finding dominators in a flowgraph. +// http://doi.acm.org/10.1145/357062.357071 +// +// We also apply the optimizations to SLT described in Georgiadis et +// al, Finding Dominators in Practice, JGAA 2006, +// http://jgaa.info/accepted/2006/GeorgiadisTarjanWerneck2006.10.1.pdf +// to avoid the need for buckets of size > 1. + +import ( + "bytes" + "fmt" + "math/big" + "os" + "sort" +) + +// Idom returns the block that immediately dominates b: +// its parent in the dominator tree, if any. +// Neither the entry node (b.Index==0) nor recover node +// (b==b.Parent().Recover()) have a parent. +// +func (b *BasicBlock) Idom() *BasicBlock { return b.dom.idom } + +// Dominees returns the list of blocks that b immediately dominates: +// its children in the dominator tree. +// +func (b *BasicBlock) Dominees() []*BasicBlock { return b.dom.children } + +// Dominates reports whether b dominates c. +func (b *BasicBlock) Dominates(c *BasicBlock) bool { + return b.dom.pre <= c.dom.pre && c.dom.post <= b.dom.post +} + +type byDomPreorder []*BasicBlock + +func (a byDomPreorder) Len() int { return len(a) } +func (a byDomPreorder) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a byDomPreorder) Less(i, j int) bool { return a[i].dom.pre < a[j].dom.pre } + +// DomPreorder returns a new slice containing the blocks of f in +// dominator tree preorder. +// +func (f *Function) DomPreorder() []*BasicBlock { + n := len(f.Blocks) + order := make(byDomPreorder, n) + copy(order, f.Blocks) + sort.Sort(order) + return order +} + +// domInfo contains a BasicBlock's dominance information. +type domInfo struct { + idom *BasicBlock // immediate dominator (parent in domtree) + children []*BasicBlock // nodes immediately dominated by this one + pre, post int32 // pre- and post-order numbering within domtree +} + +// ltState holds the working state for Lengauer-Tarjan algorithm +// (during which domInfo.pre is repurposed for CFG DFS preorder number). +type ltState struct { + // Each slice is indexed by b.Index. + sdom []*BasicBlock // b's semidominator + parent []*BasicBlock // b's parent in DFS traversal of CFG + ancestor []*BasicBlock // b's ancestor with least sdom +} + +// dfs implements the depth-first search part of the LT algorithm. +func (lt *ltState) dfs(v *BasicBlock, i int32, preorder []*BasicBlock) int32 { + preorder[i] = v + v.dom.pre = i // For now: DFS preorder of spanning tree of CFG + i++ + lt.sdom[v.Index] = v + lt.link(nil, v) + for _, w := range v.Succs { + if lt.sdom[w.Index] == nil { + lt.parent[w.Index] = v + i = lt.dfs(w, i, preorder) + } + } + return i +} + +// eval implements the EVAL part of the LT algorithm. +func (lt *ltState) eval(v *BasicBlock) *BasicBlock { + // TODO(adonovan): opt: do path compression per simple LT. + u := v + for ; lt.ancestor[v.Index] != nil; v = lt.ancestor[v.Index] { + if lt.sdom[v.Index].dom.pre < lt.sdom[u.Index].dom.pre { + u = v + } + } + return u +} + +// link implements the LINK part of the LT algorithm. +func (lt *ltState) link(v, w *BasicBlock) { + lt.ancestor[w.Index] = v +} + +// buildDomTree computes the dominator tree of f using the LT algorithm. +// Precondition: all blocks are reachable (e.g. optimizeBlocks has been run). +// +func buildDomTree(f *Function) { + // The step numbers refer to the original LT paper; the + // reordering is due to Georgiadis. + + // Clear any previous domInfo. + for _, b := range f.Blocks { + b.dom = domInfo{} + } + + n := len(f.Blocks) + // Allocate space for 5 contiguous [n]*BasicBlock arrays: + // sdom, parent, ancestor, preorder, buckets. + space := make([]*BasicBlock, 5*n) + lt := ltState{ + sdom: space[0:n], + parent: space[n : 2*n], + ancestor: space[2*n : 3*n], + } + + // Step 1. Number vertices by depth-first preorder. + preorder := space[3*n : 4*n] + root := f.Blocks[0] + prenum := lt.dfs(root, 0, preorder) + recover := f.Recover + if recover != nil { + lt.dfs(recover, prenum, preorder) + } + + buckets := space[4*n : 5*n] + copy(buckets, preorder) + + // In reverse preorder... + for i := int32(n) - 1; i > 0; i-- { + w := preorder[i] + + // Step 3. Implicitly define the immediate dominator of each node. + for v := buckets[i]; v != w; v = buckets[v.dom.pre] { + u := lt.eval(v) + if lt.sdom[u.Index].dom.pre < i { + v.dom.idom = u + } else { + v.dom.idom = w + } + } + + // Step 2. Compute the semidominators of all nodes. + lt.sdom[w.Index] = lt.parent[w.Index] + for _, v := range w.Preds { + u := lt.eval(v) + if lt.sdom[u.Index].dom.pre < lt.sdom[w.Index].dom.pre { + lt.sdom[w.Index] = lt.sdom[u.Index] + } + } + + lt.link(lt.parent[w.Index], w) + + if lt.parent[w.Index] == lt.sdom[w.Index] { + w.dom.idom = lt.parent[w.Index] + } else { + buckets[i] = buckets[lt.sdom[w.Index].dom.pre] + buckets[lt.sdom[w.Index].dom.pre] = w + } + } + + // The final 'Step 3' is now outside the loop. + for v := buckets[0]; v != root; v = buckets[v.dom.pre] { + v.dom.idom = root + } + + // Step 4. Explicitly define the immediate dominator of each + // node, in preorder. + for _, w := range preorder[1:] { + if w == root || w == recover { + w.dom.idom = nil + } else { + if w.dom.idom != lt.sdom[w.Index] { + w.dom.idom = w.dom.idom.dom.idom + } + // Calculate Children relation as inverse of Idom. + w.dom.idom.dom.children = append(w.dom.idom.dom.children, w) + } + } + + pre, post := numberDomTree(root, 0, 0) + if recover != nil { + numberDomTree(recover, pre, post) + } + + // printDomTreeDot(os.Stderr, f) // debugging + // printDomTreeText(os.Stderr, root, 0) // debugging + + if f.Prog.mode&SanityCheckFunctions != 0 { + sanityCheckDomTree(f) + } +} + +// numberDomTree sets the pre- and post-order numbers of a depth-first +// traversal of the dominator tree rooted at v. These are used to +// answer dominance queries in constant time. +// +func numberDomTree(v *BasicBlock, pre, post int32) (int32, int32) { + v.dom.pre = pre + pre++ + for _, child := range v.dom.children { + pre, post = numberDomTree(child, pre, post) + } + v.dom.post = post + post++ + return pre, post +} + +// Testing utilities ---------------------------------------- + +// sanityCheckDomTree checks the correctness of the dominator tree +// computed by the LT algorithm by comparing against the dominance +// relation computed by a naive Kildall-style forward dataflow +// analysis (Algorithm 10.16 from the "Dragon" book). +// +func sanityCheckDomTree(f *Function) { + n := len(f.Blocks) + + // D[i] is the set of blocks that dominate f.Blocks[i], + // represented as a bit-set of block indices. + D := make([]big.Int, n) + + one := big.NewInt(1) + + // all is the set of all blocks; constant. + var all big.Int + all.Set(one).Lsh(&all, uint(n)).Sub(&all, one) + + // Initialization. + for i, b := range f.Blocks { + if i == 0 || b == f.Recover { + // A root is dominated only by itself. + D[i].SetBit(&D[0], 0, 1) + } else { + // All other blocks are (initially) dominated + // by every block. + D[i].Set(&all) + } + } + + // Iteration until fixed point. + for changed := true; changed; { + changed = false + for i, b := range f.Blocks { + if i == 0 || b == f.Recover { + continue + } + // Compute intersection across predecessors. + var x big.Int + x.Set(&all) + for _, pred := range b.Preds { + x.And(&x, &D[pred.Index]) + } + x.SetBit(&x, i, 1) // a block always dominates itself. + if D[i].Cmp(&x) != 0 { + D[i].Set(&x) + changed = true + } + } + } + + // Check the entire relation. O(n^2). + // The Recover block (if any) must be treated specially so we skip it. + ok := true + for i := 0; i < n; i++ { + for j := 0; j < n; j++ { + b, c := f.Blocks[i], f.Blocks[j] + if c == f.Recover { + continue + } + actual := b.Dominates(c) + expected := D[j].Bit(i) == 1 + if actual != expected { + fmt.Fprintf(os.Stderr, "dominates(%s, %s)==%t, want %t\n", b, c, actual, expected) + ok = false + } + } + } + + preorder := f.DomPreorder() + for _, b := range f.Blocks { + if got := preorder[b.dom.pre]; got != b { + fmt.Fprintf(os.Stderr, "preorder[%d]==%s, want %s\n", b.dom.pre, got, b) + ok = false + } + } + + if !ok { + panic("sanityCheckDomTree failed for " + f.String()) + } + +} + +// Printing functions ---------------------------------------- + +// printDomTree prints the dominator tree as text, using indentation. +//lint:ignore U1000 used during debugging +func printDomTreeText(buf *bytes.Buffer, v *BasicBlock, indent int) { + fmt.Fprintf(buf, "%*s%s\n", 4*indent, "", v) + for _, child := range v.dom.children { + printDomTreeText(buf, child, indent+1) + } +} + +// printDomTreeDot prints the dominator tree of f in AT&T GraphViz +// (.dot) format. +//lint:ignore U1000 used during debugging +func printDomTreeDot(buf *bytes.Buffer, f *Function) { + fmt.Fprintln(buf, "//", f) + fmt.Fprintln(buf, "digraph domtree {") + for i, b := range f.Blocks { + v := b.dom + fmt.Fprintf(buf, "\tn%d [label=\"%s (%d, %d)\",shape=\"rectangle\"];\n", v.pre, b, v.pre, v.post) + // TODO(adonovan): improve appearance of edges + // belonging to both dominator tree and CFG. + + // Dominator tree edge. + if i != 0 { + fmt.Fprintf(buf, "\tn%d -> n%d [style=\"solid\",weight=100];\n", v.idom.dom.pre, v.pre) + } + // CFG edges. + for _, pred := range b.Preds { + fmt.Fprintf(buf, "\tn%d -> n%d [style=\"dotted\",weight=0];\n", pred.dom.pre, v.pre) + } + } + fmt.Fprintln(buf, "}") +} diff --git a/vendor/honnef.co/go/tools/ssa/emit.go b/vendor/honnef.co/go/tools/ssa/emit.go new file mode 100644 index 00000000000..6bf9ec32dae --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/emit.go @@ -0,0 +1,469 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// Helpers for emitting SSA instructions. + +import ( + "fmt" + "go/ast" + "go/token" + "go/types" +) + +// emitNew emits to f a new (heap Alloc) instruction allocating an +// object of type typ. pos is the optional source location. +// +func emitNew(f *Function, typ types.Type, pos token.Pos) *Alloc { + v := &Alloc{Heap: true} + v.setType(types.NewPointer(typ)) + v.setPos(pos) + f.emit(v) + return v +} + +// emitLoad emits to f an instruction to load the address addr into a +// new temporary, and returns the value so defined. +// +func emitLoad(f *Function, addr Value) *UnOp { + v := &UnOp{Op: token.MUL, X: addr} + v.setType(deref(addr.Type())) + f.emit(v) + return v +} + +// emitDebugRef emits to f a DebugRef pseudo-instruction associating +// expression e with value v. +// +func emitDebugRef(f *Function, e ast.Expr, v Value, isAddr bool) { + if !f.debugInfo() { + return // debugging not enabled + } + if v == nil || e == nil { + panic("nil") + } + var obj types.Object + e = unparen(e) + if id, ok := e.(*ast.Ident); ok { + if isBlankIdent(id) { + return + } + obj = f.Pkg.objectOf(id) + switch obj.(type) { + case *types.Nil, *types.Const, *types.Builtin: + return + } + } + f.emit(&DebugRef{ + X: v, + Expr: e, + IsAddr: isAddr, + object: obj, + }) +} + +// emitArith emits to f code to compute the binary operation op(x, y) +// where op is an eager shift, logical or arithmetic operation. +// (Use emitCompare() for comparisons and Builder.logicalBinop() for +// non-eager operations.) +// +func emitArith(f *Function, op token.Token, x, y Value, t types.Type, pos token.Pos) Value { + switch op { + case token.SHL, token.SHR: + x = emitConv(f, x, t) + // y may be signed or an 'untyped' constant. + // TODO(adonovan): whence signed values? + if b, ok := y.Type().Underlying().(*types.Basic); ok && b.Info()&types.IsUnsigned == 0 { + y = emitConv(f, y, types.Typ[types.Uint64]) + } + + case token.ADD, token.SUB, token.MUL, token.QUO, token.REM, token.AND, token.OR, token.XOR, token.AND_NOT: + x = emitConv(f, x, t) + y = emitConv(f, y, t) + + default: + panic("illegal op in emitArith: " + op.String()) + + } + v := &BinOp{ + Op: op, + X: x, + Y: y, + } + v.setPos(pos) + v.setType(t) + return f.emit(v) +} + +// emitCompare emits to f code compute the boolean result of +// comparison comparison 'x op y'. +// +func emitCompare(f *Function, op token.Token, x, y Value, pos token.Pos) Value { + xt := x.Type().Underlying() + yt := y.Type().Underlying() + + // Special case to optimise a tagless SwitchStmt so that + // these are equivalent + // switch { case e: ...} + // switch true { case e: ... } + // if e==true { ... } + // even in the case when e's type is an interface. + // TODO(adonovan): opt: generalise to x==true, false!=y, etc. + if x == vTrue && op == token.EQL { + if yt, ok := yt.(*types.Basic); ok && yt.Info()&types.IsBoolean != 0 { + return y + } + } + + if types.Identical(xt, yt) { + // no conversion necessary + } else if _, ok := xt.(*types.Interface); ok { + y = emitConv(f, y, x.Type()) + } else if _, ok := yt.(*types.Interface); ok { + x = emitConv(f, x, y.Type()) + } else if _, ok := x.(*Const); ok { + x = emitConv(f, x, y.Type()) + } else if _, ok := y.(*Const); ok { + y = emitConv(f, y, x.Type()) + //lint:ignore SA9003 no-op + } else { + // other cases, e.g. channels. No-op. + } + + v := &BinOp{ + Op: op, + X: x, + Y: y, + } + v.setPos(pos) + v.setType(tBool) + return f.emit(v) +} + +// isValuePreserving returns true if a conversion from ut_src to +// ut_dst is value-preserving, i.e. just a change of type. +// Precondition: neither argument is a named type. +// +func isValuePreserving(ut_src, ut_dst types.Type) bool { + // Identical underlying types? + if structTypesIdentical(ut_dst, ut_src) { + return true + } + + switch ut_dst.(type) { + case *types.Chan: + // Conversion between channel types? + _, ok := ut_src.(*types.Chan) + return ok + + case *types.Pointer: + // Conversion between pointers with identical base types? + _, ok := ut_src.(*types.Pointer) + return ok + } + return false +} + +// emitConv emits to f code to convert Value val to exactly type typ, +// and returns the converted value. Implicit conversions are required +// by language assignability rules in assignments, parameter passing, +// etc. Conversions cannot fail dynamically. +// +func emitConv(f *Function, val Value, typ types.Type) Value { + t_src := val.Type() + + // Identical types? Conversion is a no-op. + if types.Identical(t_src, typ) { + return val + } + + ut_dst := typ.Underlying() + ut_src := t_src.Underlying() + + // Just a change of type, but not value or representation? + if isValuePreserving(ut_src, ut_dst) { + c := &ChangeType{X: val} + c.setType(typ) + return f.emit(c) + } + + // Conversion to, or construction of a value of, an interface type? + if _, ok := ut_dst.(*types.Interface); ok { + // Assignment from one interface type to another? + if _, ok := ut_src.(*types.Interface); ok { + c := &ChangeInterface{X: val} + c.setType(typ) + return f.emit(c) + } + + // Untyped nil constant? Return interface-typed nil constant. + if ut_src == tUntypedNil { + return nilConst(typ) + } + + // Convert (non-nil) "untyped" literals to their default type. + if t, ok := ut_src.(*types.Basic); ok && t.Info()&types.IsUntyped != 0 { + val = emitConv(f, val, DefaultType(ut_src)) + } + + f.Pkg.Prog.needMethodsOf(val.Type()) + mi := &MakeInterface{X: val} + mi.setType(typ) + return f.emit(mi) + } + + // Conversion of a compile-time constant value? + if c, ok := val.(*Const); ok { + if _, ok := ut_dst.(*types.Basic); ok || c.IsNil() { + // Conversion of a compile-time constant to + // another constant type results in a new + // constant of the destination type and + // (initially) the same abstract value. + // We don't truncate the value yet. + return NewConst(c.Value, typ) + } + + // We're converting from constant to non-constant type, + // e.g. string -> []byte/[]rune. + } + + // A representation-changing conversion? + // At least one of {ut_src,ut_dst} must be *Basic. + // (The other may be []byte or []rune.) + _, ok1 := ut_src.(*types.Basic) + _, ok2 := ut_dst.(*types.Basic) + if ok1 || ok2 { + c := &Convert{X: val} + c.setType(typ) + return f.emit(c) + } + + panic(fmt.Sprintf("in %s: cannot convert %s (%s) to %s", f, val, val.Type(), typ)) +} + +// emitStore emits to f an instruction to store value val at location +// addr, applying implicit conversions as required by assignability rules. +// +func emitStore(f *Function, addr, val Value, pos token.Pos) *Store { + s := &Store{ + Addr: addr, + Val: emitConv(f, val, deref(addr.Type())), + pos: pos, + } + f.emit(s) + return s +} + +// emitJump emits to f a jump to target, and updates the control-flow graph. +// Postcondition: f.currentBlock is nil. +// +func emitJump(f *Function, target *BasicBlock) { + b := f.currentBlock + b.emit(new(Jump)) + addEdge(b, target) + f.currentBlock = nil +} + +// emitIf emits to f a conditional jump to tblock or fblock based on +// cond, and updates the control-flow graph. +// Postcondition: f.currentBlock is nil. +// +func emitIf(f *Function, cond Value, tblock, fblock *BasicBlock) { + b := f.currentBlock + b.emit(&If{Cond: cond}) + addEdge(b, tblock) + addEdge(b, fblock) + f.currentBlock = nil +} + +// emitExtract emits to f an instruction to extract the index'th +// component of tuple. It returns the extracted value. +// +func emitExtract(f *Function, tuple Value, index int) Value { + e := &Extract{Tuple: tuple, Index: index} + e.setType(tuple.Type().(*types.Tuple).At(index).Type()) + return f.emit(e) +} + +// emitTypeAssert emits to f a type assertion value := x.(t) and +// returns the value. x.Type() must be an interface. +// +func emitTypeAssert(f *Function, x Value, t types.Type, pos token.Pos) Value { + a := &TypeAssert{X: x, AssertedType: t} + a.setPos(pos) + a.setType(t) + return f.emit(a) +} + +// emitTypeTest emits to f a type test value,ok := x.(t) and returns +// a (value, ok) tuple. x.Type() must be an interface. +// +func emitTypeTest(f *Function, x Value, t types.Type, pos token.Pos) Value { + a := &TypeAssert{ + X: x, + AssertedType: t, + CommaOk: true, + } + a.setPos(pos) + a.setType(types.NewTuple( + newVar("value", t), + varOk, + )) + return f.emit(a) +} + +// emitTailCall emits to f a function call in tail position. The +// caller is responsible for all fields of 'call' except its type. +// Intended for wrapper methods. +// Precondition: f does/will not use deferred procedure calls. +// Postcondition: f.currentBlock is nil. +// +func emitTailCall(f *Function, call *Call) { + tresults := f.Signature.Results() + nr := tresults.Len() + if nr == 1 { + call.typ = tresults.At(0).Type() + } else { + call.typ = tresults + } + tuple := f.emit(call) + var ret Return + switch nr { + case 0: + // no-op + case 1: + ret.Results = []Value{tuple} + default: + for i := 0; i < nr; i++ { + v := emitExtract(f, tuple, i) + // TODO(adonovan): in principle, this is required: + // v = emitConv(f, o.Type, f.Signature.Results[i].Type) + // but in practice emitTailCall is only used when + // the types exactly match. + ret.Results = append(ret.Results, v) + } + } + f.emit(&ret) + f.currentBlock = nil +} + +// emitImplicitSelections emits to f code to apply the sequence of +// implicit field selections specified by indices to base value v, and +// returns the selected value. +// +// If v is the address of a struct, the result will be the address of +// a field; if it is the value of a struct, the result will be the +// value of a field. +// +func emitImplicitSelections(f *Function, v Value, indices []int) Value { + for _, index := range indices { + fld := deref(v.Type()).Underlying().(*types.Struct).Field(index) + + if isPointer(v.Type()) { + instr := &FieldAddr{ + X: v, + Field: index, + } + instr.setType(types.NewPointer(fld.Type())) + v = f.emit(instr) + // Load the field's value iff indirectly embedded. + if isPointer(fld.Type()) { + v = emitLoad(f, v) + } + } else { + instr := &Field{ + X: v, + Field: index, + } + instr.setType(fld.Type()) + v = f.emit(instr) + } + } + return v +} + +// emitFieldSelection emits to f code to select the index'th field of v. +// +// If wantAddr, the input must be a pointer-to-struct and the result +// will be the field's address; otherwise the result will be the +// field's value. +// Ident id is used for position and debug info. +// +func emitFieldSelection(f *Function, v Value, index int, wantAddr bool, id *ast.Ident) Value { + fld := deref(v.Type()).Underlying().(*types.Struct).Field(index) + if isPointer(v.Type()) { + instr := &FieldAddr{ + X: v, + Field: index, + } + instr.setPos(id.Pos()) + instr.setType(types.NewPointer(fld.Type())) + v = f.emit(instr) + // Load the field's value iff we don't want its address. + if !wantAddr { + v = emitLoad(f, v) + } + } else { + instr := &Field{ + X: v, + Field: index, + } + instr.setPos(id.Pos()) + instr.setType(fld.Type()) + v = f.emit(instr) + } + emitDebugRef(f, id, v, wantAddr) + return v +} + +// zeroValue emits to f code to produce a zero value of type t, +// and returns it. +// +func zeroValue(f *Function, t types.Type) Value { + switch t.Underlying().(type) { + case *types.Struct, *types.Array: + return emitLoad(f, f.addLocal(t, token.NoPos)) + default: + return zeroConst(t) + } +} + +// createRecoverBlock emits to f a block of code to return after a +// recovered panic, and sets f.Recover to it. +// +// If f's result parameters are named, the code loads and returns +// their current values, otherwise it returns the zero values of their +// type. +// +// Idempotent. +// +func createRecoverBlock(f *Function) { + if f.Recover != nil { + return // already created + } + saved := f.currentBlock + + f.Recover = f.newBasicBlock("recover") + f.currentBlock = f.Recover + + var results []Value + if f.namedResults != nil { + // Reload NRPs to form value tuple. + for _, r := range f.namedResults { + results = append(results, emitLoad(f, r)) + } + } else { + R := f.Signature.Results() + for i, n := 0, R.Len(); i < n; i++ { + T := R.At(i).Type() + + // Return zero value of each result type. + results = append(results, zeroValue(f, T)) + } + } + f.emit(&Return{Results: results}) + + f.currentBlock = saved +} diff --git a/vendor/honnef.co/go/tools/ssa/func.go b/vendor/honnef.co/go/tools/ssa/func.go new file mode 100644 index 00000000000..222eea64183 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/func.go @@ -0,0 +1,765 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file implements the Function and BasicBlock types. + +import ( + "bytes" + "fmt" + "go/ast" + "go/token" + "go/types" + "io" + "os" + "strings" +) + +// addEdge adds a control-flow graph edge from from to to. +func addEdge(from, to *BasicBlock) { + from.Succs = append(from.Succs, to) + to.Preds = append(to.Preds, from) +} + +// Parent returns the function that contains block b. +func (b *BasicBlock) Parent() *Function { return b.parent } + +// String returns a human-readable label of this block. +// It is not guaranteed unique within the function. +// +func (b *BasicBlock) String() string { + return fmt.Sprintf("%d", b.Index) +} + +// emit appends an instruction to the current basic block. +// If the instruction defines a Value, it is returned. +// +func (b *BasicBlock) emit(i Instruction) Value { + i.setBlock(b) + b.Instrs = append(b.Instrs, i) + v, _ := i.(Value) + return v +} + +// predIndex returns the i such that b.Preds[i] == c or panics if +// there is none. +func (b *BasicBlock) predIndex(c *BasicBlock) int { + for i, pred := range b.Preds { + if pred == c { + return i + } + } + panic(fmt.Sprintf("no edge %s -> %s", c, b)) +} + +// hasPhi returns true if b.Instrs contains φ-nodes. +func (b *BasicBlock) hasPhi() bool { + _, ok := b.Instrs[0].(*Phi) + return ok +} + +func (b *BasicBlock) Phis() []Instruction { + return b.phis() +} + +// phis returns the prefix of b.Instrs containing all the block's φ-nodes. +func (b *BasicBlock) phis() []Instruction { + for i, instr := range b.Instrs { + if _, ok := instr.(*Phi); !ok { + return b.Instrs[:i] + } + } + return nil // unreachable in well-formed blocks +} + +// replacePred replaces all occurrences of p in b's predecessor list with q. +// Ordinarily there should be at most one. +// +func (b *BasicBlock) replacePred(p, q *BasicBlock) { + for i, pred := range b.Preds { + if pred == p { + b.Preds[i] = q + } + } +} + +// replaceSucc replaces all occurrences of p in b's successor list with q. +// Ordinarily there should be at most one. +// +func (b *BasicBlock) replaceSucc(p, q *BasicBlock) { + for i, succ := range b.Succs { + if succ == p { + b.Succs[i] = q + } + } +} + +func (b *BasicBlock) RemovePred(p *BasicBlock) { + b.removePred(p) +} + +// removePred removes all occurrences of p in b's +// predecessor list and φ-nodes. +// Ordinarily there should be at most one. +// +func (b *BasicBlock) removePred(p *BasicBlock) { + phis := b.phis() + + // We must preserve edge order for φ-nodes. + j := 0 + for i, pred := range b.Preds { + if pred != p { + b.Preds[j] = b.Preds[i] + // Strike out φ-edge too. + for _, instr := range phis { + phi := instr.(*Phi) + phi.Edges[j] = phi.Edges[i] + } + j++ + } + } + // Nil out b.Preds[j:] and φ-edges[j:] to aid GC. + for i := j; i < len(b.Preds); i++ { + b.Preds[i] = nil + for _, instr := range phis { + instr.(*Phi).Edges[i] = nil + } + } + b.Preds = b.Preds[:j] + for _, instr := range phis { + phi := instr.(*Phi) + phi.Edges = phi.Edges[:j] + } +} + +// Destinations associated with unlabelled for/switch/select stmts. +// We push/pop one of these as we enter/leave each construct and for +// each BranchStmt we scan for the innermost target of the right type. +// +type targets struct { + tail *targets // rest of stack + _break *BasicBlock + _continue *BasicBlock + _fallthrough *BasicBlock +} + +// Destinations associated with a labelled block. +// We populate these as labels are encountered in forward gotos or +// labelled statements. +// +type lblock struct { + _goto *BasicBlock + _break *BasicBlock + _continue *BasicBlock +} + +// labelledBlock returns the branch target associated with the +// specified label, creating it if needed. +// +func (f *Function) labelledBlock(label *ast.Ident) *lblock { + lb := f.lblocks[label.Obj] + if lb == nil { + lb = &lblock{_goto: f.newBasicBlock(label.Name)} + if f.lblocks == nil { + f.lblocks = make(map[*ast.Object]*lblock) + } + f.lblocks[label.Obj] = lb + } + return lb +} + +// addParam adds a (non-escaping) parameter to f.Params of the +// specified name, type and source position. +// +func (f *Function) addParam(name string, typ types.Type, pos token.Pos) *Parameter { + v := &Parameter{ + name: name, + typ: typ, + pos: pos, + parent: f, + } + f.Params = append(f.Params, v) + return v +} + +func (f *Function) addParamObj(obj types.Object) *Parameter { + name := obj.Name() + if name == "" { + name = fmt.Sprintf("arg%d", len(f.Params)) + } + param := f.addParam(name, obj.Type(), obj.Pos()) + param.object = obj + return param +} + +// addSpilledParam declares a parameter that is pre-spilled to the +// stack; the function body will load/store the spilled location. +// Subsequent lifting will eliminate spills where possible. +// +func (f *Function) addSpilledParam(obj types.Object) { + param := f.addParamObj(obj) + spill := &Alloc{Comment: obj.Name()} + spill.setType(types.NewPointer(obj.Type())) + spill.setPos(obj.Pos()) + f.objects[obj] = spill + f.Locals = append(f.Locals, spill) + f.emit(spill) + f.emit(&Store{Addr: spill, Val: param}) +} + +// startBody initializes the function prior to generating SSA code for its body. +// Precondition: f.Type() already set. +// +func (f *Function) startBody() { + f.currentBlock = f.newBasicBlock("entry") + f.objects = make(map[types.Object]Value) // needed for some synthetics, e.g. init +} + +// createSyntacticParams populates f.Params and generates code (spills +// and named result locals) for all the parameters declared in the +// syntax. In addition it populates the f.objects mapping. +// +// Preconditions: +// f.startBody() was called. +// Postcondition: +// len(f.Params) == len(f.Signature.Params) + (f.Signature.Recv() ? 1 : 0) +// +func (f *Function) createSyntacticParams(recv *ast.FieldList, functype *ast.FuncType) { + // Receiver (at most one inner iteration). + if recv != nil { + for _, field := range recv.List { + for _, n := range field.Names { + f.addSpilledParam(f.Pkg.info.Defs[n]) + } + // Anonymous receiver? No need to spill. + if field.Names == nil { + f.addParamObj(f.Signature.Recv()) + } + } + } + + // Parameters. + if functype.Params != nil { + n := len(f.Params) // 1 if has recv, 0 otherwise + for _, field := range functype.Params.List { + for _, n := range field.Names { + f.addSpilledParam(f.Pkg.info.Defs[n]) + } + // Anonymous parameter? No need to spill. + if field.Names == nil { + f.addParamObj(f.Signature.Params().At(len(f.Params) - n)) + } + } + } + + // Named results. + if functype.Results != nil { + for _, field := range functype.Results.List { + // Implicit "var" decl of locals for named results. + for _, n := range field.Names { + f.namedResults = append(f.namedResults, f.addLocalForIdent(n)) + } + } + } +} + +// numberRegisters assigns numbers to all SSA registers +// (value-defining Instructions) in f, to aid debugging. +// (Non-Instruction Values are named at construction.) +// +func numberRegisters(f *Function) { + v := 0 + for _, b := range f.Blocks { + for _, instr := range b.Instrs { + switch instr.(type) { + case Value: + instr.(interface { + setNum(int) + }).setNum(v) + v++ + } + } + } +} + +// buildReferrers populates the def/use information in all non-nil +// Value.Referrers slice. +// Precondition: all such slices are initially empty. +func buildReferrers(f *Function) { + var rands []*Value + for _, b := range f.Blocks { + for _, instr := range b.Instrs { + rands = instr.Operands(rands[:0]) // recycle storage + for _, rand := range rands { + if r := *rand; r != nil { + if ref := r.Referrers(); ref != nil { + *ref = append(*ref, instr) + } + } + } + } + } +} + +// finishBody() finalizes the function after SSA code generation of its body. +func (f *Function) finishBody() { + f.objects = nil + f.currentBlock = nil + f.lblocks = nil + + // Don't pin the AST in memory (except in debug mode). + if n := f.syntax; n != nil && !f.debugInfo() { + f.syntax = extentNode{n.Pos(), n.End()} + } + + // Remove from f.Locals any Allocs that escape to the heap. + j := 0 + for _, l := range f.Locals { + if !l.Heap { + f.Locals[j] = l + j++ + } + } + // Nil out f.Locals[j:] to aid GC. + for i := j; i < len(f.Locals); i++ { + f.Locals[i] = nil + } + f.Locals = f.Locals[:j] + + // comma-ok receiving from a time.Tick channel will never return + // ok == false, so any branching on the value of ok can be + // replaced with an unconditional jump. This will primarily match + // `for range time.Tick(x)` loops, but it can also match + // user-written code. + for _, block := range f.Blocks { + if len(block.Instrs) < 3 { + continue + } + if len(block.Succs) != 2 { + continue + } + var instrs []*Instruction + for i, ins := range block.Instrs { + if _, ok := ins.(*DebugRef); ok { + continue + } + instrs = append(instrs, &block.Instrs[i]) + } + + for i, ins := range instrs { + unop, ok := (*ins).(*UnOp) + if !ok || unop.Op != token.ARROW { + continue + } + call, ok := unop.X.(*Call) + if !ok { + continue + } + if call.Common().IsInvoke() { + continue + } + + // OPT(dh): surely there is a more efficient way of doing + // this, than using FullName. We should already have + // resolved time.Tick somewhere? + v, ok := call.Common().Value.(*Function) + if !ok { + continue + } + t, ok := v.Object().(*types.Func) + if !ok { + continue + } + if t.FullName() != "time.Tick" { + continue + } + ex, ok := (*instrs[i+1]).(*Extract) + if !ok || ex.Tuple != unop || ex.Index != 1 { + continue + } + + ifstmt, ok := (*instrs[i+2]).(*If) + if !ok || ifstmt.Cond != ex { + continue + } + + *instrs[i+2] = NewJump(block) + succ := block.Succs[1] + block.Succs = block.Succs[0:1] + succ.RemovePred(block) + } + } + + optimizeBlocks(f) + + buildReferrers(f) + + buildDomTree(f) + + if f.Prog.mode&NaiveForm == 0 { + // For debugging pre-state of lifting pass: + // numberRegisters(f) + // f.WriteTo(os.Stderr) + lift(f) + } + + f.namedResults = nil // (used by lifting) + + numberRegisters(f) + + if f.Prog.mode&PrintFunctions != 0 { + printMu.Lock() + f.WriteTo(os.Stdout) + printMu.Unlock() + } + + if f.Prog.mode&SanityCheckFunctions != 0 { + mustSanityCheck(f, nil) + } +} + +func (f *Function) RemoveNilBlocks() { + f.removeNilBlocks() +} + +// removeNilBlocks eliminates nils from f.Blocks and updates each +// BasicBlock.Index. Use this after any pass that may delete blocks. +// +func (f *Function) removeNilBlocks() { + j := 0 + for _, b := range f.Blocks { + if b != nil { + b.Index = j + f.Blocks[j] = b + j++ + } + } + // Nil out f.Blocks[j:] to aid GC. + for i := j; i < len(f.Blocks); i++ { + f.Blocks[i] = nil + } + f.Blocks = f.Blocks[:j] +} + +// SetDebugMode sets the debug mode for package pkg. If true, all its +// functions will include full debug info. This greatly increases the +// size of the instruction stream, and causes Functions to depend upon +// the ASTs, potentially keeping them live in memory for longer. +// +func (pkg *Package) SetDebugMode(debug bool) { + // TODO(adonovan): do we want ast.File granularity? + pkg.debug = debug +} + +// debugInfo reports whether debug info is wanted for this function. +func (f *Function) debugInfo() bool { + return f.Pkg != nil && f.Pkg.debug +} + +// addNamedLocal creates a local variable, adds it to function f and +// returns it. Its name and type are taken from obj. Subsequent +// calls to f.lookup(obj) will return the same local. +// +func (f *Function) addNamedLocal(obj types.Object) *Alloc { + l := f.addLocal(obj.Type(), obj.Pos()) + l.Comment = obj.Name() + f.objects[obj] = l + return l +} + +func (f *Function) addLocalForIdent(id *ast.Ident) *Alloc { + return f.addNamedLocal(f.Pkg.info.Defs[id]) +} + +// addLocal creates an anonymous local variable of type typ, adds it +// to function f and returns it. pos is the optional source location. +// +func (f *Function) addLocal(typ types.Type, pos token.Pos) *Alloc { + v := &Alloc{} + v.setType(types.NewPointer(typ)) + v.setPos(pos) + f.Locals = append(f.Locals, v) + f.emit(v) + return v +} + +// lookup returns the address of the named variable identified by obj +// that is local to function f or one of its enclosing functions. +// If escaping, the reference comes from a potentially escaping pointer +// expression and the referent must be heap-allocated. +// +func (f *Function) lookup(obj types.Object, escaping bool) Value { + if v, ok := f.objects[obj]; ok { + if alloc, ok := v.(*Alloc); ok && escaping { + alloc.Heap = true + } + return v // function-local var (address) + } + + // Definition must be in an enclosing function; + // plumb it through intervening closures. + if f.parent == nil { + panic("no ssa.Value for " + obj.String()) + } + outer := f.parent.lookup(obj, true) // escaping + v := &FreeVar{ + name: obj.Name(), + typ: outer.Type(), + pos: outer.Pos(), + outer: outer, + parent: f, + } + f.objects[obj] = v + f.FreeVars = append(f.FreeVars, v) + return v +} + +// emit emits the specified instruction to function f. +func (f *Function) emit(instr Instruction) Value { + return f.currentBlock.emit(instr) +} + +// RelString returns the full name of this function, qualified by +// package name, receiver type, etc. +// +// The specific formatting rules are not guaranteed and may change. +// +// Examples: +// "math.IsNaN" // a package-level function +// "(*bytes.Buffer).Bytes" // a declared method or a wrapper +// "(*bytes.Buffer).Bytes$thunk" // thunk (func wrapping method; receiver is param 0) +// "(*bytes.Buffer).Bytes$bound" // bound (func wrapping method; receiver supplied by closure) +// "main.main$1" // an anonymous function in main +// "main.init#1" // a declared init function +// "main.init" // the synthesized package initializer +// +// When these functions are referred to from within the same package +// (i.e. from == f.Pkg.Object), they are rendered without the package path. +// For example: "IsNaN", "(*Buffer).Bytes", etc. +// +// All non-synthetic functions have distinct package-qualified names. +// (But two methods may have the same name "(T).f" if one is a synthetic +// wrapper promoting a non-exported method "f" from another package; in +// that case, the strings are equal but the identifiers "f" are distinct.) +// +func (f *Function) RelString(from *types.Package) string { + // Anonymous? + if f.parent != nil { + // An anonymous function's Name() looks like "parentName$1", + // but its String() should include the type/package/etc. + parent := f.parent.RelString(from) + for i, anon := range f.parent.AnonFuncs { + if anon == f { + return fmt.Sprintf("%s$%d", parent, 1+i) + } + } + + return f.name // should never happen + } + + // Method (declared or wrapper)? + if recv := f.Signature.Recv(); recv != nil { + return f.relMethod(from, recv.Type()) + } + + // Thunk? + if f.method != nil { + return f.relMethod(from, f.method.Recv()) + } + + // Bound? + if len(f.FreeVars) == 1 && strings.HasSuffix(f.name, "$bound") { + return f.relMethod(from, f.FreeVars[0].Type()) + } + + // Package-level function? + // Prefix with package name for cross-package references only. + if p := f.pkg(); p != nil && p != from { + return fmt.Sprintf("%s.%s", p.Path(), f.name) + } + + // Unknown. + return f.name +} + +func (f *Function) relMethod(from *types.Package, recv types.Type) string { + return fmt.Sprintf("(%s).%s", relType(recv, from), f.name) +} + +// writeSignature writes to buf the signature sig in declaration syntax. +func writeSignature(buf *bytes.Buffer, from *types.Package, name string, sig *types.Signature, params []*Parameter) { + buf.WriteString("func ") + if recv := sig.Recv(); recv != nil { + buf.WriteString("(") + if n := params[0].Name(); n != "" { + buf.WriteString(n) + buf.WriteString(" ") + } + types.WriteType(buf, params[0].Type(), types.RelativeTo(from)) + buf.WriteString(") ") + } + buf.WriteString(name) + types.WriteSignature(buf, sig, types.RelativeTo(from)) +} + +func (f *Function) pkg() *types.Package { + if f.Pkg != nil { + return f.Pkg.Pkg + } + return nil +} + +var _ io.WriterTo = (*Function)(nil) // *Function implements io.Writer + +func (f *Function) WriteTo(w io.Writer) (int64, error) { + var buf bytes.Buffer + WriteFunction(&buf, f) + n, err := w.Write(buf.Bytes()) + return int64(n), err +} + +// WriteFunction writes to buf a human-readable "disassembly" of f. +func WriteFunction(buf *bytes.Buffer, f *Function) { + fmt.Fprintf(buf, "# Name: %s\n", f.String()) + if f.Pkg != nil { + fmt.Fprintf(buf, "# Package: %s\n", f.Pkg.Pkg.Path()) + } + if syn := f.Synthetic; syn != "" { + fmt.Fprintln(buf, "# Synthetic:", syn) + } + if pos := f.Pos(); pos.IsValid() { + fmt.Fprintf(buf, "# Location: %s\n", f.Prog.Fset.Position(pos)) + } + + if f.parent != nil { + fmt.Fprintf(buf, "# Parent: %s\n", f.parent.Name()) + } + + if f.Recover != nil { + fmt.Fprintf(buf, "# Recover: %s\n", f.Recover) + } + + from := f.pkg() + + if f.FreeVars != nil { + buf.WriteString("# Free variables:\n") + for i, fv := range f.FreeVars { + fmt.Fprintf(buf, "# % 3d:\t%s %s\n", i, fv.Name(), relType(fv.Type(), from)) + } + } + + if len(f.Locals) > 0 { + buf.WriteString("# Locals:\n") + for i, l := range f.Locals { + fmt.Fprintf(buf, "# % 3d:\t%s %s\n", i, l.Name(), relType(deref(l.Type()), from)) + } + } + writeSignature(buf, from, f.Name(), f.Signature, f.Params) + buf.WriteString(":\n") + + if f.Blocks == nil { + buf.WriteString("\t(external)\n") + } + + // NB. column calculations are confused by non-ASCII + // characters and assume 8-space tabs. + const punchcard = 80 // for old time's sake. + const tabwidth = 8 + for _, b := range f.Blocks { + if b == nil { + // Corrupt CFG. + fmt.Fprintf(buf, ".nil:\n") + continue + } + n, _ := fmt.Fprintf(buf, "%d:", b.Index) + bmsg := fmt.Sprintf("%s P:%d S:%d", b.Comment, len(b.Preds), len(b.Succs)) + fmt.Fprintf(buf, "%*s%s\n", punchcard-1-n-len(bmsg), "", bmsg) + + if false { // CFG debugging + fmt.Fprintf(buf, "\t# CFG: %s --> %s --> %s\n", b.Preds, b, b.Succs) + } + for _, instr := range b.Instrs { + buf.WriteString("\t") + switch v := instr.(type) { + case Value: + l := punchcard - tabwidth + // Left-align the instruction. + if name := v.Name(); name != "" { + n, _ := fmt.Fprintf(buf, "%s = ", name) + l -= n + } + n, _ := buf.WriteString(instr.String()) + l -= n + // Right-align the type if there's space. + if t := v.Type(); t != nil { + buf.WriteByte(' ') + ts := relType(t, from) + l -= len(ts) + len(" ") // (spaces before and after type) + if l > 0 { + fmt.Fprintf(buf, "%*s", l, "") + } + buf.WriteString(ts) + } + case nil: + // Be robust against bad transforms. + buf.WriteString("") + default: + buf.WriteString(instr.String()) + } + buf.WriteString("\n") + } + } + fmt.Fprintf(buf, "\n") +} + +// newBasicBlock adds to f a new basic block and returns it. It does +// not automatically become the current block for subsequent calls to emit. +// comment is an optional string for more readable debugging output. +// +func (f *Function) newBasicBlock(comment string) *BasicBlock { + b := &BasicBlock{ + Index: len(f.Blocks), + Comment: comment, + parent: f, + } + b.Succs = b.succs2[:0] + f.Blocks = append(f.Blocks, b) + return b +} + +// NewFunction returns a new synthetic Function instance belonging to +// prog, with its name and signature fields set as specified. +// +// The caller is responsible for initializing the remaining fields of +// the function object, e.g. Pkg, Params, Blocks. +// +// It is practically impossible for clients to construct well-formed +// SSA functions/packages/programs directly, so we assume this is the +// job of the Builder alone. NewFunction exists to provide clients a +// little flexibility. For example, analysis tools may wish to +// construct fake Functions for the root of the callgraph, a fake +// "reflect" package, etc. +// +// TODO(adonovan): think harder about the API here. +// +func (prog *Program) NewFunction(name string, sig *types.Signature, provenance string) *Function { + return &Function{Prog: prog, name: name, Signature: sig, Synthetic: provenance} +} + +type extentNode [2]token.Pos + +func (n extentNode) Pos() token.Pos { return n[0] } +func (n extentNode) End() token.Pos { return n[1] } + +// Syntax returns an ast.Node whose Pos/End methods provide the +// lexical extent of the function if it was defined by Go source code +// (f.Synthetic==""), or nil otherwise. +// +// If f was built with debug information (see Package.SetDebugRef), +// the result is the *ast.FuncDecl or *ast.FuncLit that declared the +// function. Otherwise, it is an opaque Node providing only position +// information; this avoids pinning the AST in memory. +// +func (f *Function) Syntax() ast.Node { return f.syntax } diff --git a/vendor/honnef.co/go/tools/ssa/identical.go b/vendor/honnef.co/go/tools/ssa/identical.go new file mode 100644 index 00000000000..53cbee107b6 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/identical.go @@ -0,0 +1,7 @@ +// +build go1.8 + +package ssa + +import "go/types" + +var structTypesIdentical = types.IdenticalIgnoreTags diff --git a/vendor/honnef.co/go/tools/ssa/identical_17.go b/vendor/honnef.co/go/tools/ssa/identical_17.go new file mode 100644 index 00000000000..da89d3339a5 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/identical_17.go @@ -0,0 +1,7 @@ +// +build !go1.8 + +package ssa + +import "go/types" + +var structTypesIdentical = types.Identical diff --git a/vendor/honnef.co/go/tools/ssa/lift.go b/vendor/honnef.co/go/tools/ssa/lift.go new file mode 100644 index 00000000000..531358fa3bb --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/lift.go @@ -0,0 +1,657 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines the lifting pass which tries to "lift" Alloc +// cells (new/local variables) into SSA registers, replacing loads +// with the dominating stored value, eliminating loads and stores, and +// inserting φ-nodes as needed. + +// Cited papers and resources: +// +// Ron Cytron et al. 1991. Efficiently computing SSA form... +// http://doi.acm.org/10.1145/115372.115320 +// +// Cooper, Harvey, Kennedy. 2001. A Simple, Fast Dominance Algorithm. +// Software Practice and Experience 2001, 4:1-10. +// http://www.hipersoft.rice.edu/grads/publications/dom14.pdf +// +// Daniel Berlin, llvmdev mailing list, 2012. +// http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046638.html +// (Be sure to expand the whole thread.) + +// TODO(adonovan): opt: there are many optimizations worth evaluating, and +// the conventional wisdom for SSA construction is that a simple +// algorithm well engineered often beats those of better asymptotic +// complexity on all but the most egregious inputs. +// +// Danny Berlin suggests that the Cooper et al. algorithm for +// computing the dominance frontier is superior to Cytron et al. +// Furthermore he recommends that rather than computing the DF for the +// whole function then renaming all alloc cells, it may be cheaper to +// compute the DF for each alloc cell separately and throw it away. +// +// Consider exploiting liveness information to avoid creating dead +// φ-nodes which we then immediately remove. +// +// Also see many other "TODO: opt" suggestions in the code. + +import ( + "fmt" + "go/token" + "go/types" + "math/big" + "os" +) + +// If true, show diagnostic information at each step of lifting. +// Very verbose. +const debugLifting = false + +// domFrontier maps each block to the set of blocks in its dominance +// frontier. The outer slice is conceptually a map keyed by +// Block.Index. The inner slice is conceptually a set, possibly +// containing duplicates. +// +// TODO(adonovan): opt: measure impact of dups; consider a packed bit +// representation, e.g. big.Int, and bitwise parallel operations for +// the union step in the Children loop. +// +// domFrontier's methods mutate the slice's elements but not its +// length, so their receivers needn't be pointers. +// +type domFrontier [][]*BasicBlock + +func (df domFrontier) add(u, v *BasicBlock) { + p := &df[u.Index] + *p = append(*p, v) +} + +// build builds the dominance frontier df for the dominator (sub)tree +// rooted at u, using the Cytron et al. algorithm. +// +// TODO(adonovan): opt: consider Berlin approach, computing pruned SSA +// by pruning the entire IDF computation, rather than merely pruning +// the DF -> IDF step. +func (df domFrontier) build(u *BasicBlock) { + // Encounter each node u in postorder of dom tree. + for _, child := range u.dom.children { + df.build(child) + } + for _, vb := range u.Succs { + if v := vb.dom; v.idom != u { + df.add(u, vb) + } + } + for _, w := range u.dom.children { + for _, vb := range df[w.Index] { + // TODO(adonovan): opt: use word-parallel bitwise union. + if v := vb.dom; v.idom != u { + df.add(u, vb) + } + } + } +} + +func buildDomFrontier(fn *Function) domFrontier { + df := make(domFrontier, len(fn.Blocks)) + df.build(fn.Blocks[0]) + if fn.Recover != nil { + df.build(fn.Recover) + } + return df +} + +func removeInstr(refs []Instruction, instr Instruction) []Instruction { + i := 0 + for _, ref := range refs { + if ref == instr { + continue + } + refs[i] = ref + i++ + } + for j := i; j != len(refs); j++ { + refs[j] = nil // aid GC + } + return refs[:i] +} + +// lift replaces local and new Allocs accessed only with +// load/store by SSA registers, inserting φ-nodes where necessary. +// The result is a program in classical pruned SSA form. +// +// Preconditions: +// - fn has no dead blocks (blockopt has run). +// - Def/use info (Operands and Referrers) is up-to-date. +// - The dominator tree is up-to-date. +// +func lift(fn *Function) { + // TODO(adonovan): opt: lots of little optimizations may be + // worthwhile here, especially if they cause us to avoid + // buildDomFrontier. For example: + // + // - Alloc never loaded? Eliminate. + // - Alloc never stored? Replace all loads with a zero constant. + // - Alloc stored once? Replace loads with dominating store; + // don't forget that an Alloc is itself an effective store + // of zero. + // - Alloc used only within a single block? + // Use degenerate algorithm avoiding φ-nodes. + // - Consider synergy with scalar replacement of aggregates (SRA). + // e.g. *(&x.f) where x is an Alloc. + // Perhaps we'd get better results if we generated this as x.f + // i.e. Field(x, .f) instead of Load(FieldIndex(x, .f)). + // Unclear. + // + // But we will start with the simplest correct code. + df := buildDomFrontier(fn) + + if debugLifting { + title := false + for i, blocks := range df { + if blocks != nil { + if !title { + fmt.Fprintf(os.Stderr, "Dominance frontier of %s:\n", fn) + title = true + } + fmt.Fprintf(os.Stderr, "\t%s: %s\n", fn.Blocks[i], blocks) + } + } + } + + newPhis := make(newPhiMap) + + // During this pass we will replace some BasicBlock.Instrs + // (allocs, loads and stores) with nil, keeping a count in + // BasicBlock.gaps. At the end we will reset Instrs to the + // concatenation of all non-dead newPhis and non-nil Instrs + // for the block, reusing the original array if space permits. + + // While we're here, we also eliminate 'rundefers' + // instructions in functions that contain no 'defer' + // instructions. + usesDefer := false + + // A counter used to generate ~unique ids for Phi nodes, as an + // aid to debugging. We use large numbers to make them highly + // visible. All nodes are renumbered later. + fresh := 1000 + + // Determine which allocs we can lift and number them densely. + // The renaming phase uses this numbering for compact maps. + numAllocs := 0 + for _, b := range fn.Blocks { + b.gaps = 0 + b.rundefers = 0 + for _, instr := range b.Instrs { + switch instr := instr.(type) { + case *Alloc: + index := -1 + if liftAlloc(df, instr, newPhis, &fresh) { + index = numAllocs + numAllocs++ + } + instr.index = index + case *Defer: + usesDefer = true + case *RunDefers: + b.rundefers++ + } + } + } + + // renaming maps an alloc (keyed by index) to its replacement + // value. Initially the renaming contains nil, signifying the + // zero constant of the appropriate type; we construct the + // Const lazily at most once on each path through the domtree. + // TODO(adonovan): opt: cache per-function not per subtree. + renaming := make([]Value, numAllocs) + + // Renaming. + rename(fn.Blocks[0], renaming, newPhis) + + // Eliminate dead φ-nodes. + removeDeadPhis(fn.Blocks, newPhis) + + // Prepend remaining live φ-nodes to each block. + for _, b := range fn.Blocks { + nps := newPhis[b] + j := len(nps) + + rundefersToKill := b.rundefers + if usesDefer { + rundefersToKill = 0 + } + + if j+b.gaps+rundefersToKill == 0 { + continue // fast path: no new phis or gaps + } + + // Compact nps + non-nil Instrs into a new slice. + // TODO(adonovan): opt: compact in situ (rightwards) + // if Instrs has sufficient space or slack. + dst := make([]Instruction, len(b.Instrs)+j-b.gaps-rundefersToKill) + for i, np := range nps { + dst[i] = np.phi + } + for _, instr := range b.Instrs { + if instr == nil { + continue + } + if !usesDefer { + if _, ok := instr.(*RunDefers); ok { + continue + } + } + dst[j] = instr + j++ + } + b.Instrs = dst + } + + // Remove any fn.Locals that were lifted. + j := 0 + for _, l := range fn.Locals { + if l.index < 0 { + fn.Locals[j] = l + j++ + } + } + // Nil out fn.Locals[j:] to aid GC. + for i := j; i < len(fn.Locals); i++ { + fn.Locals[i] = nil + } + fn.Locals = fn.Locals[:j] +} + +// removeDeadPhis removes φ-nodes not transitively needed by a +// non-Phi, non-DebugRef instruction. +func removeDeadPhis(blocks []*BasicBlock, newPhis newPhiMap) { + // First pass: find the set of "live" φ-nodes: those reachable + // from some non-Phi instruction. + // + // We compute reachability in reverse, starting from each φ, + // rather than forwards, starting from each live non-Phi + // instruction, because this way visits much less of the + // Value graph. + livePhis := make(map[*Phi]bool) + for _, npList := range newPhis { + for _, np := range npList { + phi := np.phi + if !livePhis[phi] && phiHasDirectReferrer(phi) { + markLivePhi(livePhis, phi) + } + } + } + + // Existing φ-nodes due to && and || operators + // are all considered live (see Go issue 19622). + for _, b := range blocks { + for _, phi := range b.phis() { + markLivePhi(livePhis, phi.(*Phi)) + } + } + + // Second pass: eliminate unused phis from newPhis. + for block, npList := range newPhis { + j := 0 + for _, np := range npList { + if livePhis[np.phi] { + npList[j] = np + j++ + } else { + // discard it, first removing it from referrers + for _, val := range np.phi.Edges { + if refs := val.Referrers(); refs != nil { + *refs = removeInstr(*refs, np.phi) + } + } + np.phi.block = nil + } + } + newPhis[block] = npList[:j] + } +} + +// markLivePhi marks phi, and all φ-nodes transitively reachable via +// its Operands, live. +func markLivePhi(livePhis map[*Phi]bool, phi *Phi) { + livePhis[phi] = true + for _, rand := range phi.Operands(nil) { + if q, ok := (*rand).(*Phi); ok { + if !livePhis[q] { + markLivePhi(livePhis, q) + } + } + } +} + +// phiHasDirectReferrer reports whether phi is directly referred to by +// a non-Phi instruction. Such instructions are the +// roots of the liveness traversal. +func phiHasDirectReferrer(phi *Phi) bool { + for _, instr := range *phi.Referrers() { + if _, ok := instr.(*Phi); !ok { + return true + } + } + return false +} + +type BlockSet struct{ big.Int } // (inherit methods from Int) + +// add adds b to the set and returns true if the set changed. +func (s *BlockSet) Add(b *BasicBlock) bool { + i := b.Index + if s.Bit(i) != 0 { + return false + } + s.SetBit(&s.Int, i, 1) + return true +} + +func (s *BlockSet) Has(b *BasicBlock) bool { + return s.Bit(b.Index) == 1 +} + +// take removes an arbitrary element from a set s and +// returns its index, or returns -1 if empty. +func (s *BlockSet) Take() int { + l := s.BitLen() + for i := 0; i < l; i++ { + if s.Bit(i) == 1 { + s.SetBit(&s.Int, i, 0) + return i + } + } + return -1 +} + +// newPhi is a pair of a newly introduced φ-node and the lifted Alloc +// it replaces. +type newPhi struct { + phi *Phi + alloc *Alloc +} + +// newPhiMap records for each basic block, the set of newPhis that +// must be prepended to the block. +type newPhiMap map[*BasicBlock][]newPhi + +// liftAlloc determines whether alloc can be lifted into registers, +// and if so, it populates newPhis with all the φ-nodes it may require +// and returns true. +// +// fresh is a source of fresh ids for phi nodes. +// +func liftAlloc(df domFrontier, alloc *Alloc, newPhis newPhiMap, fresh *int) bool { + // Don't lift aggregates into registers, because we don't have + // a way to express their zero-constants. + switch deref(alloc.Type()).Underlying().(type) { + case *types.Array, *types.Struct: + return false + } + + // Don't lift named return values in functions that defer + // calls that may recover from panic. + if fn := alloc.Parent(); fn.Recover != nil { + for _, nr := range fn.namedResults { + if nr == alloc { + return false + } + } + } + + // Compute defblocks, the set of blocks containing a + // definition of the alloc cell. + var defblocks BlockSet + for _, instr := range *alloc.Referrers() { + // Bail out if we discover the alloc is not liftable; + // the only operations permitted to use the alloc are + // loads/stores into the cell, and DebugRef. + switch instr := instr.(type) { + case *Store: + if instr.Val == alloc { + return false // address used as value + } + if instr.Addr != alloc { + panic("Alloc.Referrers is inconsistent") + } + defblocks.Add(instr.Block()) + case *UnOp: + if instr.Op != token.MUL { + return false // not a load + } + if instr.X != alloc { + panic("Alloc.Referrers is inconsistent") + } + case *DebugRef: + // ok + default: + return false // some other instruction + } + } + // The Alloc itself counts as a (zero) definition of the cell. + defblocks.Add(alloc.Block()) + + if debugLifting { + fmt.Fprintln(os.Stderr, "\tlifting ", alloc, alloc.Name()) + } + + fn := alloc.Parent() + + // Φ-insertion. + // + // What follows is the body of the main loop of the insert-φ + // function described by Cytron et al, but instead of using + // counter tricks, we just reset the 'hasAlready' and 'work' + // sets each iteration. These are bitmaps so it's pretty cheap. + // + // TODO(adonovan): opt: recycle slice storage for W, + // hasAlready, defBlocks across liftAlloc calls. + var hasAlready BlockSet + + // Initialize W and work to defblocks. + var work BlockSet = defblocks // blocks seen + var W BlockSet // blocks to do + W.Set(&defblocks.Int) + + // Traverse iterated dominance frontier, inserting φ-nodes. + for i := W.Take(); i != -1; i = W.Take() { + u := fn.Blocks[i] + for _, v := range df[u.Index] { + if hasAlready.Add(v) { + // Create φ-node. + // It will be prepended to v.Instrs later, if needed. + phi := &Phi{ + Edges: make([]Value, len(v.Preds)), + Comment: alloc.Comment, + } + // This is merely a debugging aid: + phi.setNum(*fresh) + *fresh++ + + phi.pos = alloc.Pos() + phi.setType(deref(alloc.Type())) + phi.block = v + if debugLifting { + fmt.Fprintf(os.Stderr, "\tplace %s = %s at block %s\n", phi.Name(), phi, v) + } + newPhis[v] = append(newPhis[v], newPhi{phi, alloc}) + + if work.Add(v) { + W.Add(v) + } + } + } + } + + return true +} + +// replaceAll replaces all intraprocedural uses of x with y, +// updating x.Referrers and y.Referrers. +// Precondition: x.Referrers() != nil, i.e. x must be local to some function. +// +func replaceAll(x, y Value) { + var rands []*Value + pxrefs := x.Referrers() + pyrefs := y.Referrers() + for _, instr := range *pxrefs { + rands = instr.Operands(rands[:0]) // recycle storage + for _, rand := range rands { + if *rand != nil { + if *rand == x { + *rand = y + } + } + } + if pyrefs != nil { + *pyrefs = append(*pyrefs, instr) // dups ok + } + } + *pxrefs = nil // x is now unreferenced +} + +// renamed returns the value to which alloc is being renamed, +// constructing it lazily if it's the implicit zero initialization. +// +func renamed(renaming []Value, alloc *Alloc) Value { + v := renaming[alloc.index] + if v == nil { + v = zeroConst(deref(alloc.Type())) + renaming[alloc.index] = v + } + return v +} + +// rename implements the (Cytron et al) SSA renaming algorithm, a +// preorder traversal of the dominator tree replacing all loads of +// Alloc cells with the value stored to that cell by the dominating +// store instruction. For lifting, we need only consider loads, +// stores and φ-nodes. +// +// renaming is a map from *Alloc (keyed by index number) to its +// dominating stored value; newPhis[x] is the set of new φ-nodes to be +// prepended to block x. +// +func rename(u *BasicBlock, renaming []Value, newPhis newPhiMap) { + // Each φ-node becomes the new name for its associated Alloc. + for _, np := range newPhis[u] { + phi := np.phi + alloc := np.alloc + renaming[alloc.index] = phi + } + + // Rename loads and stores of allocs. + for i, instr := range u.Instrs { + switch instr := instr.(type) { + case *Alloc: + if instr.index >= 0 { // store of zero to Alloc cell + // Replace dominated loads by the zero value. + renaming[instr.index] = nil + if debugLifting { + fmt.Fprintf(os.Stderr, "\tkill alloc %s\n", instr) + } + // Delete the Alloc. + u.Instrs[i] = nil + u.gaps++ + } + + case *Store: + if alloc, ok := instr.Addr.(*Alloc); ok && alloc.index >= 0 { // store to Alloc cell + // Replace dominated loads by the stored value. + renaming[alloc.index] = instr.Val + if debugLifting { + fmt.Fprintf(os.Stderr, "\tkill store %s; new value: %s\n", + instr, instr.Val.Name()) + } + // Remove the store from the referrer list of the stored value. + if refs := instr.Val.Referrers(); refs != nil { + *refs = removeInstr(*refs, instr) + } + // Delete the Store. + u.Instrs[i] = nil + u.gaps++ + } + + case *UnOp: + if instr.Op == token.MUL { + if alloc, ok := instr.X.(*Alloc); ok && alloc.index >= 0 { // load of Alloc cell + newval := renamed(renaming, alloc) + if debugLifting { + fmt.Fprintf(os.Stderr, "\tupdate load %s = %s with %s\n", + instr.Name(), instr, newval.Name()) + } + // Replace all references to + // the loaded value by the + // dominating stored value. + replaceAll(instr, newval) + // Delete the Load. + u.Instrs[i] = nil + u.gaps++ + } + } + + case *DebugRef: + if alloc, ok := instr.X.(*Alloc); ok && alloc.index >= 0 { // ref of Alloc cell + if instr.IsAddr { + instr.X = renamed(renaming, alloc) + instr.IsAddr = false + + // Add DebugRef to instr.X's referrers. + if refs := instr.X.Referrers(); refs != nil { + *refs = append(*refs, instr) + } + } else { + // A source expression denotes the address + // of an Alloc that was optimized away. + instr.X = nil + + // Delete the DebugRef. + u.Instrs[i] = nil + u.gaps++ + } + } + } + } + + // For each φ-node in a CFG successor, rename the edge. + for _, v := range u.Succs { + phis := newPhis[v] + if len(phis) == 0 { + continue + } + i := v.predIndex(u) + for _, np := range phis { + phi := np.phi + alloc := np.alloc + newval := renamed(renaming, alloc) + if debugLifting { + fmt.Fprintf(os.Stderr, "\tsetphi %s edge %s -> %s (#%d) (alloc=%s) := %s\n", + phi.Name(), u, v, i, alloc.Name(), newval.Name()) + } + phi.Edges[i] = newval + if prefs := newval.Referrers(); prefs != nil { + *prefs = append(*prefs, phi) + } + } + } + + // Continue depth-first recursion over domtree, pushing a + // fresh copy of the renaming map for each subtree. + for i, v := range u.dom.children { + r := renaming + if i < len(u.dom.children)-1 { + // On all but the final iteration, we must make + // a copy to avoid destructive update. + r = make([]Value, len(renaming)) + copy(r, renaming) + } + rename(v, r, newPhis) + } + +} diff --git a/vendor/honnef.co/go/tools/ssa/lvalue.go b/vendor/honnef.co/go/tools/ssa/lvalue.go new file mode 100644 index 00000000000..eb5d71e188f --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/lvalue.go @@ -0,0 +1,123 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// lvalues are the union of addressable expressions and map-index +// expressions. + +import ( + "go/ast" + "go/token" + "go/types" +) + +// An lvalue represents an assignable location that may appear on the +// left-hand side of an assignment. This is a generalization of a +// pointer to permit updates to elements of maps. +// +type lvalue interface { + store(fn *Function, v Value) // stores v into the location + load(fn *Function) Value // loads the contents of the location + address(fn *Function) Value // address of the location + typ() types.Type // returns the type of the location +} + +// An address is an lvalue represented by a true pointer. +type address struct { + addr Value + pos token.Pos // source position + expr ast.Expr // source syntax of the value (not address) [debug mode] +} + +func (a *address) load(fn *Function) Value { + load := emitLoad(fn, a.addr) + load.pos = a.pos + return load +} + +func (a *address) store(fn *Function, v Value) { + store := emitStore(fn, a.addr, v, a.pos) + if a.expr != nil { + // store.Val is v, converted for assignability. + emitDebugRef(fn, a.expr, store.Val, false) + } +} + +func (a *address) address(fn *Function) Value { + if a.expr != nil { + emitDebugRef(fn, a.expr, a.addr, true) + } + return a.addr +} + +func (a *address) typ() types.Type { + return deref(a.addr.Type()) +} + +// An element is an lvalue represented by m[k], the location of an +// element of a map or string. These locations are not addressable +// since pointers cannot be formed from them, but they do support +// load(), and in the case of maps, store(). +// +type element struct { + m, k Value // map or string + t types.Type // map element type or string byte type + pos token.Pos // source position of colon ({k:v}) or lbrack (m[k]=v) +} + +func (e *element) load(fn *Function) Value { + l := &Lookup{ + X: e.m, + Index: e.k, + } + l.setPos(e.pos) + l.setType(e.t) + return fn.emit(l) +} + +func (e *element) store(fn *Function, v Value) { + up := &MapUpdate{ + Map: e.m, + Key: e.k, + Value: emitConv(fn, v, e.t), + } + up.pos = e.pos + fn.emit(up) +} + +func (e *element) address(fn *Function) Value { + panic("map/string elements are not addressable") +} + +func (e *element) typ() types.Type { + return e.t +} + +// A blank is a dummy variable whose name is "_". +// It is not reified: loads are illegal and stores are ignored. +// +type blank struct{} + +func (bl blank) load(fn *Function) Value { + panic("blank.load is illegal") +} + +func (bl blank) store(fn *Function, v Value) { + s := &BlankStore{ + Val: v, + } + fn.emit(s) +} + +func (bl blank) address(fn *Function) Value { + panic("blank var is not addressable") +} + +func (bl blank) typ() types.Type { + // This should be the type of the blank Ident; the typechecker + // doesn't provide this yet, but fortunately, we don't need it + // yet either. + panic("blank.typ is unimplemented") +} diff --git a/vendor/honnef.co/go/tools/ssa/methods.go b/vendor/honnef.co/go/tools/ssa/methods.go new file mode 100644 index 00000000000..9cf383916bb --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/methods.go @@ -0,0 +1,239 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines utilities for population of method sets. + +import ( + "fmt" + "go/types" +) + +// MethodValue returns the Function implementing method sel, building +// wrapper methods on demand. It returns nil if sel denotes an +// abstract (interface) method. +// +// Precondition: sel.Kind() == MethodVal. +// +// Thread-safe. +// +// EXCLUSIVE_LOCKS_ACQUIRED(prog.methodsMu) +// +func (prog *Program) MethodValue(sel *types.Selection) *Function { + if sel.Kind() != types.MethodVal { + panic(fmt.Sprintf("MethodValue(%s) kind != MethodVal", sel)) + } + T := sel.Recv() + if isInterface(T) { + return nil // abstract method + } + if prog.mode&LogSource != 0 { + defer logStack("MethodValue %s %v", T, sel)() + } + + prog.methodsMu.Lock() + defer prog.methodsMu.Unlock() + + return prog.addMethod(prog.createMethodSet(T), sel) +} + +// LookupMethod returns the implementation of the method of type T +// identified by (pkg, name). It returns nil if the method exists but +// is abstract, and panics if T has no such method. +// +func (prog *Program) LookupMethod(T types.Type, pkg *types.Package, name string) *Function { + sel := prog.MethodSets.MethodSet(T).Lookup(pkg, name) + if sel == nil { + panic(fmt.Sprintf("%s has no method %s", T, types.Id(pkg, name))) + } + return prog.MethodValue(sel) +} + +// methodSet contains the (concrete) methods of a non-interface type. +type methodSet struct { + mapping map[string]*Function // populated lazily + complete bool // mapping contains all methods +} + +// Precondition: !isInterface(T). +// EXCLUSIVE_LOCKS_REQUIRED(prog.methodsMu) +func (prog *Program) createMethodSet(T types.Type) *methodSet { + mset, ok := prog.methodSets.At(T).(*methodSet) + if !ok { + mset = &methodSet{mapping: make(map[string]*Function)} + prog.methodSets.Set(T, mset) + } + return mset +} + +// EXCLUSIVE_LOCKS_REQUIRED(prog.methodsMu) +func (prog *Program) addMethod(mset *methodSet, sel *types.Selection) *Function { + if sel.Kind() == types.MethodExpr { + panic(sel) + } + id := sel.Obj().Id() + fn := mset.mapping[id] + if fn == nil { + obj := sel.Obj().(*types.Func) + + needsPromotion := len(sel.Index()) > 1 + needsIndirection := !isPointer(recvType(obj)) && isPointer(sel.Recv()) + if needsPromotion || needsIndirection { + fn = makeWrapper(prog, sel) + } else { + fn = prog.declaredFunc(obj) + } + if fn.Signature.Recv() == nil { + panic(fn) // missing receiver + } + mset.mapping[id] = fn + } + return fn +} + +// RuntimeTypes returns a new unordered slice containing all +// concrete types in the program for which a complete (non-empty) +// method set is required at run-time. +// +// Thread-safe. +// +// EXCLUSIVE_LOCKS_ACQUIRED(prog.methodsMu) +// +func (prog *Program) RuntimeTypes() []types.Type { + prog.methodsMu.Lock() + defer prog.methodsMu.Unlock() + + var res []types.Type + prog.methodSets.Iterate(func(T types.Type, v interface{}) { + if v.(*methodSet).complete { + res = append(res, T) + } + }) + return res +} + +// declaredFunc returns the concrete function/method denoted by obj. +// Panic ensues if there is none. +// +func (prog *Program) declaredFunc(obj *types.Func) *Function { + if v := prog.packageLevelValue(obj); v != nil { + return v.(*Function) + } + panic("no concrete method: " + obj.String()) +} + +// needMethodsOf ensures that runtime type information (including the +// complete method set) is available for the specified type T and all +// its subcomponents. +// +// needMethodsOf must be called for at least every type that is an +// operand of some MakeInterface instruction, and for the type of +// every exported package member. +// +// Precondition: T is not a method signature (*Signature with Recv()!=nil). +// +// Thread-safe. (Called via emitConv from multiple builder goroutines.) +// +// TODO(adonovan): make this faster. It accounts for 20% of SSA build time. +// +// EXCLUSIVE_LOCKS_ACQUIRED(prog.methodsMu) +// +func (prog *Program) needMethodsOf(T types.Type) { + prog.methodsMu.Lock() + prog.needMethods(T, false) + prog.methodsMu.Unlock() +} + +// Precondition: T is not a method signature (*Signature with Recv()!=nil). +// Recursive case: skip => don't create methods for T. +// +// EXCLUSIVE_LOCKS_REQUIRED(prog.methodsMu) +// +func (prog *Program) needMethods(T types.Type, skip bool) { + // Each package maintains its own set of types it has visited. + if prevSkip, ok := prog.runtimeTypes.At(T).(bool); ok { + // needMethods(T) was previously called + if !prevSkip || skip { + return // already seen, with same or false 'skip' value + } + } + prog.runtimeTypes.Set(T, skip) + + tmset := prog.MethodSets.MethodSet(T) + + if !skip && !isInterface(T) && tmset.Len() > 0 { + // Create methods of T. + mset := prog.createMethodSet(T) + if !mset.complete { + mset.complete = true + n := tmset.Len() + for i := 0; i < n; i++ { + prog.addMethod(mset, tmset.At(i)) + } + } + } + + // Recursion over signatures of each method. + for i := 0; i < tmset.Len(); i++ { + sig := tmset.At(i).Type().(*types.Signature) + prog.needMethods(sig.Params(), false) + prog.needMethods(sig.Results(), false) + } + + switch t := T.(type) { + case *types.Basic: + // nop + + case *types.Interface: + // nop---handled by recursion over method set. + + case *types.Pointer: + prog.needMethods(t.Elem(), false) + + case *types.Slice: + prog.needMethods(t.Elem(), false) + + case *types.Chan: + prog.needMethods(t.Elem(), false) + + case *types.Map: + prog.needMethods(t.Key(), false) + prog.needMethods(t.Elem(), false) + + case *types.Signature: + if t.Recv() != nil { + panic(fmt.Sprintf("Signature %s has Recv %s", t, t.Recv())) + } + prog.needMethods(t.Params(), false) + prog.needMethods(t.Results(), false) + + case *types.Named: + // A pointer-to-named type can be derived from a named + // type via reflection. It may have methods too. + prog.needMethods(types.NewPointer(T), false) + + // Consider 'type T struct{S}' where S has methods. + // Reflection provides no way to get from T to struct{S}, + // only to S, so the method set of struct{S} is unwanted, + // so set 'skip' flag during recursion. + prog.needMethods(t.Underlying(), true) + + case *types.Array: + prog.needMethods(t.Elem(), false) + + case *types.Struct: + for i, n := 0, t.NumFields(); i < n; i++ { + prog.needMethods(t.Field(i).Type(), false) + } + + case *types.Tuple: + for i, n := 0, t.Len(); i < n; i++ { + prog.needMethods(t.At(i).Type(), false) + } + + default: + panic(T) + } +} diff --git a/vendor/honnef.co/go/tools/ssa/mode.go b/vendor/honnef.co/go/tools/ssa/mode.go new file mode 100644 index 00000000000..d2a269893a7 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/mode.go @@ -0,0 +1,100 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines the BuilderMode type and its command-line flag. + +import ( + "bytes" + "fmt" +) + +// BuilderMode is a bitmask of options for diagnostics and checking. +// +// *BuilderMode satisfies the flag.Value interface. Example: +// +// var mode = ssa.BuilderMode(0) +// func init() { flag.Var(&mode, "build", ssa.BuilderModeDoc) } +// +type BuilderMode uint + +const ( + PrintPackages BuilderMode = 1 << iota // Print package inventory to stdout + PrintFunctions // Print function SSA code to stdout + LogSource // Log source locations as SSA builder progresses + SanityCheckFunctions // Perform sanity checking of function bodies + NaiveForm // Build naïve SSA form: don't replace local loads/stores with registers + BuildSerially // Build packages serially, not in parallel. + GlobalDebug // Enable debug info for all packages + BareInits // Build init functions without guards or calls to dependent inits +) + +const BuilderModeDoc = `Options controlling the SSA builder. +The value is a sequence of zero or more of these letters: +C perform sanity [C]hecking of the SSA form. +D include [D]ebug info for every function. +P print [P]ackage inventory. +F print [F]unction SSA code. +S log [S]ource locations as SSA builder progresses. +L build distinct packages seria[L]ly instead of in parallel. +N build [N]aive SSA form: don't replace local loads/stores with registers. +I build bare [I]nit functions: no init guards or calls to dependent inits. +` + +func (m BuilderMode) String() string { + var buf bytes.Buffer + if m&GlobalDebug != 0 { + buf.WriteByte('D') + } + if m&PrintPackages != 0 { + buf.WriteByte('P') + } + if m&PrintFunctions != 0 { + buf.WriteByte('F') + } + if m&LogSource != 0 { + buf.WriteByte('S') + } + if m&SanityCheckFunctions != 0 { + buf.WriteByte('C') + } + if m&NaiveForm != 0 { + buf.WriteByte('N') + } + if m&BuildSerially != 0 { + buf.WriteByte('L') + } + return buf.String() +} + +// Set parses the flag characters in s and updates *m. +func (m *BuilderMode) Set(s string) error { + var mode BuilderMode + for _, c := range s { + switch c { + case 'D': + mode |= GlobalDebug + case 'P': + mode |= PrintPackages + case 'F': + mode |= PrintFunctions + case 'S': + mode |= LogSource | BuildSerially + case 'C': + mode |= SanityCheckFunctions + case 'N': + mode |= NaiveForm + case 'L': + mode |= BuildSerially + default: + return fmt.Errorf("unknown BuilderMode option: %q", c) + } + } + *m = mode + return nil +} + +// Get returns m. +func (m BuilderMode) Get() interface{} { return m } diff --git a/vendor/honnef.co/go/tools/ssa/print.go b/vendor/honnef.co/go/tools/ssa/print.go new file mode 100644 index 00000000000..6fd277277c0 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/print.go @@ -0,0 +1,435 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file implements the String() methods for all Value and +// Instruction types. + +import ( + "bytes" + "fmt" + "go/types" + "io" + "reflect" + "sort" + + "golang.org/x/tools/go/types/typeutil" +) + +// relName returns the name of v relative to i. +// In most cases, this is identical to v.Name(), but references to +// Functions (including methods) and Globals use RelString and +// all types are displayed with relType, so that only cross-package +// references are package-qualified. +// +func relName(v Value, i Instruction) string { + var from *types.Package + if i != nil { + from = i.Parent().pkg() + } + switch v := v.(type) { + case Member: // *Function or *Global + return v.RelString(from) + case *Const: + return v.RelString(from) + } + return v.Name() +} + +func relType(t types.Type, from *types.Package) string { + return types.TypeString(t, types.RelativeTo(from)) +} + +func relString(m Member, from *types.Package) string { + // NB: not all globals have an Object (e.g. init$guard), + // so use Package().Object not Object.Package(). + if pkg := m.Package().Pkg; pkg != nil && pkg != from { + return fmt.Sprintf("%s.%s", pkg.Path(), m.Name()) + } + return m.Name() +} + +// Value.String() +// +// This method is provided only for debugging. +// It never appears in disassembly, which uses Value.Name(). + +func (v *Parameter) String() string { + from := v.Parent().pkg() + return fmt.Sprintf("parameter %s : %s", v.Name(), relType(v.Type(), from)) +} + +func (v *FreeVar) String() string { + from := v.Parent().pkg() + return fmt.Sprintf("freevar %s : %s", v.Name(), relType(v.Type(), from)) +} + +func (v *Builtin) String() string { + return fmt.Sprintf("builtin %s", v.Name()) +} + +// Instruction.String() + +func (v *Alloc) String() string { + op := "local" + if v.Heap { + op = "new" + } + from := v.Parent().pkg() + return fmt.Sprintf("%s %s (%s)", op, relType(deref(v.Type()), from), v.Comment) +} + +func (v *Phi) String() string { + var b bytes.Buffer + b.WriteString("phi [") + for i, edge := range v.Edges { + if i > 0 { + b.WriteString(", ") + } + // Be robust against malformed CFG. + if v.block == nil { + b.WriteString("??") + continue + } + block := -1 + if i < len(v.block.Preds) { + block = v.block.Preds[i].Index + } + fmt.Fprintf(&b, "%d: ", block) + edgeVal := "" // be robust + if edge != nil { + edgeVal = relName(edge, v) + } + b.WriteString(edgeVal) + } + b.WriteString("]") + if v.Comment != "" { + b.WriteString(" #") + b.WriteString(v.Comment) + } + return b.String() +} + +func printCall(v *CallCommon, prefix string, instr Instruction) string { + var b bytes.Buffer + b.WriteString(prefix) + if !v.IsInvoke() { + b.WriteString(relName(v.Value, instr)) + } else { + fmt.Fprintf(&b, "invoke %s.%s", relName(v.Value, instr), v.Method.Name()) + } + b.WriteString("(") + for i, arg := range v.Args { + if i > 0 { + b.WriteString(", ") + } + b.WriteString(relName(arg, instr)) + } + if v.Signature().Variadic() { + b.WriteString("...") + } + b.WriteString(")") + return b.String() +} + +func (c *CallCommon) String() string { + return printCall(c, "", nil) +} + +func (v *Call) String() string { + return printCall(&v.Call, "", v) +} + +func (v *BinOp) String() string { + return fmt.Sprintf("%s %s %s", relName(v.X, v), v.Op.String(), relName(v.Y, v)) +} + +func (v *UnOp) String() string { + return fmt.Sprintf("%s%s%s", v.Op, relName(v.X, v), commaOk(v.CommaOk)) +} + +func printConv(prefix string, v, x Value) string { + from := v.Parent().pkg() + return fmt.Sprintf("%s %s <- %s (%s)", + prefix, + relType(v.Type(), from), + relType(x.Type(), from), + relName(x, v.(Instruction))) +} + +func (v *ChangeType) String() string { return printConv("changetype", v, v.X) } +func (v *Convert) String() string { return printConv("convert", v, v.X) } +func (v *ChangeInterface) String() string { return printConv("change interface", v, v.X) } +func (v *MakeInterface) String() string { return printConv("make", v, v.X) } + +func (v *MakeClosure) String() string { + var b bytes.Buffer + fmt.Fprintf(&b, "make closure %s", relName(v.Fn, v)) + if v.Bindings != nil { + b.WriteString(" [") + for i, c := range v.Bindings { + if i > 0 { + b.WriteString(", ") + } + b.WriteString(relName(c, v)) + } + b.WriteString("]") + } + return b.String() +} + +func (v *MakeSlice) String() string { + from := v.Parent().pkg() + return fmt.Sprintf("make %s %s %s", + relType(v.Type(), from), + relName(v.Len, v), + relName(v.Cap, v)) +} + +func (v *Slice) String() string { + var b bytes.Buffer + b.WriteString("slice ") + b.WriteString(relName(v.X, v)) + b.WriteString("[") + if v.Low != nil { + b.WriteString(relName(v.Low, v)) + } + b.WriteString(":") + if v.High != nil { + b.WriteString(relName(v.High, v)) + } + if v.Max != nil { + b.WriteString(":") + b.WriteString(relName(v.Max, v)) + } + b.WriteString("]") + return b.String() +} + +func (v *MakeMap) String() string { + res := "" + if v.Reserve != nil { + res = relName(v.Reserve, v) + } + from := v.Parent().pkg() + return fmt.Sprintf("make %s %s", relType(v.Type(), from), res) +} + +func (v *MakeChan) String() string { + from := v.Parent().pkg() + return fmt.Sprintf("make %s %s", relType(v.Type(), from), relName(v.Size, v)) +} + +func (v *FieldAddr) String() string { + st := deref(v.X.Type()).Underlying().(*types.Struct) + // Be robust against a bad index. + name := "?" + if 0 <= v.Field && v.Field < st.NumFields() { + name = st.Field(v.Field).Name() + } + return fmt.Sprintf("&%s.%s [#%d]", relName(v.X, v), name, v.Field) +} + +func (v *Field) String() string { + st := v.X.Type().Underlying().(*types.Struct) + // Be robust against a bad index. + name := "?" + if 0 <= v.Field && v.Field < st.NumFields() { + name = st.Field(v.Field).Name() + } + return fmt.Sprintf("%s.%s [#%d]", relName(v.X, v), name, v.Field) +} + +func (v *IndexAddr) String() string { + return fmt.Sprintf("&%s[%s]", relName(v.X, v), relName(v.Index, v)) +} + +func (v *Index) String() string { + return fmt.Sprintf("%s[%s]", relName(v.X, v), relName(v.Index, v)) +} + +func (v *Lookup) String() string { + return fmt.Sprintf("%s[%s]%s", relName(v.X, v), relName(v.Index, v), commaOk(v.CommaOk)) +} + +func (v *Range) String() string { + return "range " + relName(v.X, v) +} + +func (v *Next) String() string { + return "next " + relName(v.Iter, v) +} + +func (v *TypeAssert) String() string { + from := v.Parent().pkg() + return fmt.Sprintf("typeassert%s %s.(%s)", commaOk(v.CommaOk), relName(v.X, v), relType(v.AssertedType, from)) +} + +func (v *Extract) String() string { + return fmt.Sprintf("extract %s #%d", relName(v.Tuple, v), v.Index) +} + +func (s *Jump) String() string { + // Be robust against malformed CFG. + block := -1 + if s.block != nil && len(s.block.Succs) == 1 { + block = s.block.Succs[0].Index + } + return fmt.Sprintf("jump %d", block) +} + +func (s *If) String() string { + // Be robust against malformed CFG. + tblock, fblock := -1, -1 + if s.block != nil && len(s.block.Succs) == 2 { + tblock = s.block.Succs[0].Index + fblock = s.block.Succs[1].Index + } + return fmt.Sprintf("if %s goto %d else %d", relName(s.Cond, s), tblock, fblock) +} + +func (s *Go) String() string { + return printCall(&s.Call, "go ", s) +} + +func (s *Panic) String() string { + return "panic " + relName(s.X, s) +} + +func (s *Return) String() string { + var b bytes.Buffer + b.WriteString("return") + for i, r := range s.Results { + if i == 0 { + b.WriteString(" ") + } else { + b.WriteString(", ") + } + b.WriteString(relName(r, s)) + } + return b.String() +} + +func (*RunDefers) String() string { + return "rundefers" +} + +func (s *Send) String() string { + return fmt.Sprintf("send %s <- %s", relName(s.Chan, s), relName(s.X, s)) +} + +func (s *Defer) String() string { + return printCall(&s.Call, "defer ", s) +} + +func (s *Select) String() string { + var b bytes.Buffer + for i, st := range s.States { + if i > 0 { + b.WriteString(", ") + } + if st.Dir == types.RecvOnly { + b.WriteString("<-") + b.WriteString(relName(st.Chan, s)) + } else { + b.WriteString(relName(st.Chan, s)) + b.WriteString("<-") + b.WriteString(relName(st.Send, s)) + } + } + non := "" + if !s.Blocking { + non = "non" + } + return fmt.Sprintf("select %sblocking [%s]", non, b.String()) +} + +func (s *Store) String() string { + return fmt.Sprintf("*%s = %s", relName(s.Addr, s), relName(s.Val, s)) +} + +func (s *BlankStore) String() string { + return fmt.Sprintf("_ = %s", relName(s.Val, s)) +} + +func (s *MapUpdate) String() string { + return fmt.Sprintf("%s[%s] = %s", relName(s.Map, s), relName(s.Key, s), relName(s.Value, s)) +} + +func (s *DebugRef) String() string { + p := s.Parent().Prog.Fset.Position(s.Pos()) + var descr interface{} + if s.object != nil { + descr = s.object // e.g. "var x int" + } else { + descr = reflect.TypeOf(s.Expr) // e.g. "*ast.CallExpr" + } + var addr string + if s.IsAddr { + addr = "address of " + } + return fmt.Sprintf("; %s%s @ %d:%d is %s", addr, descr, p.Line, p.Column, s.X.Name()) +} + +func (p *Package) String() string { + return "package " + p.Pkg.Path() +} + +var _ io.WriterTo = (*Package)(nil) // *Package implements io.Writer + +func (p *Package) WriteTo(w io.Writer) (int64, error) { + var buf bytes.Buffer + WritePackage(&buf, p) + n, err := w.Write(buf.Bytes()) + return int64(n), err +} + +// WritePackage writes to buf a human-readable summary of p. +func WritePackage(buf *bytes.Buffer, p *Package) { + fmt.Fprintf(buf, "%s:\n", p) + + var names []string + maxname := 0 + for name := range p.Members { + if l := len(name); l > maxname { + maxname = l + } + names = append(names, name) + } + + from := p.Pkg + sort.Strings(names) + for _, name := range names { + switch mem := p.Members[name].(type) { + case *NamedConst: + fmt.Fprintf(buf, " const %-*s %s = %s\n", + maxname, name, mem.Name(), mem.Value.RelString(from)) + + case *Function: + fmt.Fprintf(buf, " func %-*s %s\n", + maxname, name, relType(mem.Type(), from)) + + case *Type: + fmt.Fprintf(buf, " type %-*s %s\n", + maxname, name, relType(mem.Type().Underlying(), from)) + for _, meth := range typeutil.IntuitiveMethodSet(mem.Type(), &p.Prog.MethodSets) { + fmt.Fprintf(buf, " %s\n", types.SelectionString(meth, types.RelativeTo(from))) + } + + case *Global: + fmt.Fprintf(buf, " var %-*s %s\n", + maxname, name, relType(mem.Type().(*types.Pointer).Elem(), from)) + } + } + + fmt.Fprintf(buf, "\n") +} + +func commaOk(x bool) string { + if x { + return ",ok" + } + return "" +} diff --git a/vendor/honnef.co/go/tools/ssa/sanity.go b/vendor/honnef.co/go/tools/ssa/sanity.go new file mode 100644 index 00000000000..1d29b66b02c --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/sanity.go @@ -0,0 +1,535 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// An optional pass for sanity-checking invariants of the SSA representation. +// Currently it checks CFG invariants but little at the instruction level. + +import ( + "fmt" + "go/types" + "io" + "os" + "strings" +) + +type sanity struct { + reporter io.Writer + fn *Function + block *BasicBlock + instrs map[Instruction]struct{} + insane bool +} + +// sanityCheck performs integrity checking of the SSA representation +// of the function fn and returns true if it was valid. Diagnostics +// are written to reporter if non-nil, os.Stderr otherwise. Some +// diagnostics are only warnings and do not imply a negative result. +// +// Sanity-checking is intended to facilitate the debugging of code +// transformation passes. +// +func sanityCheck(fn *Function, reporter io.Writer) bool { + if reporter == nil { + reporter = os.Stderr + } + return (&sanity{reporter: reporter}).checkFunction(fn) +} + +// mustSanityCheck is like sanityCheck but panics instead of returning +// a negative result. +// +func mustSanityCheck(fn *Function, reporter io.Writer) { + if !sanityCheck(fn, reporter) { + fn.WriteTo(os.Stderr) + panic("SanityCheck failed") + } +} + +func (s *sanity) diagnostic(prefix, format string, args ...interface{}) { + fmt.Fprintf(s.reporter, "%s: function %s", prefix, s.fn) + if s.block != nil { + fmt.Fprintf(s.reporter, ", block %s", s.block) + } + io.WriteString(s.reporter, ": ") + fmt.Fprintf(s.reporter, format, args...) + io.WriteString(s.reporter, "\n") +} + +func (s *sanity) errorf(format string, args ...interface{}) { + s.insane = true + s.diagnostic("Error", format, args...) +} + +func (s *sanity) warnf(format string, args ...interface{}) { + s.diagnostic("Warning", format, args...) +} + +// findDuplicate returns an arbitrary basic block that appeared more +// than once in blocks, or nil if all were unique. +func findDuplicate(blocks []*BasicBlock) *BasicBlock { + if len(blocks) < 2 { + return nil + } + if blocks[0] == blocks[1] { + return blocks[0] + } + // Slow path: + m := make(map[*BasicBlock]bool) + for _, b := range blocks { + if m[b] { + return b + } + m[b] = true + } + return nil +} + +func (s *sanity) checkInstr(idx int, instr Instruction) { + switch instr := instr.(type) { + case *If, *Jump, *Return, *Panic: + s.errorf("control flow instruction not at end of block") + case *Phi: + if idx == 0 { + // It suffices to apply this check to just the first phi node. + if dup := findDuplicate(s.block.Preds); dup != nil { + s.errorf("phi node in block with duplicate predecessor %s", dup) + } + } else { + prev := s.block.Instrs[idx-1] + if _, ok := prev.(*Phi); !ok { + s.errorf("Phi instruction follows a non-Phi: %T", prev) + } + } + if ne, np := len(instr.Edges), len(s.block.Preds); ne != np { + s.errorf("phi node has %d edges but %d predecessors", ne, np) + + } else { + for i, e := range instr.Edges { + if e == nil { + s.errorf("phi node '%s' has no value for edge #%d from %s", instr.Comment, i, s.block.Preds[i]) + } + } + } + + case *Alloc: + if !instr.Heap { + found := false + for _, l := range s.fn.Locals { + if l == instr { + found = true + break + } + } + if !found { + s.errorf("local alloc %s = %s does not appear in Function.Locals", instr.Name(), instr) + } + } + + case *BinOp: + case *Call: + case *ChangeInterface: + case *ChangeType: + case *Convert: + if _, ok := instr.X.Type().Underlying().(*types.Basic); !ok { + if _, ok := instr.Type().Underlying().(*types.Basic); !ok { + s.errorf("convert %s -> %s: at least one type must be basic", instr.X.Type(), instr.Type()) + } + } + + case *Defer: + case *Extract: + case *Field: + case *FieldAddr: + case *Go: + case *Index: + case *IndexAddr: + case *Lookup: + case *MakeChan: + case *MakeClosure: + numFree := len(instr.Fn.(*Function).FreeVars) + numBind := len(instr.Bindings) + if numFree != numBind { + s.errorf("MakeClosure has %d Bindings for function %s with %d free vars", + numBind, instr.Fn, numFree) + + } + if recv := instr.Type().(*types.Signature).Recv(); recv != nil { + s.errorf("MakeClosure's type includes receiver %s", recv.Type()) + } + + case *MakeInterface: + case *MakeMap: + case *MakeSlice: + case *MapUpdate: + case *Next: + case *Range: + case *RunDefers: + case *Select: + case *Send: + case *Slice: + case *Store: + case *TypeAssert: + case *UnOp: + case *DebugRef: + case *BlankStore: + case *Sigma: + // TODO(adonovan): implement checks. + default: + panic(fmt.Sprintf("Unknown instruction type: %T", instr)) + } + + if call, ok := instr.(CallInstruction); ok { + if call.Common().Signature() == nil { + s.errorf("nil signature: %s", call) + } + } + + // Check that value-defining instructions have valid types + // and a valid referrer list. + if v, ok := instr.(Value); ok { + t := v.Type() + if t == nil { + s.errorf("no type: %s = %s", v.Name(), v) + } else if t == tRangeIter { + // not a proper type; ignore. + } else if b, ok := t.Underlying().(*types.Basic); ok && b.Info()&types.IsUntyped != 0 { + s.errorf("instruction has 'untyped' result: %s = %s : %s", v.Name(), v, t) + } + s.checkReferrerList(v) + } + + // Untyped constants are legal as instruction Operands(), + // for example: + // _ = "foo"[0] + // or: + // if wordsize==64 {...} + + // All other non-Instruction Values can be found via their + // enclosing Function or Package. +} + +func (s *sanity) checkFinalInstr(instr Instruction) { + switch instr := instr.(type) { + case *If: + if nsuccs := len(s.block.Succs); nsuccs != 2 { + s.errorf("If-terminated block has %d successors; expected 2", nsuccs) + return + } + if s.block.Succs[0] == s.block.Succs[1] { + s.errorf("If-instruction has same True, False target blocks: %s", s.block.Succs[0]) + return + } + + case *Jump: + if nsuccs := len(s.block.Succs); nsuccs != 1 { + s.errorf("Jump-terminated block has %d successors; expected 1", nsuccs) + return + } + + case *Return: + if nsuccs := len(s.block.Succs); nsuccs != 0 { + s.errorf("Return-terminated block has %d successors; expected none", nsuccs) + return + } + if na, nf := len(instr.Results), s.fn.Signature.Results().Len(); nf != na { + s.errorf("%d-ary return in %d-ary function", na, nf) + } + + case *Panic: + if nsuccs := len(s.block.Succs); nsuccs != 0 { + s.errorf("Panic-terminated block has %d successors; expected none", nsuccs) + return + } + + default: + s.errorf("non-control flow instruction at end of block") + } +} + +func (s *sanity) checkBlock(b *BasicBlock, index int) { + s.block = b + + if b.Index != index { + s.errorf("block has incorrect Index %d", b.Index) + } + if b.parent != s.fn { + s.errorf("block has incorrect parent %s", b.parent) + } + + // Check all blocks are reachable. + // (The entry block is always implicitly reachable, + // as is the Recover block, if any.) + if (index > 0 && b != b.parent.Recover) && len(b.Preds) == 0 { + s.warnf("unreachable block") + if b.Instrs == nil { + // Since this block is about to be pruned, + // tolerating transient problems in it + // simplifies other optimizations. + return + } + } + + // Check predecessor and successor relations are dual, + // and that all blocks in CFG belong to same function. + for _, a := range b.Preds { + found := false + for _, bb := range a.Succs { + if bb == b { + found = true + break + } + } + if !found { + s.errorf("expected successor edge in predecessor %s; found only: %s", a, a.Succs) + } + if a.parent != s.fn { + s.errorf("predecessor %s belongs to different function %s", a, a.parent) + } + } + for _, c := range b.Succs { + found := false + for _, bb := range c.Preds { + if bb == b { + found = true + break + } + } + if !found { + s.errorf("expected predecessor edge in successor %s; found only: %s", c, c.Preds) + } + if c.parent != s.fn { + s.errorf("successor %s belongs to different function %s", c, c.parent) + } + } + + // Check each instruction is sane. + n := len(b.Instrs) + if n == 0 { + s.errorf("basic block contains no instructions") + } + var rands [10]*Value // reuse storage + for j, instr := range b.Instrs { + if instr == nil { + s.errorf("nil instruction at index %d", j) + continue + } + if b2 := instr.Block(); b2 == nil { + s.errorf("nil Block() for instruction at index %d", j) + continue + } else if b2 != b { + s.errorf("wrong Block() (%s) for instruction at index %d ", b2, j) + continue + } + if j < n-1 { + s.checkInstr(j, instr) + } else { + s.checkFinalInstr(instr) + } + + // Check Instruction.Operands. + operands: + for i, op := range instr.Operands(rands[:0]) { + if op == nil { + s.errorf("nil operand pointer %d of %s", i, instr) + continue + } + val := *op + if val == nil { + continue // a nil operand is ok + } + + // Check that "untyped" types only appear on constant operands. + if _, ok := (*op).(*Const); !ok { + if basic, ok := (*op).Type().(*types.Basic); ok { + if basic.Info()&types.IsUntyped != 0 { + s.errorf("operand #%d of %s is untyped: %s", i, instr, basic) + } + } + } + + // Check that Operands that are also Instructions belong to same function. + // TODO(adonovan): also check their block dominates block b. + if val, ok := val.(Instruction); ok { + if val.Block() == nil { + s.errorf("operand %d of %s is an instruction (%s) that belongs to no block", i, instr, val) + } else if val.Parent() != s.fn { + s.errorf("operand %d of %s is an instruction (%s) from function %s", i, instr, val, val.Parent()) + } + } + + // Check that each function-local operand of + // instr refers back to instr. (NB: quadratic) + switch val := val.(type) { + case *Const, *Global, *Builtin: + continue // not local + case *Function: + if val.parent == nil { + continue // only anon functions are local + } + } + + // TODO(adonovan): check val.Parent() != nil <=> val.Referrers() is defined. + + if refs := val.Referrers(); refs != nil { + for _, ref := range *refs { + if ref == instr { + continue operands + } + } + s.errorf("operand %d of %s (%s) does not refer to us", i, instr, val) + } else { + s.errorf("operand %d of %s (%s) has no referrers", i, instr, val) + } + } + } +} + +func (s *sanity) checkReferrerList(v Value) { + refs := v.Referrers() + if refs == nil { + s.errorf("%s has missing referrer list", v.Name()) + return + } + for i, ref := range *refs { + if _, ok := s.instrs[ref]; !ok { + s.errorf("%s.Referrers()[%d] = %s is not an instruction belonging to this function", v.Name(), i, ref) + } + } +} + +func (s *sanity) checkFunction(fn *Function) bool { + // TODO(adonovan): check Function invariants: + // - check params match signature + // - check transient fields are nil + // - warn if any fn.Locals do not appear among block instructions. + s.fn = fn + if fn.Prog == nil { + s.errorf("nil Prog") + } + + _ = fn.String() // must not crash + _ = fn.RelString(fn.pkg()) // must not crash + + // All functions have a package, except delegates (which are + // shared across packages, or duplicated as weak symbols in a + // separate-compilation model), and error.Error. + if fn.Pkg == nil { + if strings.HasPrefix(fn.Synthetic, "wrapper ") || + strings.HasPrefix(fn.Synthetic, "bound ") || + strings.HasPrefix(fn.Synthetic, "thunk ") || + strings.HasSuffix(fn.name, "Error") { + // ok + } else { + s.errorf("nil Pkg") + } + } + if src, syn := fn.Synthetic == "", fn.Syntax() != nil; src != syn { + s.errorf("got fromSource=%t, hasSyntax=%t; want same values", src, syn) + } + for i, l := range fn.Locals { + if l.Parent() != fn { + s.errorf("Local %s at index %d has wrong parent", l.Name(), i) + } + if l.Heap { + s.errorf("Local %s at index %d has Heap flag set", l.Name(), i) + } + } + // Build the set of valid referrers. + s.instrs = make(map[Instruction]struct{}) + for _, b := range fn.Blocks { + for _, instr := range b.Instrs { + s.instrs[instr] = struct{}{} + } + } + for i, p := range fn.Params { + if p.Parent() != fn { + s.errorf("Param %s at index %d has wrong parent", p.Name(), i) + } + // Check common suffix of Signature and Params match type. + if sig := fn.Signature; sig != nil { + j := i - len(fn.Params) + sig.Params().Len() // index within sig.Params + if j < 0 { + continue + } + if !types.Identical(p.Type(), sig.Params().At(j).Type()) { + s.errorf("Param %s at index %d has wrong type (%s, versus %s in Signature)", p.Name(), i, p.Type(), sig.Params().At(j).Type()) + + } + } + + s.checkReferrerList(p) + } + for i, fv := range fn.FreeVars { + if fv.Parent() != fn { + s.errorf("FreeVar %s at index %d has wrong parent", fv.Name(), i) + } + s.checkReferrerList(fv) + } + + if fn.Blocks != nil && len(fn.Blocks) == 0 { + // Function _had_ blocks (so it's not external) but + // they were "optimized" away, even the entry block. + s.errorf("Blocks slice is non-nil but empty") + } + for i, b := range fn.Blocks { + if b == nil { + s.warnf("nil *BasicBlock at f.Blocks[%d]", i) + continue + } + s.checkBlock(b, i) + } + if fn.Recover != nil && fn.Blocks[fn.Recover.Index] != fn.Recover { + s.errorf("Recover block is not in Blocks slice") + } + + s.block = nil + for i, anon := range fn.AnonFuncs { + if anon.Parent() != fn { + s.errorf("AnonFuncs[%d]=%s but %s.Parent()=%s", i, anon, anon, anon.Parent()) + } + } + s.fn = nil + return !s.insane +} + +// sanityCheckPackage checks invariants of packages upon creation. +// It does not require that the package is built. +// Unlike sanityCheck (for functions), it just panics at the first error. +func sanityCheckPackage(pkg *Package) { + if pkg.Pkg == nil { + panic(fmt.Sprintf("Package %s has no Object", pkg)) + } + _ = pkg.String() // must not crash + + for name, mem := range pkg.Members { + if name != mem.Name() { + panic(fmt.Sprintf("%s: %T.Name() = %s, want %s", + pkg.Pkg.Path(), mem, mem.Name(), name)) + } + obj := mem.Object() + if obj == nil { + // This check is sound because fields + // {Global,Function}.object have type + // types.Object. (If they were declared as + // *types.{Var,Func}, we'd have a non-empty + // interface containing a nil pointer.) + + continue // not all members have typechecker objects + } + if obj.Name() != name { + if obj.Name() == "init" && strings.HasPrefix(mem.Name(), "init#") { + // Ok. The name of a declared init function varies between + // its types.Func ("init") and its ssa.Function ("init#%d"). + } else { + panic(fmt.Sprintf("%s: %T.Object().Name() = %s, want %s", + pkg.Pkg.Path(), mem, obj.Name(), name)) + } + } + if obj.Pos() != mem.Pos() { + panic(fmt.Sprintf("%s Pos=%d obj.Pos=%d", mem, mem.Pos(), obj.Pos())) + } + } +} diff --git a/vendor/honnef.co/go/tools/ssa/source.go b/vendor/honnef.co/go/tools/ssa/source.go new file mode 100644 index 00000000000..8d9cca17039 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/source.go @@ -0,0 +1,293 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines utilities for working with source positions +// or source-level named entities ("objects"). + +// TODO(adonovan): test that {Value,Instruction}.Pos() positions match +// the originating syntax, as specified. + +import ( + "go/ast" + "go/token" + "go/types" +) + +// EnclosingFunction returns the function that contains the syntax +// node denoted by path. +// +// Syntax associated with package-level variable specifications is +// enclosed by the package's init() function. +// +// Returns nil if not found; reasons might include: +// - the node is not enclosed by any function. +// - the node is within an anonymous function (FuncLit) and +// its SSA function has not been created yet +// (pkg.Build() has not yet been called). +// +func EnclosingFunction(pkg *Package, path []ast.Node) *Function { + // Start with package-level function... + fn := findEnclosingPackageLevelFunction(pkg, path) + if fn == nil { + return nil // not in any function + } + + // ...then walk down the nested anonymous functions. + n := len(path) +outer: + for i := range path { + if lit, ok := path[n-1-i].(*ast.FuncLit); ok { + for _, anon := range fn.AnonFuncs { + if anon.Pos() == lit.Type.Func { + fn = anon + continue outer + } + } + // SSA function not found: + // - package not yet built, or maybe + // - builder skipped FuncLit in dead block + // (in principle; but currently the Builder + // generates even dead FuncLits). + return nil + } + } + return fn +} + +// HasEnclosingFunction returns true if the AST node denoted by path +// is contained within the declaration of some function or +// package-level variable. +// +// Unlike EnclosingFunction, the behaviour of this function does not +// depend on whether SSA code for pkg has been built, so it can be +// used to quickly reject check inputs that will cause +// EnclosingFunction to fail, prior to SSA building. +// +func HasEnclosingFunction(pkg *Package, path []ast.Node) bool { + return findEnclosingPackageLevelFunction(pkg, path) != nil +} + +// findEnclosingPackageLevelFunction returns the Function +// corresponding to the package-level function enclosing path. +// +func findEnclosingPackageLevelFunction(pkg *Package, path []ast.Node) *Function { + if n := len(path); n >= 2 { // [... {Gen,Func}Decl File] + switch decl := path[n-2].(type) { + case *ast.GenDecl: + if decl.Tok == token.VAR && n >= 3 { + // Package-level 'var' initializer. + return pkg.init + } + + case *ast.FuncDecl: + if decl.Recv == nil && decl.Name.Name == "init" { + // Explicit init() function. + for _, b := range pkg.init.Blocks { + for _, instr := range b.Instrs { + if instr, ok := instr.(*Call); ok { + if callee, ok := instr.Call.Value.(*Function); ok && callee.Pkg == pkg && callee.Pos() == decl.Name.NamePos { + return callee + } + } + } + } + // Hack: return non-nil when SSA is not yet + // built so that HasEnclosingFunction works. + return pkg.init + } + // Declared function/method. + return findNamedFunc(pkg, decl.Name.NamePos) + } + } + return nil // not in any function +} + +// findNamedFunc returns the named function whose FuncDecl.Ident is at +// position pos. +// +func findNamedFunc(pkg *Package, pos token.Pos) *Function { + // Look at all package members and method sets of named types. + // Not very efficient. + for _, mem := range pkg.Members { + switch mem := mem.(type) { + case *Function: + if mem.Pos() == pos { + return mem + } + case *Type: + mset := pkg.Prog.MethodSets.MethodSet(types.NewPointer(mem.Type())) + for i, n := 0, mset.Len(); i < n; i++ { + // Don't call Program.Method: avoid creating wrappers. + obj := mset.At(i).Obj().(*types.Func) + if obj.Pos() == pos { + return pkg.values[obj].(*Function) + } + } + } + } + return nil +} + +// ValueForExpr returns the SSA Value that corresponds to non-constant +// expression e. +// +// It returns nil if no value was found, e.g. +// - the expression is not lexically contained within f; +// - f was not built with debug information; or +// - e is a constant expression. (For efficiency, no debug +// information is stored for constants. Use +// go/types.Info.Types[e].Value instead.) +// - e is a reference to nil or a built-in function. +// - the value was optimised away. +// +// If e is an addressable expression used in an lvalue context, +// value is the address denoted by e, and isAddr is true. +// +// The types of e (or &e, if isAddr) and the result are equal +// (modulo "untyped" bools resulting from comparisons). +// +// (Tip: to find the ssa.Value given a source position, use +// astutil.PathEnclosingInterval to locate the ast.Node, then +// EnclosingFunction to locate the Function, then ValueForExpr to find +// the ssa.Value.) +// +func (f *Function) ValueForExpr(e ast.Expr) (value Value, isAddr bool) { + if f.debugInfo() { // (opt) + e = unparen(e) + for _, b := range f.Blocks { + for _, instr := range b.Instrs { + if ref, ok := instr.(*DebugRef); ok { + if ref.Expr == e { + return ref.X, ref.IsAddr + } + } + } + } + } + return +} + +// --- Lookup functions for source-level named entities (types.Objects) --- + +// Package returns the SSA Package corresponding to the specified +// type-checker package object. +// It returns nil if no such SSA package has been created. +// +func (prog *Program) Package(obj *types.Package) *Package { + return prog.packages[obj] +} + +// packageLevelValue returns the package-level value corresponding to +// the specified named object, which may be a package-level const +// (*Const), var (*Global) or func (*Function) of some package in +// prog. It returns nil if the object is not found. +// +func (prog *Program) packageLevelValue(obj types.Object) Value { + if pkg, ok := prog.packages[obj.Pkg()]; ok { + return pkg.values[obj] + } + return nil +} + +// FuncValue returns the concrete Function denoted by the source-level +// named function obj, or nil if obj denotes an interface method. +// +// TODO(adonovan): check the invariant that obj.Type() matches the +// result's Signature, both in the params/results and in the receiver. +// +func (prog *Program) FuncValue(obj *types.Func) *Function { + fn, _ := prog.packageLevelValue(obj).(*Function) + return fn +} + +// ConstValue returns the SSA Value denoted by the source-level named +// constant obj. +// +func (prog *Program) ConstValue(obj *types.Const) *Const { + // TODO(adonovan): opt: share (don't reallocate) + // Consts for const objects and constant ast.Exprs. + + // Universal constant? {true,false,nil} + if obj.Parent() == types.Universe { + return NewConst(obj.Val(), obj.Type()) + } + // Package-level named constant? + if v := prog.packageLevelValue(obj); v != nil { + return v.(*Const) + } + return NewConst(obj.Val(), obj.Type()) +} + +// VarValue returns the SSA Value that corresponds to a specific +// identifier denoting the source-level named variable obj. +// +// VarValue returns nil if a local variable was not found, perhaps +// because its package was not built, the debug information was not +// requested during SSA construction, or the value was optimized away. +// +// ref is the path to an ast.Ident (e.g. from PathEnclosingInterval), +// and that ident must resolve to obj. +// +// pkg is the package enclosing the reference. (A reference to a var +// always occurs within a function, so we need to know where to find it.) +// +// If the identifier is a field selector and its base expression is +// non-addressable, then VarValue returns the value of that field. +// For example: +// func f() struct {x int} +// f().x // VarValue(x) returns a *Field instruction of type int +// +// All other identifiers denote addressable locations (variables). +// For them, VarValue may return either the variable's address or its +// value, even when the expression is evaluated only for its value; the +// situation is reported by isAddr, the second component of the result. +// +// If !isAddr, the returned value is the one associated with the +// specific identifier. For example, +// var x int // VarValue(x) returns Const 0 here +// x = 1 // VarValue(x) returns Const 1 here +// +// It is not specified whether the value or the address is returned in +// any particular case, as it may depend upon optimizations performed +// during SSA code generation, such as registerization, constant +// folding, avoidance of materialization of subexpressions, etc. +// +func (prog *Program) VarValue(obj *types.Var, pkg *Package, ref []ast.Node) (value Value, isAddr bool) { + // All references to a var are local to some function, possibly init. + fn := EnclosingFunction(pkg, ref) + if fn == nil { + return // e.g. def of struct field; SSA not built? + } + + id := ref[0].(*ast.Ident) + + // Defining ident of a parameter? + if id.Pos() == obj.Pos() { + for _, param := range fn.Params { + if param.Object() == obj { + return param, false + } + } + } + + // Other ident? + for _, b := range fn.Blocks { + for _, instr := range b.Instrs { + if dr, ok := instr.(*DebugRef); ok { + if dr.Pos() == id.Pos() { + return dr.X, dr.IsAddr + } + } + } + } + + // Defining ident of package-level var? + if v := prog.packageLevelValue(obj); v != nil { + return v.(*Global), true + } + + return // e.g. debug info not requested, or var optimized away +} diff --git a/vendor/honnef.co/go/tools/ssa/ssa.go b/vendor/honnef.co/go/tools/ssa/ssa.go new file mode 100644 index 00000000000..aeddd65e581 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/ssa.go @@ -0,0 +1,1745 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This package defines a high-level intermediate representation for +// Go programs using static single-assignment (SSA) form. + +import ( + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + "sync" + + "golang.org/x/tools/go/types/typeutil" +) + +// A Program is a partial or complete Go program converted to SSA form. +type Program struct { + Fset *token.FileSet // position information for the files of this Program + imported map[string]*Package // all importable Packages, keyed by import path + packages map[*types.Package]*Package // all loaded Packages, keyed by object + mode BuilderMode // set of mode bits for SSA construction + MethodSets typeutil.MethodSetCache // cache of type-checker's method-sets + + methodsMu sync.Mutex // guards the following maps: + methodSets typeutil.Map // maps type to its concrete methodSet + runtimeTypes typeutil.Map // types for which rtypes are needed + canon typeutil.Map // type canonicalization map + bounds map[*types.Func]*Function // bounds for curried x.Method closures + thunks map[selectionKey]*Function // thunks for T.Method expressions +} + +// A Package is a single analyzed Go package containing Members for +// all package-level functions, variables, constants and types it +// declares. These may be accessed directly via Members, or via the +// type-specific accessor methods Func, Type, Var and Const. +// +// Members also contains entries for "init" (the synthetic package +// initializer) and "init#%d", the nth declared init function, +// and unspecified other things too. +// +type Package struct { + Prog *Program // the owning program + Pkg *types.Package // the corresponding go/types.Package + Members map[string]Member // all package members keyed by name (incl. init and init#%d) + values map[types.Object]Value // package members (incl. types and methods), keyed by object + init *Function // Func("init"); the package's init function + debug bool // include full debug info in this package + + // The following fields are set transiently, then cleared + // after building. + buildOnce sync.Once // ensures package building occurs once + ninit int32 // number of init functions + info *types.Info // package type information + files []*ast.File // package ASTs +} + +// A Member is a member of a Go package, implemented by *NamedConst, +// *Global, *Function, or *Type; they are created by package-level +// const, var, func and type declarations respectively. +// +type Member interface { + Name() string // declared name of the package member + String() string // package-qualified name of the package member + RelString(*types.Package) string // like String, but relative refs are unqualified + Object() types.Object // typechecker's object for this member, if any + Pos() token.Pos // position of member's declaration, if known + Type() types.Type // type of the package member + Token() token.Token // token.{VAR,FUNC,CONST,TYPE} + Package() *Package // the containing package +} + +// A Type is a Member of a Package representing a package-level named type. +type Type struct { + object *types.TypeName + pkg *Package +} + +// A NamedConst is a Member of a Package representing a package-level +// named constant. +// +// Pos() returns the position of the declaring ast.ValueSpec.Names[*] +// identifier. +// +// NB: a NamedConst is not a Value; it contains a constant Value, which +// it augments with the name and position of its 'const' declaration. +// +type NamedConst struct { + object *types.Const + Value *Const + pkg *Package +} + +// A Value is an SSA value that can be referenced by an instruction. +type Value interface { + // Name returns the name of this value, and determines how + // this Value appears when used as an operand of an + // Instruction. + // + // This is the same as the source name for Parameters, + // Builtins, Functions, FreeVars, Globals. + // For constants, it is a representation of the constant's value + // and type. For all other Values this is the name of the + // virtual register defined by the instruction. + // + // The name of an SSA Value is not semantically significant, + // and may not even be unique within a function. + Name() string + + // If this value is an Instruction, String returns its + // disassembled form; otherwise it returns unspecified + // human-readable information about the Value, such as its + // kind, name and type. + String() string + + // Type returns the type of this value. Many instructions + // (e.g. IndexAddr) change their behaviour depending on the + // types of their operands. + Type() types.Type + + // Parent returns the function to which this Value belongs. + // It returns nil for named Functions, Builtin, Const and Global. + Parent() *Function + + // Referrers returns the list of instructions that have this + // value as one of their operands; it may contain duplicates + // if an instruction has a repeated operand. + // + // Referrers actually returns a pointer through which the + // caller may perform mutations to the object's state. + // + // Referrers is currently only defined if Parent()!=nil, + // i.e. for the function-local values FreeVar, Parameter, + // Functions (iff anonymous) and all value-defining instructions. + // It returns nil for named Functions, Builtin, Const and Global. + // + // Instruction.Operands contains the inverse of this relation. + Referrers() *[]Instruction + + // Pos returns the location of the AST token most closely + // associated with the operation that gave rise to this value, + // or token.NoPos if it was not explicit in the source. + // + // For each ast.Node type, a particular token is designated as + // the closest location for the expression, e.g. the Lparen + // for an *ast.CallExpr. This permits a compact but + // approximate mapping from Values to source positions for use + // in diagnostic messages, for example. + // + // (Do not use this position to determine which Value + // corresponds to an ast.Expr; use Function.ValueForExpr + // instead. NB: it requires that the function was built with + // debug information.) + Pos() token.Pos +} + +// An Instruction is an SSA instruction that computes a new Value or +// has some effect. +// +// An Instruction that defines a value (e.g. BinOp) also implements +// the Value interface; an Instruction that only has an effect (e.g. Store) +// does not. +// +type Instruction interface { + // String returns the disassembled form of this value. + // + // Examples of Instructions that are Values: + // "x + y" (BinOp) + // "len([])" (Call) + // Note that the name of the Value is not printed. + // + // Examples of Instructions that are not Values: + // "return x" (Return) + // "*y = x" (Store) + // + // (The separation Value.Name() from Value.String() is useful + // for some analyses which distinguish the operation from the + // value it defines, e.g., 'y = local int' is both an allocation + // of memory 'local int' and a definition of a pointer y.) + String() string + + // Parent returns the function to which this instruction + // belongs. + Parent() *Function + + // Block returns the basic block to which this instruction + // belongs. + Block() *BasicBlock + + // setBlock sets the basic block to which this instruction belongs. + setBlock(*BasicBlock) + + // Operands returns the operands of this instruction: the + // set of Values it references. + // + // Specifically, it appends their addresses to rands, a + // user-provided slice, and returns the resulting slice, + // permitting avoidance of memory allocation. + // + // The operands are appended in undefined order, but the order + // is consistent for a given Instruction; the addresses are + // always non-nil but may point to a nil Value. Clients may + // store through the pointers, e.g. to effect a value + // renaming. + // + // Value.Referrers is a subset of the inverse of this + // relation. (Referrers are not tracked for all types of + // Values.) + Operands(rands []*Value) []*Value + + // Pos returns the location of the AST token most closely + // associated with the operation that gave rise to this + // instruction, or token.NoPos if it was not explicit in the + // source. + // + // For each ast.Node type, a particular token is designated as + // the closest location for the expression, e.g. the Go token + // for an *ast.GoStmt. This permits a compact but approximate + // mapping from Instructions to source positions for use in + // diagnostic messages, for example. + // + // (Do not use this position to determine which Instruction + // corresponds to an ast.Expr; see the notes for Value.Pos. + // This position may be used to determine which non-Value + // Instruction corresponds to some ast.Stmts, but not all: If + // and Jump instructions have no Pos(), for example.) + Pos() token.Pos +} + +// A Node is a node in the SSA value graph. Every concrete type that +// implements Node is also either a Value, an Instruction, or both. +// +// Node contains the methods common to Value and Instruction, plus the +// Operands and Referrers methods generalized to return nil for +// non-Instructions and non-Values, respectively. +// +// Node is provided to simplify SSA graph algorithms. Clients should +// use the more specific and informative Value or Instruction +// interfaces where appropriate. +// +type Node interface { + // Common methods: + String() string + Pos() token.Pos + Parent() *Function + + // Partial methods: + Operands(rands []*Value) []*Value // nil for non-Instructions + Referrers() *[]Instruction // nil for non-Values +} + +// Function represents the parameters, results, and code of a function +// or method. +// +// If Blocks is nil, this indicates an external function for which no +// Go source code is available. In this case, FreeVars and Locals +// are nil too. Clients performing whole-program analysis must +// handle external functions specially. +// +// Blocks contains the function's control-flow graph (CFG). +// Blocks[0] is the function entry point; block order is not otherwise +// semantically significant, though it may affect the readability of +// the disassembly. +// To iterate over the blocks in dominance order, use DomPreorder(). +// +// Recover is an optional second entry point to which control resumes +// after a recovered panic. The Recover block may contain only a return +// statement, preceded by a load of the function's named return +// parameters, if any. +// +// A nested function (Parent()!=nil) that refers to one or more +// lexically enclosing local variables ("free variables") has FreeVars. +// Such functions cannot be called directly but require a +// value created by MakeClosure which, via its Bindings, supplies +// values for these parameters. +// +// If the function is a method (Signature.Recv() != nil) then the first +// element of Params is the receiver parameter. +// +// A Go package may declare many functions called "init". +// For each one, Object().Name() returns "init" but Name() returns +// "init#1", etc, in declaration order. +// +// Pos() returns the declaring ast.FuncLit.Type.Func or the position +// of the ast.FuncDecl.Name, if the function was explicit in the +// source. Synthetic wrappers, for which Synthetic != "", may share +// the same position as the function they wrap. +// Syntax.Pos() always returns the position of the declaring "func" token. +// +// Type() returns the function's Signature. +// +type Function struct { + name string + object types.Object // a declared *types.Func or one of its wrappers + method *types.Selection // info about provenance of synthetic methods + Signature *types.Signature + pos token.Pos + + Synthetic string // provenance of synthetic function; "" for true source functions + syntax ast.Node // *ast.Func{Decl,Lit}; replaced with simple ast.Node after build, unless debug mode + parent *Function // enclosing function if anon; nil if global + Pkg *Package // enclosing package; nil for shared funcs (wrappers and error.Error) + Prog *Program // enclosing program + Params []*Parameter // function parameters; for methods, includes receiver + FreeVars []*FreeVar // free variables whose values must be supplied by closure + Locals []*Alloc // local variables of this function + Blocks []*BasicBlock // basic blocks of the function; nil => external + Recover *BasicBlock // optional; control transfers here after recovered panic + AnonFuncs []*Function // anonymous functions directly beneath this one + referrers []Instruction // referring instructions (iff Parent() != nil) + + // The following fields are set transiently during building, + // then cleared. + currentBlock *BasicBlock // where to emit code + objects map[types.Object]Value // addresses of local variables + namedResults []*Alloc // tuple of named results + targets *targets // linked stack of branch targets + lblocks map[*ast.Object]*lblock // labelled blocks +} + +// BasicBlock represents an SSA basic block. +// +// The final element of Instrs is always an explicit transfer of +// control (If, Jump, Return, or Panic). +// +// A block may contain no Instructions only if it is unreachable, +// i.e., Preds is nil. Empty blocks are typically pruned. +// +// BasicBlocks and their Preds/Succs relation form a (possibly cyclic) +// graph independent of the SSA Value graph: the control-flow graph or +// CFG. It is illegal for multiple edges to exist between the same +// pair of blocks. +// +// Each BasicBlock is also a node in the dominator tree of the CFG. +// The tree may be navigated using Idom()/Dominees() and queried using +// Dominates(). +// +// The order of Preds and Succs is significant (to Phi and If +// instructions, respectively). +// +type BasicBlock struct { + Index int // index of this block within Parent().Blocks + Comment string // optional label; no semantic significance + parent *Function // parent function + Instrs []Instruction // instructions in order + Preds, Succs []*BasicBlock // predecessors and successors + succs2 [2]*BasicBlock // initial space for Succs + dom domInfo // dominator tree info + gaps int // number of nil Instrs (transient) + rundefers int // number of rundefers (transient) +} + +// Pure values ---------------------------------------- + +// A FreeVar represents a free variable of the function to which it +// belongs. +// +// FreeVars are used to implement anonymous functions, whose free +// variables are lexically captured in a closure formed by +// MakeClosure. The value of such a free var is an Alloc or another +// FreeVar and is considered a potentially escaping heap address, with +// pointer type. +// +// FreeVars are also used to implement bound method closures. Such a +// free var represents the receiver value and may be of any type that +// has concrete methods. +// +// Pos() returns the position of the value that was captured, which +// belongs to an enclosing function. +// +type FreeVar struct { + name string + typ types.Type + pos token.Pos + parent *Function + referrers []Instruction + + // Transiently needed during building. + outer Value // the Value captured from the enclosing context. +} + +// A Parameter represents an input parameter of a function. +// +type Parameter struct { + name string + object types.Object // a *types.Var; nil for non-source locals + typ types.Type + pos token.Pos + parent *Function + referrers []Instruction +} + +// A Const represents the value of a constant expression. +// +// The underlying type of a constant may be any boolean, numeric, or +// string type. In addition, a Const may represent the nil value of +// any reference type---interface, map, channel, pointer, slice, or +// function---but not "untyped nil". +// +// All source-level constant expressions are represented by a Const +// of the same type and value. +// +// Value holds the exact value of the constant, independent of its +// Type(), using the same representation as package go/constant uses for +// constants, or nil for a typed nil value. +// +// Pos() returns token.NoPos. +// +// Example printed form: +// 42:int +// "hello":untyped string +// 3+4i:MyComplex +// +type Const struct { + typ types.Type + Value constant.Value +} + +// A Global is a named Value holding the address of a package-level +// variable. +// +// Pos() returns the position of the ast.ValueSpec.Names[*] +// identifier. +// +type Global struct { + name string + object types.Object // a *types.Var; may be nil for synthetics e.g. init$guard + typ types.Type + pos token.Pos + + Pkg *Package +} + +// A Builtin represents a specific use of a built-in function, e.g. len. +// +// Builtins are immutable values. Builtins do not have addresses. +// Builtins can only appear in CallCommon.Func. +// +// Name() indicates the function: one of the built-in functions from the +// Go spec (excluding "make" and "new") or one of these ssa-defined +// intrinsics: +// +// // wrapnilchk returns ptr if non-nil, panics otherwise. +// // (For use in indirection wrappers.) +// func ssa:wrapnilchk(ptr *T, recvType, methodName string) *T +// +// Object() returns a *types.Builtin for built-ins defined by the spec, +// nil for others. +// +// Type() returns a *types.Signature representing the effective +// signature of the built-in for this call. +// +type Builtin struct { + name string + sig *types.Signature +} + +// Value-defining instructions ---------------------------------------- + +// The Alloc instruction reserves space for a variable of the given type, +// zero-initializes it, and yields its address. +// +// Alloc values are always addresses, and have pointer types, so the +// type of the allocated variable is actually +// Type().Underlying().(*types.Pointer).Elem(). +// +// If Heap is false, Alloc allocates space in the function's +// activation record (frame); we refer to an Alloc(Heap=false) as a +// "local" alloc. Each local Alloc returns the same address each time +// it is executed within the same activation; the space is +// re-initialized to zero. +// +// If Heap is true, Alloc allocates space in the heap; we +// refer to an Alloc(Heap=true) as a "new" alloc. Each new Alloc +// returns a different address each time it is executed. +// +// When Alloc is applied to a channel, map or slice type, it returns +// the address of an uninitialized (nil) reference of that kind; store +// the result of MakeSlice, MakeMap or MakeChan in that location to +// instantiate these types. +// +// Pos() returns the ast.CompositeLit.Lbrace for a composite literal, +// or the ast.CallExpr.Rparen for a call to new() or for a call that +// allocates a varargs slice. +// +// Example printed form: +// t0 = local int +// t1 = new int +// +type Alloc struct { + register + Comment string + Heap bool + index int // dense numbering; for lifting +} + +var _ Instruction = (*Sigma)(nil) +var _ Value = (*Sigma)(nil) + +type Sigma struct { + register + X Value + Branch bool +} + +func (p *Sigma) Value() Value { + v := p.X + for { + sigma, ok := v.(*Sigma) + if !ok { + break + } + v = sigma + } + return v +} + +func (p *Sigma) String() string { + return fmt.Sprintf("σ [%s.%t]", relName(p.X, p), p.Branch) +} + +// The Phi instruction represents an SSA φ-node, which combines values +// that differ across incoming control-flow edges and yields a new +// value. Within a block, all φ-nodes must appear before all non-φ +// nodes. +// +// Pos() returns the position of the && or || for short-circuit +// control-flow joins, or that of the *Alloc for φ-nodes inserted +// during SSA renaming. +// +// Example printed form: +// t2 = phi [0: t0, 1: t1] +// +type Phi struct { + register + Comment string // a hint as to its purpose + Edges []Value // Edges[i] is value for Block().Preds[i] +} + +// The Call instruction represents a function or method call. +// +// The Call instruction yields the function result if there is exactly +// one. Otherwise it returns a tuple, the components of which are +// accessed via Extract. +// +// See CallCommon for generic function call documentation. +// +// Pos() returns the ast.CallExpr.Lparen, if explicit in the source. +// +// Example printed form: +// t2 = println(t0, t1) +// t4 = t3() +// t7 = invoke t5.Println(...t6) +// +type Call struct { + register + Call CallCommon +} + +// The BinOp instruction yields the result of binary operation X Op Y. +// +// Pos() returns the ast.BinaryExpr.OpPos, if explicit in the source. +// +// Example printed form: +// t1 = t0 + 1:int +// +type BinOp struct { + register + // One of: + // ADD SUB MUL QUO REM + - * / % + // AND OR XOR SHL SHR AND_NOT & | ^ << >> &^ + // EQL NEQ LSS LEQ GTR GEQ == != < <= < >= + Op token.Token + X, Y Value +} + +// The UnOp instruction yields the result of Op X. +// ARROW is channel receive. +// MUL is pointer indirection (load). +// XOR is bitwise complement. +// SUB is negation. +// NOT is logical negation. +// +// If CommaOk and Op=ARROW, the result is a 2-tuple of the value above +// and a boolean indicating the success of the receive. The +// components of the tuple are accessed using Extract. +// +// Pos() returns the ast.UnaryExpr.OpPos, if explicit in the source. +// For receive operations (ARROW) implicit in ranging over a channel, +// Pos() returns the ast.RangeStmt.For. +// For implicit memory loads (STAR), Pos() returns the position of the +// most closely associated source-level construct; the details are not +// specified. +// +// Example printed form: +// t0 = *x +// t2 = <-t1,ok +// +type UnOp struct { + register + Op token.Token // One of: NOT SUB ARROW MUL XOR ! - <- * ^ + X Value + CommaOk bool +} + +// The ChangeType instruction applies to X a value-preserving type +// change to Type(). +// +// Type changes are permitted: +// - between a named type and its underlying type. +// - between two named types of the same underlying type. +// - between (possibly named) pointers to identical base types. +// - from a bidirectional channel to a read- or write-channel, +// optionally adding/removing a name. +// +// This operation cannot fail dynamically. +// +// Pos() returns the ast.CallExpr.Lparen, if the instruction arose +// from an explicit conversion in the source. +// +// Example printed form: +// t1 = changetype *int <- IntPtr (t0) +// +type ChangeType struct { + register + X Value +} + +// The Convert instruction yields the conversion of value X to type +// Type(). One or both of those types is basic (but possibly named). +// +// A conversion may change the value and representation of its operand. +// Conversions are permitted: +// - between real numeric types. +// - between complex numeric types. +// - between string and []byte or []rune. +// - between pointers and unsafe.Pointer. +// - between unsafe.Pointer and uintptr. +// - from (Unicode) integer to (UTF-8) string. +// A conversion may imply a type name change also. +// +// This operation cannot fail dynamically. +// +// Conversions of untyped string/number/bool constants to a specific +// representation are eliminated during SSA construction. +// +// Pos() returns the ast.CallExpr.Lparen, if the instruction arose +// from an explicit conversion in the source. +// +// Example printed form: +// t1 = convert []byte <- string (t0) +// +type Convert struct { + register + X Value +} + +// ChangeInterface constructs a value of one interface type from a +// value of another interface type known to be assignable to it. +// This operation cannot fail. +// +// Pos() returns the ast.CallExpr.Lparen if the instruction arose from +// an explicit T(e) conversion; the ast.TypeAssertExpr.Lparen if the +// instruction arose from an explicit e.(T) operation; or token.NoPos +// otherwise. +// +// Example printed form: +// t1 = change interface interface{} <- I (t0) +// +type ChangeInterface struct { + register + X Value +} + +// MakeInterface constructs an instance of an interface type from a +// value of a concrete type. +// +// Use Program.MethodSets.MethodSet(X.Type()) to find the method-set +// of X, and Program.MethodValue(m) to find the implementation of a method. +// +// To construct the zero value of an interface type T, use: +// NewConst(constant.MakeNil(), T, pos) +// +// Pos() returns the ast.CallExpr.Lparen, if the instruction arose +// from an explicit conversion in the source. +// +// Example printed form: +// t1 = make interface{} <- int (42:int) +// t2 = make Stringer <- t0 +// +type MakeInterface struct { + register + X Value +} + +// The MakeClosure instruction yields a closure value whose code is +// Fn and whose free variables' values are supplied by Bindings. +// +// Type() returns a (possibly named) *types.Signature. +// +// Pos() returns the ast.FuncLit.Type.Func for a function literal +// closure or the ast.SelectorExpr.Sel for a bound method closure. +// +// Example printed form: +// t0 = make closure anon@1.2 [x y z] +// t1 = make closure bound$(main.I).add [i] +// +type MakeClosure struct { + register + Fn Value // always a *Function + Bindings []Value // values for each free variable in Fn.FreeVars +} + +// The MakeMap instruction creates a new hash-table-based map object +// and yields a value of kind map. +// +// Type() returns a (possibly named) *types.Map. +// +// Pos() returns the ast.CallExpr.Lparen, if created by make(map), or +// the ast.CompositeLit.Lbrack if created by a literal. +// +// Example printed form: +// t1 = make map[string]int t0 +// t1 = make StringIntMap t0 +// +type MakeMap struct { + register + Reserve Value // initial space reservation; nil => default +} + +// The MakeChan instruction creates a new channel object and yields a +// value of kind chan. +// +// Type() returns a (possibly named) *types.Chan. +// +// Pos() returns the ast.CallExpr.Lparen for the make(chan) that +// created it. +// +// Example printed form: +// t0 = make chan int 0 +// t0 = make IntChan 0 +// +type MakeChan struct { + register + Size Value // int; size of buffer; zero => synchronous. +} + +// The MakeSlice instruction yields a slice of length Len backed by a +// newly allocated array of length Cap. +// +// Both Len and Cap must be non-nil Values of integer type. +// +// (Alloc(types.Array) followed by Slice will not suffice because +// Alloc can only create arrays of constant length.) +// +// Type() returns a (possibly named) *types.Slice. +// +// Pos() returns the ast.CallExpr.Lparen for the make([]T) that +// created it. +// +// Example printed form: +// t1 = make []string 1:int t0 +// t1 = make StringSlice 1:int t0 +// +type MakeSlice struct { + register + Len Value + Cap Value +} + +// The Slice instruction yields a slice of an existing string, slice +// or *array X between optional integer bounds Low and High. +// +// Dynamically, this instruction panics if X evaluates to a nil *array +// pointer. +// +// Type() returns string if the type of X was string, otherwise a +// *types.Slice with the same element type as X. +// +// Pos() returns the ast.SliceExpr.Lbrack if created by a x[:] slice +// operation, the ast.CompositeLit.Lbrace if created by a literal, or +// NoPos if not explicit in the source (e.g. a variadic argument slice). +// +// Example printed form: +// t1 = slice t0[1:] +// +type Slice struct { + register + X Value // slice, string, or *array + Low, High, Max Value // each may be nil +} + +// The FieldAddr instruction yields the address of Field of *struct X. +// +// The field is identified by its index within the field list of the +// struct type of X. +// +// Dynamically, this instruction panics if X evaluates to a nil +// pointer. +// +// Type() returns a (possibly named) *types.Pointer. +// +// Pos() returns the position of the ast.SelectorExpr.Sel for the +// field, if explicit in the source. +// +// Example printed form: +// t1 = &t0.name [#1] +// +type FieldAddr struct { + register + X Value // *struct + Field int // field is X.Type().Underlying().(*types.Pointer).Elem().Underlying().(*types.Struct).Field(Field) +} + +// The Field instruction yields the Field of struct X. +// +// The field is identified by its index within the field list of the +// struct type of X; by using numeric indices we avoid ambiguity of +// package-local identifiers and permit compact representations. +// +// Pos() returns the position of the ast.SelectorExpr.Sel for the +// field, if explicit in the source. +// +// Example printed form: +// t1 = t0.name [#1] +// +type Field struct { + register + X Value // struct + Field int // index into X.Type().(*types.Struct).Fields +} + +// The IndexAddr instruction yields the address of the element at +// index Index of collection X. Index is an integer expression. +// +// The elements of maps and strings are not addressable; use Lookup or +// MapUpdate instead. +// +// Dynamically, this instruction panics if X evaluates to a nil *array +// pointer. +// +// Type() returns a (possibly named) *types.Pointer. +// +// Pos() returns the ast.IndexExpr.Lbrack for the index operation, if +// explicit in the source. +// +// Example printed form: +// t2 = &t0[t1] +// +type IndexAddr struct { + register + X Value // slice or *array, + Index Value // numeric index +} + +// The Index instruction yields element Index of array X. +// +// Pos() returns the ast.IndexExpr.Lbrack for the index operation, if +// explicit in the source. +// +// Example printed form: +// t2 = t0[t1] +// +type Index struct { + register + X Value // array + Index Value // integer index +} + +// The Lookup instruction yields element Index of collection X, a map +// or string. Index is an integer expression if X is a string or the +// appropriate key type if X is a map. +// +// If CommaOk, the result is a 2-tuple of the value above and a +// boolean indicating the result of a map membership test for the key. +// The components of the tuple are accessed using Extract. +// +// Pos() returns the ast.IndexExpr.Lbrack, if explicit in the source. +// +// Example printed form: +// t2 = t0[t1] +// t5 = t3[t4],ok +// +type Lookup struct { + register + X Value // string or map + Index Value // numeric or key-typed index + CommaOk bool // return a value,ok pair +} + +// SelectState is a helper for Select. +// It represents one goal state and its corresponding communication. +// +type SelectState struct { + Dir types.ChanDir // direction of case (SendOnly or RecvOnly) + Chan Value // channel to use (for send or receive) + Send Value // value to send (for send) + Pos token.Pos // position of token.ARROW + DebugNode ast.Node // ast.SendStmt or ast.UnaryExpr(<-) [debug mode] +} + +// The Select instruction tests whether (or blocks until) one +// of the specified sent or received states is entered. +// +// Let n be the number of States for which Dir==RECV and T_i (0<=i string iterator; false => map iterator. +} + +// The TypeAssert instruction tests whether interface value X has type +// AssertedType. +// +// If !CommaOk, on success it returns v, the result of the conversion +// (defined below); on failure it panics. +// +// If CommaOk: on success it returns a pair (v, true) where v is the +// result of the conversion; on failure it returns (z, false) where z +// is AssertedType's zero value. The components of the pair must be +// accessed using the Extract instruction. +// +// If AssertedType is a concrete type, TypeAssert checks whether the +// dynamic type in interface X is equal to it, and if so, the result +// of the conversion is a copy of the value in the interface. +// +// If AssertedType is an interface, TypeAssert checks whether the +// dynamic type of the interface is assignable to it, and if so, the +// result of the conversion is a copy of the interface value X. +// If AssertedType is a superinterface of X.Type(), the operation will +// fail iff the operand is nil. (Contrast with ChangeInterface, which +// performs no nil-check.) +// +// Type() reflects the actual type of the result, possibly a +// 2-types.Tuple; AssertedType is the asserted type. +// +// Pos() returns the ast.CallExpr.Lparen if the instruction arose from +// an explicit T(e) conversion; the ast.TypeAssertExpr.Lparen if the +// instruction arose from an explicit e.(T) operation; or the +// ast.CaseClause.Case if the instruction arose from a case of a +// type-switch statement. +// +// Example printed form: +// t1 = typeassert t0.(int) +// t3 = typeassert,ok t2.(T) +// +type TypeAssert struct { + register + X Value + AssertedType types.Type + CommaOk bool +} + +// The Extract instruction yields component Index of Tuple. +// +// This is used to access the results of instructions with multiple +// return values, such as Call, TypeAssert, Next, UnOp(ARROW) and +// IndexExpr(Map). +// +// Example printed form: +// t1 = extract t0 #1 +// +type Extract struct { + register + Tuple Value + Index int +} + +// Instructions executed for effect. They do not yield a value. -------------------- + +// The Jump instruction transfers control to the sole successor of its +// owning block. +// +// A Jump must be the last instruction of its containing BasicBlock. +// +// Pos() returns NoPos. +// +// Example printed form: +// jump done +// +type Jump struct { + anInstruction +} + +// The If instruction transfers control to one of the two successors +// of its owning block, depending on the boolean Cond: the first if +// true, the second if false. +// +// An If instruction must be the last instruction of its containing +// BasicBlock. +// +// Pos() returns NoPos. +// +// Example printed form: +// if t0 goto done else body +// +type If struct { + anInstruction + Cond Value +} + +// The Return instruction returns values and control back to the calling +// function. +// +// len(Results) is always equal to the number of results in the +// function's signature. +// +// If len(Results) > 1, Return returns a tuple value with the specified +// components which the caller must access using Extract instructions. +// +// There is no instruction to return a ready-made tuple like those +// returned by a "value,ok"-mode TypeAssert, Lookup or UnOp(ARROW) or +// a tail-call to a function with multiple result parameters. +// +// Return must be the last instruction of its containing BasicBlock. +// Such a block has no successors. +// +// Pos() returns the ast.ReturnStmt.Return, if explicit in the source. +// +// Example printed form: +// return +// return nil:I, 2:int +// +type Return struct { + anInstruction + Results []Value + pos token.Pos +} + +// The RunDefers instruction pops and invokes the entire stack of +// procedure calls pushed by Defer instructions in this function. +// +// It is legal to encounter multiple 'rundefers' instructions in a +// single control-flow path through a function; this is useful in +// the combined init() function, for example. +// +// Pos() returns NoPos. +// +// Example printed form: +// rundefers +// +type RunDefers struct { + anInstruction +} + +// The Panic instruction initiates a panic with value X. +// +// A Panic instruction must be the last instruction of its containing +// BasicBlock, which must have no successors. +// +// NB: 'go panic(x)' and 'defer panic(x)' do not use this instruction; +// they are treated as calls to a built-in function. +// +// Pos() returns the ast.CallExpr.Lparen if this panic was explicit +// in the source. +// +// Example printed form: +// panic t0 +// +type Panic struct { + anInstruction + X Value // an interface{} + pos token.Pos +} + +// The Go instruction creates a new goroutine and calls the specified +// function within it. +// +// See CallCommon for generic function call documentation. +// +// Pos() returns the ast.GoStmt.Go. +// +// Example printed form: +// go println(t0, t1) +// go t3() +// go invoke t5.Println(...t6) +// +type Go struct { + anInstruction + Call CallCommon + pos token.Pos +} + +// The Defer instruction pushes the specified call onto a stack of +// functions to be called by a RunDefers instruction or by a panic. +// +// See CallCommon for generic function call documentation. +// +// Pos() returns the ast.DeferStmt.Defer. +// +// Example printed form: +// defer println(t0, t1) +// defer t3() +// defer invoke t5.Println(...t6) +// +type Defer struct { + anInstruction + Call CallCommon + pos token.Pos +} + +// The Send instruction sends X on channel Chan. +// +// Pos() returns the ast.SendStmt.Arrow, if explicit in the source. +// +// Example printed form: +// send t0 <- t1 +// +type Send struct { + anInstruction + Chan, X Value + pos token.Pos +} + +// The Store instruction stores Val at address Addr. +// Stores can be of arbitrary types. +// +// Pos() returns the position of the source-level construct most closely +// associated with the memory store operation. +// Since implicit memory stores are numerous and varied and depend upon +// implementation choices, the details are not specified. +// +// Example printed form: +// *x = y +// +type Store struct { + anInstruction + Addr Value + Val Value + pos token.Pos +} + +// The BlankStore instruction is emitted for assignments to the blank +// identifier. +// +// BlankStore is a pseudo-instruction: it has no dynamic effect. +// +// Pos() returns NoPos. +// +// Example printed form: +// _ = t0 +// +type BlankStore struct { + anInstruction + Val Value +} + +// The MapUpdate instruction updates the association of Map[Key] to +// Value. +// +// Pos() returns the ast.KeyValueExpr.Colon or ast.IndexExpr.Lbrack, +// if explicit in the source. +// +// Example printed form: +// t0[t1] = t2 +// +type MapUpdate struct { + anInstruction + Map Value + Key Value + Value Value + pos token.Pos +} + +// A DebugRef instruction maps a source-level expression Expr to the +// SSA value X that represents the value (!IsAddr) or address (IsAddr) +// of that expression. +// +// DebugRef is a pseudo-instruction: it has no dynamic effect. +// +// Pos() returns Expr.Pos(), the start position of the source-level +// expression. This is not the same as the "designated" token as +// documented at Value.Pos(). e.g. CallExpr.Pos() does not return the +// position of the ("designated") Lparen token. +// +// If Expr is an *ast.Ident denoting a var or func, Object() returns +// the object; though this information can be obtained from the type +// checker, including it here greatly facilitates debugging. +// For non-Ident expressions, Object() returns nil. +// +// DebugRefs are generated only for functions built with debugging +// enabled; see Package.SetDebugMode() and the GlobalDebug builder +// mode flag. +// +// DebugRefs are not emitted for ast.Idents referring to constants or +// predeclared identifiers, since they are trivial and numerous. +// Nor are they emitted for ast.ParenExprs. +// +// (By representing these as instructions, rather than out-of-band, +// consistency is maintained during transformation passes by the +// ordinary SSA renaming machinery.) +// +// Example printed form: +// ; *ast.CallExpr @ 102:9 is t5 +// ; var x float64 @ 109:72 is x +// ; address of *ast.CompositeLit @ 216:10 is t0 +// +type DebugRef struct { + anInstruction + Expr ast.Expr // the referring expression (never *ast.ParenExpr) + object types.Object // the identity of the source var/func + IsAddr bool // Expr is addressable and X is the address it denotes + X Value // the value or address of Expr +} + +// Embeddable mix-ins and helpers for common parts of other structs. ----------- + +// register is a mix-in embedded by all SSA values that are also +// instructions, i.e. virtual registers, and provides a uniform +// implementation of most of the Value interface: Value.Name() is a +// numbered register (e.g. "t0"); the other methods are field accessors. +// +// Temporary names are automatically assigned to each register on +// completion of building a function in SSA form. +// +// Clients must not assume that the 'id' value (and the Name() derived +// from it) is unique within a function. As always in this API, +// semantics are determined only by identity; names exist only to +// facilitate debugging. +// +type register struct { + anInstruction + num int // "name" of virtual register, e.g. "t0". Not guaranteed unique. + typ types.Type // type of virtual register + pos token.Pos // position of source expression, or NoPos + referrers []Instruction +} + +// anInstruction is a mix-in embedded by all Instructions. +// It provides the implementations of the Block and setBlock methods. +type anInstruction struct { + block *BasicBlock // the basic block of this instruction +} + +// CallCommon is contained by Go, Defer and Call to hold the +// common parts of a function or method call. +// +// Each CallCommon exists in one of two modes, function call and +// interface method invocation, or "call" and "invoke" for short. +// +// 1. "call" mode: when Method is nil (!IsInvoke), a CallCommon +// represents an ordinary function call of the value in Value, +// which may be a *Builtin, a *Function or any other value of kind +// 'func'. +// +// Value may be one of: +// (a) a *Function, indicating a statically dispatched call +// to a package-level function, an anonymous function, or +// a method of a named type. +// (b) a *MakeClosure, indicating an immediately applied +// function literal with free variables. +// (c) a *Builtin, indicating a statically dispatched call +// to a built-in function. +// (d) any other value, indicating a dynamically dispatched +// function call. +// StaticCallee returns the identity of the callee in cases +// (a) and (b), nil otherwise. +// +// Args contains the arguments to the call. If Value is a method, +// Args[0] contains the receiver parameter. +// +// Example printed form: +// t2 = println(t0, t1) +// go t3() +// defer t5(...t6) +// +// 2. "invoke" mode: when Method is non-nil (IsInvoke), a CallCommon +// represents a dynamically dispatched call to an interface method. +// In this mode, Value is the interface value and Method is the +// interface's abstract method. Note: an abstract method may be +// shared by multiple interfaces due to embedding; Value.Type() +// provides the specific interface used for this call. +// +// Value is implicitly supplied to the concrete method implementation +// as the receiver parameter; in other words, Args[0] holds not the +// receiver but the first true argument. +// +// Example printed form: +// t1 = invoke t0.String() +// go invoke t3.Run(t2) +// defer invoke t4.Handle(...t5) +// +// For all calls to variadic functions (Signature().Variadic()), +// the last element of Args is a slice. +// +type CallCommon struct { + Value Value // receiver (invoke mode) or func value (call mode) + Method *types.Func // abstract method (invoke mode) + Args []Value // actual parameters (in static method call, includes receiver) + pos token.Pos // position of CallExpr.Lparen, iff explicit in source +} + +// IsInvoke returns true if this call has "invoke" (not "call") mode. +func (c *CallCommon) IsInvoke() bool { + return c.Method != nil +} + +func (c *CallCommon) Pos() token.Pos { return c.pos } + +// Signature returns the signature of the called function. +// +// For an "invoke"-mode call, the signature of the interface method is +// returned. +// +// In either "call" or "invoke" mode, if the callee is a method, its +// receiver is represented by sig.Recv, not sig.Params().At(0). +// +func (c *CallCommon) Signature() *types.Signature { + if c.Method != nil { + return c.Method.Type().(*types.Signature) + } + return c.Value.Type().Underlying().(*types.Signature) +} + +// StaticCallee returns the callee if this is a trivially static +// "call"-mode call to a function. +func (c *CallCommon) StaticCallee() *Function { + switch fn := c.Value.(type) { + case *Function: + return fn + case *MakeClosure: + return fn.Fn.(*Function) + } + return nil +} + +// Description returns a description of the mode of this call suitable +// for a user interface, e.g., "static method call". +func (c *CallCommon) Description() string { + switch fn := c.Value.(type) { + case *Builtin: + return "built-in function call" + case *MakeClosure: + return "static function closure call" + case *Function: + if fn.Signature.Recv() != nil { + return "static method call" + } + return "static function call" + } + if c.IsInvoke() { + return "dynamic method call" // ("invoke" mode) + } + return "dynamic function call" +} + +// The CallInstruction interface, implemented by *Go, *Defer and *Call, +// exposes the common parts of function-calling instructions, +// yet provides a way back to the Value defined by *Call alone. +// +type CallInstruction interface { + Instruction + Common() *CallCommon // returns the common parts of the call + Value() *Call // returns the result value of the call (*Call) or nil (*Go, *Defer) +} + +func (s *Call) Common() *CallCommon { return &s.Call } +func (s *Defer) Common() *CallCommon { return &s.Call } +func (s *Go) Common() *CallCommon { return &s.Call } + +func (s *Call) Value() *Call { return s } +func (s *Defer) Value() *Call { return nil } +func (s *Go) Value() *Call { return nil } + +func (v *Builtin) Type() types.Type { return v.sig } +func (v *Builtin) Name() string { return v.name } +func (*Builtin) Referrers() *[]Instruction { return nil } +func (v *Builtin) Pos() token.Pos { return token.NoPos } +func (v *Builtin) Object() types.Object { return types.Universe.Lookup(v.name) } +func (v *Builtin) Parent() *Function { return nil } + +func (v *FreeVar) Type() types.Type { return v.typ } +func (v *FreeVar) Name() string { return v.name } +func (v *FreeVar) Referrers() *[]Instruction { return &v.referrers } +func (v *FreeVar) Pos() token.Pos { return v.pos } +func (v *FreeVar) Parent() *Function { return v.parent } + +func (v *Global) Type() types.Type { return v.typ } +func (v *Global) Name() string { return v.name } +func (v *Global) Parent() *Function { return nil } +func (v *Global) Pos() token.Pos { return v.pos } +func (v *Global) Referrers() *[]Instruction { return nil } +func (v *Global) Token() token.Token { return token.VAR } +func (v *Global) Object() types.Object { return v.object } +func (v *Global) String() string { return v.RelString(nil) } +func (v *Global) Package() *Package { return v.Pkg } +func (v *Global) RelString(from *types.Package) string { return relString(v, from) } + +func (v *Function) Name() string { return v.name } +func (v *Function) Type() types.Type { return v.Signature } +func (v *Function) Pos() token.Pos { return v.pos } +func (v *Function) Token() token.Token { return token.FUNC } +func (v *Function) Object() types.Object { return v.object } +func (v *Function) String() string { return v.RelString(nil) } +func (v *Function) Package() *Package { return v.Pkg } +func (v *Function) Parent() *Function { return v.parent } +func (v *Function) Referrers() *[]Instruction { + if v.parent != nil { + return &v.referrers + } + return nil +} + +func (v *Parameter) Type() types.Type { return v.typ } +func (v *Parameter) Name() string { return v.name } +func (v *Parameter) Object() types.Object { return v.object } +func (v *Parameter) Referrers() *[]Instruction { return &v.referrers } +func (v *Parameter) Pos() token.Pos { return v.pos } +func (v *Parameter) Parent() *Function { return v.parent } + +func (v *Alloc) Type() types.Type { return v.typ } +func (v *Alloc) Referrers() *[]Instruction { return &v.referrers } +func (v *Alloc) Pos() token.Pos { return v.pos } + +func (v *register) Type() types.Type { return v.typ } +func (v *register) setType(typ types.Type) { v.typ = typ } +func (v *register) Name() string { return fmt.Sprintf("t%d", v.num) } +func (v *register) setNum(num int) { v.num = num } +func (v *register) Referrers() *[]Instruction { return &v.referrers } +func (v *register) Pos() token.Pos { return v.pos } +func (v *register) setPos(pos token.Pos) { v.pos = pos } + +func (v *anInstruction) Parent() *Function { return v.block.parent } +func (v *anInstruction) Block() *BasicBlock { return v.block } +func (v *anInstruction) setBlock(block *BasicBlock) { v.block = block } +func (v *anInstruction) Referrers() *[]Instruction { return nil } + +func (t *Type) Name() string { return t.object.Name() } +func (t *Type) Pos() token.Pos { return t.object.Pos() } +func (t *Type) Type() types.Type { return t.object.Type() } +func (t *Type) Token() token.Token { return token.TYPE } +func (t *Type) Object() types.Object { return t.object } +func (t *Type) String() string { return t.RelString(nil) } +func (t *Type) Package() *Package { return t.pkg } +func (t *Type) RelString(from *types.Package) string { return relString(t, from) } + +func (c *NamedConst) Name() string { return c.object.Name() } +func (c *NamedConst) Pos() token.Pos { return c.object.Pos() } +func (c *NamedConst) String() string { return c.RelString(nil) } +func (c *NamedConst) Type() types.Type { return c.object.Type() } +func (c *NamedConst) Token() token.Token { return token.CONST } +func (c *NamedConst) Object() types.Object { return c.object } +func (c *NamedConst) Package() *Package { return c.pkg } +func (c *NamedConst) RelString(from *types.Package) string { return relString(c, from) } + +// Func returns the package-level function of the specified name, +// or nil if not found. +// +func (p *Package) Func(name string) (f *Function) { + f, _ = p.Members[name].(*Function) + return +} + +// Var returns the package-level variable of the specified name, +// or nil if not found. +// +func (p *Package) Var(name string) (g *Global) { + g, _ = p.Members[name].(*Global) + return +} + +// Const returns the package-level constant of the specified name, +// or nil if not found. +// +func (p *Package) Const(name string) (c *NamedConst) { + c, _ = p.Members[name].(*NamedConst) + return +} + +// Type returns the package-level type of the specified name, +// or nil if not found. +// +func (p *Package) Type(name string) (t *Type) { + t, _ = p.Members[name].(*Type) + return +} + +func (v *Call) Pos() token.Pos { return v.Call.pos } +func (s *Defer) Pos() token.Pos { return s.pos } +func (s *Go) Pos() token.Pos { return s.pos } +func (s *MapUpdate) Pos() token.Pos { return s.pos } +func (s *Panic) Pos() token.Pos { return s.pos } +func (s *Return) Pos() token.Pos { return s.pos } +func (s *Send) Pos() token.Pos { return s.pos } +func (s *Store) Pos() token.Pos { return s.pos } +func (s *BlankStore) Pos() token.Pos { return token.NoPos } +func (s *If) Pos() token.Pos { return token.NoPos } +func (s *Jump) Pos() token.Pos { return token.NoPos } +func (s *RunDefers) Pos() token.Pos { return token.NoPos } +func (s *DebugRef) Pos() token.Pos { return s.Expr.Pos() } + +// Operands. + +func (v *Alloc) Operands(rands []*Value) []*Value { + return rands +} + +func (v *BinOp) Operands(rands []*Value) []*Value { + return append(rands, &v.X, &v.Y) +} + +func (c *CallCommon) Operands(rands []*Value) []*Value { + rands = append(rands, &c.Value) + for i := range c.Args { + rands = append(rands, &c.Args[i]) + } + return rands +} + +func (s *Go) Operands(rands []*Value) []*Value { + return s.Call.Operands(rands) +} + +func (s *Call) Operands(rands []*Value) []*Value { + return s.Call.Operands(rands) +} + +func (s *Defer) Operands(rands []*Value) []*Value { + return s.Call.Operands(rands) +} + +func (v *ChangeInterface) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (v *ChangeType) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (v *Convert) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (s *DebugRef) Operands(rands []*Value) []*Value { + return append(rands, &s.X) +} + +func (v *Extract) Operands(rands []*Value) []*Value { + return append(rands, &v.Tuple) +} + +func (v *Field) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (v *FieldAddr) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (s *If) Operands(rands []*Value) []*Value { + return append(rands, &s.Cond) +} + +func (v *Index) Operands(rands []*Value) []*Value { + return append(rands, &v.X, &v.Index) +} + +func (v *IndexAddr) Operands(rands []*Value) []*Value { + return append(rands, &v.X, &v.Index) +} + +func (*Jump) Operands(rands []*Value) []*Value { + return rands +} + +func (v *Lookup) Operands(rands []*Value) []*Value { + return append(rands, &v.X, &v.Index) +} + +func (v *MakeChan) Operands(rands []*Value) []*Value { + return append(rands, &v.Size) +} + +func (v *MakeClosure) Operands(rands []*Value) []*Value { + rands = append(rands, &v.Fn) + for i := range v.Bindings { + rands = append(rands, &v.Bindings[i]) + } + return rands +} + +func (v *MakeInterface) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (v *MakeMap) Operands(rands []*Value) []*Value { + return append(rands, &v.Reserve) +} + +func (v *MakeSlice) Operands(rands []*Value) []*Value { + return append(rands, &v.Len, &v.Cap) +} + +func (v *MapUpdate) Operands(rands []*Value) []*Value { + return append(rands, &v.Map, &v.Key, &v.Value) +} + +func (v *Next) Operands(rands []*Value) []*Value { + return append(rands, &v.Iter) +} + +func (s *Panic) Operands(rands []*Value) []*Value { + return append(rands, &s.X) +} + +func (v *Sigma) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (v *Phi) Operands(rands []*Value) []*Value { + for i := range v.Edges { + rands = append(rands, &v.Edges[i]) + } + return rands +} + +func (v *Range) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (s *Return) Operands(rands []*Value) []*Value { + for i := range s.Results { + rands = append(rands, &s.Results[i]) + } + return rands +} + +func (*RunDefers) Operands(rands []*Value) []*Value { + return rands +} + +func (v *Select) Operands(rands []*Value) []*Value { + for i := range v.States { + rands = append(rands, &v.States[i].Chan, &v.States[i].Send) + } + return rands +} + +func (s *Send) Operands(rands []*Value) []*Value { + return append(rands, &s.Chan, &s.X) +} + +func (v *Slice) Operands(rands []*Value) []*Value { + return append(rands, &v.X, &v.Low, &v.High, &v.Max) +} + +func (s *Store) Operands(rands []*Value) []*Value { + return append(rands, &s.Addr, &s.Val) +} + +func (s *BlankStore) Operands(rands []*Value) []*Value { + return append(rands, &s.Val) +} + +func (v *TypeAssert) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +func (v *UnOp) Operands(rands []*Value) []*Value { + return append(rands, &v.X) +} + +// Non-Instruction Values: +func (v *Builtin) Operands(rands []*Value) []*Value { return rands } +func (v *FreeVar) Operands(rands []*Value) []*Value { return rands } +func (v *Const) Operands(rands []*Value) []*Value { return rands } +func (v *Function) Operands(rands []*Value) []*Value { return rands } +func (v *Global) Operands(rands []*Value) []*Value { return rands } +func (v *Parameter) Operands(rands []*Value) []*Value { return rands } diff --git a/vendor/honnef.co/go/tools/ssa/staticcheck.conf b/vendor/honnef.co/go/tools/ssa/staticcheck.conf new file mode 100644 index 00000000000..d7b38bc3563 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/staticcheck.conf @@ -0,0 +1,3 @@ +# ssa/... is mostly imported from upstream and we don't want to +# deviate from it too much, hence disabling SA1019 +checks = ["inherit", "-SA1019"] diff --git a/vendor/honnef.co/go/tools/ssa/testmain.go b/vendor/honnef.co/go/tools/ssa/testmain.go new file mode 100644 index 00000000000..8ec15ba5051 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/testmain.go @@ -0,0 +1,271 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// CreateTestMainPackage synthesizes a main package that runs all the +// tests of the supplied packages. +// It is closely coupled to $GOROOT/src/cmd/go/test.go and $GOROOT/src/testing. +// +// TODO(adonovan): throws this all away now that x/tools/go/packages +// provides access to the actual synthetic test main files. + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/types" + "log" + "os" + "strings" + "text/template" +) + +// FindTests returns the Test, Benchmark, and Example functions +// (as defined by "go test") defined in the specified package, +// and its TestMain function, if any. +// +// Deprecated: use x/tools/go/packages to access synthetic testmain packages. +func FindTests(pkg *Package) (tests, benchmarks, examples []*Function, main *Function) { + prog := pkg.Prog + + // The first two of these may be nil: if the program doesn't import "testing", + // it can't contain any tests, but it may yet contain Examples. + var testSig *types.Signature // func(*testing.T) + var benchmarkSig *types.Signature // func(*testing.B) + var exampleSig = types.NewSignature(nil, nil, nil, false) // func() + + // Obtain the types from the parameters of testing.MainStart. + if testingPkg := prog.ImportedPackage("testing"); testingPkg != nil { + mainStart := testingPkg.Func("MainStart") + params := mainStart.Signature.Params() + testSig = funcField(params.At(1).Type()) + benchmarkSig = funcField(params.At(2).Type()) + + // Does the package define this function? + // func TestMain(*testing.M) + if f := pkg.Func("TestMain"); f != nil { + sig := f.Type().(*types.Signature) + starM := mainStart.Signature.Results().At(0).Type() // *testing.M + if sig.Results().Len() == 0 && + sig.Params().Len() == 1 && + types.Identical(sig.Params().At(0).Type(), starM) { + main = f + } + } + } + + // TODO(adonovan): use a stable order, e.g. lexical. + for _, mem := range pkg.Members { + if f, ok := mem.(*Function); ok && + ast.IsExported(f.Name()) && + strings.HasSuffix(prog.Fset.Position(f.Pos()).Filename, "_test.go") { + + switch { + case testSig != nil && isTestSig(f, "Test", testSig): + tests = append(tests, f) + case benchmarkSig != nil && isTestSig(f, "Benchmark", benchmarkSig): + benchmarks = append(benchmarks, f) + case isTestSig(f, "Example", exampleSig): + examples = append(examples, f) + default: + continue + } + } + } + return +} + +// Like isTest, but checks the signature too. +func isTestSig(f *Function, prefix string, sig *types.Signature) bool { + return isTest(f.Name(), prefix) && types.Identical(f.Signature, sig) +} + +// Given the type of one of the three slice parameters of testing.Main, +// returns the function type. +func funcField(slice types.Type) *types.Signature { + return slice.(*types.Slice).Elem().Underlying().(*types.Struct).Field(1).Type().(*types.Signature) +} + +// isTest tells whether name looks like a test (or benchmark, according to prefix). +// It is a Test (say) if there is a character after Test that is not a lower-case letter. +// We don't want TesticularCancer. +// Plundered from $GOROOT/src/cmd/go/test.go +func isTest(name, prefix string) bool { + if !strings.HasPrefix(name, prefix) { + return false + } + if len(name) == len(prefix) { // "Test" is ok + return true + } + return ast.IsExported(name[len(prefix):]) +} + +// CreateTestMainPackage creates and returns a synthetic "testmain" +// package for the specified package if it defines tests, benchmarks or +// executable examples, or nil otherwise. The new package is named +// "main" and provides a function named "main" that runs the tests, +// similar to the one that would be created by the 'go test' tool. +// +// Subsequent calls to prog.AllPackages include the new package. +// The package pkg must belong to the program prog. +// +// Deprecated: use x/tools/go/packages to access synthetic testmain packages. +func (prog *Program) CreateTestMainPackage(pkg *Package) *Package { + if pkg.Prog != prog { + log.Fatal("Package does not belong to Program") + } + + // Template data + var data struct { + Pkg *Package + Tests, Benchmarks, Examples []*Function + Main *Function + Go18 bool + } + data.Pkg = pkg + + // Enumerate tests. + data.Tests, data.Benchmarks, data.Examples, data.Main = FindTests(pkg) + if data.Main == nil && + data.Tests == nil && data.Benchmarks == nil && data.Examples == nil { + return nil + } + + // Synthesize source for testmain package. + path := pkg.Pkg.Path() + "$testmain" + tmpl := testmainTmpl + if testingPkg := prog.ImportedPackage("testing"); testingPkg != nil { + // In Go 1.8, testing.MainStart's first argument is an interface, not a func. + data.Go18 = types.IsInterface(testingPkg.Func("MainStart").Signature.Params().At(0).Type()) + } else { + // The program does not import "testing", but FindTests + // returned non-nil, which must mean there were Examples + // but no Test, Benchmark, or TestMain functions. + + // We'll simply call them from testmain.main; this will + // ensure they don't panic, but will not check any + // "Output:" comments. + // (We should not execute an Example that has no + // "Output:" comment, but it's impossible to tell here.) + tmpl = examplesOnlyTmpl + } + var buf bytes.Buffer + if err := tmpl.Execute(&buf, data); err != nil { + log.Fatalf("internal error expanding template for %s: %v", path, err) + } + if false { // debugging + fmt.Fprintln(os.Stderr, buf.String()) + } + + // Parse and type-check the testmain package. + f, err := parser.ParseFile(prog.Fset, path+".go", &buf, parser.Mode(0)) + if err != nil { + log.Fatalf("internal error parsing %s: %v", path, err) + } + conf := types.Config{ + DisableUnusedImportCheck: true, + Importer: importer{pkg}, + } + files := []*ast.File{f} + info := &types.Info{ + Types: make(map[ast.Expr]types.TypeAndValue), + Defs: make(map[*ast.Ident]types.Object), + Uses: make(map[*ast.Ident]types.Object), + Implicits: make(map[ast.Node]types.Object), + Scopes: make(map[ast.Node]*types.Scope), + Selections: make(map[*ast.SelectorExpr]*types.Selection), + } + testmainPkg, err := conf.Check(path, prog.Fset, files, info) + if err != nil { + log.Fatalf("internal error type-checking %s: %v", path, err) + } + + // Create and build SSA code. + testmain := prog.CreatePackage(testmainPkg, files, info, false) + testmain.SetDebugMode(false) + testmain.Build() + testmain.Func("main").Synthetic = "test main function" + testmain.Func("init").Synthetic = "package initializer" + return testmain +} + +// An implementation of types.Importer for an already loaded SSA program. +type importer struct { + pkg *Package // package under test; may be non-importable +} + +func (imp importer) Import(path string) (*types.Package, error) { + if p := imp.pkg.Prog.ImportedPackage(path); p != nil { + return p.Pkg, nil + } + if path == imp.pkg.Pkg.Path() { + return imp.pkg.Pkg, nil + } + return nil, fmt.Errorf("not found") // can't happen +} + +var testmainTmpl = template.Must(template.New("testmain").Parse(` +package main + +import "io" +import "os" +import "testing" +import p {{printf "%q" .Pkg.Pkg.Path}} + +{{if .Go18}} +type deps struct{} + +func (deps) ImportPath() string { return "" } +func (deps) MatchString(pat, str string) (bool, error) { return true, nil } +func (deps) StartCPUProfile(io.Writer) error { return nil } +func (deps) StartTestLog(io.Writer) {} +func (deps) StopCPUProfile() {} +func (deps) StopTestLog() error { return nil } +func (deps) WriteHeapProfile(io.Writer) error { return nil } +func (deps) WriteProfileTo(string, io.Writer, int) error { return nil } + +var match deps +{{else}} +func match(_, _ string) (bool, error) { return true, nil } +{{end}} + +func main() { + tests := []testing.InternalTest{ +{{range .Tests}} + { {{printf "%q" .Name}}, p.{{.Name}} }, +{{end}} + } + benchmarks := []testing.InternalBenchmark{ +{{range .Benchmarks}} + { {{printf "%q" .Name}}, p.{{.Name}} }, +{{end}} + } + examples := []testing.InternalExample{ +{{range .Examples}} + {Name: {{printf "%q" .Name}}, F: p.{{.Name}}}, +{{end}} + } + m := testing.MainStart(match, tests, benchmarks, examples) +{{with .Main}} + p.{{.Name}}(m) +{{else}} + os.Exit(m.Run()) +{{end}} +} + +`)) + +var examplesOnlyTmpl = template.Must(template.New("examples").Parse(` +package main + +import p {{printf "%q" .Pkg.Pkg.Path}} + +func main() { +{{range .Examples}} + p.{{.Name}}() +{{end}} +} +`)) diff --git a/vendor/honnef.co/go/tools/ssa/util.go b/vendor/honnef.co/go/tools/ssa/util.go new file mode 100644 index 00000000000..ddb11846096 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/util.go @@ -0,0 +1,119 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines a number of miscellaneous utility functions. + +import ( + "fmt" + "go/ast" + "go/token" + "go/types" + "io" + "os" + + "golang.org/x/tools/go/ast/astutil" +) + +//// AST utilities + +func unparen(e ast.Expr) ast.Expr { return astutil.Unparen(e) } + +// isBlankIdent returns true iff e is an Ident with name "_". +// They have no associated types.Object, and thus no type. +// +func isBlankIdent(e ast.Expr) bool { + id, ok := e.(*ast.Ident) + return ok && id.Name == "_" +} + +//// Type utilities. Some of these belong in go/types. + +// isPointer returns true for types whose underlying type is a pointer. +func isPointer(typ types.Type) bool { + _, ok := typ.Underlying().(*types.Pointer) + return ok +} + +func isInterface(T types.Type) bool { return types.IsInterface(T) } + +// deref returns a pointer's element type; otherwise it returns typ. +func deref(typ types.Type) types.Type { + if p, ok := typ.Underlying().(*types.Pointer); ok { + return p.Elem() + } + return typ +} + +// recvType returns the receiver type of method obj. +func recvType(obj *types.Func) types.Type { + return obj.Type().(*types.Signature).Recv().Type() +} + +// DefaultType returns the default "typed" type for an "untyped" type; +// it returns the incoming type for all other types. The default type +// for untyped nil is untyped nil. +// +// Exported to ssa/interp. +// +// TODO(adonovan): use go/types.DefaultType after 1.8. +// +func DefaultType(typ types.Type) types.Type { + if t, ok := typ.(*types.Basic); ok { + k := t.Kind() + switch k { + case types.UntypedBool: + k = types.Bool + case types.UntypedInt: + k = types.Int + case types.UntypedRune: + k = types.Rune + case types.UntypedFloat: + k = types.Float64 + case types.UntypedComplex: + k = types.Complex128 + case types.UntypedString: + k = types.String + } + typ = types.Typ[k] + } + return typ +} + +// logStack prints the formatted "start" message to stderr and +// returns a closure that prints the corresponding "end" message. +// Call using 'defer logStack(...)()' to show builder stack on panic. +// Don't forget trailing parens! +// +func logStack(format string, args ...interface{}) func() { + msg := fmt.Sprintf(format, args...) + io.WriteString(os.Stderr, msg) + io.WriteString(os.Stderr, "\n") + return func() { + io.WriteString(os.Stderr, msg) + io.WriteString(os.Stderr, " end\n") + } +} + +// newVar creates a 'var' for use in a types.Tuple. +func newVar(name string, typ types.Type) *types.Var { + return types.NewParam(token.NoPos, nil, name, typ) +} + +// anonVar creates an anonymous 'var' for use in a types.Tuple. +func anonVar(typ types.Type) *types.Var { + return newVar("", typ) +} + +var lenResults = types.NewTuple(anonVar(tInt)) + +// makeLen returns the len builtin specialized to type func(T)int. +func makeLen(T types.Type) *Builtin { + lenParams := types.NewTuple(anonVar(T)) + return &Builtin{ + name: "len", + sig: types.NewSignature(nil, lenParams, lenResults, false), + } +} diff --git a/vendor/honnef.co/go/tools/ssa/wrappers.go b/vendor/honnef.co/go/tools/ssa/wrappers.go new file mode 100644 index 00000000000..a4ae71d8cfc --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/wrappers.go @@ -0,0 +1,290 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssa + +// This file defines synthesis of Functions that delegate to declared +// methods; they come in three kinds: +// +// (1) wrappers: methods that wrap declared methods, performing +// implicit pointer indirections and embedded field selections. +// +// (2) thunks: funcs that wrap declared methods. Like wrappers, +// thunks perform indirections and field selections. The thunk's +// first parameter is used as the receiver for the method call. +// +// (3) bounds: funcs that wrap declared methods. The bound's sole +// free variable, supplied by a closure, is used as the receiver +// for the method call. No indirections or field selections are +// performed since they can be done before the call. + +import ( + "fmt" + + "go/types" +) + +// -- wrappers ----------------------------------------------------------- + +// makeWrapper returns a synthetic method that delegates to the +// declared method denoted by meth.Obj(), first performing any +// necessary pointer indirections or field selections implied by meth. +// +// The resulting method's receiver type is meth.Recv(). +// +// This function is versatile but quite subtle! Consider the +// following axes of variation when making changes: +// - optional receiver indirection +// - optional implicit field selections +// - meth.Obj() may denote a concrete or an interface method +// - the result may be a thunk or a wrapper. +// +// EXCLUSIVE_LOCKS_REQUIRED(prog.methodsMu) +// +func makeWrapper(prog *Program, sel *types.Selection) *Function { + obj := sel.Obj().(*types.Func) // the declared function + sig := sel.Type().(*types.Signature) // type of this wrapper + + var recv *types.Var // wrapper's receiver or thunk's params[0] + name := obj.Name() + var description string + var start int // first regular param + if sel.Kind() == types.MethodExpr { + name += "$thunk" + description = "thunk" + recv = sig.Params().At(0) + start = 1 + } else { + description = "wrapper" + recv = sig.Recv() + } + + description = fmt.Sprintf("%s for %s", description, sel.Obj()) + if prog.mode&LogSource != 0 { + defer logStack("make %s to (%s)", description, recv.Type())() + } + fn := &Function{ + name: name, + method: sel, + object: obj, + Signature: sig, + Synthetic: description, + Prog: prog, + pos: obj.Pos(), + } + fn.startBody() + fn.addSpilledParam(recv) + createParams(fn, start) + + indices := sel.Index() + + var v Value = fn.Locals[0] // spilled receiver + if isPointer(sel.Recv()) { + v = emitLoad(fn, v) + + // For simple indirection wrappers, perform an informative nil-check: + // "value method (T).f called using nil *T pointer" + if len(indices) == 1 && !isPointer(recvType(obj)) { + var c Call + c.Call.Value = &Builtin{ + name: "ssa:wrapnilchk", + sig: types.NewSignature(nil, + types.NewTuple(anonVar(sel.Recv()), anonVar(tString), anonVar(tString)), + types.NewTuple(anonVar(sel.Recv())), false), + } + c.Call.Args = []Value{ + v, + stringConst(deref(sel.Recv()).String()), + stringConst(sel.Obj().Name()), + } + c.setType(v.Type()) + v = fn.emit(&c) + } + } + + // Invariant: v is a pointer, either + // value of *A receiver param, or + // address of A spilled receiver. + + // We use pointer arithmetic (FieldAddr possibly followed by + // Load) in preference to value extraction (Field possibly + // preceded by Load). + + v = emitImplicitSelections(fn, v, indices[:len(indices)-1]) + + // Invariant: v is a pointer, either + // value of implicit *C field, or + // address of implicit C field. + + var c Call + if r := recvType(obj); !isInterface(r) { // concrete method + if !isPointer(r) { + v = emitLoad(fn, v) + } + c.Call.Value = prog.declaredFunc(obj) + c.Call.Args = append(c.Call.Args, v) + } else { + c.Call.Method = obj + c.Call.Value = emitLoad(fn, v) + } + for _, arg := range fn.Params[1:] { + c.Call.Args = append(c.Call.Args, arg) + } + emitTailCall(fn, &c) + fn.finishBody() + return fn +} + +// createParams creates parameters for wrapper method fn based on its +// Signature.Params, which do not include the receiver. +// start is the index of the first regular parameter to use. +// +func createParams(fn *Function, start int) { + tparams := fn.Signature.Params() + for i, n := start, tparams.Len(); i < n; i++ { + fn.addParamObj(tparams.At(i)) + } +} + +// -- bounds ----------------------------------------------------------- + +// makeBound returns a bound method wrapper (or "bound"), a synthetic +// function that delegates to a concrete or interface method denoted +// by obj. The resulting function has no receiver, but has one free +// variable which will be used as the method's receiver in the +// tail-call. +// +// Use MakeClosure with such a wrapper to construct a bound method +// closure. e.g.: +// +// type T int or: type T interface { meth() } +// func (t T) meth() +// var t T +// f := t.meth +// f() // calls t.meth() +// +// f is a closure of a synthetic wrapper defined as if by: +// +// f := func() { return t.meth() } +// +// Unlike makeWrapper, makeBound need perform no indirection or field +// selections because that can be done before the closure is +// constructed. +// +// EXCLUSIVE_LOCKS_ACQUIRED(meth.Prog.methodsMu) +// +func makeBound(prog *Program, obj *types.Func) *Function { + prog.methodsMu.Lock() + defer prog.methodsMu.Unlock() + fn, ok := prog.bounds[obj] + if !ok { + description := fmt.Sprintf("bound method wrapper for %s", obj) + if prog.mode&LogSource != 0 { + defer logStack("%s", description)() + } + fn = &Function{ + name: obj.Name() + "$bound", + object: obj, + Signature: changeRecv(obj.Type().(*types.Signature), nil), // drop receiver + Synthetic: description, + Prog: prog, + pos: obj.Pos(), + } + + fv := &FreeVar{name: "recv", typ: recvType(obj), parent: fn} + fn.FreeVars = []*FreeVar{fv} + fn.startBody() + createParams(fn, 0) + var c Call + + if !isInterface(recvType(obj)) { // concrete + c.Call.Value = prog.declaredFunc(obj) + c.Call.Args = []Value{fv} + } else { + c.Call.Value = fv + c.Call.Method = obj + } + for _, arg := range fn.Params { + c.Call.Args = append(c.Call.Args, arg) + } + emitTailCall(fn, &c) + fn.finishBody() + + prog.bounds[obj] = fn + } + return fn +} + +// -- thunks ----------------------------------------------------------- + +// makeThunk returns a thunk, a synthetic function that delegates to a +// concrete or interface method denoted by sel.Obj(). The resulting +// function has no receiver, but has an additional (first) regular +// parameter. +// +// Precondition: sel.Kind() == types.MethodExpr. +// +// type T int or: type T interface { meth() } +// func (t T) meth() +// f := T.meth +// var t T +// f(t) // calls t.meth() +// +// f is a synthetic wrapper defined as if by: +// +// f := func(t T) { return t.meth() } +// +// TODO(adonovan): opt: currently the stub is created even when used +// directly in a function call: C.f(i, 0). This is less efficient +// than inlining the stub. +// +// EXCLUSIVE_LOCKS_ACQUIRED(meth.Prog.methodsMu) +// +func makeThunk(prog *Program, sel *types.Selection) *Function { + if sel.Kind() != types.MethodExpr { + panic(sel) + } + + key := selectionKey{ + kind: sel.Kind(), + recv: sel.Recv(), + obj: sel.Obj(), + index: fmt.Sprint(sel.Index()), + indirect: sel.Indirect(), + } + + prog.methodsMu.Lock() + defer prog.methodsMu.Unlock() + + // Canonicalize key.recv to avoid constructing duplicate thunks. + canonRecv, ok := prog.canon.At(key.recv).(types.Type) + if !ok { + canonRecv = key.recv + prog.canon.Set(key.recv, canonRecv) + } + key.recv = canonRecv + + fn, ok := prog.thunks[key] + if !ok { + fn = makeWrapper(prog, sel) + if fn.Signature.Recv() != nil { + panic(fn) // unexpected receiver + } + prog.thunks[key] = fn + } + return fn +} + +func changeRecv(s *types.Signature, recv *types.Var) *types.Signature { + return types.NewSignature(recv, s.Params(), s.Results(), s.Variadic()) +} + +// selectionKey is like types.Selection but a usable map key. +type selectionKey struct { + kind types.SelectionKind + recv types.Type // canonicalized via Program.canon + obj types.Object + index string + indirect bool +} diff --git a/vendor/honnef.co/go/tools/ssa/write.go b/vendor/honnef.co/go/tools/ssa/write.go new file mode 100644 index 00000000000..89761a18a55 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssa/write.go @@ -0,0 +1,5 @@ +package ssa + +func NewJump(parent *BasicBlock) *Jump { + return &Jump{anInstruction{parent}} +} diff --git a/vendor/honnef.co/go/tools/ssautil/ssautil.go b/vendor/honnef.co/go/tools/ssautil/ssautil.go new file mode 100644 index 00000000000..72c3c919d62 --- /dev/null +++ b/vendor/honnef.co/go/tools/ssautil/ssautil.go @@ -0,0 +1,58 @@ +package ssautil + +import ( + "honnef.co/go/tools/ssa" +) + +func Reachable(from, to *ssa.BasicBlock) bool { + if from == to { + return true + } + if from.Dominates(to) { + return true + } + + found := false + Walk(from, func(b *ssa.BasicBlock) bool { + if b == to { + found = true + return false + } + return true + }) + return found +} + +func Walk(b *ssa.BasicBlock, fn func(*ssa.BasicBlock) bool) { + seen := map[*ssa.BasicBlock]bool{} + wl := []*ssa.BasicBlock{b} + for len(wl) > 0 { + b := wl[len(wl)-1] + wl = wl[:len(wl)-1] + if seen[b] { + continue + } + seen[b] = true + if !fn(b) { + continue + } + wl = append(wl, b.Succs...) + } +} + +func Vararg(x *ssa.Slice) ([]ssa.Value, bool) { + var out []ssa.Value + slice, ok := x.X.(*ssa.Alloc) + if !ok || slice.Comment != "varargs" { + return nil, false + } + for _, ref := range *slice.Referrers() { + idx, ok := ref.(*ssa.IndexAddr) + if !ok { + continue + } + v := (*idx.Referrers())[0].(*ssa.Store).Val + out = append(out, v) + } + return out, true +} diff --git a/vendor/honnef.co/go/tools/staticcheck/CONTRIBUTING.md b/vendor/honnef.co/go/tools/staticcheck/CONTRIBUTING.md new file mode 100644 index 00000000000..b12c7afc748 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/CONTRIBUTING.md @@ -0,0 +1,15 @@ +# Contributing to staticcheck + +## Before filing an issue: + +### Are you having trouble building staticcheck? + +Check you have the latest version of its dependencies. Run +``` +go get -u honnef.co/go/tools/staticcheck +``` +If you still have problems, consider searching for existing issues before filing a new issue. + +## Before sending a pull request: + +Have you understood the purpose of staticcheck? Make sure to carefully read `README`. diff --git a/vendor/honnef.co/go/tools/staticcheck/analysis.go b/vendor/honnef.co/go/tools/staticcheck/analysis.go new file mode 100644 index 00000000000..442aebe5a18 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/analysis.go @@ -0,0 +1,525 @@ +package staticcheck + +import ( + "flag" + + "honnef.co/go/tools/facts" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/lint/lintutil" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/analysis/passes/inspect" +) + +func newFlagSet() flag.FlagSet { + fs := flag.NewFlagSet("", flag.PanicOnError) + fs.Var(lintutil.NewVersionFlag(), "go", "Target Go version") + return *fs +} + +var Analyzers = map[string]*analysis.Analyzer{ + "SA1000": { + Name: "SA1000", + Run: callChecker(checkRegexpRules), + Doc: Docs["SA1000"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1001": { + Name: "SA1001", + Run: CheckTemplate, + Doc: Docs["SA1001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1002": { + Name: "SA1002", + Run: callChecker(checkTimeParseRules), + Doc: Docs["SA1002"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1003": { + Name: "SA1003", + Run: callChecker(checkEncodingBinaryRules), + Doc: Docs["SA1003"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1004": { + Name: "SA1004", + Run: CheckTimeSleepConstant, + Doc: Docs["SA1004"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1005": { + Name: "SA1005", + Run: CheckExec, + Doc: Docs["SA1005"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1006": { + Name: "SA1006", + Run: CheckUnsafePrintf, + Doc: Docs["SA1006"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1007": { + Name: "SA1007", + Run: callChecker(checkURLsRules), + Doc: Docs["SA1007"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1008": { + Name: "SA1008", + Run: CheckCanonicalHeaderKey, + Doc: Docs["SA1008"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1010": { + Name: "SA1010", + Run: callChecker(checkRegexpFindAllRules), + Doc: Docs["SA1010"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1011": { + Name: "SA1011", + Run: callChecker(checkUTF8CutsetRules), + Doc: Docs["SA1011"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1012": { + Name: "SA1012", + Run: CheckNilContext, + Doc: Docs["SA1012"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1013": { + Name: "SA1013", + Run: CheckSeeker, + Doc: Docs["SA1013"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1014": { + Name: "SA1014", + Run: callChecker(checkUnmarshalPointerRules), + Doc: Docs["SA1014"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1015": { + Name: "SA1015", + Run: CheckLeakyTimeTick, + Doc: Docs["SA1015"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA1016": { + Name: "SA1016", + Run: CheckUntrappableSignal, + Doc: Docs["SA1016"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA1017": { + Name: "SA1017", + Run: callChecker(checkUnbufferedSignalChanRules), + Doc: Docs["SA1017"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1018": { + Name: "SA1018", + Run: callChecker(checkStringsReplaceZeroRules), + Doc: Docs["SA1018"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1019": { + Name: "SA1019", + Run: CheckDeprecated, + Doc: Docs["SA1019"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Deprecated}, + Flags: newFlagSet(), + }, + "SA1020": { + Name: "SA1020", + Run: callChecker(checkListenAddressRules), + Doc: Docs["SA1020"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1021": { + Name: "SA1021", + Run: callChecker(checkBytesEqualIPRules), + Doc: Docs["SA1021"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1023": { + Name: "SA1023", + Run: CheckWriterBufferModified, + Doc: Docs["SA1023"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA1024": { + Name: "SA1024", + Run: callChecker(checkUniqueCutsetRules), + Doc: Docs["SA1024"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1025": { + Name: "SA1025", + Run: CheckTimerResetReturnValue, + Doc: Docs["SA1025"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA1026": { + Name: "SA1026", + Run: callChecker(checkUnsupportedMarshal), + Doc: Docs["SA1026"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA1027": { + Name: "SA1027", + Run: callChecker(checkAtomicAlignment), + Doc: Docs["SA1027"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + + "SA2000": { + Name: "SA2000", + Run: CheckWaitgroupAdd, + Doc: Docs["SA2000"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA2001": { + Name: "SA2001", + Run: CheckEmptyCriticalSection, + Doc: Docs["SA2001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA2002": { + Name: "SA2002", + Run: CheckConcurrentTesting, + Doc: Docs["SA2002"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA2003": { + Name: "SA2003", + Run: CheckDeferLock, + Doc: Docs["SA2003"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + + "SA3000": { + Name: "SA3000", + Run: CheckTestMainExit, + Doc: Docs["SA3000"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA3001": { + Name: "SA3001", + Run: CheckBenchmarkN, + Doc: Docs["SA3001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + + "SA4000": { + Name: "SA4000", + Run: CheckLhsRhsIdentical, + Doc: Docs["SA4000"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.TokenFile, facts.Generated}, + Flags: newFlagSet(), + }, + "SA4001": { + Name: "SA4001", + Run: CheckIneffectiveCopy, + Doc: Docs["SA4001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4002": { + Name: "SA4002", + Run: CheckDiffSizeComparison, + Doc: Docs["SA4002"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA4003": { + Name: "SA4003", + Run: CheckExtremeComparison, + Doc: Docs["SA4003"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4004": { + Name: "SA4004", + Run: CheckIneffectiveLoop, + Doc: Docs["SA4004"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4006": { + Name: "SA4006", + Run: CheckUnreadVariableValues, + Doc: Docs["SA4006"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "SA4008": { + Name: "SA4008", + Run: CheckLoopCondition, + Doc: Docs["SA4008"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA4009": { + Name: "SA4009", + Run: CheckArgOverwritten, + Doc: Docs["SA4009"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA4010": { + Name: "SA4010", + Run: CheckIneffectiveAppend, + Doc: Docs["SA4010"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA4011": { + Name: "SA4011", + Run: CheckScopedBreak, + Doc: Docs["SA4011"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4012": { + Name: "SA4012", + Run: CheckNaNComparison, + Doc: Docs["SA4012"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA4013": { + Name: "SA4013", + Run: CheckDoubleNegation, + Doc: Docs["SA4013"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4014": { + Name: "SA4014", + Run: CheckRepeatedIfElse, + Doc: Docs["SA4014"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4015": { + Name: "SA4015", + Run: callChecker(checkMathIntRules), + Doc: Docs["SA4015"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA4016": { + Name: "SA4016", + Run: CheckSillyBitwiseOps, + Doc: Docs["SA4016"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.TokenFile}, + Flags: newFlagSet(), + }, + "SA4017": { + Name: "SA4017", + Run: CheckPureFunctions, + Doc: Docs["SA4017"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.Purity}, + Flags: newFlagSet(), + }, + "SA4018": { + Name: "SA4018", + Run: CheckSelfAssignment, + Doc: Docs["SA4018"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile}, + Flags: newFlagSet(), + }, + "SA4019": { + Name: "SA4019", + Run: CheckDuplicateBuildConstraints, + Doc: Docs["SA4019"].String(), + Requires: []*analysis.Analyzer{facts.Generated}, + Flags: newFlagSet(), + }, + "SA4020": { + Name: "SA4020", + Run: CheckUnreachableTypeCases, + Doc: Docs["SA4020"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA4021": { + Name: "SA4021", + Run: CheckSingleArgAppend, + Doc: Docs["SA4021"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile}, + Flags: newFlagSet(), + }, + + "SA5000": { + Name: "SA5000", + Run: CheckNilMaps, + Doc: Docs["SA5000"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA5001": { + Name: "SA5001", + Run: CheckEarlyDefer, + Doc: Docs["SA5001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA5002": { + Name: "SA5002", + Run: CheckInfiniteEmptyLoop, + Doc: Docs["SA5002"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA5003": { + Name: "SA5003", + Run: CheckDeferInInfiniteLoop, + Doc: Docs["SA5003"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA5004": { + Name: "SA5004", + Run: CheckLoopEmptyDefault, + Doc: Docs["SA5004"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA5005": { + Name: "SA5005", + Run: CheckCyclicFinalizer, + Doc: Docs["SA5005"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA5007": { + Name: "SA5007", + Run: CheckInfiniteRecursion, + Doc: Docs["SA5007"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA5008": { + Name: "SA5008", + Run: CheckStructTags, + Doc: Docs["SA5008"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA5009": { + Name: "SA5009", + Run: callChecker(checkPrintfRules), + Doc: Docs["SA5009"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + + "SA6000": { + Name: "SA6000", + Run: callChecker(checkRegexpMatchLoopRules), + Doc: Docs["SA6000"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA6001": { + Name: "SA6001", + Run: CheckMapBytesKey, + Doc: Docs["SA6001"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA6002": { + Name: "SA6002", + Run: callChecker(checkSyncPoolValueRules), + Doc: Docs["SA6002"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, + Flags: newFlagSet(), + }, + "SA6003": { + Name: "SA6003", + Run: CheckRangeStringRunes, + Doc: Docs["SA6003"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "SA6005": { + Name: "SA6005", + Run: CheckToLowerToUpperComparison, + Doc: Docs["SA6005"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + + "SA9001": { + Name: "SA9001", + Run: CheckDubiousDeferInChannelRangeLoop, + Doc: Docs["SA9001"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA9002": { + Name: "SA9002", + Run: CheckNonOctalFileMode, + Doc: Docs["SA9002"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + "SA9003": { + Name: "SA9003", + Run: CheckEmptyBranch, + Doc: Docs["SA9003"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.TokenFile, facts.Generated}, + Flags: newFlagSet(), + }, + "SA9004": { + Name: "SA9004", + Run: CheckMissingEnumTypesInDeclaration, + Doc: Docs["SA9004"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, + // Filtering generated code because it may include empty structs generated from data models. + "SA9005": { + Name: "SA9005", + Run: callChecker(checkNoopMarshal), + Doc: Docs["SA9005"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer, facts.Generated, facts.TokenFile}, + Flags: newFlagSet(), + }, +} diff --git a/vendor/honnef.co/go/tools/staticcheck/buildtag.go b/vendor/honnef.co/go/tools/staticcheck/buildtag.go new file mode 100644 index 00000000000..888d3e9dc05 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/buildtag.go @@ -0,0 +1,21 @@ +package staticcheck + +import ( + "go/ast" + "strings" + + . "honnef.co/go/tools/lint/lintdsl" +) + +func buildTags(f *ast.File) [][]string { + var out [][]string + for _, line := range strings.Split(Preamble(f), "\n") { + if !strings.HasPrefix(line, "+build ") { + continue + } + line = strings.TrimSpace(strings.TrimPrefix(line, "+build ")) + fields := strings.Fields(line) + out = append(out, fields) + } + return out +} diff --git a/vendor/honnef.co/go/tools/staticcheck/doc.go b/vendor/honnef.co/go/tools/staticcheck/doc.go new file mode 100644 index 00000000000..4a87d4a24ce --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/doc.go @@ -0,0 +1,764 @@ +package staticcheck + +import "honnef.co/go/tools/lint" + +var Docs = map[string]*lint.Documentation{ + "SA1000": &lint.Documentation{ + Title: `Invalid regular expression`, + Since: "2017.1", + }, + + "SA1001": &lint.Documentation{ + Title: `Invalid template`, + Since: "2017.1", + }, + + "SA1002": &lint.Documentation{ + Title: `Invalid format in time.Parse`, + Since: "2017.1", + }, + + "SA1003": &lint.Documentation{ + Title: `Unsupported argument to functions in encoding/binary`, + Text: `The encoding/binary package can only serialize types with known sizes. +This precludes the use of the int and uint types, as their sizes +differ on different architectures. Furthermore, it doesn't support +serializing maps, channels, strings, or functions. + +Before Go 1.8, bool wasn't supported, either.`, + Since: "2017.1", + }, + + "SA1004": &lint.Documentation{ + Title: `Suspiciously small untyped constant in time.Sleep`, + Text: `The time.Sleep function takes a time.Duration as its only argument. +Durations are expressed in nanoseconds. Thus, calling time.Sleep(1) +will sleep for 1 nanosecond. This is a common source of bugs, as sleep +functions in other languages often accept seconds or milliseconds. + +The time package provides constants such as time.Second to express +large durations. These can be combined with arithmetic to express +arbitrary durations, for example '5 * time.Second' for 5 seconds. + +If you truly meant to sleep for a tiny amount of time, use +'n * time.Nanosecond' to signal to staticcheck that you did mean to sleep +for some amount of nanoseconds.`, + Since: "2017.1", + }, + + "SA1005": &lint.Documentation{ + Title: `Invalid first argument to exec.Command`, + Text: `os/exec runs programs directly (using variants of the fork and exec +system calls on Unix systems). This shouldn't be confused with running +a command in a shell. The shell will allow for features such as input +redirection, pipes, and general scripting. The shell is also +responsible for splitting the user's input into a program name and its +arguments. For example, the equivalent to + + ls / /tmp + +would be + + exec.Command("ls", "/", "/tmp") + +If you want to run a command in a shell, consider using something like +the following – but be aware that not all systems, particularly +Windows, will have a /bin/sh program: + + exec.Command("/bin/sh", "-c", "ls | grep Awesome")`, + Since: "2017.1", + }, + + "SA1006": &lint.Documentation{ + Title: `Printf with dynamic first argument and no further arguments`, + Text: `Using fmt.Printf with a dynamic first argument can lead to unexpected +output. The first argument is a format string, where certain character +combinations have special meaning. If, for example, a user were to +enter a string such as + + Interest rate: 5% + +and you printed it with + + fmt.Printf(s) + +it would lead to the following output: + + Interest rate: 5%!(NOVERB). + +Similarly, forming the first parameter via string concatenation with +user input should be avoided for the same reason. When printing user +input, either use a variant of fmt.Print, or use the %s Printf verb +and pass the string as an argument.`, + Since: "2017.1", + }, + + "SA1007": &lint.Documentation{ + Title: `Invalid URL in net/url.Parse`, + Since: "2017.1", + }, + + "SA1008": &lint.Documentation{ + Title: `Non-canonical key in http.Header map`, + Text: `Keys in http.Header maps are canonical, meaning they follow a specific +combination of uppercase and lowercase letters. Methods such as +http.Header.Add and http.Header.Del convert inputs into this canonical +form before manipulating the map. + +When manipulating http.Header maps directly, as opposed to using the +provided methods, care should be taken to stick to canonical form in +order to avoid inconsistencies. The following piece of code +demonstrates one such inconsistency: + + h := http.Header{} + h["etag"] = []string{"1234"} + h.Add("etag", "5678") + fmt.Println(h) + + // Output: + // map[Etag:[5678] etag:[1234]] + +The easiest way of obtaining the canonical form of a key is to use +http.CanonicalHeaderKey.`, + Since: "2017.1", + }, + + "SA1010": &lint.Documentation{ + Title: `(*regexp.Regexp).FindAll called with n == 0, which will always return zero results`, + Text: `If n >= 0, the function returns at most n matches/submatches. To +return all results, specify a negative number.`, + Since: "2017.1", + }, + + "SA1011": &lint.Documentation{ + Title: `Various methods in the strings package expect valid UTF-8, but invalid input is provided`, + Since: "2017.1", + }, + + "SA1012": &lint.Documentation{ + Title: `A nil context.Context is being passed to a function, consider using context.TODO instead`, + Since: "2017.1", + }, + + "SA1013": &lint.Documentation{ + Title: `io.Seeker.Seek is being called with the whence constant as the first argument, but it should be the second`, + Since: "2017.1", + }, + + "SA1014": &lint.Documentation{ + Title: `Non-pointer value passed to Unmarshal or Decode`, + Since: "2017.1", + }, + + "SA1015": &lint.Documentation{ + Title: `Using time.Tick in a way that will leak. Consider using time.NewTicker, and only use time.Tick in tests, commands and endless functions`, + Since: "2017.1", + }, + + "SA1016": &lint.Documentation{ + Title: `Trapping a signal that cannot be trapped`, + Text: `Not all signals can be intercepted by a process. Speficially, on +UNIX-like systems, the syscall.SIGKILL and syscall.SIGSTOP signals are +never passed to the process, but instead handled directly by the +kernel. It is therefore pointless to try and handle these signals.`, + Since: "2017.1", + }, + + "SA1017": &lint.Documentation{ + Title: `Channels used with os/signal.Notify should be buffered`, + Text: `The os/signal package uses non-blocking channel sends when delivering +signals. If the receiving end of the channel isn't ready and the +channel is either unbuffered or full, the signal will be dropped. To +avoid missing signals, the channel should be buffered and of the +appropriate size. For a channel used for notification of just one +signal value, a buffer of size 1 is sufficient.`, + Since: "2017.1", + }, + + "SA1018": &lint.Documentation{ + Title: `strings.Replace called with n == 0, which does nothing`, + Text: `With n == 0, zero instances will be replaced. To replace all +instances, use a negative number, or use strings.ReplaceAll.`, + Since: "2017.1", + }, + + "SA1019": &lint.Documentation{ + Title: `Using a deprecated function, variable, constant or field`, + Since: "2017.1", + }, + + "SA1020": &lint.Documentation{ + Title: `Using an invalid host:port pair with a net.Listen-related function`, + Since: "2017.1", + }, + + "SA1021": &lint.Documentation{ + Title: `Using bytes.Equal to compare two net.IP`, + Text: `A net.IP stores an IPv4 or IPv6 address as a slice of bytes. The +length of the slice for an IPv4 address, however, can be either 4 or +16 bytes long, using different ways of representing IPv4 addresses. In +order to correctly compare two net.IPs, the net.IP.Equal method should +be used, as it takes both representations into account.`, + Since: "2017.1", + }, + + "SA1023": &lint.Documentation{ + Title: `Modifying the buffer in an io.Writer implementation`, + Text: `Write must not modify the slice data, even temporarily.`, + Since: "2017.1", + }, + + "SA1024": &lint.Documentation{ + Title: `A string cutset contains duplicate characters`, + Text: `The strings.TrimLeft and strings.TrimRight functions take cutsets, not +prefixes. A cutset is treated as a set of characters to remove from a +string. For example, + + strings.TrimLeft("42133word", "1234")) + +will result in the string "word" – any characters that are 1, 2, 3 or +4 are cut from the left of the string. + +In order to remove one string from another, use strings.TrimPrefix instead.`, + Since: "2017.1", + }, + + "SA1025": &lint.Documentation{ + Title: `It is not possible to use (*time.Timer).Reset's return value correctly`, + Since: "2019.1", + }, + + "SA1026": &lint.Documentation{ + Title: `Cannot marshal channels or functions`, + Since: "2019.2", + }, + + "SA1027": &lint.Documentation{ + Title: `Atomic access to 64-bit variable must be 64-bit aligned`, + Text: `On ARM, x86-32, and 32-bit MIPS, it is the caller's responsibility to +arrange for 64-bit alignment of 64-bit words accessed atomically. The +first word in a variable or in an allocated struct, array, or slice +can be relied upon to be 64-bit aligned. + +You can use the structlayout tool to inspect the alignment of fields +in a struct.`, + Since: "2019.2", + }, + + "SA2000": &lint.Documentation{ + Title: `sync.WaitGroup.Add called inside the goroutine, leading to a race condition`, + Since: "2017.1", + }, + + "SA2001": &lint.Documentation{ + Title: `Empty critical section, did you mean to defer the unlock?`, + Text: `Empty critical sections of the kind + + mu.Lock() + mu.Unlock() + +are very often a typo, and the following was intended instead: + + mu.Lock() + defer mu.Unlock() + +Do note that sometimes empty critical sections can be useful, as a +form of signaling to wait on another goroutine. Many times, there are +simpler ways of achieving the same effect. When that isn't the case, +the code should be amply commented to avoid confusion. Combining such +comments with a //lint:ignore directive can be used to suppress this +rare false positive.`, + Since: "2017.1", + }, + + "SA2002": &lint.Documentation{ + Title: `Called testing.T.FailNow or SkipNow in a goroutine, which isn't allowed`, + Since: "2017.1", + }, + + "SA2003": &lint.Documentation{ + Title: `Deferred Lock right after locking, likely meant to defer Unlock instead`, + Since: "2017.1", + }, + + "SA3000": &lint.Documentation{ + Title: `TestMain doesn't call os.Exit, hiding test failures`, + Text: `Test executables (and in turn 'go test') exit with a non-zero status +code if any tests failed. When specifying your own TestMain function, +it is your responsibility to arrange for this, by calling os.Exit with +the correct code. The correct code is returned by (*testing.M).Run, so +the usual way of implementing TestMain is to end it with +os.Exit(m.Run()).`, + Since: "2017.1", + }, + + "SA3001": &lint.Documentation{ + Title: `Assigning to b.N in benchmarks distorts the results`, + Text: `The testing package dynamically sets b.N to improve the reliability of +benchmarks and uses it in computations to determine the duration of a +single operation. Benchmark code must not alter b.N as this would +falsify results.`, + Since: "2017.1", + }, + + "SA4000": &lint.Documentation{ + Title: `Boolean expression has identical expressions on both sides`, + Since: "2017.1", + }, + + "SA4001": &lint.Documentation{ + Title: `&*x gets simplified to x, it does not copy x`, + Since: "2017.1", + }, + + "SA4002": &lint.Documentation{ + Title: `Comparing strings with known different sizes has predictable results`, + Since: "2017.1", + }, + + "SA4003": &lint.Documentation{ + Title: `Comparing unsigned values against negative values is pointless`, + Since: "2017.1", + }, + + "SA4004": &lint.Documentation{ + Title: `The loop exits unconditionally after one iteration`, + Since: "2017.1", + }, + + "SA4005": &lint.Documentation{ + Title: `Field assignment that will never be observed. Did you mean to use a pointer receiver?`, + Since: "2017.1", + }, + + "SA4006": &lint.Documentation{ + Title: `A value assigned to a variable is never read before being overwritten. Forgotten error check or dead code?`, + Since: "2017.1", + }, + + "SA4008": &lint.Documentation{ + Title: `The variable in the loop condition never changes, are you incrementing the wrong variable?`, + Since: "2017.1", + }, + + "SA4009": &lint.Documentation{ + Title: `A function argument is overwritten before its first use`, + Since: "2017.1", + }, + + "SA4010": &lint.Documentation{ + Title: `The result of append will never be observed anywhere`, + Since: "2017.1", + }, + + "SA4011": &lint.Documentation{ + Title: `Break statement with no effect. Did you mean to break out of an outer loop?`, + Since: "2017.1", + }, + + "SA4012": &lint.Documentation{ + Title: `Comparing a value against NaN even though no value is equal to NaN`, + Since: "2017.1", + }, + + "SA4013": &lint.Documentation{ + Title: `Negating a boolean twice (!!b) is the same as writing b. This is either redundant, or a typo.`, + Since: "2017.1", + }, + + "SA4014": &lint.Documentation{ + Title: `An if/else if chain has repeated conditions and no side-effects; if the condition didn't match the first time, it won't match the second time, either`, + Since: "2017.1", + }, + + "SA4015": &lint.Documentation{ + Title: `Calling functions like math.Ceil on floats converted from integers doesn't do anything useful`, + Since: "2017.1", + }, + + "SA4016": &lint.Documentation{ + Title: `Certain bitwise operations, such as x ^ 0, do not do anything useful`, + Since: "2017.1", + }, + + "SA4017": &lint.Documentation{ + Title: `A pure function's return value is discarded, making the call pointless`, + Since: "2017.1", + }, + + "SA4018": &lint.Documentation{ + Title: `Self-assignment of variables`, + Since: "2017.1", + }, + + "SA4019": &lint.Documentation{ + Title: `Multiple, identical build constraints in the same file`, + Since: "2017.1", + }, + + "SA4020": &lint.Documentation{ + Title: `Unreachable case clause in a type switch`, + Text: `In a type switch like the following + + type T struct{} + func (T) Read(b []byte) (int, error) { return 0, nil } + + var v interface{} = T{} + + switch v.(type) { + case io.Reader: + // ... + case T: + // unreachable + } + +the second case clause can never be reached because T implements +io.Reader and case clauses are evaluated in source order. + +Another example: + + type T struct{} + func (T) Read(b []byte) (int, error) { return 0, nil } + func (T) Close() error { return nil } + + var v interface{} = T{} + + switch v.(type) { + case io.Reader: + // ... + case io.ReadCloser: + // unreachable + } + +Even though T has a Close method and thus implements io.ReadCloser, +io.Reader will always match first. The method set of io.Reader is a +subset of io.ReadCloser. Thus it is impossible to match the second +case without matching the first case. + + +Structurally equivalent interfaces + +A special case of the previous example are structurally identical +interfaces. Given these declarations + + type T error + type V error + + func doSomething() error { + err, ok := doAnotherThing() + if ok { + return T(err) + } + + return U(err) + } + +the following type switch will have an unreachable case clause: + + switch doSomething().(type) { + case T: + // ... + case V: + // unreachable + } + +T will always match before V because they are structurally equivalent +and therefore doSomething()'s return value implements both.`, + Since: "2019.2", + }, + + "SA4021": &lint.Documentation{ + Title: `x = append(y) is equivalent to x = y`, + Since: "2019.2", + }, + + "SA5000": &lint.Documentation{ + Title: `Assignment to nil map`, + Since: "2017.1", + }, + + "SA5001": &lint.Documentation{ + Title: `Defering Close before checking for a possible error`, + Since: "2017.1", + }, + + "SA5002": &lint.Documentation{ + Title: `The empty for loop (for {}) spins and can block the scheduler`, + Since: "2017.1", + }, + + "SA5003": &lint.Documentation{ + Title: `Defers in infinite loops will never execute`, + Text: `Defers are scoped to the surrounding function, not the surrounding +block. In a function that never returns, i.e. one containing an +infinite loop, defers will never execute.`, + Since: "2017.1", + }, + + "SA5004": &lint.Documentation{ + Title: `for { select { ... with an empty default branch spins`, + Since: "2017.1", + }, + + "SA5005": &lint.Documentation{ + Title: `The finalizer references the finalized object, preventing garbage collection`, + Text: `A finalizer is a function associated with an object that runs when the +garbage collector is ready to collect said object, that is when the +object is no longer referenced by anything. + +If the finalizer references the object, however, it will always remain +as the final reference to that object, preventing the garbage +collector from collecting the object. The finalizer will never run, +and the object will never be collected, leading to a memory leak. That +is why the finalizer should instead use its first argument to operate +on the object. That way, the number of references can temporarily go +to zero before the object is being passed to the finalizer.`, + Since: "2017.1", + }, + + "SA5006": &lint.Documentation{ + Title: `Slice index out of bounds`, + Since: "2017.1", + }, + + "SA5007": &lint.Documentation{ + Title: `Infinite recursive call`, + Text: `A function that calls itself recursively needs to have an exit +condition. Otherwise it will recurse forever, until the system runs +out of memory. + +This issue can be caused by simple bugs such as forgetting to add an +exit condition. It can also happen "on purpose". Some languages have +tail call optimization which makes certain infinite recursive calls +safe to use. Go, however, does not implement TCO, and as such a loop +should be used instead.`, + Since: "2017.1", + }, + + "SA5008": &lint.Documentation{ + Title: `Invalid struct tag`, + Since: "2019.2", + }, + + "SA5009": &lint.Documentation{ + Title: `Invalid Printf call`, + Since: "2019.2", + }, + + "SA6000": &lint.Documentation{ + Title: `Using regexp.Match or related in a loop, should use regexp.Compile`, + Since: "2017.1", + }, + + "SA6001": &lint.Documentation{ + Title: `Missing an optimization opportunity when indexing maps by byte slices`, + + Text: `Map keys must be comparable, which precludes the use of byte slices. +This usually leads to using string keys and converting byte slices to +strings. + +Normally, a conversion of a byte slice to a string needs to copy the data and +causes allocations. The compiler, however, recognizes m[string(b)] and +uses the data of b directly, without copying it, because it knows that +the data can't change during the map lookup. This leads to the +counter-intuitive situation that + + k := string(b) + println(m[k]) + println(m[k]) + +will be less efficient than + + println(m[string(b)]) + println(m[string(b)]) + +because the first version needs to copy and allocate, while the second +one does not. + +For some history on this optimization, check out commit +f5f5a8b6209f84961687d993b93ea0d397f5d5bf in the Go repository.`, + Since: "2017.1", + }, + + "SA6002": &lint.Documentation{ + Title: `Storing non-pointer values in sync.Pool allocates memory`, + Text: `A sync.Pool is used to avoid unnecessary allocations and reduce the +amount of work the garbage collector has to do. + +When passing a value that is not a pointer to a function that accepts +an interface, the value needs to be placed on the heap, which means an +additional allocation. Slices are a common thing to put in sync.Pools, +and they're structs with 3 fields (length, capacity, and a pointer to +an array). In order to avoid the extra allocation, one should store a +pointer to the slice instead. + +See the comments on https://go-review.googlesource.com/c/go/+/24371 +that discuss this problem.`, + Since: "2017.1", + }, + + "SA6003": &lint.Documentation{ + Title: `Converting a string to a slice of runes before ranging over it`, + Text: `You may want to loop over the runes in a string. Instead of converting +the string to a slice of runes and looping over that, you can loop +over the string itself. That is, + + for _, r := range s {} + +and + + for _, r := range []rune(s) {} + +will yield the same values. The first version, however, will be faster +and avoid unnecessary memory allocations. + +Do note that if you are interested in the indices, ranging over a +string and over a slice of runes will yield different indices. The +first one yields byte offsets, while the second one yields indices in +the slice of runes.`, + Since: "2017.1", + }, + + "SA6005": &lint.Documentation{ + Title: `Inefficient string comparison with strings.ToLower or strings.ToUpper`, + Text: `Converting two strings to the same case and comparing them like so + + if strings.ToLower(s1) == strings.ToLower(s2) { + ... + } + +is significantly more expensive than comparing them with +strings.EqualFold(s1, s2). This is due to memory usage as well as +computational complexity. + +strings.ToLower will have to allocate memory for the new strings, as +well as convert both strings fully, even if they differ on the very +first byte. strings.EqualFold, on the other hand, compares the strings +one character at a time. It doesn't need to create two intermediate +strings and can return as soon as the first non-matching character has +been found. + +For a more in-depth explanation of this issue, see +https://blog.digitalocean.com/how-to-efficiently-compare-strings-in-go/`, + Since: "2019.2", + }, + + "SA9001": &lint.Documentation{ + Title: `Defers in range loops may not run when you expect them to`, + Since: "2017.1", + }, + + "SA9002": &lint.Documentation{ + Title: `Using a non-octal os.FileMode that looks like it was meant to be in octal.`, + Since: "2017.1", + }, + + "SA9003": &lint.Documentation{ + Title: `Empty body in an if or else branch`, + Since: "2017.1", + }, + + "SA9004": &lint.Documentation{ + Title: `Only the first constant has an explicit type`, + + Text: `In a constant declaration such as the following: + + const ( + First byte = 1 + Second = 2 + ) + +the constant Second does not have the same type as the constant First. +This construct shouldn't be confused with + + const ( + First byte = iota + Second + ) + +where First and Second do indeed have the same type. The type is only +passed on when no explicit value is assigned to the constant. + +When declaring enumerations with explicit values it is therefore +important not to write + + const ( + EnumFirst EnumType = 1 + EnumSecond = 2 + EnumThird = 3 + ) + +This discrepancy in types can cause various confusing behaviors and +bugs. + + +Wrong type in variable declarations + +The most obvious issue with such incorrect enumerations expresses +itself as a compile error: + + package pkg + + const ( + EnumFirst uint8 = 1 + EnumSecond = 2 + ) + + func fn(useFirst bool) { + x := EnumSecond + if useFirst { + x = EnumFirst + } + } + +fails to compile with + + ./const.go:11:5: cannot use EnumFirst (type uint8) as type int in assignment + + +Losing method sets + +A more subtle issue occurs with types that have methods and optional +interfaces. Consider the following: + + package main + + import "fmt" + + type Enum int + + func (e Enum) String() string { + return "an enum" + } + + const ( + EnumFirst Enum = 1 + EnumSecond = 2 + ) + + func main() { + fmt.Println(EnumFirst) + fmt.Println(EnumSecond) + } + +This code will output + + an enum + 2 + +as EnumSecond has no explicit type, and thus defaults to int.`, + Since: "2019.1", + }, + + "SA9005": &lint.Documentation{ + Title: `Trying to marshal a struct with no public fields nor custom marshaling`, + Text: `The encoding/json and encoding/xml packages only operate on exported +fields in structs, not unexported ones. It is usually an error to try +to (un)marshal structs that only consist of unexported fields. + +This check will not flag calls involving types that define custom +marshaling behavior, e.g. via MarshalJSON methods. It will also not +flag empty structs.`, + Since: "2019.2", + }, +} diff --git a/vendor/honnef.co/go/tools/staticcheck/knowledge.go b/vendor/honnef.co/go/tools/staticcheck/knowledge.go new file mode 100644 index 00000000000..4c12b866a20 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/knowledge.go @@ -0,0 +1,25 @@ +package staticcheck + +import ( + "reflect" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/ssa" + "honnef.co/go/tools/staticcheck/vrp" +) + +var valueRangesAnalyzer = &analysis.Analyzer{ + Name: "vrp", + Doc: "calculate value ranges of functions", + Run: func(pass *analysis.Pass) (interface{}, error) { + m := map[*ssa.Function]vrp.Ranges{} + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + vr := vrp.BuildGraph(ssafn).Solve() + m[ssafn] = vr + } + return m, nil + }, + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + ResultType: reflect.TypeOf(map[*ssa.Function]vrp.Ranges{}), +} diff --git a/vendor/honnef.co/go/tools/staticcheck/lint.go b/vendor/honnef.co/go/tools/staticcheck/lint.go new file mode 100644 index 00000000000..1558cbf9415 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/lint.go @@ -0,0 +1,3360 @@ +// Package staticcheck contains a linter for Go source code. +package staticcheck // import "honnef.co/go/tools/staticcheck" + +import ( + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + htmltemplate "html/template" + "net/http" + "reflect" + "regexp" + "regexp/syntax" + "sort" + "strconv" + "strings" + texttemplate "text/template" + "unicode" + + . "honnef.co/go/tools/arg" + "honnef.co/go/tools/deprecated" + "honnef.co/go/tools/facts" + "honnef.co/go/tools/functions" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/internal/sharedcheck" + "honnef.co/go/tools/lint" + . "honnef.co/go/tools/lint/lintdsl" + "honnef.co/go/tools/printf" + "honnef.co/go/tools/ssa" + "honnef.co/go/tools/ssautil" + "honnef.co/go/tools/staticcheck/vrp" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/analysis/passes/inspect" + "golang.org/x/tools/go/ast/astutil" + "golang.org/x/tools/go/ast/inspector" + "golang.org/x/tools/go/types/typeutil" +) + +func validRegexp(call *Call) { + arg := call.Args[0] + err := ValidateRegexp(arg.Value) + if err != nil { + arg.Invalid(err.Error()) + } +} + +type runeSlice []rune + +func (rs runeSlice) Len() int { return len(rs) } +func (rs runeSlice) Less(i int, j int) bool { return rs[i] < rs[j] } +func (rs runeSlice) Swap(i int, j int) { rs[i], rs[j] = rs[j], rs[i] } + +func utf8Cutset(call *Call) { + arg := call.Args[1] + if InvalidUTF8(arg.Value) { + arg.Invalid(MsgInvalidUTF8) + } +} + +func uniqueCutset(call *Call) { + arg := call.Args[1] + if !UniqueStringCutset(arg.Value) { + arg.Invalid(MsgNonUniqueCutset) + } +} + +func unmarshalPointer(name string, arg int) CallCheck { + return func(call *Call) { + if !Pointer(call.Args[arg].Value) { + call.Args[arg].Invalid(fmt.Sprintf("%s expects to unmarshal into a pointer, but the provided value is not a pointer", name)) + } + } +} + +func pointlessIntMath(call *Call) { + if ConvertedFromInt(call.Args[0].Value) { + call.Invalid(fmt.Sprintf("calling %s on a converted integer is pointless", CallName(call.Instr.Common()))) + } +} + +func checkValidHostPort(arg int) CallCheck { + return func(call *Call) { + if !ValidHostPort(call.Args[arg].Value) { + call.Args[arg].Invalid(MsgInvalidHostPort) + } + } +} + +var ( + checkRegexpRules = map[string]CallCheck{ + "regexp.MustCompile": validRegexp, + "regexp.Compile": validRegexp, + "regexp.Match": validRegexp, + "regexp.MatchReader": validRegexp, + "regexp.MatchString": validRegexp, + } + + checkTimeParseRules = map[string]CallCheck{ + "time.Parse": func(call *Call) { + arg := call.Args[Arg("time.Parse.layout")] + err := ValidateTimeLayout(arg.Value) + if err != nil { + arg.Invalid(err.Error()) + } + }, + } + + checkEncodingBinaryRules = map[string]CallCheck{ + "encoding/binary.Write": func(call *Call) { + arg := call.Args[Arg("encoding/binary.Write.data")] + if !CanBinaryMarshal(call.Pass, arg.Value) { + arg.Invalid(fmt.Sprintf("value of type %s cannot be used with binary.Write", arg.Value.Value.Type())) + } + }, + } + + checkURLsRules = map[string]CallCheck{ + "net/url.Parse": func(call *Call) { + arg := call.Args[Arg("net/url.Parse.rawurl")] + err := ValidateURL(arg.Value) + if err != nil { + arg.Invalid(err.Error()) + } + }, + } + + checkSyncPoolValueRules = map[string]CallCheck{ + "(*sync.Pool).Put": func(call *Call) { + arg := call.Args[Arg("(*sync.Pool).Put.x")] + typ := arg.Value.Value.Type() + if !IsPointerLike(typ) { + arg.Invalid("argument should be pointer-like to avoid allocations") + } + }, + } + + checkRegexpFindAllRules = map[string]CallCheck{ + "(*regexp.Regexp).FindAll": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllIndex": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllString": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllStringIndex": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllStringSubmatch": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllStringSubmatchIndex": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllSubmatch": RepeatZeroTimes("a FindAll method", 1), + "(*regexp.Regexp).FindAllSubmatchIndex": RepeatZeroTimes("a FindAll method", 1), + } + + checkUTF8CutsetRules = map[string]CallCheck{ + "strings.IndexAny": utf8Cutset, + "strings.LastIndexAny": utf8Cutset, + "strings.ContainsAny": utf8Cutset, + "strings.Trim": utf8Cutset, + "strings.TrimLeft": utf8Cutset, + "strings.TrimRight": utf8Cutset, + } + + checkUniqueCutsetRules = map[string]CallCheck{ + "strings.Trim": uniqueCutset, + "strings.TrimLeft": uniqueCutset, + "strings.TrimRight": uniqueCutset, + } + + checkUnmarshalPointerRules = map[string]CallCheck{ + "encoding/xml.Unmarshal": unmarshalPointer("xml.Unmarshal", 1), + "(*encoding/xml.Decoder).Decode": unmarshalPointer("Decode", 0), + "(*encoding/xml.Decoder).DecodeElement": unmarshalPointer("DecodeElement", 0), + "encoding/json.Unmarshal": unmarshalPointer("json.Unmarshal", 1), + "(*encoding/json.Decoder).Decode": unmarshalPointer("Decode", 0), + } + + checkUnbufferedSignalChanRules = map[string]CallCheck{ + "os/signal.Notify": func(call *Call) { + arg := call.Args[Arg("os/signal.Notify.c")] + if UnbufferedChannel(arg.Value) { + arg.Invalid("the channel used with signal.Notify should be buffered") + } + }, + } + + checkMathIntRules = map[string]CallCheck{ + "math.Ceil": pointlessIntMath, + "math.Floor": pointlessIntMath, + "math.IsNaN": pointlessIntMath, + "math.Trunc": pointlessIntMath, + "math.IsInf": pointlessIntMath, + } + + checkStringsReplaceZeroRules = map[string]CallCheck{ + "strings.Replace": RepeatZeroTimes("strings.Replace", 3), + "bytes.Replace": RepeatZeroTimes("bytes.Replace", 3), + } + + checkListenAddressRules = map[string]CallCheck{ + "net/http.ListenAndServe": checkValidHostPort(0), + "net/http.ListenAndServeTLS": checkValidHostPort(0), + } + + checkBytesEqualIPRules = map[string]CallCheck{ + "bytes.Equal": func(call *Call) { + if ConvertedFrom(call.Args[Arg("bytes.Equal.a")].Value, "net.IP") && + ConvertedFrom(call.Args[Arg("bytes.Equal.b")].Value, "net.IP") { + call.Invalid("use net.IP.Equal to compare net.IPs, not bytes.Equal") + } + }, + } + + checkRegexpMatchLoopRules = map[string]CallCheck{ + "regexp.Match": loopedRegexp("regexp.Match"), + "regexp.MatchReader": loopedRegexp("regexp.MatchReader"), + "regexp.MatchString": loopedRegexp("regexp.MatchString"), + } + + checkNoopMarshal = map[string]CallCheck{ + // TODO(dh): should we really flag XML? Even an empty struct + // produces a non-zero amount of data, namely its type name. + // Let's see if we encounter any false positives. + // + // Also, should we flag gob? + "encoding/json.Marshal": checkNoopMarshalImpl(Arg("json.Marshal.v"), "MarshalJSON", "MarshalText"), + "encoding/xml.Marshal": checkNoopMarshalImpl(Arg("xml.Marshal.v"), "MarshalXML", "MarshalText"), + "(*encoding/json.Encoder).Encode": checkNoopMarshalImpl(Arg("(*encoding/json.Encoder).Encode.v"), "MarshalJSON", "MarshalText"), + "(*encoding/xml.Encoder).Encode": checkNoopMarshalImpl(Arg("(*encoding/xml.Encoder).Encode.v"), "MarshalXML", "MarshalText"), + + "encoding/json.Unmarshal": checkNoopMarshalImpl(Arg("json.Unmarshal.v"), "UnmarshalJSON", "UnmarshalText"), + "encoding/xml.Unmarshal": checkNoopMarshalImpl(Arg("xml.Unmarshal.v"), "UnmarshalXML", "UnmarshalText"), + "(*encoding/json.Decoder).Decode": checkNoopMarshalImpl(Arg("(*encoding/json.Decoder).Decode.v"), "UnmarshalJSON", "UnmarshalText"), + "(*encoding/xml.Decoder).Decode": checkNoopMarshalImpl(Arg("(*encoding/xml.Decoder).Decode.v"), "UnmarshalXML", "UnmarshalText"), + } + + checkUnsupportedMarshal = map[string]CallCheck{ + "encoding/json.Marshal": checkUnsupportedMarshalImpl(Arg("json.Marshal.v"), "json", "MarshalJSON", "MarshalText"), + "encoding/xml.Marshal": checkUnsupportedMarshalImpl(Arg("xml.Marshal.v"), "xml", "MarshalXML", "MarshalText"), + "(*encoding/json.Encoder).Encode": checkUnsupportedMarshalImpl(Arg("(*encoding/json.Encoder).Encode.v"), "json", "MarshalJSON", "MarshalText"), + "(*encoding/xml.Encoder).Encode": checkUnsupportedMarshalImpl(Arg("(*encoding/xml.Encoder).Encode.v"), "xml", "MarshalXML", "MarshalText"), + } + + checkAtomicAlignment = map[string]CallCheck{ + "sync/atomic.AddInt64": checkAtomicAlignmentImpl, + "sync/atomic.AddUint64": checkAtomicAlignmentImpl, + "sync/atomic.CompareAndSwapInt64": checkAtomicAlignmentImpl, + "sync/atomic.CompareAndSwapUint64": checkAtomicAlignmentImpl, + "sync/atomic.LoadInt64": checkAtomicAlignmentImpl, + "sync/atomic.LoadUint64": checkAtomicAlignmentImpl, + "sync/atomic.StoreInt64": checkAtomicAlignmentImpl, + "sync/atomic.StoreUint64": checkAtomicAlignmentImpl, + "sync/atomic.SwapInt64": checkAtomicAlignmentImpl, + "sync/atomic.SwapUint64": checkAtomicAlignmentImpl, + } + + // TODO(dh): detect printf wrappers + checkPrintfRules = map[string]CallCheck{ + "fmt.Errorf": func(call *Call) { checkPrintfCall(call, 0, 1) }, + "fmt.Printf": func(call *Call) { checkPrintfCall(call, 0, 1) }, + "fmt.Sprintf": func(call *Call) { checkPrintfCall(call, 0, 1) }, + "fmt.Fprintf": func(call *Call) { checkPrintfCall(call, 1, 2) }, + } +) + +func checkPrintfCall(call *Call, fIdx, vIdx int) { + f := call.Args[fIdx] + var args []ssa.Value + switch v := call.Args[vIdx].Value.Value.(type) { + case *ssa.Slice: + var ok bool + args, ok = ssautil.Vararg(v) + if !ok { + // We don't know what the actual arguments to the function are + return + } + case *ssa.Const: + // nil, i.e. no arguments + default: + // We don't know what the actual arguments to the function are + return + } + checkPrintfCallImpl(call, f.Value.Value, args) +} + +type verbFlag int + +const ( + isInt verbFlag = 1 << iota + isBool + isFP + isString + isPointer + isPseudoPointer + isSlice + isAny + noRecurse +) + +var verbs = [...]verbFlag{ + 'b': isPseudoPointer | isInt | isFP, + 'c': isInt, + 'd': isPseudoPointer | isInt, + 'e': isFP, + 'E': isFP, + 'f': isFP, + 'F': isFP, + 'g': isFP, + 'G': isFP, + 'o': isPseudoPointer | isInt, + 'p': isSlice | isPointer | noRecurse, + 'q': isInt | isString, + 's': isString, + 't': isBool, + 'T': isAny, + 'U': isInt, + 'v': isAny, + 'X': isPseudoPointer | isInt | isString, + 'x': isPseudoPointer | isInt | isString, +} + +func checkPrintfCallImpl(call *Call, f ssa.Value, args []ssa.Value) { + var msCache *typeutil.MethodSetCache + if f.Parent() != nil { + msCache = &f.Parent().Prog.MethodSets + } + + elem := func(T types.Type, verb rune) ([]types.Type, bool) { + if verbs[verb]&noRecurse != 0 { + return []types.Type{T}, false + } + switch T := T.(type) { + case *types.Slice: + if verbs[verb]&isSlice != 0 { + return []types.Type{T}, false + } + if verbs[verb]&isString != 0 && IsType(T.Elem().Underlying(), "byte") { + return []types.Type{T}, false + } + return []types.Type{T.Elem()}, true + case *types.Map: + key := T.Key() + val := T.Elem() + return []types.Type{key, val}, true + case *types.Struct: + out := make([]types.Type, 0, T.NumFields()) + for i := 0; i < T.NumFields(); i++ { + out = append(out, T.Field(i).Type()) + } + return out, true + case *types.Array: + return []types.Type{T.Elem()}, true + default: + return []types.Type{T}, false + } + } + isInfo := func(T types.Type, info types.BasicInfo) bool { + basic, ok := T.Underlying().(*types.Basic) + return ok && basic.Info()&info != 0 + } + + isStringer := func(T types.Type, ms *types.MethodSet) bool { + sel := ms.Lookup(nil, "String") + if sel == nil { + return false + } + fn, ok := sel.Obj().(*types.Func) + if !ok { + // should be unreachable + return false + } + sig := fn.Type().(*types.Signature) + if sig.Params().Len() != 0 { + return false + } + if sig.Results().Len() != 1 { + return false + } + if !IsType(sig.Results().At(0).Type(), "string") { + return false + } + return true + } + isError := func(T types.Type, ms *types.MethodSet) bool { + sel := ms.Lookup(nil, "Error") + if sel == nil { + return false + } + fn, ok := sel.Obj().(*types.Func) + if !ok { + // should be unreachable + return false + } + sig := fn.Type().(*types.Signature) + if sig.Params().Len() != 0 { + return false + } + if sig.Results().Len() != 1 { + return false + } + if !IsType(sig.Results().At(0).Type(), "string") { + return false + } + return true + } + + isFormatter := func(T types.Type, ms *types.MethodSet) bool { + sel := ms.Lookup(nil, "Format") + if sel == nil { + return false + } + fn, ok := sel.Obj().(*types.Func) + if !ok { + // should be unreachable + return false + } + sig := fn.Type().(*types.Signature) + if sig.Params().Len() != 2 { + return false + } + // TODO(dh): check the types of the arguments for more + // precision + if sig.Results().Len() != 0 { + return false + } + return true + } + + seen := map[types.Type]bool{} + var checkType func(verb rune, T types.Type, top bool) bool + checkType = func(verb rune, T types.Type, top bool) bool { + if top { + for k := range seen { + delete(seen, k) + } + } + if seen[T] { + return true + } + seen[T] = true + if int(verb) >= len(verbs) { + // Unknown verb + return true + } + + flags := verbs[verb] + if flags == 0 { + // Unknown verb + return true + } + + ms := msCache.MethodSet(T) + if isFormatter(T, ms) { + // the value is responsible for formatting itself + return true + } + + if flags&isString != 0 && (isStringer(T, ms) || isError(T, ms)) { + // Check for stringer early because we're about to dereference + return true + } + + T = T.Underlying() + if flags&(isPointer|isPseudoPointer) == 0 && top { + T = Dereference(T) + } + if flags&isPseudoPointer != 0 && top { + t := Dereference(T) + if _, ok := t.Underlying().(*types.Struct); ok { + T = t + } + } + + if _, ok := T.(*types.Interface); ok { + // We don't know what's in the interface + return true + } + + var info types.BasicInfo + if flags&isInt != 0 { + info |= types.IsInteger + } + if flags&isBool != 0 { + info |= types.IsBoolean + } + if flags&isFP != 0 { + info |= types.IsFloat | types.IsComplex + } + if flags&isString != 0 { + info |= types.IsString + } + + if info != 0 && isInfo(T, info) { + return true + } + + if flags&isString != 0 && (IsType(T, "[]byte") || isStringer(T, ms) || isError(T, ms)) { + return true + } + + if flags&isPointer != 0 && IsPointerLike(T) { + return true + } + if flags&isPseudoPointer != 0 { + switch U := T.Underlying().(type) { + case *types.Pointer: + if !top { + return true + } + + if _, ok := U.Elem().Underlying().(*types.Struct); !ok { + return true + } + case *types.Chan, *types.Signature: + return true + } + } + + if flags&isSlice != 0 { + if _, ok := T.(*types.Slice); ok { + return true + } + } + + if flags&isAny != 0 { + return true + } + + elems, ok := elem(T.Underlying(), verb) + if !ok { + return false + } + for _, elem := range elems { + if !checkType(verb, elem, false) { + return false + } + } + + return true + } + + k, ok := f.(*ssa.Const) + if !ok { + return + } + actions, err := printf.Parse(constant.StringVal(k.Value)) + if err != nil { + call.Invalid("couldn't parse format string") + return + } + + ptr := 1 + hasExplicit := false + + checkStar := func(verb printf.Verb, star printf.Argument) bool { + if star, ok := star.(printf.Star); ok { + idx := 0 + if star.Index == -1 { + idx = ptr + ptr++ + } else { + hasExplicit = true + idx = star.Index + ptr = star.Index + 1 + } + if idx == 0 { + call.Invalid(fmt.Sprintf("Printf format %s reads invalid arg 0; indices are 1-based", verb.Raw)) + return false + } + if idx > len(args) { + call.Invalid( + fmt.Sprintf("Printf format %s reads arg #%d, but call has only %d args", + verb.Raw, idx, len(args))) + return false + } + if arg, ok := args[idx-1].(*ssa.MakeInterface); ok { + if !isInfo(arg.X.Type(), types.IsInteger) { + call.Invalid(fmt.Sprintf("Printf format %s reads non-int arg #%d as argument of *", verb.Raw, idx)) + } + } + } + return true + } + + // We only report one problem per format string. Making a + // mistake with an index tends to invalidate all future + // implicit indices. + for _, action := range actions { + verb, ok := action.(printf.Verb) + if !ok { + continue + } + + if !checkStar(verb, verb.Width) || !checkStar(verb, verb.Precision) { + return + } + + off := ptr + if verb.Value != -1 { + hasExplicit = true + off = verb.Value + } + if off > len(args) { + call.Invalid( + fmt.Sprintf("Printf format %s reads arg #%d, but call has only %d args", + verb.Raw, off, len(args))) + return + } else if verb.Value == 0 && verb.Letter != '%' { + call.Invalid(fmt.Sprintf("Printf format %s reads invalid arg 0; indices are 1-based", verb.Raw)) + return + } else if off != 0 { + arg, ok := args[off-1].(*ssa.MakeInterface) + if ok { + if !checkType(verb.Letter, arg.X.Type(), true) { + call.Invalid(fmt.Sprintf("Printf format %s has arg #%d of wrong type %s", + verb.Raw, ptr, args[ptr-1].(*ssa.MakeInterface).X.Type())) + return + } + } + } + + switch verb.Value { + case -1: + // Consume next argument + ptr++ + case 0: + // Don't consume any arguments + default: + ptr = verb.Value + 1 + } + } + + if !hasExplicit && ptr <= len(args) { + call.Invalid(fmt.Sprintf("Printf call needs %d args but has %d args", ptr-1, len(args))) + } +} + +func checkAtomicAlignmentImpl(call *Call) { + sizes := call.Pass.TypesSizes + if sizes.Sizeof(types.Typ[types.Uintptr]) != 4 { + // Not running on a 32-bit platform + return + } + v, ok := call.Args[0].Value.Value.(*ssa.FieldAddr) + if !ok { + // TODO(dh): also check indexing into arrays and slices + return + } + T := v.X.Type().Underlying().(*types.Pointer).Elem().Underlying().(*types.Struct) + fields := make([]*types.Var, 0, T.NumFields()) + for i := 0; i < T.NumFields() && i <= v.Field; i++ { + fields = append(fields, T.Field(i)) + } + + off := sizes.Offsetsof(fields)[v.Field] + if off%8 != 0 { + msg := fmt.Sprintf("address of non 64-bit aligned field %s passed to %s", + T.Field(v.Field).Name(), + CallName(call.Instr.Common())) + call.Invalid(msg) + } +} + +func checkNoopMarshalImpl(argN int, meths ...string) CallCheck { + return func(call *Call) { + if IsGenerated(call.Pass, call.Instr.Pos()) { + return + } + arg := call.Args[argN] + T := arg.Value.Value.Type() + Ts, ok := Dereference(T).Underlying().(*types.Struct) + if !ok { + return + } + if Ts.NumFields() == 0 { + return + } + fields := FlattenFields(Ts) + for _, field := range fields { + if field.Var.Exported() { + return + } + } + // OPT(dh): we could use a method set cache here + ms := call.Instr.Parent().Prog.MethodSets.MethodSet(T) + // TODO(dh): we're not checking the signature, which can cause false negatives. + // This isn't a huge problem, however, since vet complains about incorrect signatures. + for _, meth := range meths { + if ms.Lookup(nil, meth) != nil { + return + } + } + arg.Invalid("struct doesn't have any exported fields, nor custom marshaling") + } +} + +func checkUnsupportedMarshalImpl(argN int, tag string, meths ...string) CallCheck { + // TODO(dh): flag slices and maps of unsupported types + return func(call *Call) { + msCache := &call.Instr.Parent().Prog.MethodSets + + arg := call.Args[argN] + T := arg.Value.Value.Type() + Ts, ok := Dereference(T).Underlying().(*types.Struct) + if !ok { + return + } + ms := msCache.MethodSet(T) + // TODO(dh): we're not checking the signature, which can cause false negatives. + // This isn't a huge problem, however, since vet complains about incorrect signatures. + for _, meth := range meths { + if ms.Lookup(nil, meth) != nil { + return + } + } + fields := FlattenFields(Ts) + for _, field := range fields { + if !(field.Var.Exported()) { + continue + } + if reflect.StructTag(field.Tag).Get(tag) == "-" { + continue + } + ms := msCache.MethodSet(field.Var.Type()) + // TODO(dh): we're not checking the signature, which can cause false negatives. + // This isn't a huge problem, however, since vet complains about incorrect signatures. + for _, meth := range meths { + if ms.Lookup(nil, meth) != nil { + return + } + } + switch field.Var.Type().Underlying().(type) { + case *types.Chan, *types.Signature: + arg.Invalid(fmt.Sprintf("trying to marshal chan or func value, field %s", fieldPath(T, field.Path))) + } + } + } +} + +func fieldPath(start types.Type, indices []int) string { + p := start.String() + for _, idx := range indices { + field := Dereference(start).Underlying().(*types.Struct).Field(idx) + start = field.Type() + p += "." + field.Name() + } + return p +} + +func isInLoop(b *ssa.BasicBlock) bool { + sets := functions.FindLoops(b.Parent()) + for _, set := range sets { + if set.Has(b) { + return true + } + } + return false +} + +func CheckUntrappableSignal(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if !IsCallToAnyAST(pass, call, + "os/signal.Ignore", "os/signal.Notify", "os/signal.Reset") { + return + } + for _, arg := range call.Args { + if conv, ok := arg.(*ast.CallExpr); ok && isName(pass, conv.Fun, "os.Signal") { + arg = conv.Args[0] + } + + if isName(pass, arg, "os.Kill") || isName(pass, arg, "syscall.SIGKILL") { + ReportNodef(pass, arg, "%s cannot be trapped (did you mean syscall.SIGTERM?)", Render(pass, arg)) + } + if isName(pass, arg, "syscall.SIGSTOP") { + ReportNodef(pass, arg, "%s signal cannot be trapped", Render(pass, arg)) + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckTemplate(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + var kind string + if IsCallToAST(pass, call, "(*text/template.Template).Parse") { + kind = "text" + } else if IsCallToAST(pass, call, "(*html/template.Template).Parse") { + kind = "html" + } else { + return + } + sel := call.Fun.(*ast.SelectorExpr) + if !IsCallToAST(pass, sel.X, "text/template.New") && + !IsCallToAST(pass, sel.X, "html/template.New") { + // TODO(dh): this is a cheap workaround for templates with + // different delims. A better solution with less false + // negatives would use data flow analysis to see where the + // template comes from and where it has been + return + } + s, ok := ExprToString(pass, call.Args[Arg("(*text/template.Template).Parse.text")]) + if !ok { + return + } + var err error + switch kind { + case "text": + _, err = texttemplate.New("").Parse(s) + case "html": + _, err = htmltemplate.New("").Parse(s) + } + if err != nil { + // TODO(dominikh): whitelist other parse errors, if any + if strings.Contains(err.Error(), "unexpected") { + ReportNodef(pass, call.Args[Arg("(*text/template.Template).Parse.text")], "%s", err) + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckTimeSleepConstant(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if !IsCallToAST(pass, call, "time.Sleep") { + return + } + lit, ok := call.Args[Arg("time.Sleep.d")].(*ast.BasicLit) + if !ok { + return + } + n, err := strconv.Atoi(lit.Value) + if err != nil { + return + } + if n == 0 || n > 120 { + // time.Sleep(0) is a seldom used pattern in concurrency + // tests. >120 might be intentional. 120 was chosen + // because the user could've meant 2 minutes. + return + } + recommendation := "time.Sleep(time.Nanosecond)" + if n != 1 { + recommendation = fmt.Sprintf("time.Sleep(%d * time.Nanosecond)", n) + } + ReportNodef(pass, call.Args[Arg("time.Sleep.d")], + "sleeping for %d nanoseconds is probably a bug. Be explicit if it isn't: %s", n, recommendation) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckWaitgroupAdd(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + g := node.(*ast.GoStmt) + fun, ok := g.Call.Fun.(*ast.FuncLit) + if !ok { + return + } + if len(fun.Body.List) == 0 { + return + } + stmt, ok := fun.Body.List[0].(*ast.ExprStmt) + if !ok { + return + } + if IsCallToAST(pass, stmt.X, "(*sync.WaitGroup).Add") { + ReportNodef(pass, stmt, "should call %s before starting the goroutine to avoid a race", + Render(pass, stmt)) + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.GoStmt)(nil)}, fn) + return nil, nil +} + +func CheckInfiniteEmptyLoop(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + loop := node.(*ast.ForStmt) + if len(loop.Body.List) != 0 || loop.Post != nil { + return + } + + if loop.Init != nil { + // TODO(dh): this isn't strictly necessary, it just makes + // the check easier. + return + } + // An empty loop is bad news in two cases: 1) The loop has no + // condition. In that case, it's just a loop that spins + // forever and as fast as it can, keeping a core busy. 2) The + // loop condition only consists of variable or field reads and + // operators on those. The only way those could change their + // value is with unsynchronised access, which constitutes a + // data race. + // + // If the condition contains any function calls, its behaviour + // is dynamic and the loop might terminate. Similarly for + // channel receives. + + if loop.Cond != nil { + if hasSideEffects(loop.Cond) { + return + } + if ident, ok := loop.Cond.(*ast.Ident); ok { + if k, ok := pass.TypesInfo.ObjectOf(ident).(*types.Const); ok { + if !constant.BoolVal(k.Val()) { + // don't flag `for false {}` loops. They're a debug aid. + return + } + } + } + ReportNodef(pass, loop, "loop condition never changes or has a race condition") + } + ReportNodef(pass, loop, "this loop will spin, using 100%% CPU") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil)}, fn) + return nil, nil +} + +func CheckDeferInInfiniteLoop(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + mightExit := false + var defers []ast.Stmt + loop := node.(*ast.ForStmt) + if loop.Cond != nil { + return + } + fn2 := func(node ast.Node) bool { + switch stmt := node.(type) { + case *ast.ReturnStmt: + mightExit = true + return false + case *ast.BranchStmt: + // TODO(dominikh): if this sees a break in a switch or + // select, it doesn't check if it breaks the loop or + // just the select/switch. This causes some false + // negatives. + if stmt.Tok == token.BREAK { + mightExit = true + return false + } + case *ast.DeferStmt: + defers = append(defers, stmt) + case *ast.FuncLit: + // Don't look into function bodies + return false + } + return true + } + ast.Inspect(loop.Body, fn2) + if mightExit { + return + } + for _, stmt := range defers { + ReportNodef(pass, stmt, "defers in this infinite loop will never run") + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil)}, fn) + return nil, nil +} + +func CheckDubiousDeferInChannelRangeLoop(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + loop := node.(*ast.RangeStmt) + typ := pass.TypesInfo.TypeOf(loop.X) + _, ok := typ.Underlying().(*types.Chan) + if !ok { + return + } + fn2 := func(node ast.Node) bool { + switch stmt := node.(type) { + case *ast.DeferStmt: + ReportNodef(pass, stmt, "defers in this range loop won't run unless the channel gets closed") + case *ast.FuncLit: + // Don't look into function bodies + return false + } + return true + } + ast.Inspect(loop.Body, fn2) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.RangeStmt)(nil)}, fn) + return nil, nil +} + +func CheckTestMainExit(pass *analysis.Pass) (interface{}, error) { + var ( + fnmain ast.Node + callsExit bool + callsRun bool + arg types.Object + ) + fn := func(node ast.Node, push bool) bool { + if !push { + if fnmain != nil && node == fnmain { + if !callsExit && callsRun { + ReportNodef(pass, fnmain, "TestMain should call os.Exit to set exit code") + } + fnmain = nil + callsExit = false + callsRun = false + arg = nil + } + return true + } + + switch node := node.(type) { + case *ast.FuncDecl: + if fnmain != nil { + return true + } + if !isTestMain(pass, node) { + return false + } + fnmain = node + arg = pass.TypesInfo.ObjectOf(node.Type.Params.List[0].Names[0]) + return true + case *ast.CallExpr: + if IsCallToAST(pass, node, "os.Exit") { + callsExit = true + return false + } + sel, ok := node.Fun.(*ast.SelectorExpr) + if !ok { + return true + } + ident, ok := sel.X.(*ast.Ident) + if !ok { + return true + } + if arg != pass.TypesInfo.ObjectOf(ident) { + return true + } + if sel.Sel.Name == "Run" { + callsRun = true + return false + } + return true + default: + // unreachable + return true + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Nodes([]ast.Node{(*ast.FuncDecl)(nil), (*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func isTestMain(pass *analysis.Pass, decl *ast.FuncDecl) bool { + if decl.Name.Name != "TestMain" { + return false + } + if len(decl.Type.Params.List) != 1 { + return false + } + arg := decl.Type.Params.List[0] + if len(arg.Names) != 1 { + return false + } + return IsOfType(pass, arg.Type, "*testing.M") +} + +func CheckExec(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if !IsCallToAST(pass, call, "os/exec.Command") { + return + } + val, ok := ExprToString(pass, call.Args[Arg("os/exec.Command.name")]) + if !ok { + return + } + if !strings.Contains(val, " ") || strings.Contains(val, `\`) || strings.Contains(val, "/") { + return + } + ReportNodef(pass, call.Args[Arg("os/exec.Command.name")], + "first argument to exec.Command looks like a shell command, but a program name or path are expected") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckLoopEmptyDefault(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + loop := node.(*ast.ForStmt) + if len(loop.Body.List) != 1 || loop.Cond != nil || loop.Init != nil { + return + } + sel, ok := loop.Body.List[0].(*ast.SelectStmt) + if !ok { + return + } + for _, c := range sel.Body.List { + if comm, ok := c.(*ast.CommClause); ok && comm.Comm == nil && len(comm.Body) == 0 { + ReportNodef(pass, comm, "should not have an empty default case in a for+select loop. The loop will spin.") + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil)}, fn) + return nil, nil +} + +func CheckLhsRhsIdentical(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + op := node.(*ast.BinaryExpr) + switch op.Op { + case token.EQL, token.NEQ: + if basic, ok := pass.TypesInfo.TypeOf(op.X).Underlying().(*types.Basic); ok { + if kind := basic.Kind(); kind == types.Float32 || kind == types.Float64 { + // f == f and f != f might be used to check for NaN + return + } + } + case token.SUB, token.QUO, token.AND, token.REM, token.OR, token.XOR, token.AND_NOT, + token.LAND, token.LOR, token.LSS, token.GTR, token.LEQ, token.GEQ: + default: + // For some ops, such as + and *, it can make sense to + // have identical operands + return + } + + if Render(pass, op.X) != Render(pass, op.Y) { + return + } + l1, ok1 := op.X.(*ast.BasicLit) + l2, ok2 := op.Y.(*ast.BasicLit) + if ok1 && ok2 && l1.Kind == token.INT && l2.Kind == l1.Kind && l1.Value == "0" && l2.Value == l1.Value && IsGenerated(pass, l1.Pos()) { + // cgo generates the following function call: + // _cgoCheckPointer(_cgoBase0, 0 == 0) – it uses 0 == 0 + // instead of true in case the user shadowed the + // identifier. Ideally we'd restrict this exception to + // calls of _cgoCheckPointer, but it's not worth the + // hassle of keeping track of the stack. + // are very rare to begin with, and we're mostly checking + // for them to catch typos such as 1 == 1 where the user + // meant to type i == 1. The odds of a false negative for + // 0 == 0 are slim. + return + } + ReportNodef(pass, op, "identical expressions on the left and right side of the '%s' operator", op.Op) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func CheckScopedBreak(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + var body *ast.BlockStmt + switch node := node.(type) { + case *ast.ForStmt: + body = node.Body + case *ast.RangeStmt: + body = node.Body + default: + panic(fmt.Sprintf("unreachable: %T", node)) + } + for _, stmt := range body.List { + var blocks [][]ast.Stmt + switch stmt := stmt.(type) { + case *ast.SwitchStmt: + for _, c := range stmt.Body.List { + blocks = append(blocks, c.(*ast.CaseClause).Body) + } + case *ast.SelectStmt: + for _, c := range stmt.Body.List { + blocks = append(blocks, c.(*ast.CommClause).Body) + } + default: + continue + } + + for _, body := range blocks { + if len(body) == 0 { + continue + } + lasts := []ast.Stmt{body[len(body)-1]} + // TODO(dh): unfold all levels of nested block + // statements, not just a single level if statement + if ifs, ok := lasts[0].(*ast.IfStmt); ok { + if len(ifs.Body.List) == 0 { + continue + } + lasts[0] = ifs.Body.List[len(ifs.Body.List)-1] + + if block, ok := ifs.Else.(*ast.BlockStmt); ok { + if len(block.List) != 0 { + lasts = append(lasts, block.List[len(block.List)-1]) + } + } + } + for _, last := range lasts { + branch, ok := last.(*ast.BranchStmt) + if !ok || branch.Tok != token.BREAK || branch.Label != nil { + continue + } + ReportNodef(pass, branch, "ineffective break statement. Did you mean to break out of the outer loop?") + } + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ForStmt)(nil), (*ast.RangeStmt)(nil)}, fn) + return nil, nil +} + +func CheckUnsafePrintf(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + var arg int + if IsCallToAnyAST(pass, call, "fmt.Printf", "fmt.Sprintf", "log.Printf") { + arg = Arg("fmt.Printf.format") + } else if IsCallToAnyAST(pass, call, "fmt.Fprintf") { + arg = Arg("fmt.Fprintf.format") + } else { + return + } + if len(call.Args) != arg+1 { + return + } + switch call.Args[arg].(type) { + case *ast.CallExpr, *ast.Ident: + default: + return + } + ReportNodef(pass, call.Args[arg], + "printf-style function with dynamic format string and no further arguments should use print-style function instead") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckEarlyDefer(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + block := node.(*ast.BlockStmt) + if len(block.List) < 2 { + return + } + for i, stmt := range block.List { + if i == len(block.List)-1 { + break + } + assign, ok := stmt.(*ast.AssignStmt) + if !ok { + continue + } + if len(assign.Rhs) != 1 { + continue + } + if len(assign.Lhs) < 2 { + continue + } + if lhs, ok := assign.Lhs[len(assign.Lhs)-1].(*ast.Ident); ok && lhs.Name == "_" { + continue + } + call, ok := assign.Rhs[0].(*ast.CallExpr) + if !ok { + continue + } + sig, ok := pass.TypesInfo.TypeOf(call.Fun).(*types.Signature) + if !ok { + continue + } + if sig.Results().Len() < 2 { + continue + } + last := sig.Results().At(sig.Results().Len() - 1) + // FIXME(dh): check that it's error from universe, not + // another type of the same name + if last.Type().String() != "error" { + continue + } + lhs, ok := assign.Lhs[0].(*ast.Ident) + if !ok { + continue + } + def, ok := block.List[i+1].(*ast.DeferStmt) + if !ok { + continue + } + sel, ok := def.Call.Fun.(*ast.SelectorExpr) + if !ok { + continue + } + ident, ok := selectorX(sel).(*ast.Ident) + if !ok { + continue + } + if ident.Obj != lhs.Obj { + continue + } + if sel.Sel.Name != "Close" { + continue + } + ReportNodef(pass, def, "should check returned error before deferring %s", Render(pass, def.Call)) + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BlockStmt)(nil)}, fn) + return nil, nil +} + +func selectorX(sel *ast.SelectorExpr) ast.Node { + switch x := sel.X.(type) { + case *ast.SelectorExpr: + return selectorX(x) + default: + return x + } +} + +func CheckEmptyCriticalSection(pass *analysis.Pass) (interface{}, error) { + // Initially it might seem like this check would be easier to + // implement in SSA. After all, we're only checking for two + // consecutive method calls. In reality, however, there may be any + // number of other instructions between the lock and unlock, while + // still constituting an empty critical section. For example, + // given `m.x().Lock(); m.x().Unlock()`, there will be a call to + // x(). In the AST-based approach, this has a tiny potential for a + // false positive (the second call to x might be doing work that + // is protected by the mutex). In an SSA-based approach, however, + // it would miss a lot of real bugs. + + mutexParams := func(s ast.Stmt) (x ast.Expr, funcName string, ok bool) { + expr, ok := s.(*ast.ExprStmt) + if !ok { + return nil, "", false + } + call, ok := expr.X.(*ast.CallExpr) + if !ok { + return nil, "", false + } + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return nil, "", false + } + + fn, ok := pass.TypesInfo.ObjectOf(sel.Sel).(*types.Func) + if !ok { + return nil, "", false + } + sig := fn.Type().(*types.Signature) + if sig.Params().Len() != 0 || sig.Results().Len() != 0 { + return nil, "", false + } + + return sel.X, fn.Name(), true + } + + fn := func(node ast.Node) { + block := node.(*ast.BlockStmt) + if len(block.List) < 2 { + return + } + for i := range block.List[:len(block.List)-1] { + sel1, method1, ok1 := mutexParams(block.List[i]) + sel2, method2, ok2 := mutexParams(block.List[i+1]) + + if !ok1 || !ok2 || Render(pass, sel1) != Render(pass, sel2) { + continue + } + if (method1 == "Lock" && method2 == "Unlock") || + (method1 == "RLock" && method2 == "RUnlock") { + ReportNodef(pass, block.List[i+1], "empty critical section") + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BlockStmt)(nil)}, fn) + return nil, nil +} + +// cgo produces code like fn(&*_Cvar_kSomeCallbacks) which we don't +// want to flag. +var cgoIdent = regexp.MustCompile(`^_C(func|var)_.+$`) + +func CheckIneffectiveCopy(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + if unary, ok := node.(*ast.UnaryExpr); ok { + if star, ok := unary.X.(*ast.StarExpr); ok && unary.Op == token.AND { + ident, ok := star.X.(*ast.Ident) + if !ok || !cgoIdent.MatchString(ident.Name) { + ReportNodef(pass, unary, "&*x will be simplified to x. It will not copy x.") + } + } + } + + if star, ok := node.(*ast.StarExpr); ok { + if unary, ok := star.X.(*ast.UnaryExpr); ok && unary.Op == token.AND { + ReportNodef(pass, star, "*&x will be simplified to x. It will not copy x.") + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.UnaryExpr)(nil), (*ast.StarExpr)(nil)}, fn) + return nil, nil +} + +func CheckDiffSizeComparison(pass *analysis.Pass) (interface{}, error) { + ranges := pass.ResultOf[valueRangesAnalyzer].(map[*ssa.Function]vrp.Ranges) + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, b := range ssafn.Blocks { + for _, ins := range b.Instrs { + binop, ok := ins.(*ssa.BinOp) + if !ok { + continue + } + if binop.Op != token.EQL && binop.Op != token.NEQ { + continue + } + _, ok1 := binop.X.(*ssa.Slice) + _, ok2 := binop.Y.(*ssa.Slice) + if !ok1 && !ok2 { + continue + } + r := ranges[ssafn] + r1, ok1 := r.Get(binop.X).(vrp.StringInterval) + r2, ok2 := r.Get(binop.Y).(vrp.StringInterval) + if !ok1 || !ok2 { + continue + } + if r1.Length.Intersection(r2.Length).Empty() { + pass.Reportf(binop.Pos(), "comparing strings of different sizes for equality will always return false") + } + } + } + } + return nil, nil +} + +func CheckCanonicalHeaderKey(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node, push bool) bool { + if !push { + return false + } + assign, ok := node.(*ast.AssignStmt) + if ok { + // TODO(dh): This risks missing some Header reads, for + // example in `h1["foo"] = h2["foo"]` – these edge + // cases are probably rare enough to ignore for now. + for _, expr := range assign.Lhs { + op, ok := expr.(*ast.IndexExpr) + if !ok { + continue + } + if IsOfType(pass, op.X, "net/http.Header") { + return false + } + } + return true + } + op, ok := node.(*ast.IndexExpr) + if !ok { + return true + } + if !IsOfType(pass, op.X, "net/http.Header") { + return true + } + s, ok := ExprToString(pass, op.Index) + if !ok { + return true + } + if s == http.CanonicalHeaderKey(s) { + return true + } + ReportNodef(pass, op, "keys in http.Header are canonicalized, %q is not canonical; fix the constant or use http.CanonicalHeaderKey", s) + return true + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Nodes([]ast.Node{(*ast.AssignStmt)(nil), (*ast.IndexExpr)(nil)}, fn) + return nil, nil +} + +func CheckBenchmarkN(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + assign := node.(*ast.AssignStmt) + if len(assign.Lhs) != 1 || len(assign.Rhs) != 1 { + return + } + sel, ok := assign.Lhs[0].(*ast.SelectorExpr) + if !ok { + return + } + if sel.Sel.Name != "N" { + return + } + if !IsOfType(pass, sel.X, "*testing.B") { + return + } + ReportNodef(pass, assign, "should not assign to %s", Render(pass, sel)) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.AssignStmt)(nil)}, fn) + return nil, nil +} + +func CheckUnreadVariableValues(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if IsExample(ssafn) { + continue + } + node := ssafn.Syntax() + if node == nil { + continue + } + if gen, ok := Generator(pass, node.Pos()); ok && gen == facts.Goyacc { + // Don't flag unused values in code generated by goyacc. + // There may be hundreds of those due to the way the state + // machine is constructed. + continue + } + + switchTags := map[ssa.Value]struct{}{} + ast.Inspect(node, func(node ast.Node) bool { + s, ok := node.(*ast.SwitchStmt) + if !ok { + return true + } + v, _ := ssafn.ValueForExpr(s.Tag) + switchTags[v] = struct{}{} + return true + }) + + hasUse := func(v ssa.Value) bool { + if _, ok := switchTags[v]; ok { + return true + } + refs := v.Referrers() + if refs == nil { + // TODO investigate why refs can be nil + return true + } + return len(FilterDebug(*refs)) > 0 + } + + ast.Inspect(node, func(node ast.Node) bool { + assign, ok := node.(*ast.AssignStmt) + if !ok { + return true + } + if len(assign.Lhs) > 1 && len(assign.Rhs) == 1 { + // Either a function call with multiple return values, + // or a comma-ok assignment + + val, _ := ssafn.ValueForExpr(assign.Rhs[0]) + if val == nil { + return true + } + refs := val.Referrers() + if refs == nil { + return true + } + for _, ref := range *refs { + ex, ok := ref.(*ssa.Extract) + if !ok { + continue + } + if !hasUse(ex) { + lhs := assign.Lhs[ex.Index] + if ident, ok := lhs.(*ast.Ident); !ok || ok && ident.Name == "_" { + continue + } + ReportNodef(pass, lhs, "this value of %s is never used", lhs) + } + } + return true + } + for i, lhs := range assign.Lhs { + rhs := assign.Rhs[i] + if ident, ok := lhs.(*ast.Ident); !ok || ok && ident.Name == "_" { + continue + } + val, _ := ssafn.ValueForExpr(rhs) + if val == nil { + continue + } + + if !hasUse(val) { + ReportNodef(pass, lhs, "this value of %s is never used", lhs) + } + } + return true + }) + } + return nil, nil +} + +func CheckPredeterminedBooleanExprs(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + ssabinop, ok := ins.(*ssa.BinOp) + if !ok { + continue + } + switch ssabinop.Op { + case token.GTR, token.LSS, token.EQL, token.NEQ, token.LEQ, token.GEQ: + default: + continue + } + + xs, ok1 := consts(ssabinop.X, nil, nil) + ys, ok2 := consts(ssabinop.Y, nil, nil) + if !ok1 || !ok2 || len(xs) == 0 || len(ys) == 0 { + continue + } + + trues := 0 + for _, x := range xs { + for _, y := range ys { + if x.Value == nil { + if y.Value == nil { + trues++ + } + continue + } + if constant.Compare(x.Value, ssabinop.Op, y.Value) { + trues++ + } + } + } + b := trues != 0 + if trues == 0 || trues == len(xs)*len(ys) { + pass.Reportf(ssabinop.Pos(), "binary expression is always %t for all possible values (%s %s %s)", + b, xs, ssabinop.Op, ys) + } + } + } + } + return nil, nil +} + +func CheckNilMaps(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + mu, ok := ins.(*ssa.MapUpdate) + if !ok { + continue + } + c, ok := mu.Map.(*ssa.Const) + if !ok { + continue + } + if c.Value != nil { + continue + } + pass.Reportf(mu.Pos(), "assignment to nil map") + } + } + } + return nil, nil +} + +func CheckExtremeComparison(pass *analysis.Pass) (interface{}, error) { + isobj := func(expr ast.Expr, name string) bool { + sel, ok := expr.(*ast.SelectorExpr) + if !ok { + return false + } + return IsObject(pass.TypesInfo.ObjectOf(sel.Sel), name) + } + + fn := func(node ast.Node) { + expr := node.(*ast.BinaryExpr) + tx := pass.TypesInfo.TypeOf(expr.X) + basic, ok := tx.Underlying().(*types.Basic) + if !ok { + return + } + + var max string + var min string + + switch basic.Kind() { + case types.Uint8: + max = "math.MaxUint8" + case types.Uint16: + max = "math.MaxUint16" + case types.Uint32: + max = "math.MaxUint32" + case types.Uint64: + max = "math.MaxUint64" + case types.Uint: + max = "math.MaxUint64" + + case types.Int8: + min = "math.MinInt8" + max = "math.MaxInt8" + case types.Int16: + min = "math.MinInt16" + max = "math.MaxInt16" + case types.Int32: + min = "math.MinInt32" + max = "math.MaxInt32" + case types.Int64: + min = "math.MinInt64" + max = "math.MaxInt64" + case types.Int: + min = "math.MinInt64" + max = "math.MaxInt64" + } + + if (expr.Op == token.GTR || expr.Op == token.GEQ) && isobj(expr.Y, max) || + (expr.Op == token.LSS || expr.Op == token.LEQ) && isobj(expr.X, max) { + ReportNodef(pass, expr, "no value of type %s is greater than %s", basic, max) + } + if expr.Op == token.LEQ && isobj(expr.Y, max) || + expr.Op == token.GEQ && isobj(expr.X, max) { + ReportNodef(pass, expr, "every value of type %s is <= %s", basic, max) + } + + if (basic.Info() & types.IsUnsigned) != 0 { + if (expr.Op == token.LSS || expr.Op == token.LEQ) && IsIntLiteral(expr.Y, "0") || + (expr.Op == token.GTR || expr.Op == token.GEQ) && IsIntLiteral(expr.X, "0") { + ReportNodef(pass, expr, "no value of type %s is less than 0", basic) + } + if expr.Op == token.GEQ && IsIntLiteral(expr.Y, "0") || + expr.Op == token.LEQ && IsIntLiteral(expr.X, "0") { + ReportNodef(pass, expr, "every value of type %s is >= 0", basic) + } + } else { + if (expr.Op == token.LSS || expr.Op == token.LEQ) && isobj(expr.Y, min) || + (expr.Op == token.GTR || expr.Op == token.GEQ) && isobj(expr.X, min) { + ReportNodef(pass, expr, "no value of type %s is less than %s", basic, min) + } + if expr.Op == token.GEQ && isobj(expr.Y, min) || + expr.Op == token.LEQ && isobj(expr.X, min) { + ReportNodef(pass, expr, "every value of type %s is >= %s", basic, min) + } + } + + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func consts(val ssa.Value, out []*ssa.Const, visitedPhis map[string]bool) ([]*ssa.Const, bool) { + if visitedPhis == nil { + visitedPhis = map[string]bool{} + } + var ok bool + switch val := val.(type) { + case *ssa.Phi: + if visitedPhis[val.Name()] { + break + } + visitedPhis[val.Name()] = true + vals := val.Operands(nil) + for _, phival := range vals { + out, ok = consts(*phival, out, visitedPhis) + if !ok { + return nil, false + } + } + case *ssa.Const: + out = append(out, val) + case *ssa.Convert: + out, ok = consts(val.X, out, visitedPhis) + if !ok { + return nil, false + } + default: + return nil, false + } + if len(out) < 2 { + return out, true + } + uniq := []*ssa.Const{out[0]} + for _, val := range out[1:] { + if val.Value == uniq[len(uniq)-1].Value { + continue + } + uniq = append(uniq, val) + } + return uniq, true +} + +func CheckLoopCondition(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + fn := func(node ast.Node) bool { + loop, ok := node.(*ast.ForStmt) + if !ok { + return true + } + if loop.Init == nil || loop.Cond == nil || loop.Post == nil { + return true + } + init, ok := loop.Init.(*ast.AssignStmt) + if !ok || len(init.Lhs) != 1 || len(init.Rhs) != 1 { + return true + } + cond, ok := loop.Cond.(*ast.BinaryExpr) + if !ok { + return true + } + x, ok := cond.X.(*ast.Ident) + if !ok { + return true + } + lhs, ok := init.Lhs[0].(*ast.Ident) + if !ok { + return true + } + if x.Obj != lhs.Obj { + return true + } + if _, ok := loop.Post.(*ast.IncDecStmt); !ok { + return true + } + + v, isAddr := ssafn.ValueForExpr(cond.X) + if v == nil || isAddr { + return true + } + switch v := v.(type) { + case *ssa.Phi: + ops := v.Operands(nil) + if len(ops) != 2 { + return true + } + _, ok := (*ops[0]).(*ssa.Const) + if !ok { + return true + } + sigma, ok := (*ops[1]).(*ssa.Sigma) + if !ok { + return true + } + if sigma.X != v { + return true + } + case *ssa.UnOp: + return true + } + ReportNodef(pass, cond, "variable in loop condition never changes") + + return true + } + Inspect(ssafn.Syntax(), fn) + } + return nil, nil +} + +func CheckArgOverwritten(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + fn := func(node ast.Node) bool { + var typ *ast.FuncType + var body *ast.BlockStmt + switch fn := node.(type) { + case *ast.FuncDecl: + typ = fn.Type + body = fn.Body + case *ast.FuncLit: + typ = fn.Type + body = fn.Body + } + if body == nil { + return true + } + if len(typ.Params.List) == 0 { + return true + } + for _, field := range typ.Params.List { + for _, arg := range field.Names { + obj := pass.TypesInfo.ObjectOf(arg) + var ssaobj *ssa.Parameter + for _, param := range ssafn.Params { + if param.Object() == obj { + ssaobj = param + break + } + } + if ssaobj == nil { + continue + } + refs := ssaobj.Referrers() + if refs == nil { + continue + } + if len(FilterDebug(*refs)) != 0 { + continue + } + + assigned := false + ast.Inspect(body, func(node ast.Node) bool { + assign, ok := node.(*ast.AssignStmt) + if !ok { + return true + } + for _, lhs := range assign.Lhs { + ident, ok := lhs.(*ast.Ident) + if !ok { + continue + } + if pass.TypesInfo.ObjectOf(ident) == obj { + assigned = true + return false + } + } + return true + }) + if assigned { + ReportNodef(pass, arg, "argument %s is overwritten before first use", arg) + } + } + } + return true + } + Inspect(ssafn.Syntax(), fn) + } + return nil, nil +} + +func CheckIneffectiveLoop(pass *analysis.Pass) (interface{}, error) { + // This check detects some, but not all unconditional loop exits. + // We give up in the following cases: + // + // - a goto anywhere in the loop. The goto might skip over our + // return, and we don't check that it doesn't. + // + // - any nested, unlabelled continue, even if it is in another + // loop or closure. + fn := func(node ast.Node) { + var body *ast.BlockStmt + switch fn := node.(type) { + case *ast.FuncDecl: + body = fn.Body + case *ast.FuncLit: + body = fn.Body + default: + panic(fmt.Sprintf("unreachable: %T", node)) + } + if body == nil { + return + } + labels := map[*ast.Object]ast.Stmt{} + ast.Inspect(body, func(node ast.Node) bool { + label, ok := node.(*ast.LabeledStmt) + if !ok { + return true + } + labels[label.Label.Obj] = label.Stmt + return true + }) + + ast.Inspect(body, func(node ast.Node) bool { + var loop ast.Node + var body *ast.BlockStmt + switch node := node.(type) { + case *ast.ForStmt: + body = node.Body + loop = node + case *ast.RangeStmt: + typ := pass.TypesInfo.TypeOf(node.X) + if _, ok := typ.Underlying().(*types.Map); ok { + // looping once over a map is a valid pattern for + // getting an arbitrary element. + return true + } + body = node.Body + loop = node + default: + return true + } + if len(body.List) < 2 { + // avoid flagging the somewhat common pattern of using + // a range loop to get the first element in a slice, + // or the first rune in a string. + return true + } + var unconditionalExit ast.Node + hasBranching := false + for _, stmt := range body.List { + switch stmt := stmt.(type) { + case *ast.BranchStmt: + switch stmt.Tok { + case token.BREAK: + if stmt.Label == nil || labels[stmt.Label.Obj] == loop { + unconditionalExit = stmt + } + case token.CONTINUE: + if stmt.Label == nil || labels[stmt.Label.Obj] == loop { + unconditionalExit = nil + return false + } + } + case *ast.ReturnStmt: + unconditionalExit = stmt + case *ast.IfStmt, *ast.ForStmt, *ast.RangeStmt, *ast.SwitchStmt, *ast.SelectStmt: + hasBranching = true + } + } + if unconditionalExit == nil || !hasBranching { + return false + } + ast.Inspect(body, func(node ast.Node) bool { + if branch, ok := node.(*ast.BranchStmt); ok { + + switch branch.Tok { + case token.GOTO: + unconditionalExit = nil + return false + case token.CONTINUE: + if branch.Label != nil && labels[branch.Label.Obj] != loop { + return true + } + unconditionalExit = nil + return false + } + } + return true + }) + if unconditionalExit != nil { + ReportNodef(pass, unconditionalExit, "the surrounding loop is unconditionally terminated") + } + return true + }) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.FuncDecl)(nil), (*ast.FuncLit)(nil)}, fn) + return nil, nil +} + +func CheckNilContext(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + if len(call.Args) == 0 { + return + } + if typ, ok := pass.TypesInfo.TypeOf(call.Args[0]).(*types.Basic); !ok || typ.Kind() != types.UntypedNil { + return + } + sig, ok := pass.TypesInfo.TypeOf(call.Fun).(*types.Signature) + if !ok { + return + } + if sig.Params().Len() == 0 { + return + } + if !IsType(sig.Params().At(0).Type(), "context.Context") { + return + } + ReportNodef(pass, call.Args[0], + "do not pass a nil Context, even if a function permits it; pass context.TODO if you are unsure about which Context to use") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckSeeker(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + sel, ok := call.Fun.(*ast.SelectorExpr) + if !ok { + return + } + if sel.Sel.Name != "Seek" { + return + } + if len(call.Args) != 2 { + return + } + arg0, ok := call.Args[Arg("(io.Seeker).Seek.offset")].(*ast.SelectorExpr) + if !ok { + return + } + switch arg0.Sel.Name { + case "SeekStart", "SeekCurrent", "SeekEnd": + default: + return + } + pkg, ok := arg0.X.(*ast.Ident) + if !ok { + return + } + if pkg.Name != "io" { + return + } + ReportNodef(pass, call, "the first argument of io.Seeker is the offset, but an io.Seek* constant is being used instead") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckIneffectiveAppend(pass *analysis.Pass) (interface{}, error) { + isAppend := func(ins ssa.Value) bool { + call, ok := ins.(*ssa.Call) + if !ok { + return false + } + if call.Call.IsInvoke() { + return false + } + if builtin, ok := call.Call.Value.(*ssa.Builtin); !ok || builtin.Name() != "append" { + return false + } + return true + } + + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + val, ok := ins.(ssa.Value) + if !ok || !isAppend(val) { + continue + } + + isUsed := false + visited := map[ssa.Instruction]bool{} + var walkRefs func(refs []ssa.Instruction) + walkRefs = func(refs []ssa.Instruction) { + loop: + for _, ref := range refs { + if visited[ref] { + continue + } + visited[ref] = true + if _, ok := ref.(*ssa.DebugRef); ok { + continue + } + switch ref := ref.(type) { + case *ssa.Phi: + walkRefs(*ref.Referrers()) + case *ssa.Sigma: + walkRefs(*ref.Referrers()) + case ssa.Value: + if !isAppend(ref) { + isUsed = true + } else { + walkRefs(*ref.Referrers()) + } + case ssa.Instruction: + isUsed = true + break loop + } + } + } + refs := val.Referrers() + if refs == nil { + continue + } + walkRefs(*refs) + if !isUsed { + pass.Reportf(ins.Pos(), "this result of append is never used, except maybe in other appends") + } + } + } + } + return nil, nil +} + +func CheckConcurrentTesting(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + gostmt, ok := ins.(*ssa.Go) + if !ok { + continue + } + var fn *ssa.Function + switch val := gostmt.Call.Value.(type) { + case *ssa.Function: + fn = val + case *ssa.MakeClosure: + fn = val.Fn.(*ssa.Function) + default: + continue + } + if fn.Blocks == nil { + continue + } + for _, block := range fn.Blocks { + for _, ins := range block.Instrs { + call, ok := ins.(*ssa.Call) + if !ok { + continue + } + if call.Call.IsInvoke() { + continue + } + callee := call.Call.StaticCallee() + if callee == nil { + continue + } + recv := callee.Signature.Recv() + if recv == nil { + continue + } + if !IsType(recv.Type(), "*testing.common") { + continue + } + fn, ok := call.Call.StaticCallee().Object().(*types.Func) + if !ok { + continue + } + name := fn.Name() + switch name { + case "FailNow", "Fatal", "Fatalf", "SkipNow", "Skip", "Skipf": + default: + continue + } + pass.Reportf(gostmt.Pos(), "the goroutine calls T.%s, which must be called in the same goroutine as the test", name) + } + } + } + } + } + return nil, nil +} + +func eachCall(ssafn *ssa.Function, fn func(caller *ssa.Function, site ssa.CallInstruction, callee *ssa.Function)) { + for _, b := range ssafn.Blocks { + for _, instr := range b.Instrs { + if site, ok := instr.(ssa.CallInstruction); ok { + if g := site.Common().StaticCallee(); g != nil { + fn(ssafn, site, g) + } + } + } + } +} + +func CheckCyclicFinalizer(pass *analysis.Pass) (interface{}, error) { + fn := func(caller *ssa.Function, site ssa.CallInstruction, callee *ssa.Function) { + if callee.RelString(nil) != "runtime.SetFinalizer" { + return + } + arg0 := site.Common().Args[Arg("runtime.SetFinalizer.obj")] + if iface, ok := arg0.(*ssa.MakeInterface); ok { + arg0 = iface.X + } + unop, ok := arg0.(*ssa.UnOp) + if !ok { + return + } + v, ok := unop.X.(*ssa.Alloc) + if !ok { + return + } + arg1 := site.Common().Args[Arg("runtime.SetFinalizer.finalizer")] + if iface, ok := arg1.(*ssa.MakeInterface); ok { + arg1 = iface.X + } + mc, ok := arg1.(*ssa.MakeClosure) + if !ok { + return + } + for _, b := range mc.Bindings { + if b == v { + pos := lint.DisplayPosition(pass.Fset, mc.Fn.Pos()) + pass.Reportf(site.Pos(), "the finalizer closes over the object, preventing the finalizer from ever running (at %s)", pos) + } + } + } + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + eachCall(ssafn, fn) + } + return nil, nil +} + +/* +func CheckSliceOutOfBounds(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + ia, ok := ins.(*ssa.IndexAddr) + if !ok { + continue + } + if _, ok := ia.X.Type().Underlying().(*types.Slice); !ok { + continue + } + sr, ok1 := c.funcDescs.Get(ssafn).Ranges[ia.X].(vrp.SliceInterval) + idxr, ok2 := c.funcDescs.Get(ssafn).Ranges[ia.Index].(vrp.IntInterval) + if !ok1 || !ok2 || !sr.IsKnown() || !idxr.IsKnown() || sr.Length.Empty() || idxr.Empty() { + continue + } + if idxr.Lower.Cmp(sr.Length.Upper) >= 0 { + ReportNodef(pass, ia, "index out of bounds") + } + } + } + } + return nil, nil +} +*/ + +func CheckDeferLock(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + instrs := FilterDebug(block.Instrs) + if len(instrs) < 2 { + continue + } + for i, ins := range instrs[:len(instrs)-1] { + call, ok := ins.(*ssa.Call) + if !ok { + continue + } + if !IsCallTo(call.Common(), "(*sync.Mutex).Lock") && !IsCallTo(call.Common(), "(*sync.RWMutex).RLock") { + continue + } + nins, ok := instrs[i+1].(*ssa.Defer) + if !ok { + continue + } + if !IsCallTo(&nins.Call, "(*sync.Mutex).Lock") && !IsCallTo(&nins.Call, "(*sync.RWMutex).RLock") { + continue + } + if call.Common().Args[0] != nins.Call.Args[0] { + continue + } + name := shortCallName(call.Common()) + alt := "" + switch name { + case "Lock": + alt = "Unlock" + case "RLock": + alt = "RUnlock" + } + pass.Reportf(nins.Pos(), "deferring %s right after having locked already; did you mean to defer %s?", name, alt) + } + } + } + return nil, nil +} + +func CheckNaNComparison(pass *analysis.Pass) (interface{}, error) { + isNaN := func(v ssa.Value) bool { + call, ok := v.(*ssa.Call) + if !ok { + return false + } + return IsCallTo(call.Common(), "math.NaN") + } + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + ins, ok := ins.(*ssa.BinOp) + if !ok { + continue + } + if isNaN(ins.X) || isNaN(ins.Y) { + pass.Reportf(ins.Pos(), "no value is equal to NaN, not even NaN itself") + } + } + } + } + return nil, nil +} + +func CheckInfiniteRecursion(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + eachCall(ssafn, func(caller *ssa.Function, site ssa.CallInstruction, callee *ssa.Function) { + if callee != ssafn { + return + } + if _, ok := site.(*ssa.Go); ok { + // Recursively spawning goroutines doesn't consume + // stack space infinitely, so don't flag it. + return + } + + block := site.Block() + canReturn := false + for _, b := range ssafn.Blocks { + if block.Dominates(b) { + continue + } + if len(b.Instrs) == 0 { + continue + } + if _, ok := b.Instrs[len(b.Instrs)-1].(*ssa.Return); ok { + canReturn = true + break + } + } + if canReturn { + return + } + pass.Reportf(site.Pos(), "infinite recursive call") + }) + } + return nil, nil +} + +func objectName(obj types.Object) string { + if obj == nil { + return "" + } + var name string + if obj.Pkg() != nil && obj.Pkg().Scope().Lookup(obj.Name()) == obj { + s := obj.Pkg().Path() + if s != "" { + name += s + "." + } + } + name += obj.Name() + return name +} + +func isName(pass *analysis.Pass, expr ast.Expr, name string) bool { + var obj types.Object + switch expr := expr.(type) { + case *ast.Ident: + obj = pass.TypesInfo.ObjectOf(expr) + case *ast.SelectorExpr: + obj = pass.TypesInfo.ObjectOf(expr.Sel) + } + return objectName(obj) == name +} + +func CheckLeakyTimeTick(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if IsInMain(pass, ssafn) || IsInTest(pass, ssafn) { + continue + } + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + call, ok := ins.(*ssa.Call) + if !ok || !IsCallTo(call.Common(), "time.Tick") { + continue + } + if !functions.Terminates(call.Parent()) { + continue + } + pass.Reportf(call.Pos(), "using time.Tick leaks the underlying ticker, consider using it only in endless functions, tests and the main package, and use time.NewTicker here") + } + } + } + return nil, nil +} + +func CheckDoubleNegation(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + unary1 := node.(*ast.UnaryExpr) + unary2, ok := unary1.X.(*ast.UnaryExpr) + if !ok { + return + } + if unary1.Op != token.NOT || unary2.Op != token.NOT { + return + } + ReportNodef(pass, unary1, "negating a boolean twice has no effect; is this a typo?") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.UnaryExpr)(nil)}, fn) + return nil, nil +} + +func hasSideEffects(node ast.Node) bool { + dynamic := false + ast.Inspect(node, func(node ast.Node) bool { + switch node := node.(type) { + case *ast.CallExpr: + dynamic = true + return false + case *ast.UnaryExpr: + if node.Op == token.ARROW { + dynamic = true + return false + } + } + return true + }) + return dynamic +} + +func CheckRepeatedIfElse(pass *analysis.Pass) (interface{}, error) { + seen := map[ast.Node]bool{} + + var collectConds func(ifstmt *ast.IfStmt, inits []ast.Stmt, conds []ast.Expr) ([]ast.Stmt, []ast.Expr) + collectConds = func(ifstmt *ast.IfStmt, inits []ast.Stmt, conds []ast.Expr) ([]ast.Stmt, []ast.Expr) { + seen[ifstmt] = true + if ifstmt.Init != nil { + inits = append(inits, ifstmt.Init) + } + conds = append(conds, ifstmt.Cond) + if elsestmt, ok := ifstmt.Else.(*ast.IfStmt); ok { + return collectConds(elsestmt, inits, conds) + } + return inits, conds + } + fn := func(node ast.Node) { + ifstmt := node.(*ast.IfStmt) + if seen[ifstmt] { + return + } + inits, conds := collectConds(ifstmt, nil, nil) + if len(inits) > 0 { + return + } + for _, cond := range conds { + if hasSideEffects(cond) { + return + } + } + counts := map[string]int{} + for _, cond := range conds { + s := Render(pass, cond) + counts[s]++ + if counts[s] == 2 { + ReportNodef(pass, cond, "this condition occurs multiple times in this if/else if chain") + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.IfStmt)(nil)}, fn) + return nil, nil +} + +func CheckSillyBitwiseOps(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + ins, ok := ins.(*ssa.BinOp) + if !ok { + continue + } + + if c, ok := ins.Y.(*ssa.Const); !ok || c.Value == nil || c.Value.Kind() != constant.Int || c.Uint64() != 0 { + continue + } + switch ins.Op { + case token.AND, token.OR, token.XOR: + default: + // we do not flag shifts because too often, x<<0 is part + // of a pattern, x<<0, x<<8, x<<16, ... + continue + } + path, _ := astutil.PathEnclosingInterval(File(pass, ins), ins.Pos(), ins.Pos()) + if len(path) == 0 { + continue + } + if node, ok := path[0].(*ast.BinaryExpr); !ok || !IsZero(node.Y) { + continue + } + + switch ins.Op { + case token.AND: + pass.Reportf(ins.Pos(), "x & 0 always equals 0") + case token.OR, token.XOR: + pass.Reportf(ins.Pos(), "x %s 0 always equals x", ins.Op) + } + } + } + } + return nil, nil +} + +func CheckNonOctalFileMode(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + call := node.(*ast.CallExpr) + sig, ok := pass.TypesInfo.TypeOf(call.Fun).(*types.Signature) + if !ok { + return + } + n := sig.Params().Len() + var args []int + for i := 0; i < n; i++ { + typ := sig.Params().At(i).Type() + if IsType(typ, "os.FileMode") { + args = append(args, i) + } + } + for _, i := range args { + lit, ok := call.Args[i].(*ast.BasicLit) + if !ok { + continue + } + if len(lit.Value) == 3 && + lit.Value[0] != '0' && + lit.Value[0] >= '0' && lit.Value[0] <= '7' && + lit.Value[1] >= '0' && lit.Value[1] <= '7' && + lit.Value[2] >= '0' && lit.Value[2] <= '7' { + + v, err := strconv.ParseInt(lit.Value, 10, 64) + if err != nil { + continue + } + ReportNodef(pass, call.Args[i], "file mode '%s' evaluates to %#o; did you mean '0%s'?", lit.Value, v, lit.Value) + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckPureFunctions(pass *analysis.Pass) (interface{}, error) { + pure := pass.ResultOf[facts.Purity].(facts.PurityResult) + +fnLoop: + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if IsInTest(pass, ssafn) { + params := ssafn.Signature.Params() + for i := 0; i < params.Len(); i++ { + param := params.At(i) + if IsType(param.Type(), "*testing.B") { + // Ignore discarded pure functions in code related + // to benchmarks. Instead of matching BenchmarkFoo + // functions, we match any function accepting a + // *testing.B. Benchmarks sometimes call generic + // functions for doing the actual work, and + // checking for the parameter is a lot easier and + // faster than analyzing call trees. + continue fnLoop + } + } + } + + for _, b := range ssafn.Blocks { + for _, ins := range b.Instrs { + ins, ok := ins.(*ssa.Call) + if !ok { + continue + } + refs := ins.Referrers() + if refs == nil || len(FilterDebug(*refs)) > 0 { + continue + } + callee := ins.Common().StaticCallee() + if callee == nil { + continue + } + if callee.Object() == nil { + // TODO(dh): support anonymous functions + continue + } + if _, ok := pure[callee.Object().(*types.Func)]; ok { + pass.Reportf(ins.Pos(), "%s is a pure function but its return value is ignored", callee.Name()) + continue + } + } + } + } + return nil, nil +} + +func CheckDeprecated(pass *analysis.Pass) (interface{}, error) { + deprs := pass.ResultOf[facts.Deprecated].(facts.DeprecatedResult) + + // Selectors can appear outside of function literals, e.g. when + // declaring package level variables. + + var tfn types.Object + stack := 0 + fn := func(node ast.Node, push bool) bool { + if !push { + stack-- + return false + } + stack++ + if stack == 1 { + tfn = nil + } + if fn, ok := node.(*ast.FuncDecl); ok { + tfn = pass.TypesInfo.ObjectOf(fn.Name) + } + sel, ok := node.(*ast.SelectorExpr) + if !ok { + return true + } + + obj := pass.TypesInfo.ObjectOf(sel.Sel) + if obj.Pkg() == nil { + return true + } + if pass.Pkg == obj.Pkg() || obj.Pkg().Path()+"_test" == pass.Pkg.Path() { + // Don't flag stuff in our own package + return true + } + if depr, ok := deprs.Objects[obj]; ok { + // Look for the first available alternative, not the first + // version something was deprecated in. If a function was + // deprecated in Go 1.6, an alternative has been available + // already in 1.0, and we're targeting 1.2, it still + // makes sense to use the alternative from 1.0, to be + // future-proof. + minVersion := deprecated.Stdlib[SelectorName(pass, sel)].AlternativeAvailableSince + if !IsGoVersion(pass, minVersion) { + return true + } + + if tfn != nil { + if _, ok := deprs.Objects[tfn]; ok { + // functions that are deprecated may use deprecated + // symbols + return true + } + } + ReportNodef(pass, sel, "%s is deprecated: %s", Render(pass, sel), depr.Msg) + return true + } + return true + } + + imps := map[string]*types.Package{} + for _, imp := range pass.Pkg.Imports() { + imps[imp.Path()] = imp + } + fn2 := func(node ast.Node) { + spec := node.(*ast.ImportSpec) + p := spec.Path.Value + path := p[1 : len(p)-1] + imp := imps[path] + if depr, ok := deprs.Packages[imp]; ok { + ReportNodef(pass, spec, "Package %s is deprecated: %s", path, depr.Msg) + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Nodes(nil, fn) + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.ImportSpec)(nil)}, fn2) + return nil, nil +} + +func callChecker(rules map[string]CallCheck) func(pass *analysis.Pass) (interface{}, error) { + return func(pass *analysis.Pass) (interface{}, error) { + return checkCalls(pass, rules) + } +} + +func checkCalls(pass *analysis.Pass, rules map[string]CallCheck) (interface{}, error) { + ranges := pass.ResultOf[valueRangesAnalyzer].(map[*ssa.Function]vrp.Ranges) + fn := func(caller *ssa.Function, site ssa.CallInstruction, callee *ssa.Function) { + obj, ok := callee.Object().(*types.Func) + if !ok { + return + } + + r, ok := rules[lint.FuncName(obj)] + if !ok { + return + } + var args []*Argument + ssaargs := site.Common().Args + if callee.Signature.Recv() != nil { + ssaargs = ssaargs[1:] + } + for _, arg := range ssaargs { + if iarg, ok := arg.(*ssa.MakeInterface); ok { + arg = iarg.X + } + vr := ranges[site.Parent()][arg] + args = append(args, &Argument{Value: Value{arg, vr}}) + } + call := &Call{ + Pass: pass, + Instr: site, + Args: args, + Parent: site.Parent(), + } + r(call) + for idx, arg := range call.Args { + _ = idx + for _, e := range arg.invalids { + // path, _ := astutil.PathEnclosingInterval(f.File, edge.Site.Pos(), edge.Site.Pos()) + // if len(path) < 2 { + // continue + // } + // astcall, ok := path[0].(*ast.CallExpr) + // if !ok { + // continue + // } + // pass.Reportf(astcall.Args[idx], "%s", e) + + pass.Reportf(site.Pos(), "%s", e) + } + } + for _, e := range call.invalids { + pass.Reportf(call.Instr.Common().Pos(), "%s", e) + } + } + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + eachCall(ssafn, fn) + } + return nil, nil +} + +func shortCallName(call *ssa.CallCommon) string { + if call.IsInvoke() { + return "" + } + switch v := call.Value.(type) { + case *ssa.Function: + fn, ok := v.Object().(*types.Func) + if !ok { + return "" + } + return fn.Name() + case *ssa.Builtin: + return v.Name() + } + return "" +} + +func CheckWriterBufferModified(pass *analysis.Pass) (interface{}, error) { + // TODO(dh): this might be a good candidate for taint analysis. + // Taint the argument as MUST_NOT_MODIFY, then propagate that + // through functions like bytes.Split + + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + sig := ssafn.Signature + if ssafn.Name() != "Write" || sig.Recv() == nil || sig.Params().Len() != 1 || sig.Results().Len() != 2 { + continue + } + tArg, ok := sig.Params().At(0).Type().(*types.Slice) + if !ok { + continue + } + if basic, ok := tArg.Elem().(*types.Basic); !ok || basic.Kind() != types.Byte { + continue + } + if basic, ok := sig.Results().At(0).Type().(*types.Basic); !ok || basic.Kind() != types.Int { + continue + } + if named, ok := sig.Results().At(1).Type().(*types.Named); !ok || !IsType(named, "error") { + continue + } + + for _, block := range ssafn.Blocks { + for _, ins := range block.Instrs { + switch ins := ins.(type) { + case *ssa.Store: + addr, ok := ins.Addr.(*ssa.IndexAddr) + if !ok { + continue + } + if addr.X != ssafn.Params[1] { + continue + } + pass.Reportf(ins.Pos(), "io.Writer.Write must not modify the provided buffer, not even temporarily") + case *ssa.Call: + if !IsCallTo(ins.Common(), "append") { + continue + } + if ins.Common().Args[0] != ssafn.Params[1] { + continue + } + pass.Reportf(ins.Pos(), "io.Writer.Write must not modify the provided buffer, not even temporarily") + } + } + } + } + return nil, nil +} + +func loopedRegexp(name string) CallCheck { + return func(call *Call) { + if len(extractConsts(call.Args[0].Value.Value)) == 0 { + return + } + if !isInLoop(call.Instr.Block()) { + return + } + call.Invalid(fmt.Sprintf("calling %s in a loop has poor performance, consider using regexp.Compile", name)) + } +} + +func CheckEmptyBranch(pass *analysis.Pass) (interface{}, error) { + for _, ssafn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if ssafn.Syntax() == nil { + continue + } + if IsExample(ssafn) { + continue + } + fn := func(node ast.Node) bool { + ifstmt, ok := node.(*ast.IfStmt) + if !ok { + return true + } + if ifstmt.Else != nil { + b, ok := ifstmt.Else.(*ast.BlockStmt) + if !ok || len(b.List) != 0 { + return true + } + ReportfFG(pass, ifstmt.Else.Pos(), "empty branch") + } + if len(ifstmt.Body.List) != 0 { + return true + } + ReportfFG(pass, ifstmt.Pos(), "empty branch") + return true + } + Inspect(ssafn.Syntax(), fn) + } + return nil, nil +} + +func CheckMapBytesKey(pass *analysis.Pass) (interface{}, error) { + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, b := range fn.Blocks { + insLoop: + for _, ins := range b.Instrs { + // find []byte -> string conversions + conv, ok := ins.(*ssa.Convert) + if !ok || conv.Type() != types.Universe.Lookup("string").Type() { + continue + } + if s, ok := conv.X.Type().(*types.Slice); !ok || s.Elem() != types.Universe.Lookup("byte").Type() { + continue + } + refs := conv.Referrers() + // need at least two (DebugRef) references: the + // conversion and the *ast.Ident + if refs == nil || len(*refs) < 2 { + continue + } + ident := false + // skip first reference, that's the conversion itself + for _, ref := range (*refs)[1:] { + switch ref := ref.(type) { + case *ssa.DebugRef: + if _, ok := ref.Expr.(*ast.Ident); !ok { + // the string seems to be used somewhere + // unexpected; the default branch should + // catch this already, but be safe + continue insLoop + } else { + ident = true + } + case *ssa.Lookup: + default: + // the string is used somewhere else than a + // map lookup + continue insLoop + } + } + + // the result of the conversion wasn't assigned to an + // identifier + if !ident { + continue + } + pass.Reportf(conv.Pos(), "m[string(key)] would be more efficient than k := string(key); m[k]") + } + } + } + return nil, nil +} + +func CheckRangeStringRunes(pass *analysis.Pass) (interface{}, error) { + return sharedcheck.CheckRangeStringRunes(pass) +} + +func CheckSelfAssignment(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + assign := node.(*ast.AssignStmt) + if assign.Tok != token.ASSIGN || len(assign.Lhs) != len(assign.Rhs) { + return + } + for i, stmt := range assign.Lhs { + rlh := Render(pass, stmt) + rrh := Render(pass, assign.Rhs[i]) + if rlh == rrh { + ReportfFG(pass, assign.Pos(), "self-assignment of %s to %s", rrh, rlh) + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.AssignStmt)(nil)}, fn) + return nil, nil +} + +func buildTagsIdentical(s1, s2 []string) bool { + if len(s1) != len(s2) { + return false + } + s1s := make([]string, len(s1)) + copy(s1s, s1) + sort.Strings(s1s) + s2s := make([]string, len(s2)) + copy(s2s, s2) + sort.Strings(s2s) + for i, s := range s1s { + if s != s2s[i] { + return false + } + } + return true +} + +func CheckDuplicateBuildConstraints(pass *analysis.Pass) (interface{}, error) { + for _, f := range pass.Files { + constraints := buildTags(f) + for i, constraint1 := range constraints { + for j, constraint2 := range constraints { + if i >= j { + continue + } + if buildTagsIdentical(constraint1, constraint2) { + ReportfFG(pass, f.Pos(), "identical build constraints %q and %q", + strings.Join(constraint1, " "), + strings.Join(constraint2, " ")) + } + } + } + } + return nil, nil +} + +func CheckSillyRegexp(pass *analysis.Pass) (interface{}, error) { + // We could use the rule checking engine for this, but the + // arguments aren't really invalid. + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, b := range fn.Blocks { + for _, ins := range b.Instrs { + call, ok := ins.(*ssa.Call) + if !ok { + continue + } + switch CallName(call.Common()) { + case "regexp.MustCompile", "regexp.Compile", "regexp.Match", "regexp.MatchReader", "regexp.MatchString": + default: + continue + } + c, ok := call.Common().Args[0].(*ssa.Const) + if !ok { + continue + } + s := constant.StringVal(c.Value) + re, err := syntax.Parse(s, 0) + if err != nil { + continue + } + if re.Op != syntax.OpLiteral && re.Op != syntax.OpEmptyMatch { + continue + } + pass.Reportf(call.Pos(), "regular expression does not contain any meta characters") + } + } + } + return nil, nil +} + +func CheckMissingEnumTypesInDeclaration(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + decl := node.(*ast.GenDecl) + if !decl.Lparen.IsValid() { + return + } + if decl.Tok != token.CONST { + return + } + + groups := GroupSpecs(pass.Fset, decl.Specs) + groupLoop: + for _, group := range groups { + if len(group) < 2 { + continue + } + if group[0].(*ast.ValueSpec).Type == nil { + // first constant doesn't have a type + continue groupLoop + } + for i, spec := range group { + spec := spec.(*ast.ValueSpec) + if len(spec.Names) != 1 || len(spec.Values) != 1 { + continue groupLoop + } + switch v := spec.Values[0].(type) { + case *ast.BasicLit: + case *ast.UnaryExpr: + if _, ok := v.X.(*ast.BasicLit); !ok { + continue groupLoop + } + default: + // if it's not a literal it might be typed, such as + // time.Microsecond = 1000 * Nanosecond + continue groupLoop + } + if i == 0 { + continue + } + if spec.Type != nil { + continue groupLoop + } + } + ReportNodef(pass, group[0], "only the first constant in this group has an explicit type") + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.GenDecl)(nil)}, fn) + return nil, nil +} + +func CheckTimerResetReturnValue(pass *analysis.Pass) (interface{}, error) { + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + for _, block := range fn.Blocks { + for _, ins := range block.Instrs { + call, ok := ins.(*ssa.Call) + if !ok { + continue + } + if !IsCallTo(call.Common(), "(*time.Timer).Reset") { + continue + } + refs := call.Referrers() + if refs == nil { + continue + } + for _, ref := range FilterDebug(*refs) { + ifstmt, ok := ref.(*ssa.If) + if !ok { + continue + } + + found := false + for _, succ := range ifstmt.Block().Succs { + if len(succ.Preds) != 1 { + // Merge point, not a branch in the + // syntactical sense. + + // FIXME(dh): this is broken for if + // statements a la "if x || y" + continue + } + ssautil.Walk(succ, func(b *ssa.BasicBlock) bool { + if !succ.Dominates(b) { + // We've reached the end of the branch + return false + } + for _, ins := range b.Instrs { + // TODO(dh): we should check that + // we're receiving from the channel of + // a time.Timer to further reduce + // false positives. Not a key + // priority, considering the rarity of + // Reset and the tiny likeliness of a + // false positive + if ins, ok := ins.(*ssa.UnOp); ok && ins.Op == token.ARROW && IsType(ins.X.Type(), "<-chan time.Time") { + found = true + return false + } + } + return true + }) + } + + if found { + pass.Reportf(call.Pos(), "it is not possible to use Reset's return value correctly, as there is a race condition between draining the channel and the new timer expiring") + } + } + } + } + } + return nil, nil +} + +func CheckToLowerToUpperComparison(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + binExpr := node.(*ast.BinaryExpr) + + var negative bool + switch binExpr.Op { + case token.EQL: + negative = false + case token.NEQ: + negative = true + default: + return + } + + const ( + lo = "strings.ToLower" + up = "strings.ToUpper" + ) + + var call string + if IsCallToAST(pass, binExpr.X, lo) && IsCallToAST(pass, binExpr.Y, lo) { + call = lo + } else if IsCallToAST(pass, binExpr.X, up) && IsCallToAST(pass, binExpr.Y, up) { + call = up + } else { + return + } + + bang := "" + if negative { + bang = "!" + } + + ReportNodef(pass, binExpr, "should use %sstrings.EqualFold(a, b) instead of %s(a) %s %s(b)", bang, call, binExpr.Op, call) + } + + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func CheckUnreachableTypeCases(pass *analysis.Pass) (interface{}, error) { + // Check if T subsumes V in a type switch. T subsumes V if T is an interface and T's method set is a subset of V's method set. + subsumes := func(T, V types.Type) bool { + tIface, ok := T.Underlying().(*types.Interface) + if !ok { + return false + } + + return types.Implements(V, tIface) + } + + subsumesAny := func(Ts, Vs []types.Type) (types.Type, types.Type, bool) { + for _, T := range Ts { + for _, V := range Vs { + if subsumes(T, V) { + return T, V, true + } + } + } + + return nil, nil, false + } + + fn := func(node ast.Node) { + tsStmt := node.(*ast.TypeSwitchStmt) + + type ccAndTypes struct { + cc *ast.CaseClause + types []types.Type + } + + // All asserted types in the order of case clauses. + ccs := make([]ccAndTypes, 0, len(tsStmt.Body.List)) + for _, stmt := range tsStmt.Body.List { + cc, _ := stmt.(*ast.CaseClause) + + // Exclude the 'default' case. + if len(cc.List) == 0 { + continue + } + + Ts := make([]types.Type, len(cc.List)) + for i, expr := range cc.List { + Ts[i] = pass.TypesInfo.TypeOf(expr) + } + + ccs = append(ccs, ccAndTypes{cc: cc, types: Ts}) + } + + if len(ccs) <= 1 { + // Zero or one case clauses, nothing to check. + return + } + + // Check if case clauses following cc have types that are subsumed by cc. + for i, cc := range ccs[:len(ccs)-1] { + for _, next := range ccs[i+1:] { + if T, V, yes := subsumesAny(cc.types, next.types); yes { + ReportNodef(pass, next.cc, "unreachable case clause: %s will always match before %s", T.String(), V.String()) + } + } + } + } + + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.TypeSwitchStmt)(nil)}, fn) + return nil, nil +} + +func CheckSingleArgAppend(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + if !IsCallToAST(pass, node, "append") { + return + } + call := node.(*ast.CallExpr) + if len(call.Args) != 1 { + return + } + ReportfFG(pass, call.Pos(), "x = append(y) is equivalent to x = y") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.CallExpr)(nil)}, fn) + return nil, nil +} + +func CheckStructTags(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + for _, field := range node.(*ast.StructType).Fields.List { + if field.Tag == nil { + continue + } + tags, err := parseStructTag(field.Tag.Value[1 : len(field.Tag.Value)-1]) + if err != nil { + ReportNodef(pass, field.Tag, "unparseable struct tag: %s", err) + continue + } + for k, v := range tags { + if len(v) > 1 { + ReportNodef(pass, field.Tag, "duplicate struct tag %q", k) + continue + } + + switch k { + case "json": + checkJSONTag(pass, field, v[0]) + case "xml": + checkXMLTag(pass, field, v[0]) + } + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.StructType)(nil)}, fn) + return nil, nil +} + +func checkJSONTag(pass *analysis.Pass, field *ast.Field, tag string) { + //lint:ignore SA9003 TODO(dh): should we flag empty tags? + if len(tag) == 0 { + } + fields := strings.Split(tag, ",") + for _, r := range fields[0] { + if !unicode.IsLetter(r) && !unicode.IsDigit(r) && !strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", r) { + ReportNodef(pass, field.Tag, "invalid JSON field name %q", fields[0]) + } + } + var co, cs, ci int + for _, s := range fields[1:] { + switch s { + case "omitempty": + co++ + case "": + // allow stuff like "-," + case "string": + cs++ + // only for string, floating point, integer and bool + T := Dereference(pass.TypesInfo.TypeOf(field.Type).Underlying()).Underlying() + basic, ok := T.(*types.Basic) + if !ok || (basic.Info()&(types.IsBoolean|types.IsInteger|types.IsFloat|types.IsString)) == 0 { + ReportNodef(pass, field.Tag, "the JSON string option only applies to fields of type string, floating point, integer or bool, or pointers to those") + } + case "inline": + ci++ + default: + ReportNodef(pass, field.Tag, "unknown JSON option %q", s) + } + } + if co > 1 { + ReportNodef(pass, field.Tag, `duplicate JSON option "omitempty"`) + } + if cs > 1 { + ReportNodef(pass, field.Tag, `duplicate JSON option "string"`) + } + if ci > 1 { + ReportNodef(pass, field.Tag, `duplicate JSON option "inline"`) + } +} + +func checkXMLTag(pass *analysis.Pass, field *ast.Field, tag string) { + //lint:ignore SA9003 TODO(dh): should we flag empty tags? + if len(tag) == 0 { + } + fields := strings.Split(tag, ",") + counts := map[string]int{} + var exclusives []string + for _, s := range fields[1:] { + switch s { + case "attr", "chardata", "cdata", "innerxml", "comment": + counts[s]++ + if counts[s] == 1 { + exclusives = append(exclusives, s) + } + case "omitempty", "any": + counts[s]++ + case "": + default: + ReportNodef(pass, field.Tag, "unknown XML option %q", s) + } + } + for k, v := range counts { + if v > 1 { + ReportNodef(pass, field.Tag, "duplicate XML option %q", k) + } + } + if len(exclusives) > 1 { + ReportNodef(pass, field.Tag, "XML options %s are mutually exclusive", strings.Join(exclusives, " and ")) + } +} diff --git a/vendor/honnef.co/go/tools/staticcheck/rules.go b/vendor/honnef.co/go/tools/staticcheck/rules.go new file mode 100644 index 00000000000..0152cac1af1 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/rules.go @@ -0,0 +1,321 @@ +package staticcheck + +import ( + "fmt" + "go/constant" + "go/types" + "net" + "net/url" + "regexp" + "sort" + "strconv" + "strings" + "time" + "unicode/utf8" + + "golang.org/x/tools/go/analysis" + . "honnef.co/go/tools/lint/lintdsl" + "honnef.co/go/tools/ssa" + "honnef.co/go/tools/staticcheck/vrp" +) + +const ( + MsgInvalidHostPort = "invalid port or service name in host:port pair" + MsgInvalidUTF8 = "argument is not a valid UTF-8 encoded string" + MsgNonUniqueCutset = "cutset contains duplicate characters" +) + +type Call struct { + Pass *analysis.Pass + Instr ssa.CallInstruction + Args []*Argument + + Parent *ssa.Function + + invalids []string +} + +func (c *Call) Invalid(msg string) { + c.invalids = append(c.invalids, msg) +} + +type Argument struct { + Value Value + invalids []string +} + +func (arg *Argument) Invalid(msg string) { + arg.invalids = append(arg.invalids, msg) +} + +type Value struct { + Value ssa.Value + Range vrp.Range +} + +type CallCheck func(call *Call) + +func extractConsts(v ssa.Value) []*ssa.Const { + switch v := v.(type) { + case *ssa.Const: + return []*ssa.Const{v} + case *ssa.MakeInterface: + return extractConsts(v.X) + default: + return nil + } +} + +func ValidateRegexp(v Value) error { + for _, c := range extractConsts(v.Value) { + if c.Value == nil { + continue + } + if c.Value.Kind() != constant.String { + continue + } + s := constant.StringVal(c.Value) + if _, err := regexp.Compile(s); err != nil { + return err + } + } + return nil +} + +func ValidateTimeLayout(v Value) error { + for _, c := range extractConsts(v.Value) { + if c.Value == nil { + continue + } + if c.Value.Kind() != constant.String { + continue + } + s := constant.StringVal(c.Value) + s = strings.Replace(s, "_", " ", -1) + s = strings.Replace(s, "Z", "-", -1) + _, err := time.Parse(s, s) + if err != nil { + return err + } + } + return nil +} + +func ValidateURL(v Value) error { + for _, c := range extractConsts(v.Value) { + if c.Value == nil { + continue + } + if c.Value.Kind() != constant.String { + continue + } + s := constant.StringVal(c.Value) + _, err := url.Parse(s) + if err != nil { + return fmt.Errorf("%q is not a valid URL: %s", s, err) + } + } + return nil +} + +func IntValue(v Value, z vrp.Z) bool { + r, ok := v.Range.(vrp.IntInterval) + if !ok || !r.IsKnown() { + return false + } + if r.Lower != r.Upper { + return false + } + if r.Lower.Cmp(z) == 0 { + return true + } + return false +} + +func InvalidUTF8(v Value) bool { + for _, c := range extractConsts(v.Value) { + if c.Value == nil { + continue + } + if c.Value.Kind() != constant.String { + continue + } + s := constant.StringVal(c.Value) + if !utf8.ValidString(s) { + return true + } + } + return false +} + +func UnbufferedChannel(v Value) bool { + r, ok := v.Range.(vrp.ChannelInterval) + if !ok || !r.IsKnown() { + return false + } + if r.Size.Lower.Cmp(vrp.NewZ(0)) == 0 && + r.Size.Upper.Cmp(vrp.NewZ(0)) == 0 { + return true + } + return false +} + +func Pointer(v Value) bool { + switch v.Value.Type().Underlying().(type) { + case *types.Pointer, *types.Interface: + return true + } + return false +} + +func ConvertedFromInt(v Value) bool { + conv, ok := v.Value.(*ssa.Convert) + if !ok { + return false + } + b, ok := conv.X.Type().Underlying().(*types.Basic) + if !ok { + return false + } + if (b.Info() & types.IsInteger) == 0 { + return false + } + return true +} + +func validEncodingBinaryType(pass *analysis.Pass, typ types.Type) bool { + typ = typ.Underlying() + switch typ := typ.(type) { + case *types.Basic: + switch typ.Kind() { + case types.Uint8, types.Uint16, types.Uint32, types.Uint64, + types.Int8, types.Int16, types.Int32, types.Int64, + types.Float32, types.Float64, types.Complex64, types.Complex128, types.Invalid: + return true + case types.Bool: + return IsGoVersion(pass, 8) + } + return false + case *types.Struct: + n := typ.NumFields() + for i := 0; i < n; i++ { + if !validEncodingBinaryType(pass, typ.Field(i).Type()) { + return false + } + } + return true + case *types.Array: + return validEncodingBinaryType(pass, typ.Elem()) + case *types.Interface: + // we can't determine if it's a valid type or not + return true + } + return false +} + +func CanBinaryMarshal(pass *analysis.Pass, v Value) bool { + typ := v.Value.Type().Underlying() + if ttyp, ok := typ.(*types.Pointer); ok { + typ = ttyp.Elem().Underlying() + } + if ttyp, ok := typ.(interface { + Elem() types.Type + }); ok { + if _, ok := ttyp.(*types.Pointer); !ok { + typ = ttyp.Elem() + } + } + + return validEncodingBinaryType(pass, typ) +} + +func RepeatZeroTimes(name string, arg int) CallCheck { + return func(call *Call) { + arg := call.Args[arg] + if IntValue(arg.Value, vrp.NewZ(0)) { + arg.Invalid(fmt.Sprintf("calling %s with n == 0 will return no results, did you mean -1?", name)) + } + } +} + +func validateServiceName(s string) bool { + if len(s) < 1 || len(s) > 15 { + return false + } + if s[0] == '-' || s[len(s)-1] == '-' { + return false + } + if strings.Contains(s, "--") { + return false + } + hasLetter := false + for _, r := range s { + if (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') { + hasLetter = true + continue + } + if r >= '0' && r <= '9' { + continue + } + return false + } + return hasLetter +} + +func validatePort(s string) bool { + n, err := strconv.ParseInt(s, 10, 64) + if err != nil { + return validateServiceName(s) + } + return n >= 0 && n <= 65535 +} + +func ValidHostPort(v Value) bool { + for _, k := range extractConsts(v.Value) { + if k.Value == nil { + continue + } + if k.Value.Kind() != constant.String { + continue + } + s := constant.StringVal(k.Value) + _, port, err := net.SplitHostPort(s) + if err != nil { + return false + } + // TODO(dh): check hostname + if !validatePort(port) { + return false + } + } + return true +} + +// ConvertedFrom reports whether value v was converted from type typ. +func ConvertedFrom(v Value, typ string) bool { + change, ok := v.Value.(*ssa.ChangeType) + return ok && IsType(change.X.Type(), typ) +} + +func UniqueStringCutset(v Value) bool { + for _, c := range extractConsts(v.Value) { + if c.Value == nil { + continue + } + if c.Value.Kind() != constant.String { + continue + } + s := constant.StringVal(c.Value) + rs := runeSlice(s) + if len(rs) < 2 { + continue + } + sort.Sort(rs) + for i, r := range rs[1:] { + if rs[i] == r { + return false + } + } + } + return true +} diff --git a/vendor/honnef.co/go/tools/staticcheck/structtag.go b/vendor/honnef.co/go/tools/staticcheck/structtag.go new file mode 100644 index 00000000000..38830a22c63 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/structtag.go @@ -0,0 +1,58 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Copyright 2019 Dominik Honnef. All rights reserved. + +package staticcheck + +import "strconv" + +func parseStructTag(tag string) (map[string][]string, error) { + // FIXME(dh): detect missing closing quote + out := map[string][]string{} + + for tag != "" { + // Skip leading space. + i := 0 + for i < len(tag) && tag[i] == ' ' { + i++ + } + tag = tag[i:] + if tag == "" { + break + } + + // Scan to colon. A space, a quote or a control character is a syntax error. + // Strictly speaking, control chars include the range [0x7f, 0x9f], not just + // [0x00, 0x1f], but in practice, we ignore the multi-byte control characters + // as it is simpler to inspect the tag's bytes than the tag's runes. + i = 0 + for i < len(tag) && tag[i] > ' ' && tag[i] != ':' && tag[i] != '"' && tag[i] != 0x7f { + i++ + } + if i == 0 || i+1 >= len(tag) || tag[i] != ':' || tag[i+1] != '"' { + break + } + name := string(tag[:i]) + tag = tag[i+1:] + + // Scan quoted string to find value. + i = 1 + for i < len(tag) && tag[i] != '"' { + if tag[i] == '\\' { + i++ + } + i++ + } + if i >= len(tag) { + break + } + qvalue := string(tag[:i+1]) + tag = tag[i+1:] + + value, err := strconv.Unquote(qvalue) + if err != nil { + return nil, err + } + out[name] = append(out[name], value) + } + return out, nil +} diff --git a/vendor/honnef.co/go/tools/staticcheck/vrp/channel.go b/vendor/honnef.co/go/tools/staticcheck/vrp/channel.go new file mode 100644 index 00000000000..0ef73787ba3 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/vrp/channel.go @@ -0,0 +1,73 @@ +package vrp + +import ( + "fmt" + + "honnef.co/go/tools/ssa" +) + +type ChannelInterval struct { + Size IntInterval +} + +func (c ChannelInterval) Union(other Range) Range { + i, ok := other.(ChannelInterval) + if !ok { + i = ChannelInterval{EmptyIntInterval} + } + if c.Size.Empty() || !c.Size.IsKnown() { + return i + } + if i.Size.Empty() || !i.Size.IsKnown() { + return c + } + return ChannelInterval{ + Size: c.Size.Union(i.Size).(IntInterval), + } +} + +func (c ChannelInterval) String() string { + return c.Size.String() +} + +func (c ChannelInterval) IsKnown() bool { + return c.Size.IsKnown() +} + +type MakeChannelConstraint struct { + aConstraint + Buffer ssa.Value +} +type ChannelChangeTypeConstraint struct { + aConstraint + X ssa.Value +} + +func NewMakeChannelConstraint(buffer, y ssa.Value) Constraint { + return &MakeChannelConstraint{NewConstraint(y), buffer} +} +func NewChannelChangeTypeConstraint(x, y ssa.Value) Constraint { + return &ChannelChangeTypeConstraint{NewConstraint(y), x} +} + +func (c *MakeChannelConstraint) Operands() []ssa.Value { return []ssa.Value{c.Buffer} } +func (c *ChannelChangeTypeConstraint) Operands() []ssa.Value { return []ssa.Value{c.X} } + +func (c *MakeChannelConstraint) String() string { + return fmt.Sprintf("%s = make(chan, %s)", c.Y().Name(), c.Buffer.Name()) +} +func (c *ChannelChangeTypeConstraint) String() string { + return fmt.Sprintf("%s = changetype(%s)", c.Y().Name(), c.X.Name()) +} + +func (c *MakeChannelConstraint) Eval(g *Graph) Range { + i, ok := g.Range(c.Buffer).(IntInterval) + if !ok { + return ChannelInterval{NewIntInterval(NewZ(0), PInfinity)} + } + if i.Lower.Sign() == -1 { + i.Lower = NewZ(0) + } + return ChannelInterval{i} +} +func (c *ChannelChangeTypeConstraint) Eval(g *Graph) Range { return g.Range(c.X) } diff --git a/vendor/honnef.co/go/tools/staticcheck/vrp/int.go b/vendor/honnef.co/go/tools/staticcheck/vrp/int.go new file mode 100644 index 00000000000..926bb7af3d6 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/vrp/int.go @@ -0,0 +1,476 @@ +package vrp + +import ( + "fmt" + "go/token" + "go/types" + "math/big" + + "honnef.co/go/tools/ssa" +) + +type Zs []Z + +func (zs Zs) Len() int { + return len(zs) +} + +func (zs Zs) Less(i int, j int) bool { + return zs[i].Cmp(zs[j]) == -1 +} + +func (zs Zs) Swap(i int, j int) { + zs[i], zs[j] = zs[j], zs[i] +} + +type Z struct { + infinity int8 + integer *big.Int +} + +func NewZ(n int64) Z { + return NewBigZ(big.NewInt(n)) +} + +func NewBigZ(n *big.Int) Z { + return Z{integer: n} +} + +func (z1 Z) Infinite() bool { + return z1.infinity != 0 +} + +func (z1 Z) Add(z2 Z) Z { + if z2.Sign() == -1 { + return z1.Sub(z2.Negate()) + } + if z1 == NInfinity { + return NInfinity + } + if z1 == PInfinity { + return PInfinity + } + if z2 == PInfinity { + return PInfinity + } + + if !z1.Infinite() && !z2.Infinite() { + n := &big.Int{} + n.Add(z1.integer, z2.integer) + return NewBigZ(n) + } + + panic(fmt.Sprintf("%s + %s is not defined", z1, z2)) +} + +func (z1 Z) Sub(z2 Z) Z { + if z2.Sign() == -1 { + return z1.Add(z2.Negate()) + } + if !z1.Infinite() && !z2.Infinite() { + n := &big.Int{} + n.Sub(z1.integer, z2.integer) + return NewBigZ(n) + } + + if z1 != PInfinity && z2 == PInfinity { + return NInfinity + } + if z1.Infinite() && !z2.Infinite() { + return Z{infinity: z1.infinity} + } + if z1 == PInfinity && z2 == PInfinity { + return PInfinity + } + panic(fmt.Sprintf("%s - %s is not defined", z1, z2)) +} + +func (z1 Z) Mul(z2 Z) Z { + if (z1.integer != nil && z1.integer.Sign() == 0) || + (z2.integer != nil && z2.integer.Sign() == 0) { + return NewBigZ(&big.Int{}) + } + + if z1.infinity != 0 || z2.infinity != 0 { + return Z{infinity: int8(z1.Sign() * z2.Sign())} + } + + n := &big.Int{} + n.Mul(z1.integer, z2.integer) + return NewBigZ(n) +} + +func (z1 Z) Negate() Z { + if z1.infinity == 1 { + return NInfinity + } + if z1.infinity == -1 { + return PInfinity + } + n := &big.Int{} + n.Neg(z1.integer) + return NewBigZ(n) +} + +func (z1 Z) Sign() int { + if z1.infinity != 0 { + return int(z1.infinity) + } + return z1.integer.Sign() +} + +func (z1 Z) String() string { + if z1 == NInfinity { + return "-∞" + } + if z1 == PInfinity { + return "∞" + } + return fmt.Sprintf("%d", z1.integer) +} + +func (z1 Z) Cmp(z2 Z) int { + if z1.infinity == z2.infinity && z1.infinity != 0 { + return 0 + } + if z1 == PInfinity { + return 1 + } + if z1 == NInfinity { + return -1 + } + if z2 == NInfinity { + return 1 + } + if z2 == PInfinity { + return -1 + } + return z1.integer.Cmp(z2.integer) +} + +func MaxZ(zs ...Z) Z { + if len(zs) == 0 { + panic("Max called with no arguments") + } + if len(zs) == 1 { + return zs[0] + } + ret := zs[0] + for _, z := range zs[1:] { + if z.Cmp(ret) == 1 { + ret = z + } + } + return ret +} + +func MinZ(zs ...Z) Z { + if len(zs) == 0 { + panic("Min called with no arguments") + } + if len(zs) == 1 { + return zs[0] + } + ret := zs[0] + for _, z := range zs[1:] { + if z.Cmp(ret) == -1 { + ret = z + } + } + return ret +} + +var NInfinity = Z{infinity: -1} +var PInfinity = Z{infinity: 1} +var EmptyIntInterval = IntInterval{true, PInfinity, NInfinity} + +func InfinityFor(v ssa.Value) IntInterval { + if b, ok := v.Type().Underlying().(*types.Basic); ok { + if (b.Info() & types.IsUnsigned) != 0 { + return NewIntInterval(NewZ(0), PInfinity) + } + } + return NewIntInterval(NInfinity, PInfinity) +} + +type IntInterval struct { + known bool + Lower Z + Upper Z +} + +func NewIntInterval(l, u Z) IntInterval { + if u.Cmp(l) == -1 { + return EmptyIntInterval + } + return IntInterval{known: true, Lower: l, Upper: u} +} + +func (i IntInterval) IsKnown() bool { + return i.known +} + +func (i IntInterval) Empty() bool { + return i.Lower == PInfinity && i.Upper == NInfinity +} + +func (i IntInterval) IsMaxRange() bool { + return i.Lower == NInfinity && i.Upper == PInfinity +} + +func (i1 IntInterval) Intersection(i2 IntInterval) IntInterval { + if !i1.IsKnown() { + return i2 + } + if !i2.IsKnown() { + return i1 + } + if i1.Empty() || i2.Empty() { + return EmptyIntInterval + } + i3 := NewIntInterval(MaxZ(i1.Lower, i2.Lower), MinZ(i1.Upper, i2.Upper)) + if i3.Lower.Cmp(i3.Upper) == 1 { + return EmptyIntInterval + } + return i3 +} + +func (i1 IntInterval) Union(other Range) Range { + i2, ok := other.(IntInterval) + if !ok { + i2 = EmptyIntInterval + } + if i1.Empty() || !i1.IsKnown() { + return i2 + } + if i2.Empty() || !i2.IsKnown() { + return i1 + } + return NewIntInterval(MinZ(i1.Lower, i2.Lower), MaxZ(i1.Upper, i2.Upper)) +} + +func (i1 IntInterval) Add(i2 IntInterval) IntInterval { + if i1.Empty() || i2.Empty() { + return EmptyIntInterval + } + l1, u1, l2, u2 := i1.Lower, i1.Upper, i2.Lower, i2.Upper + return NewIntInterval(l1.Add(l2), u1.Add(u2)) +} + +func (i1 IntInterval) Sub(i2 IntInterval) IntInterval { + if i1.Empty() || i2.Empty() { + return EmptyIntInterval + } + l1, u1, l2, u2 := i1.Lower, i1.Upper, i2.Lower, i2.Upper + return NewIntInterval(l1.Sub(u2), u1.Sub(l2)) +} + +func (i1 IntInterval) Mul(i2 IntInterval) IntInterval { + if i1.Empty() || i2.Empty() { + return EmptyIntInterval + } + x1, x2 := i1.Lower, i1.Upper + y1, y2 := i2.Lower, i2.Upper + return NewIntInterval( + MinZ(x1.Mul(y1), x1.Mul(y2), x2.Mul(y1), x2.Mul(y2)), + MaxZ(x1.Mul(y1), x1.Mul(y2), x2.Mul(y1), x2.Mul(y2)), + ) +} + +func (i1 IntInterval) String() string { + if !i1.IsKnown() { + return "[⊥, ⊥]" + } + if i1.Empty() { + return "{}" + } + return fmt.Sprintf("[%s, %s]", i1.Lower, i1.Upper) +} + +type IntArithmeticConstraint struct { + aConstraint + A ssa.Value + B ssa.Value + Op token.Token + Fn func(IntInterval, IntInterval) IntInterval +} + +type IntAddConstraint struct{ *IntArithmeticConstraint } +type IntSubConstraint struct{ *IntArithmeticConstraint } +type IntMulConstraint struct{ *IntArithmeticConstraint } + +type IntConversionConstraint struct { + aConstraint + X ssa.Value +} + +type IntIntersectionConstraint struct { + aConstraint + ranges Ranges + A ssa.Value + B ssa.Value + Op token.Token + I IntInterval + resolved bool +} + +type IntIntervalConstraint struct { + aConstraint + I IntInterval +} + +func NewIntArithmeticConstraint(a, b, y ssa.Value, op token.Token, fn func(IntInterval, IntInterval) IntInterval) *IntArithmeticConstraint { + return &IntArithmeticConstraint{NewConstraint(y), a, b, op, fn} +} +func NewIntAddConstraint(a, b, y ssa.Value) Constraint { + return &IntAddConstraint{NewIntArithmeticConstraint(a, b, y, token.ADD, IntInterval.Add)} +} +func NewIntSubConstraint(a, b, y ssa.Value) Constraint { + return &IntSubConstraint{NewIntArithmeticConstraint(a, b, y, token.SUB, IntInterval.Sub)} +} +func NewIntMulConstraint(a, b, y ssa.Value) Constraint { + return &IntMulConstraint{NewIntArithmeticConstraint(a, b, y, token.MUL, IntInterval.Mul)} +} +func NewIntConversionConstraint(x, y ssa.Value) Constraint { + return &IntConversionConstraint{NewConstraint(y), x} +} +func NewIntIntersectionConstraint(a, b ssa.Value, op token.Token, ranges Ranges, y ssa.Value) Constraint { + return &IntIntersectionConstraint{ + aConstraint: NewConstraint(y), + ranges: ranges, + A: a, + B: b, + Op: op, + } +} +func NewIntIntervalConstraint(i IntInterval, y ssa.Value) Constraint { + return &IntIntervalConstraint{NewConstraint(y), i} +} + +func (c *IntArithmeticConstraint) Operands() []ssa.Value { return []ssa.Value{c.A, c.B} } +func (c *IntConversionConstraint) Operands() []ssa.Value { return []ssa.Value{c.X} } +func (c *IntIntersectionConstraint) Operands() []ssa.Value { return []ssa.Value{c.A} } +func (s *IntIntervalConstraint) Operands() []ssa.Value { return nil } + +func (c *IntArithmeticConstraint) String() string { + return fmt.Sprintf("%s = %s %s %s", c.Y().Name(), c.A.Name(), c.Op, c.B.Name()) +} +func (c *IntConversionConstraint) String() string { + return fmt.Sprintf("%s = %s(%s)", c.Y().Name(), c.Y().Type(), c.X.Name()) +} +func (c *IntIntersectionConstraint) String() string { + return fmt.Sprintf("%s = %s %s %s (%t branch)", c.Y().Name(), c.A.Name(), c.Op, c.B.Name(), c.Y().(*ssa.Sigma).Branch) +} +func (c *IntIntervalConstraint) String() string { return fmt.Sprintf("%s = %s", c.Y().Name(), c.I) } + +func (c *IntArithmeticConstraint) Eval(g *Graph) Range { + i1, i2 := g.Range(c.A).(IntInterval), g.Range(c.B).(IntInterval) + if !i1.IsKnown() || !i2.IsKnown() { + return IntInterval{} + } + return c.Fn(i1, i2) +} +func (c *IntConversionConstraint) Eval(g *Graph) Range { + s := &types.StdSizes{ + // XXX is it okay to assume the largest word size, or do we + // need to be platform specific? + WordSize: 8, + MaxAlign: 1, + } + fromI := g.Range(c.X).(IntInterval) + toI := g.Range(c.Y()).(IntInterval) + fromT := c.X.Type().Underlying().(*types.Basic) + toT := c.Y().Type().Underlying().(*types.Basic) + fromB := s.Sizeof(c.X.Type()) + toB := s.Sizeof(c.Y().Type()) + + if !fromI.IsKnown() { + return toI + } + if !toI.IsKnown() { + return fromI + } + + // uint -> sint/uint, M > N: [max(0, l1), min(2**N-1, u2)] + if (fromT.Info()&types.IsUnsigned != 0) && + toB > fromB { + + n := big.NewInt(1) + n.Lsh(n, uint(fromB*8)) + n.Sub(n, big.NewInt(1)) + return NewIntInterval( + MaxZ(NewZ(0), fromI.Lower), + MinZ(NewBigZ(n), toI.Upper), + ) + } + + // sint -> sint, M > N; [max(-∞, l1), min(2**N-1, u2)] + if (fromT.Info()&types.IsUnsigned == 0) && + (toT.Info()&types.IsUnsigned == 0) && + toB > fromB { + + n := big.NewInt(1) + n.Lsh(n, uint(fromB*8)) + n.Sub(n, big.NewInt(1)) + return NewIntInterval( + MaxZ(NInfinity, fromI.Lower), + MinZ(NewBigZ(n), toI.Upper), + ) + } + + return fromI +} +func (c *IntIntersectionConstraint) Eval(g *Graph) Range { + xi := g.Range(c.A).(IntInterval) + if !xi.IsKnown() { + return c.I + } + return xi.Intersection(c.I) +} +func (c *IntIntervalConstraint) Eval(*Graph) Range { return c.I } + +func (c *IntIntersectionConstraint) Futures() []ssa.Value { + return []ssa.Value{c.B} +} + +func (c *IntIntersectionConstraint) Resolve() { + r, ok := c.ranges[c.B].(IntInterval) + if !ok { + c.I = InfinityFor(c.Y()) + return + } + + switch c.Op { + case token.EQL: + c.I = r + case token.GTR: + c.I = NewIntInterval(r.Lower.Add(NewZ(1)), PInfinity) + case token.GEQ: + c.I = NewIntInterval(r.Lower, PInfinity) + case token.LSS: + // TODO(dh): do we need 0 instead of NInfinity for uints? + c.I = NewIntInterval(NInfinity, r.Upper.Sub(NewZ(1))) + case token.LEQ: + c.I = NewIntInterval(NInfinity, r.Upper) + case token.NEQ: + c.I = InfinityFor(c.Y()) + default: + panic("unsupported op " + c.Op.String()) + } +} + +func (c *IntIntersectionConstraint) IsKnown() bool { + return c.I.IsKnown() +} + +func (c *IntIntersectionConstraint) MarkUnresolved() { + c.resolved = false +} + +func (c *IntIntersectionConstraint) MarkResolved() { + c.resolved = true +} + +func (c *IntIntersectionConstraint) IsResolved() bool { + return c.resolved +} diff --git a/vendor/honnef.co/go/tools/staticcheck/vrp/slice.go b/vendor/honnef.co/go/tools/staticcheck/vrp/slice.go new file mode 100644 index 00000000000..40658dd8d86 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/vrp/slice.go @@ -0,0 +1,273 @@ +package vrp + +// TODO(dh): most of the constraints have implementations identical to +// that of strings. Consider reusing them. + +import ( + "fmt" + "go/types" + + "honnef.co/go/tools/ssa" +) + +type SliceInterval struct { + Length IntInterval +} + +func (s SliceInterval) Union(other Range) Range { + i, ok := other.(SliceInterval) + if !ok { + i = SliceInterval{EmptyIntInterval} + } + if s.Length.Empty() || !s.Length.IsKnown() { + return i + } + if i.Length.Empty() || !i.Length.IsKnown() { + return s + } + return SliceInterval{ + Length: s.Length.Union(i.Length).(IntInterval), + } +} +func (s SliceInterval) String() string { return s.Length.String() } +func (s SliceInterval) IsKnown() bool { return s.Length.IsKnown() } + +type SliceAppendConstraint struct { + aConstraint + A ssa.Value + B ssa.Value +} + +type SliceSliceConstraint struct { + aConstraint + X ssa.Value + Lower ssa.Value + Upper ssa.Value +} + +type ArraySliceConstraint struct { + aConstraint + X ssa.Value + Lower ssa.Value + Upper ssa.Value +} + +type SliceIntersectionConstraint struct { + aConstraint + X ssa.Value + I IntInterval +} + +type SliceLengthConstraint struct { + aConstraint + X ssa.Value +} + +type MakeSliceConstraint struct { + aConstraint + Size ssa.Value +} + +type SliceIntervalConstraint struct { + aConstraint + I IntInterval +} + +func NewSliceAppendConstraint(a, b, y ssa.Value) Constraint { + return &SliceAppendConstraint{NewConstraint(y), a, b} +} +func NewSliceSliceConstraint(x, lower, upper, y ssa.Value) Constraint { + return &SliceSliceConstraint{NewConstraint(y), x, lower, upper} +} +func NewArraySliceConstraint(x, lower, upper, y ssa.Value) Constraint { + return &ArraySliceConstraint{NewConstraint(y), x, lower, upper} +} +func NewSliceIntersectionConstraint(x ssa.Value, i IntInterval, y ssa.Value) Constraint { + return &SliceIntersectionConstraint{NewConstraint(y), x, i} +} +func NewSliceLengthConstraint(x, y ssa.Value) Constraint { + return &SliceLengthConstraint{NewConstraint(y), x} +} +func NewMakeSliceConstraint(size, y ssa.Value) Constraint { + return &MakeSliceConstraint{NewConstraint(y), size} +} +func NewSliceIntervalConstraint(i IntInterval, y ssa.Value) Constraint { + return &SliceIntervalConstraint{NewConstraint(y), i} +} + +func (c *SliceAppendConstraint) Operands() []ssa.Value { return []ssa.Value{c.A, c.B} } +func (c *SliceSliceConstraint) Operands() []ssa.Value { + ops := []ssa.Value{c.X} + if c.Lower != nil { + ops = append(ops, c.Lower) + } + if c.Upper != nil { + ops = append(ops, c.Upper) + } + return ops +} +func (c *ArraySliceConstraint) Operands() []ssa.Value { + ops := []ssa.Value{c.X} + if c.Lower != nil { + ops = append(ops, c.Lower) + } + if c.Upper != nil { + ops = append(ops, c.Upper) + } + return ops +} +func (c *SliceIntersectionConstraint) Operands() []ssa.Value { return []ssa.Value{c.X} } +func (c *SliceLengthConstraint) Operands() []ssa.Value { return []ssa.Value{c.X} } +func (c *MakeSliceConstraint) Operands() []ssa.Value { return []ssa.Value{c.Size} } +func (s *SliceIntervalConstraint) Operands() []ssa.Value { return nil } + +func (c *SliceAppendConstraint) String() string { + return fmt.Sprintf("%s = append(%s, %s)", c.Y().Name(), c.A.Name(), c.B.Name()) +} +func (c *SliceSliceConstraint) String() string { + var lname, uname string + if c.Lower != nil { + lname = c.Lower.Name() + } + if c.Upper != nil { + uname = c.Upper.Name() + } + return fmt.Sprintf("%s[%s:%s]", c.X.Name(), lname, uname) +} +func (c *ArraySliceConstraint) String() string { + var lname, uname string + if c.Lower != nil { + lname = c.Lower.Name() + } + if c.Upper != nil { + uname = c.Upper.Name() + } + return fmt.Sprintf("%s[%s:%s]", c.X.Name(), lname, uname) +} +func (c *SliceIntersectionConstraint) String() string { + return fmt.Sprintf("%s = %s.%t ⊓ %s", c.Y().Name(), c.X.Name(), c.Y().(*ssa.Sigma).Branch, c.I) +} +func (c *SliceLengthConstraint) String() string { + return fmt.Sprintf("%s = len(%s)", c.Y().Name(), c.X.Name()) +} +func (c *MakeSliceConstraint) String() string { + return fmt.Sprintf("%s = make(slice, %s)", c.Y().Name(), c.Size.Name()) +} +func (c *SliceIntervalConstraint) String() string { return fmt.Sprintf("%s = %s", c.Y().Name(), c.I) } + +func (c *SliceAppendConstraint) Eval(g *Graph) Range { + l1 := g.Range(c.A).(SliceInterval).Length + var l2 IntInterval + switch r := g.Range(c.B).(type) { + case SliceInterval: + l2 = r.Length + case StringInterval: + l2 = r.Length + default: + return SliceInterval{} + } + if !l1.IsKnown() || !l2.IsKnown() { + return SliceInterval{} + } + return SliceInterval{ + Length: l1.Add(l2), + } +} +func (c *SliceSliceConstraint) Eval(g *Graph) Range { + lr := NewIntInterval(NewZ(0), NewZ(0)) + if c.Lower != nil { + lr = g.Range(c.Lower).(IntInterval) + } + ur := g.Range(c.X).(SliceInterval).Length + if c.Upper != nil { + ur = g.Range(c.Upper).(IntInterval) + } + if !lr.IsKnown() || !ur.IsKnown() { + return SliceInterval{} + } + + ls := []Z{ + ur.Lower.Sub(lr.Lower), + ur.Upper.Sub(lr.Lower), + ur.Lower.Sub(lr.Upper), + ur.Upper.Sub(lr.Upper), + } + // TODO(dh): if we don't truncate lengths to 0 we might be able to + // easily detect slices with high < low. we'd need to treat -∞ + // specially, though. + for i, l := range ls { + if l.Sign() == -1 { + ls[i] = NewZ(0) + } + } + + return SliceInterval{ + Length: NewIntInterval(MinZ(ls...), MaxZ(ls...)), + } +} +func (c *ArraySliceConstraint) Eval(g *Graph) Range { + lr := NewIntInterval(NewZ(0), NewZ(0)) + if c.Lower != nil { + lr = g.Range(c.Lower).(IntInterval) + } + var l int64 + switch typ := c.X.Type().(type) { + case *types.Array: + l = typ.Len() + case *types.Pointer: + l = typ.Elem().(*types.Array).Len() + } + ur := NewIntInterval(NewZ(l), NewZ(l)) + if c.Upper != nil { + ur = g.Range(c.Upper).(IntInterval) + } + if !lr.IsKnown() || !ur.IsKnown() { + return SliceInterval{} + } + + ls := []Z{ + ur.Lower.Sub(lr.Lower), + ur.Upper.Sub(lr.Lower), + ur.Lower.Sub(lr.Upper), + ur.Upper.Sub(lr.Upper), + } + // TODO(dh): if we don't truncate lengths to 0 we might be able to + // easily detect slices with high < low. we'd need to treat -∞ + // specially, though. + for i, l := range ls { + if l.Sign() == -1 { + ls[i] = NewZ(0) + } + } + + return SliceInterval{ + Length: NewIntInterval(MinZ(ls...), MaxZ(ls...)), + } +} +func (c *SliceIntersectionConstraint) Eval(g *Graph) Range { + xi := g.Range(c.X).(SliceInterval) + if !xi.IsKnown() { + return c.I + } + return SliceInterval{ + Length: xi.Length.Intersection(c.I), + } +} +func (c *SliceLengthConstraint) Eval(g *Graph) Range { + i := g.Range(c.X).(SliceInterval).Length + if !i.IsKnown() { + return NewIntInterval(NewZ(0), PInfinity) + } + return i +} +func (c *MakeSliceConstraint) Eval(g *Graph) Range { + i, ok := g.Range(c.Size).(IntInterval) + if !ok { + return SliceInterval{NewIntInterval(NewZ(0), PInfinity)} + } + if i.Lower.Sign() == -1 { + i.Lower = NewZ(0) + } + return SliceInterval{i} +} +func (c *SliceIntervalConstraint) Eval(*Graph) Range { return SliceInterval{c.I} } diff --git a/vendor/honnef.co/go/tools/staticcheck/vrp/string.go b/vendor/honnef.co/go/tools/staticcheck/vrp/string.go new file mode 100644 index 00000000000..e05877f9f78 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/vrp/string.go @@ -0,0 +1,258 @@ +package vrp + +import ( + "fmt" + "go/token" + "go/types" + + "honnef.co/go/tools/ssa" +) + +type StringInterval struct { + Length IntInterval +} + +func (s StringInterval) Union(other Range) Range { + i, ok := other.(StringInterval) + if !ok { + i = StringInterval{EmptyIntInterval} + } + if s.Length.Empty() || !s.Length.IsKnown() { + return i + } + if i.Length.Empty() || !i.Length.IsKnown() { + return s + } + return StringInterval{ + Length: s.Length.Union(i.Length).(IntInterval), + } +} + +func (s StringInterval) String() string { + return s.Length.String() +} + +func (s StringInterval) IsKnown() bool { + return s.Length.IsKnown() +} + +type StringSliceConstraint struct { + aConstraint + X ssa.Value + Lower ssa.Value + Upper ssa.Value +} + +type StringIntersectionConstraint struct { + aConstraint + ranges Ranges + A ssa.Value + B ssa.Value + Op token.Token + I IntInterval + resolved bool +} + +type StringConcatConstraint struct { + aConstraint + A ssa.Value + B ssa.Value +} + +type StringLengthConstraint struct { + aConstraint + X ssa.Value +} + +type StringIntervalConstraint struct { + aConstraint + I IntInterval +} + +func NewStringSliceConstraint(x, lower, upper, y ssa.Value) Constraint { + return &StringSliceConstraint{NewConstraint(y), x, lower, upper} +} +func NewStringIntersectionConstraint(a, b ssa.Value, op token.Token, ranges Ranges, y ssa.Value) Constraint { + return &StringIntersectionConstraint{ + aConstraint: NewConstraint(y), + ranges: ranges, + A: a, + B: b, + Op: op, + } +} +func NewStringConcatConstraint(a, b, y ssa.Value) Constraint { + return &StringConcatConstraint{NewConstraint(y), a, b} +} +func NewStringLengthConstraint(x ssa.Value, y ssa.Value) Constraint { + return &StringLengthConstraint{NewConstraint(y), x} +} +func NewStringIntervalConstraint(i IntInterval, y ssa.Value) Constraint { + return &StringIntervalConstraint{NewConstraint(y), i} +} + +func (c *StringSliceConstraint) Operands() []ssa.Value { + vs := []ssa.Value{c.X} + if c.Lower != nil { + vs = append(vs, c.Lower) + } + if c.Upper != nil { + vs = append(vs, c.Upper) + } + return vs +} +func (c *StringIntersectionConstraint) Operands() []ssa.Value { return []ssa.Value{c.A} } +func (c StringConcatConstraint) Operands() []ssa.Value { return []ssa.Value{c.A, c.B} } +func (c *StringLengthConstraint) Operands() []ssa.Value { return []ssa.Value{c.X} } +func (s *StringIntervalConstraint) Operands() []ssa.Value { return nil } + +func (c *StringSliceConstraint) String() string { + var lname, uname string + if c.Lower != nil { + lname = c.Lower.Name() + } + if c.Upper != nil { + uname = c.Upper.Name() + } + return fmt.Sprintf("%s[%s:%s]", c.X.Name(), lname, uname) +} +func (c *StringIntersectionConstraint) String() string { + return fmt.Sprintf("%s = %s %s %s (%t branch)", c.Y().Name(), c.A.Name(), c.Op, c.B.Name(), c.Y().(*ssa.Sigma).Branch) +} +func (c StringConcatConstraint) String() string { + return fmt.Sprintf("%s = %s + %s", c.Y().Name(), c.A.Name(), c.B.Name()) +} +func (c *StringLengthConstraint) String() string { + return fmt.Sprintf("%s = len(%s)", c.Y().Name(), c.X.Name()) +} +func (c *StringIntervalConstraint) String() string { return fmt.Sprintf("%s = %s", c.Y().Name(), c.I) } + +func (c *StringSliceConstraint) Eval(g *Graph) Range { + lr := NewIntInterval(NewZ(0), NewZ(0)) + if c.Lower != nil { + lr = g.Range(c.Lower).(IntInterval) + } + ur := g.Range(c.X).(StringInterval).Length + if c.Upper != nil { + ur = g.Range(c.Upper).(IntInterval) + } + if !lr.IsKnown() || !ur.IsKnown() { + return StringInterval{} + } + + ls := []Z{ + ur.Lower.Sub(lr.Lower), + ur.Upper.Sub(lr.Lower), + ur.Lower.Sub(lr.Upper), + ur.Upper.Sub(lr.Upper), + } + // TODO(dh): if we don't truncate lengths to 0 we might be able to + // easily detect slices with high < low. we'd need to treat -∞ + // specially, though. + for i, l := range ls { + if l.Sign() == -1 { + ls[i] = NewZ(0) + } + } + + return StringInterval{ + Length: NewIntInterval(MinZ(ls...), MaxZ(ls...)), + } +} +func (c *StringIntersectionConstraint) Eval(g *Graph) Range { + var l IntInterval + switch r := g.Range(c.A).(type) { + case StringInterval: + l = r.Length + case IntInterval: + l = r + } + + if !l.IsKnown() { + return StringInterval{c.I} + } + return StringInterval{ + Length: l.Intersection(c.I), + } +} +func (c StringConcatConstraint) Eval(g *Graph) Range { + i1, i2 := g.Range(c.A).(StringInterval), g.Range(c.B).(StringInterval) + if !i1.Length.IsKnown() || !i2.Length.IsKnown() { + return StringInterval{} + } + return StringInterval{ + Length: i1.Length.Add(i2.Length), + } +} +func (c *StringLengthConstraint) Eval(g *Graph) Range { + i := g.Range(c.X).(StringInterval).Length + if !i.IsKnown() { + return NewIntInterval(NewZ(0), PInfinity) + } + return i +} +func (c *StringIntervalConstraint) Eval(*Graph) Range { return StringInterval{c.I} } + +func (c *StringIntersectionConstraint) Futures() []ssa.Value { + return []ssa.Value{c.B} +} + +func (c *StringIntersectionConstraint) Resolve() { + if (c.A.Type().Underlying().(*types.Basic).Info() & types.IsString) != 0 { + // comparing two strings + r, ok := c.ranges[c.B].(StringInterval) + if !ok { + c.I = NewIntInterval(NewZ(0), PInfinity) + return + } + switch c.Op { + case token.EQL: + c.I = r.Length + case token.GTR, token.GEQ: + c.I = NewIntInterval(r.Length.Lower, PInfinity) + case token.LSS, token.LEQ: + c.I = NewIntInterval(NewZ(0), r.Length.Upper) + case token.NEQ: + default: + panic("unsupported op " + c.Op.String()) + } + } else { + r, ok := c.ranges[c.B].(IntInterval) + if !ok { + c.I = NewIntInterval(NewZ(0), PInfinity) + return + } + // comparing two lengths + switch c.Op { + case token.EQL: + c.I = r + case token.GTR: + c.I = NewIntInterval(r.Lower.Add(NewZ(1)), PInfinity) + case token.GEQ: + c.I = NewIntInterval(r.Lower, PInfinity) + case token.LSS: + c.I = NewIntInterval(NInfinity, r.Upper.Sub(NewZ(1))) + case token.LEQ: + c.I = NewIntInterval(NInfinity, r.Upper) + case token.NEQ: + default: + panic("unsupported op " + c.Op.String()) + } + } +} + +func (c *StringIntersectionConstraint) IsKnown() bool { + return c.I.IsKnown() +} + +func (c *StringIntersectionConstraint) MarkUnresolved() { + c.resolved = false +} + +func (c *StringIntersectionConstraint) MarkResolved() { + c.resolved = true +} + +func (c *StringIntersectionConstraint) IsResolved() bool { + return c.resolved +} diff --git a/vendor/honnef.co/go/tools/staticcheck/vrp/vrp.go b/vendor/honnef.co/go/tools/staticcheck/vrp/vrp.go new file mode 100644 index 00000000000..3c138e51229 --- /dev/null +++ b/vendor/honnef.co/go/tools/staticcheck/vrp/vrp.go @@ -0,0 +1,1056 @@ +package vrp + +// TODO(dh) widening and narrowing have a lot of code in common. Make +// it reusable. + +import ( + "fmt" + "go/constant" + "go/token" + "go/types" + "math/big" + "sort" + "strings" + + "honnef.co/go/tools/lint" + "honnef.co/go/tools/ssa" +) + +type Future interface { + Constraint + Futures() []ssa.Value + Resolve() + IsKnown() bool + MarkUnresolved() + MarkResolved() + IsResolved() bool +} + +type Range interface { + Union(other Range) Range + IsKnown() bool +} + +type Constraint interface { + Y() ssa.Value + isConstraint() + String() string + Eval(*Graph) Range + Operands() []ssa.Value +} + +type aConstraint struct { + y ssa.Value +} + +func NewConstraint(y ssa.Value) aConstraint { + return aConstraint{y} +} + +func (aConstraint) isConstraint() {} +func (c aConstraint) Y() ssa.Value { return c.y } + +type PhiConstraint struct { + aConstraint + Vars []ssa.Value +} + +func NewPhiConstraint(vars []ssa.Value, y ssa.Value) Constraint { + uniqm := map[ssa.Value]struct{}{} + for _, v := range vars { + uniqm[v] = struct{}{} + } + var uniq []ssa.Value + for v := range uniqm { + uniq = append(uniq, v) + } + return &PhiConstraint{ + aConstraint: NewConstraint(y), + Vars: uniq, + } +} + +func (c *PhiConstraint) Operands() []ssa.Value { + return c.Vars +} + +func (c *PhiConstraint) Eval(g *Graph) Range { + i := Range(nil) + for _, v := range c.Vars { + i = g.Range(v).Union(i) + } + return i +} + +func (c *PhiConstraint) String() string { + names := make([]string, len(c.Vars)) + for i, v := range c.Vars { + names[i] = v.Name() + } + return fmt.Sprintf("%s = φ(%s)", c.Y().Name(), strings.Join(names, ", ")) +} + +func isSupportedType(typ types.Type) bool { + switch typ := typ.Underlying().(type) { + case *types.Basic: + switch typ.Kind() { + case types.String, types.UntypedString: + return true + default: + if (typ.Info() & types.IsInteger) == 0 { + return false + } + } + case *types.Chan: + return true + case *types.Slice: + return true + default: + return false + } + return true +} + +func ConstantToZ(c constant.Value) Z { + s := constant.ToInt(c).ExactString() + n := &big.Int{} + n.SetString(s, 10) + return NewBigZ(n) +} + +func sigmaInteger(g *Graph, ins *ssa.Sigma, cond *ssa.BinOp, ops []*ssa.Value) Constraint { + op := cond.Op + if !ins.Branch { + op = (invertToken(op)) + } + + switch op { + case token.EQL, token.GTR, token.GEQ, token.LSS, token.LEQ: + default: + return nil + } + var a, b ssa.Value + if (*ops[0]) == ins.X { + a = *ops[0] + b = *ops[1] + } else { + a = *ops[1] + b = *ops[0] + op = flipToken(op) + } + return NewIntIntersectionConstraint(a, b, op, g.ranges, ins) +} + +func sigmaString(g *Graph, ins *ssa.Sigma, cond *ssa.BinOp, ops []*ssa.Value) Constraint { + op := cond.Op + if !ins.Branch { + op = (invertToken(op)) + } + + switch op { + case token.EQL, token.GTR, token.GEQ, token.LSS, token.LEQ: + default: + return nil + } + + if ((*ops[0]).Type().Underlying().(*types.Basic).Info() & types.IsString) == 0 { + var a, b ssa.Value + call, ok := (*ops[0]).(*ssa.Call) + if ok && call.Common().Args[0] == ins.X { + a = *ops[0] + b = *ops[1] + } else { + a = *ops[1] + b = *ops[0] + op = flipToken(op) + } + return NewStringIntersectionConstraint(a, b, op, g.ranges, ins) + } + var a, b ssa.Value + if (*ops[0]) == ins.X { + a = *ops[0] + b = *ops[1] + } else { + a = *ops[1] + b = *ops[0] + op = flipToken(op) + } + return NewStringIntersectionConstraint(a, b, op, g.ranges, ins) +} + +func sigmaSlice(g *Graph, ins *ssa.Sigma, cond *ssa.BinOp, ops []*ssa.Value) Constraint { + // TODO(dh) sigmaSlice and sigmaString are a lot alike. Can they + // be merged? + // + // XXX support futures + + op := cond.Op + if !ins.Branch { + op = (invertToken(op)) + } + + k, ok := (*ops[1]).(*ssa.Const) + // XXX investigate in what cases this wouldn't be a Const + // + // XXX what if left and right are swapped? + if !ok { + return nil + } + + call, ok := (*ops[0]).(*ssa.Call) + if !ok { + return nil + } + builtin, ok := call.Common().Value.(*ssa.Builtin) + if !ok { + return nil + } + if builtin.Name() != "len" { + return nil + } + callops := call.Operands(nil) + + v := ConstantToZ(k.Value) + c := NewSliceIntersectionConstraint(*callops[1], IntInterval{}, ins).(*SliceIntersectionConstraint) + switch op { + case token.EQL: + c.I = NewIntInterval(v, v) + case token.GTR, token.GEQ: + off := int64(0) + if cond.Op == token.GTR { + off = 1 + } + c.I = NewIntInterval( + v.Add(NewZ(off)), + PInfinity, + ) + case token.LSS, token.LEQ: + off := int64(0) + if cond.Op == token.LSS { + off = -1 + } + c.I = NewIntInterval( + NInfinity, + v.Add(NewZ(off)), + ) + default: + return nil + } + return c +} + +func BuildGraph(f *ssa.Function) *Graph { + g := &Graph{ + Vertices: map[interface{}]*Vertex{}, + ranges: Ranges{}, + } + + var cs []Constraint + + ops := make([]*ssa.Value, 16) + seen := map[ssa.Value]bool{} + for _, block := range f.Blocks { + for _, ins := range block.Instrs { + ops = ins.Operands(ops[:0]) + for _, op := range ops { + if c, ok := (*op).(*ssa.Const); ok { + if seen[c] { + continue + } + seen[c] = true + if c.Value == nil { + switch c.Type().Underlying().(type) { + case *types.Slice: + cs = append(cs, NewSliceIntervalConstraint(NewIntInterval(NewZ(0), NewZ(0)), c)) + } + continue + } + switch c.Value.Kind() { + case constant.Int: + v := ConstantToZ(c.Value) + cs = append(cs, NewIntIntervalConstraint(NewIntInterval(v, v), c)) + case constant.String: + s := constant.StringVal(c.Value) + n := NewZ(int64(len(s))) + cs = append(cs, NewStringIntervalConstraint(NewIntInterval(n, n), c)) + } + } + } + } + } + for _, block := range f.Blocks { + for _, ins := range block.Instrs { + switch ins := ins.(type) { + case *ssa.Convert: + switch v := ins.Type().Underlying().(type) { + case *types.Basic: + if (v.Info() & types.IsInteger) == 0 { + continue + } + cs = append(cs, NewIntConversionConstraint(ins.X, ins)) + } + case *ssa.Call: + if static := ins.Common().StaticCallee(); static != nil { + if fn, ok := static.Object().(*types.Func); ok { + switch lint.FuncName(fn) { + case "bytes.Index", "bytes.IndexAny", "bytes.IndexByte", + "bytes.IndexFunc", "bytes.IndexRune", "bytes.LastIndex", + "bytes.LastIndexAny", "bytes.LastIndexByte", "bytes.LastIndexFunc", + "strings.Index", "strings.IndexAny", "strings.IndexByte", + "strings.IndexFunc", "strings.IndexRune", "strings.LastIndex", + "strings.LastIndexAny", "strings.LastIndexByte", "strings.LastIndexFunc": + // TODO(dh): instead of limiting by +∞, + // limit by the upper bound of the passed + // string + cs = append(cs, NewIntIntervalConstraint(NewIntInterval(NewZ(-1), PInfinity), ins)) + case "bytes.Title", "bytes.ToLower", "bytes.ToTitle", "bytes.ToUpper", + "strings.Title", "strings.ToLower", "strings.ToTitle", "strings.ToUpper": + cs = append(cs, NewCopyConstraint(ins.Common().Args[0], ins)) + case "bytes.ToLowerSpecial", "bytes.ToTitleSpecial", "bytes.ToUpperSpecial", + "strings.ToLowerSpecial", "strings.ToTitleSpecial", "strings.ToUpperSpecial": + cs = append(cs, NewCopyConstraint(ins.Common().Args[1], ins)) + case "bytes.Compare", "strings.Compare": + cs = append(cs, NewIntIntervalConstraint(NewIntInterval(NewZ(-1), NewZ(1)), ins)) + case "bytes.Count", "strings.Count": + // TODO(dh): instead of limiting by +∞, + // limit by the upper bound of the passed + // string. + cs = append(cs, NewIntIntervalConstraint(NewIntInterval(NewZ(0), PInfinity), ins)) + case "bytes.Map", "bytes.TrimFunc", "bytes.TrimLeft", "bytes.TrimLeftFunc", + "bytes.TrimRight", "bytes.TrimRightFunc", "bytes.TrimSpace", + "strings.Map", "strings.TrimFunc", "strings.TrimLeft", "strings.TrimLeftFunc", + "strings.TrimRight", "strings.TrimRightFunc", "strings.TrimSpace": + // TODO(dh): lower = 0, upper = upper of passed string + case "bytes.TrimPrefix", "bytes.TrimSuffix", + "strings.TrimPrefix", "strings.TrimSuffix": + // TODO(dh) range between "unmodified" and len(cutset) removed + case "(*bytes.Buffer).Cap", "(*bytes.Buffer).Len", "(*bytes.Reader).Len", "(*bytes.Reader).Size": + cs = append(cs, NewIntIntervalConstraint(NewIntInterval(NewZ(0), PInfinity), ins)) + } + } + } + builtin, ok := ins.Common().Value.(*ssa.Builtin) + ops := ins.Operands(nil) + if !ok { + continue + } + switch builtin.Name() { + case "len": + switch op1 := (*ops[1]).Type().Underlying().(type) { + case *types.Basic: + if op1.Kind() == types.String || op1.Kind() == types.UntypedString { + cs = append(cs, NewStringLengthConstraint(*ops[1], ins)) + } + case *types.Slice: + cs = append(cs, NewSliceLengthConstraint(*ops[1], ins)) + } + + case "append": + cs = append(cs, NewSliceAppendConstraint(ins.Common().Args[0], ins.Common().Args[1], ins)) + } + case *ssa.BinOp: + ops := ins.Operands(nil) + basic, ok := (*ops[0]).Type().Underlying().(*types.Basic) + if !ok { + continue + } + switch basic.Kind() { + case types.Int, types.Int8, types.Int16, types.Int32, types.Int64, + types.Uint, types.Uint8, types.Uint16, types.Uint32, types.Uint64, types.UntypedInt: + fns := map[token.Token]func(ssa.Value, ssa.Value, ssa.Value) Constraint{ + token.ADD: NewIntAddConstraint, + token.SUB: NewIntSubConstraint, + token.MUL: NewIntMulConstraint, + // XXX support QUO, REM, SHL, SHR + } + fn, ok := fns[ins.Op] + if ok { + cs = append(cs, fn(*ops[0], *ops[1], ins)) + } + case types.String, types.UntypedString: + if ins.Op == token.ADD { + cs = append(cs, NewStringConcatConstraint(*ops[0], *ops[1], ins)) + } + } + case *ssa.Slice: + typ := ins.X.Type().Underlying() + switch typ := typ.(type) { + case *types.Basic: + cs = append(cs, NewStringSliceConstraint(ins.X, ins.Low, ins.High, ins)) + case *types.Slice: + cs = append(cs, NewSliceSliceConstraint(ins.X, ins.Low, ins.High, ins)) + case *types.Array: + cs = append(cs, NewArraySliceConstraint(ins.X, ins.Low, ins.High, ins)) + case *types.Pointer: + if _, ok := typ.Elem().(*types.Array); !ok { + continue + } + cs = append(cs, NewArraySliceConstraint(ins.X, ins.Low, ins.High, ins)) + } + case *ssa.Phi: + if !isSupportedType(ins.Type()) { + continue + } + ops := ins.Operands(nil) + dops := make([]ssa.Value, len(ops)) + for i, op := range ops { + dops[i] = *op + } + cs = append(cs, NewPhiConstraint(dops, ins)) + case *ssa.Sigma: + pred := ins.Block().Preds[0] + instrs := pred.Instrs + cond, ok := instrs[len(instrs)-1].(*ssa.If).Cond.(*ssa.BinOp) + ops := cond.Operands(nil) + if !ok { + continue + } + switch typ := ins.Type().Underlying().(type) { + case *types.Basic: + var c Constraint + switch typ.Kind() { + case types.Int, types.Int8, types.Int16, types.Int32, types.Int64, + types.Uint, types.Uint8, types.Uint16, types.Uint32, types.Uint64, types.UntypedInt: + c = sigmaInteger(g, ins, cond, ops) + case types.String, types.UntypedString: + c = sigmaString(g, ins, cond, ops) + } + if c != nil { + cs = append(cs, c) + } + case *types.Slice: + c := sigmaSlice(g, ins, cond, ops) + if c != nil { + cs = append(cs, c) + } + default: + //log.Printf("unsupported sigma type %T", typ) // XXX + } + case *ssa.MakeChan: + cs = append(cs, NewMakeChannelConstraint(ins.Size, ins)) + case *ssa.MakeSlice: + cs = append(cs, NewMakeSliceConstraint(ins.Len, ins)) + case *ssa.ChangeType: + switch ins.X.Type().Underlying().(type) { + case *types.Chan: + cs = append(cs, NewChannelChangeTypeConstraint(ins.X, ins)) + } + } + } + } + + for _, c := range cs { + if c == nil { + panic("nil constraint") + } + // If V is used in constraint C, then we create an edge V->C + for _, op := range c.Operands() { + g.AddEdge(op, c, false) + } + if c, ok := c.(Future); ok { + for _, op := range c.Futures() { + g.AddEdge(op, c, true) + } + } + // If constraint C defines variable V, then we create an edge + // C->V + g.AddEdge(c, c.Y(), false) + } + + g.FindSCCs() + g.sccEdges = make([][]Edge, len(g.SCCs)) + g.futures = make([][]Future, len(g.SCCs)) + for _, e := range g.Edges { + g.sccEdges[e.From.SCC] = append(g.sccEdges[e.From.SCC], e) + if !e.control { + continue + } + if c, ok := e.To.Value.(Future); ok { + g.futures[e.From.SCC] = append(g.futures[e.From.SCC], c) + } + } + return g +} + +func (g *Graph) Solve() Ranges { + var consts []Z + off := NewZ(1) + for _, n := range g.Vertices { + if c, ok := n.Value.(*ssa.Const); ok { + basic, ok := c.Type().Underlying().(*types.Basic) + if !ok { + continue + } + if (basic.Info() & types.IsInteger) != 0 { + z := ConstantToZ(c.Value) + consts = append(consts, z) + consts = append(consts, z.Add(off)) + consts = append(consts, z.Sub(off)) + } + } + + } + sort.Sort(Zs(consts)) + + for scc, vertices := range g.SCCs { + n := 0 + n = len(vertices) + if n == 1 { + g.resolveFutures(scc) + v := vertices[0] + if v, ok := v.Value.(ssa.Value); ok { + switch typ := v.Type().Underlying().(type) { + case *types.Basic: + switch typ.Kind() { + case types.String, types.UntypedString: + if !g.Range(v).(StringInterval).IsKnown() { + g.SetRange(v, StringInterval{NewIntInterval(NewZ(0), PInfinity)}) + } + default: + if !g.Range(v).(IntInterval).IsKnown() { + g.SetRange(v, InfinityFor(v)) + } + } + case *types.Chan: + if !g.Range(v).(ChannelInterval).IsKnown() { + g.SetRange(v, ChannelInterval{NewIntInterval(NewZ(0), PInfinity)}) + } + case *types.Slice: + if !g.Range(v).(SliceInterval).IsKnown() { + g.SetRange(v, SliceInterval{NewIntInterval(NewZ(0), PInfinity)}) + } + } + } + if c, ok := v.Value.(Constraint); ok { + g.SetRange(c.Y(), c.Eval(g)) + } + } else { + uses := g.uses(scc) + entries := g.entries(scc) + for len(entries) > 0 { + v := entries[len(entries)-1] + entries = entries[:len(entries)-1] + for _, use := range uses[v] { + if g.widen(use, consts) { + entries = append(entries, use.Y()) + } + } + } + + g.resolveFutures(scc) + + // XXX this seems to be necessary, but shouldn't be. + // removing it leads to nil pointer derefs; investigate + // where we're not setting values correctly. + for _, n := range vertices { + if v, ok := n.Value.(ssa.Value); ok { + i, ok := g.Range(v).(IntInterval) + if !ok { + continue + } + if !i.IsKnown() { + g.SetRange(v, InfinityFor(v)) + } + } + } + + actives := g.actives(scc) + for len(actives) > 0 { + v := actives[len(actives)-1] + actives = actives[:len(actives)-1] + for _, use := range uses[v] { + if g.narrow(use) { + actives = append(actives, use.Y()) + } + } + } + } + // propagate scc + for _, edge := range g.sccEdges[scc] { + if edge.control { + continue + } + if edge.From.SCC == edge.To.SCC { + continue + } + if c, ok := edge.To.Value.(Constraint); ok { + g.SetRange(c.Y(), c.Eval(g)) + } + if c, ok := edge.To.Value.(Future); ok { + if !c.IsKnown() { + c.MarkUnresolved() + } + } + } + } + + for v, r := range g.ranges { + i, ok := r.(IntInterval) + if !ok { + continue + } + if (v.Type().Underlying().(*types.Basic).Info() & types.IsUnsigned) == 0 { + if i.Upper != PInfinity { + s := &types.StdSizes{ + // XXX is it okay to assume the largest word size, or do we + // need to be platform specific? + WordSize: 8, + MaxAlign: 1, + } + bits := (s.Sizeof(v.Type()) * 8) - 1 + n := big.NewInt(1) + n = n.Lsh(n, uint(bits)) + upper, lower := &big.Int{}, &big.Int{} + upper.Sub(n, big.NewInt(1)) + lower.Neg(n) + + if i.Upper.Cmp(NewBigZ(upper)) == 1 { + i = NewIntInterval(NInfinity, PInfinity) + } else if i.Lower.Cmp(NewBigZ(lower)) == -1 { + i = NewIntInterval(NInfinity, PInfinity) + } + } + } + + g.ranges[v] = i + } + + return g.ranges +} + +func VertexString(v *Vertex) string { + switch v := v.Value.(type) { + case Constraint: + return v.String() + case ssa.Value: + return v.Name() + case nil: + return "BUG: nil vertex value" + default: + panic(fmt.Sprintf("unexpected type %T", v)) + } +} + +type Vertex struct { + Value interface{} // one of Constraint or ssa.Value + SCC int + index int + lowlink int + stack bool + + Succs []Edge +} + +type Ranges map[ssa.Value]Range + +func (r Ranges) Get(x ssa.Value) Range { + if x == nil { + return nil + } + i, ok := r[x] + if !ok { + switch x := x.Type().Underlying().(type) { + case *types.Basic: + switch x.Kind() { + case types.String, types.UntypedString: + return StringInterval{} + default: + return IntInterval{} + } + case *types.Chan: + return ChannelInterval{} + case *types.Slice: + return SliceInterval{} + } + } + return i +} + +type Graph struct { + Vertices map[interface{}]*Vertex + Edges []Edge + SCCs [][]*Vertex + ranges Ranges + + // map SCCs to futures + futures [][]Future + // map SCCs to edges + sccEdges [][]Edge +} + +func (g Graph) Graphviz() string { + var lines []string + lines = append(lines, "digraph{") + ids := map[interface{}]int{} + i := 1 + for _, v := range g.Vertices { + ids[v] = i + shape := "box" + if _, ok := v.Value.(ssa.Value); ok { + shape = "oval" + } + lines = append(lines, fmt.Sprintf(`n%d [shape="%s", label=%q, colorscheme=spectral11, style="filled", fillcolor="%d"]`, + i, shape, VertexString(v), (v.SCC%11)+1)) + i++ + } + for _, e := range g.Edges { + style := "solid" + if e.control { + style = "dashed" + } + lines = append(lines, fmt.Sprintf(`n%d -> n%d [style="%s"]`, ids[e.From], ids[e.To], style)) + } + lines = append(lines, "}") + return strings.Join(lines, "\n") +} + +func (g *Graph) SetRange(x ssa.Value, r Range) { + g.ranges[x] = r +} + +func (g *Graph) Range(x ssa.Value) Range { + return g.ranges.Get(x) +} + +func (g *Graph) widen(c Constraint, consts []Z) bool { + setRange := func(i Range) { + g.SetRange(c.Y(), i) + } + widenIntInterval := func(oi, ni IntInterval) (IntInterval, bool) { + if !ni.IsKnown() { + return oi, false + } + nlc := NInfinity + nuc := PInfinity + + // Don't get stuck widening for an absurd amount of time due + // to an excess number of constants, as may be present in + // table-based scanners. + if len(consts) < 1000 { + for _, co := range consts { + if co.Cmp(ni.Lower) <= 0 { + nlc = co + break + } + } + for _, co := range consts { + if co.Cmp(ni.Upper) >= 0 { + nuc = co + break + } + } + } + + if !oi.IsKnown() { + return ni, true + } + if ni.Lower.Cmp(oi.Lower) == -1 && ni.Upper.Cmp(oi.Upper) == 1 { + return NewIntInterval(nlc, nuc), true + } + if ni.Lower.Cmp(oi.Lower) == -1 { + return NewIntInterval(nlc, oi.Upper), true + } + if ni.Upper.Cmp(oi.Upper) == 1 { + return NewIntInterval(oi.Lower, nuc), true + } + return oi, false + } + switch oi := g.Range(c.Y()).(type) { + case IntInterval: + ni := c.Eval(g).(IntInterval) + si, changed := widenIntInterval(oi, ni) + if changed { + setRange(si) + return true + } + return false + case StringInterval: + ni := c.Eval(g).(StringInterval) + si, changed := widenIntInterval(oi.Length, ni.Length) + if changed { + setRange(StringInterval{si}) + return true + } + return false + case SliceInterval: + ni := c.Eval(g).(SliceInterval) + si, changed := widenIntInterval(oi.Length, ni.Length) + if changed { + setRange(SliceInterval{si}) + return true + } + return false + default: + return false + } +} + +func (g *Graph) narrow(c Constraint) bool { + narrowIntInterval := func(oi, ni IntInterval) (IntInterval, bool) { + oLower := oi.Lower + oUpper := oi.Upper + nLower := ni.Lower + nUpper := ni.Upper + + if oLower == NInfinity && nLower != NInfinity { + return NewIntInterval(nLower, oUpper), true + } + if oUpper == PInfinity && nUpper != PInfinity { + return NewIntInterval(oLower, nUpper), true + } + if oLower.Cmp(nLower) == 1 { + return NewIntInterval(nLower, oUpper), true + } + if oUpper.Cmp(nUpper) == -1 { + return NewIntInterval(oLower, nUpper), true + } + return oi, false + } + switch oi := g.Range(c.Y()).(type) { + case IntInterval: + ni := c.Eval(g).(IntInterval) + si, changed := narrowIntInterval(oi, ni) + if changed { + g.SetRange(c.Y(), si) + return true + } + return false + case StringInterval: + ni := c.Eval(g).(StringInterval) + si, changed := narrowIntInterval(oi.Length, ni.Length) + if changed { + g.SetRange(c.Y(), StringInterval{si}) + return true + } + return false + case SliceInterval: + ni := c.Eval(g).(SliceInterval) + si, changed := narrowIntInterval(oi.Length, ni.Length) + if changed { + g.SetRange(c.Y(), SliceInterval{si}) + return true + } + return false + default: + return false + } +} + +func (g *Graph) resolveFutures(scc int) { + for _, c := range g.futures[scc] { + c.Resolve() + } +} + +func (g *Graph) entries(scc int) []ssa.Value { + var entries []ssa.Value + for _, n := range g.Vertices { + if n.SCC != scc { + continue + } + if v, ok := n.Value.(ssa.Value); ok { + // XXX avoid quadratic runtime + // + // XXX I cannot think of any code where the future and its + // variables aren't in the same SCC, in which case this + // code isn't very useful (the variables won't be resolved + // yet). Before we have a cross-SCC example, however, we + // can't really verify that this code is working + // correctly, or indeed doing anything useful. + for _, on := range g.Vertices { + if c, ok := on.Value.(Future); ok { + if c.Y() == v { + if !c.IsResolved() { + g.SetRange(c.Y(), c.Eval(g)) + c.MarkResolved() + } + break + } + } + } + if g.Range(v).IsKnown() { + entries = append(entries, v) + } + } + } + return entries +} + +func (g *Graph) uses(scc int) map[ssa.Value][]Constraint { + m := map[ssa.Value][]Constraint{} + for _, e := range g.sccEdges[scc] { + if e.control { + continue + } + if v, ok := e.From.Value.(ssa.Value); ok { + c := e.To.Value.(Constraint) + sink := c.Y() + if g.Vertices[sink].SCC == scc { + m[v] = append(m[v], c) + } + } + } + return m +} + +func (g *Graph) actives(scc int) []ssa.Value { + var actives []ssa.Value + for _, n := range g.Vertices { + if n.SCC != scc { + continue + } + if v, ok := n.Value.(ssa.Value); ok { + if _, ok := v.(*ssa.Const); !ok { + actives = append(actives, v) + } + } + } + return actives +} + +func (g *Graph) AddEdge(from, to interface{}, ctrl bool) { + vf, ok := g.Vertices[from] + if !ok { + vf = &Vertex{Value: from} + g.Vertices[from] = vf + } + vt, ok := g.Vertices[to] + if !ok { + vt = &Vertex{Value: to} + g.Vertices[to] = vt + } + e := Edge{From: vf, To: vt, control: ctrl} + g.Edges = append(g.Edges, e) + vf.Succs = append(vf.Succs, e) +} + +type Edge struct { + From, To *Vertex + control bool +} + +func (e Edge) String() string { + return fmt.Sprintf("%s -> %s", VertexString(e.From), VertexString(e.To)) +} + +func (g *Graph) FindSCCs() { + // use Tarjan to find the SCCs + + index := 1 + var s []*Vertex + + scc := 0 + var strongconnect func(v *Vertex) + strongconnect = func(v *Vertex) { + // set the depth index for v to the smallest unused index + v.index = index + v.lowlink = index + index++ + s = append(s, v) + v.stack = true + + for _, e := range v.Succs { + w := e.To + if w.index == 0 { + // successor w has not yet been visited; recurse on it + strongconnect(w) + if w.lowlink < v.lowlink { + v.lowlink = w.lowlink + } + } else if w.stack { + // successor w is in stack s and hence in the current scc + if w.index < v.lowlink { + v.lowlink = w.index + } + } + } + + if v.lowlink == v.index { + for { + w := s[len(s)-1] + s = s[:len(s)-1] + w.stack = false + w.SCC = scc + if w == v { + break + } + } + scc++ + } + } + for _, v := range g.Vertices { + if v.index == 0 { + strongconnect(v) + } + } + + g.SCCs = make([][]*Vertex, scc) + for _, n := range g.Vertices { + n.SCC = scc - n.SCC - 1 + g.SCCs[n.SCC] = append(g.SCCs[n.SCC], n) + } +} + +func invertToken(tok token.Token) token.Token { + switch tok { + case token.LSS: + return token.GEQ + case token.GTR: + return token.LEQ + case token.EQL: + return token.NEQ + case token.NEQ: + return token.EQL + case token.GEQ: + return token.LSS + case token.LEQ: + return token.GTR + default: + panic(fmt.Sprintf("unsupported token %s", tok)) + } +} + +func flipToken(tok token.Token) token.Token { + switch tok { + case token.LSS: + return token.GTR + case token.GTR: + return token.LSS + case token.EQL: + return token.EQL + case token.NEQ: + return token.NEQ + case token.GEQ: + return token.LEQ + case token.LEQ: + return token.GEQ + default: + panic(fmt.Sprintf("unsupported token %s", tok)) + } +} + +type CopyConstraint struct { + aConstraint + X ssa.Value +} + +func (c *CopyConstraint) String() string { + return fmt.Sprintf("%s = copy(%s)", c.Y().Name(), c.X.Name()) +} + +func (c *CopyConstraint) Eval(g *Graph) Range { + return g.Range(c.X) +} + +func (c *CopyConstraint) Operands() []ssa.Value { + return []ssa.Value{c.X} +} + +func NewCopyConstraint(x, y ssa.Value) Constraint { + return &CopyConstraint{ + aConstraint: aConstraint{ + y: y, + }, + X: x, + } +} diff --git a/vendor/honnef.co/go/tools/stylecheck/analysis.go b/vendor/honnef.co/go/tools/stylecheck/analysis.go new file mode 100644 index 00000000000..f252487f735 --- /dev/null +++ b/vendor/honnef.co/go/tools/stylecheck/analysis.go @@ -0,0 +1,111 @@ +package stylecheck + +import ( + "flag" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/analysis/passes/inspect" + "honnef.co/go/tools/config" + "honnef.co/go/tools/facts" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/lint/lintutil" +) + +func newFlagSet() flag.FlagSet { + fs := flag.NewFlagSet("", flag.PanicOnError) + fs.Var(lintutil.NewVersionFlag(), "go", "Target Go version") + return *fs +} + +var Analyzers = map[string]*analysis.Analyzer{ + "ST1000": { + Name: "ST1000", + Run: CheckPackageComment, + Doc: Docs["ST1000"].String(), + Requires: []*analysis.Analyzer{}, + Flags: newFlagSet(), + }, + "ST1001": { + Name: "ST1001", + Run: CheckDotImports, + Doc: Docs["ST1001"].String(), + Requires: []*analysis.Analyzer{facts.Generated, config.Analyzer}, + Flags: newFlagSet(), + }, + "ST1003": { + Name: "ST1003", + Run: CheckNames, + Doc: Docs["ST1003"].String(), + Requires: []*analysis.Analyzer{facts.Generated, config.Analyzer}, + Flags: newFlagSet(), + }, + "ST1005": { + Name: "ST1005", + Run: CheckErrorStrings, + Doc: Docs["ST1005"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "ST1006": { + Name: "ST1006", + Run: CheckReceiverNames, + Doc: Docs["ST1006"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.Generated}, + Flags: newFlagSet(), + }, + "ST1008": { + Name: "ST1008", + Run: CheckErrorReturn, + Doc: Docs["ST1008"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "ST1011": { + Name: "ST1011", + Run: CheckTimeNames, + Doc: Docs["ST1011"].String(), + Flags: newFlagSet(), + }, + "ST1012": { + Name: "ST1012", + Run: CheckErrorVarNames, + Doc: Docs["ST1012"].String(), + Requires: []*analysis.Analyzer{config.Analyzer}, + Flags: newFlagSet(), + }, + "ST1013": { + Name: "ST1013", + Run: CheckHTTPStatusCodes, + Doc: Docs["ST1013"].String(), + Requires: []*analysis.Analyzer{facts.Generated, facts.TokenFile, config.Analyzer}, + Flags: newFlagSet(), + }, + "ST1015": { + Name: "ST1015", + Run: CheckDefaultCaseOrder, + Doc: Docs["ST1015"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile}, + Flags: newFlagSet(), + }, + "ST1016": { + Name: "ST1016", + Run: CheckReceiverNamesIdentical, + Doc: Docs["ST1016"].String(), + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + Flags: newFlagSet(), + }, + "ST1017": { + Name: "ST1017", + Run: CheckYodaConditions, + Doc: Docs["ST1017"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile}, + Flags: newFlagSet(), + }, + "ST1018": { + Name: "ST1018", + Run: CheckInvisibleCharacters, + Doc: Docs["ST1018"].String(), + Requires: []*analysis.Analyzer{inspect.Analyzer}, + Flags: newFlagSet(), + }, +} diff --git a/vendor/honnef.co/go/tools/stylecheck/doc.go b/vendor/honnef.co/go/tools/stylecheck/doc.go new file mode 100644 index 00000000000..9097214d9bf --- /dev/null +++ b/vendor/honnef.co/go/tools/stylecheck/doc.go @@ -0,0 +1,154 @@ +package stylecheck + +import "honnef.co/go/tools/lint" + +var Docs = map[string]*lint.Documentation{ + "ST1000": &lint.Documentation{ + Title: `Incorrect or missing package comment`, + Text: `Packages must have a package comment that is formatted according to +the guidelines laid out in +https://github.com/golang/go/wiki/CodeReviewComments#package-comments.`, + Since: "2019.1", + NonDefault: true, + }, + + "ST1001": &lint.Documentation{ + Title: `Dot imports are discouraged`, + Text: `Dot imports that aren't in external test packages are discouraged. + +The dot_import_whitelist option can be used to whitelist certain +imports. + +Quoting Go Code Review Comments: + + The import . form can be useful in tests that, due to circular + dependencies, cannot be made part of the package being tested: + + package foo_test + + import ( + "bar/testutil" // also imports "foo" + . "foo" + ) + + In this case, the test file cannot be in package foo because it + uses bar/testutil, which imports foo. So we use the 'import .' + form to let the file pretend to be part of package foo even though + it is not. Except for this one case, do not use import . in your + programs. It makes the programs much harder to read because it is + unclear whether a name like Quux is a top-level identifier in the + current package or in an imported package.`, + Since: "2019.1", + Options: []string{"dot_import_whitelist"}, + }, + + "ST1003": &lint.Documentation{ + Title: `Poorly chosen identifier`, + Text: `Identifiers, such as variable and package names, follow certain rules. + +See the following links for details: + +- https://golang.org/doc/effective_go.html#package-names +- https://golang.org/doc/effective_go.html#mixed-caps +- https://github.com/golang/go/wiki/CodeReviewComments#initialisms +- https://github.com/golang/go/wiki/CodeReviewComments#variable-names`, + Since: "2019.1", + NonDefault: true, + Options: []string{"initialisms"}, + }, + + "ST1005": &lint.Documentation{ + Title: `Incorrectly formatted error string`, + Text: `Error strings follow a set of guidelines to ensure uniformity and good +composability. + +Quoting Go Code Review Comments: + + Error strings should not be capitalized (unless beginning with + proper nouns or acronyms) or end with punctuation, since they are + usually printed following other context. That is, use + fmt.Errorf("something bad") not fmt.Errorf("Something bad"), so + that log.Printf("Reading %s: %v", filename, err) formats without a + spurious capital letter mid-message.`, + Since: "2019.1", + }, + + "ST1006": &lint.Documentation{ + Title: `Poorly chosen receiver name`, + Text: `Quoting Go Code Review Comments: + + The name of a method's receiver should be a reflection of its + identity; often a one or two letter abbreviation of its type + suffices (such as "c" or "cl" for "Client"). Don't use generic + names such as "me", "this" or "self", identifiers typical of + object-oriented languages that place more emphasis on methods as + opposed to functions. The name need not be as descriptive as that + of a method argument, as its role is obvious and serves no + documentary purpose. It can be very short as it will appear on + almost every line of every method of the type; familiarity admits + brevity. Be consistent, too: if you call the receiver "c" in one + method, don't call it "cl" in another.`, + Since: "2019.1", + }, + + "ST1008": &lint.Documentation{ + Title: `A function's error value should be its last return value`, + Text: `A function's error value should be its last return value.`, + Since: `2019.1`, + }, + + "ST1011": &lint.Documentation{ + Title: `Poorly chosen name for variable of type time.Duration`, + Text: `time.Duration values represent an amount of time, which is represented +as a count of nanoseconds. An expression like 5 * time.Microsecond +yields the value 5000. It is therefore not appropriate to suffix a +variable of type time.Duration with any time unit, such as Msec or +Milli.`, + Since: `2019.1`, + }, + + "ST1012": &lint.Documentation{ + Title: `Poorly chosen name for error variable`, + Text: `Error variables that are part of an API should be called errFoo or +ErrFoo.`, + Since: "2019.1", + }, + + "ST1013": &lint.Documentation{ + Title: `Should use constants for HTTP error codes, not magic numbers`, + Text: `HTTP has a tremendous number of status codes. While some of those are +well known (200, 400, 404, 500), most of them are not. The net/http +package provides constants for all status codes that are part of the +various specifications. It is recommended to use these constants +instead of hard-coding magic numbers, to vastly improve the +readability of your code.`, + Since: "2019.1", + Options: []string{"http_status_code_whitelist"}, + }, + + "ST1015": &lint.Documentation{ + Title: `A switch's default case should be the first or last case`, + Since: "2019.1", + }, + + "ST1016": &lint.Documentation{ + Title: `Use consistent method receiver names`, + Since: "2019.1", + NonDefault: true, + }, + + "ST1017": &lint.Documentation{ + Title: `Don't use Yoda conditions`, + Text: `Yoda conditions are conditions of the kind 'if 42 == x', where the +literal is on the left side of the comparison. These are a common +idiom in languages in which assignment is an expression, to avoid bugs +of the kind 'if (x = 42)'. In Go, which doesn't allow for this kind of +bug, we prefer the more idiomatic 'if x == 42'.`, + Since: "2019.2", + }, + + "ST1018": &lint.Documentation{ + Title: `Avoid zero-width and control characters in string literals`, + Since: "2019.2", + }, +} diff --git a/vendor/honnef.co/go/tools/stylecheck/lint.go b/vendor/honnef.co/go/tools/stylecheck/lint.go new file mode 100644 index 00000000000..1699d5898c0 --- /dev/null +++ b/vendor/honnef.co/go/tools/stylecheck/lint.go @@ -0,0 +1,629 @@ +package stylecheck // import "honnef.co/go/tools/stylecheck" + +import ( + "fmt" + "go/ast" + "go/constant" + "go/token" + "go/types" + "strconv" + "strings" + "unicode" + "unicode/utf8" + + "honnef.co/go/tools/config" + "honnef.co/go/tools/internal/passes/buildssa" + . "honnef.co/go/tools/lint/lintdsl" + "honnef.co/go/tools/ssa" + + "golang.org/x/tools/go/analysis" + "golang.org/x/tools/go/analysis/passes/inspect" + "golang.org/x/tools/go/ast/inspector" + "golang.org/x/tools/go/types/typeutil" +) + +func CheckPackageComment(pass *analysis.Pass) (interface{}, error) { + // - At least one file in a non-main package should have a package comment + // + // - The comment should be of the form + // "Package x ...". This has a slight potential for false + // positives, as multiple files can have package comments, in + // which case they get appended. But that doesn't happen a lot in + // the real world. + + if pass.Pkg.Name() == "main" { + return nil, nil + } + hasDocs := false + for _, f := range pass.Files { + if IsInTest(pass, f) { + continue + } + if f.Doc != nil && len(f.Doc.List) > 0 { + hasDocs = true + prefix := "Package " + f.Name.Name + " " + if !strings.HasPrefix(strings.TrimSpace(f.Doc.Text()), prefix) { + ReportNodef(pass, f.Doc, `package comment should be of the form "%s..."`, prefix) + } + f.Doc.Text() + } + } + + if !hasDocs { + for _, f := range pass.Files { + if IsInTest(pass, f) { + continue + } + ReportNodef(pass, f, "at least one file in a package should have a package comment") + } + } + return nil, nil +} + +func CheckDotImports(pass *analysis.Pass) (interface{}, error) { + for _, f := range pass.Files { + imports: + for _, imp := range f.Imports { + path := imp.Path.Value + path = path[1 : len(path)-1] + for _, w := range config.For(pass).DotImportWhitelist { + if w == path { + continue imports + } + } + + if imp.Name != nil && imp.Name.Name == "." && !IsInTest(pass, f) { + ReportNodefFG(pass, imp, "should not use dot imports") + } + } + } + return nil, nil +} + +func CheckBlankImports(pass *analysis.Pass) (interface{}, error) { + fset := pass.Fset + for _, f := range pass.Files { + if IsInMain(pass, f) || IsInTest(pass, f) { + continue + } + + // Collect imports of the form `import _ "foo"`, i.e. with no + // parentheses, as their comment will be associated with the + // (paren-free) GenDecl, not the import spec itself. + // + // We don't directly process the GenDecl so that we can + // correctly handle the following: + // + // import _ "foo" + // import _ "bar" + // + // where only the first import should get flagged. + skip := map[ast.Spec]bool{} + ast.Inspect(f, func(node ast.Node) bool { + switch node := node.(type) { + case *ast.File: + return true + case *ast.GenDecl: + if node.Tok != token.IMPORT { + return false + } + if node.Lparen == token.NoPos && node.Doc != nil { + skip[node.Specs[0]] = true + } + return false + } + return false + }) + for i, imp := range f.Imports { + pos := fset.Position(imp.Pos()) + + if !IsBlank(imp.Name) { + continue + } + // Only flag the first blank import in a group of imports, + // or don't flag any of them, if the first one is + // commented + if i > 0 { + prev := f.Imports[i-1] + prevPos := fset.Position(prev.Pos()) + if pos.Line-1 == prevPos.Line && IsBlank(prev.Name) { + continue + } + } + + if imp.Doc == nil && imp.Comment == nil && !skip[imp] { + ReportNodef(pass, imp, "a blank import should be only in a main or test package, or have a comment justifying it") + } + } + } + return nil, nil +} + +func CheckIncDec(pass *analysis.Pass) (interface{}, error) { + // TODO(dh): this can be noisy for function bodies that look like this: + // x += 3 + // ... + // x += 2 + // ... + // x += 1 + fn := func(node ast.Node) { + assign := node.(*ast.AssignStmt) + if assign.Tok != token.ADD_ASSIGN && assign.Tok != token.SUB_ASSIGN { + return + } + if (len(assign.Lhs) != 1 || len(assign.Rhs) != 1) || + !IsIntLiteral(assign.Rhs[0], "1") { + return + } + + suffix := "" + switch assign.Tok { + case token.ADD_ASSIGN: + suffix = "++" + case token.SUB_ASSIGN: + suffix = "--" + } + + ReportNodef(pass, assign, "should replace %s with %s%s", Render(pass, assign), Render(pass, assign.Lhs[0]), suffix) + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.AssignStmt)(nil)}, fn) + return nil, nil +} + +func CheckErrorReturn(pass *analysis.Pass) (interface{}, error) { +fnLoop: + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + sig := fn.Type().(*types.Signature) + rets := sig.Results() + if rets == nil || rets.Len() < 2 { + continue + } + + if rets.At(rets.Len()-1).Type() == types.Universe.Lookup("error").Type() { + // Last return type is error. If the function also returns + // errors in other positions, that's fine. + continue + } + for i := rets.Len() - 2; i >= 0; i-- { + if rets.At(i).Type() == types.Universe.Lookup("error").Type() { + pass.Reportf(rets.At(i).Pos(), "error should be returned as the last argument") + continue fnLoop + } + } + } + return nil, nil +} + +// CheckUnexportedReturn checks that exported functions on exported +// types do not return unexported types. +func CheckUnexportedReturn(pass *analysis.Pass) (interface{}, error) { + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if fn.Synthetic != "" || fn.Parent() != nil { + continue + } + if !ast.IsExported(fn.Name()) || IsInMain(pass, fn) || IsInTest(pass, fn) { + continue + } + sig := fn.Type().(*types.Signature) + if sig.Recv() != nil && !ast.IsExported(Dereference(sig.Recv().Type()).(*types.Named).Obj().Name()) { + continue + } + res := sig.Results() + for i := 0; i < res.Len(); i++ { + if named, ok := DereferenceR(res.At(i).Type()).(*types.Named); ok && + !ast.IsExported(named.Obj().Name()) && + named != types.Universe.Lookup("error").Type() { + pass.Reportf(fn.Pos(), "should not return unexported type") + } + } + } + return nil, nil +} + +func CheckReceiverNames(pass *analysis.Pass) (interface{}, error) { + ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).Pkg + for _, m := range ssapkg.Members { + if T, ok := m.Object().(*types.TypeName); ok && !T.IsAlias() { + ms := typeutil.IntuitiveMethodSet(T.Type(), nil) + for _, sel := range ms { + fn := sel.Obj().(*types.Func) + recv := fn.Type().(*types.Signature).Recv() + if Dereference(recv.Type()) != T.Type() { + // skip embedded methods + continue + } + if recv.Name() == "self" || recv.Name() == "this" { + ReportfFG(pass, recv.Pos(), `receiver name should be a reflection of its identity; don't use generic names such as "this" or "self"`) + } + if recv.Name() == "_" { + ReportfFG(pass, recv.Pos(), "receiver name should not be an underscore, omit the name if it is unused") + } + } + } + } + return nil, nil +} + +func CheckReceiverNamesIdentical(pass *analysis.Pass) (interface{}, error) { + ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).Pkg + for _, m := range ssapkg.Members { + names := map[string]int{} + + var firstFn *types.Func + if T, ok := m.Object().(*types.TypeName); ok && !T.IsAlias() { + ms := typeutil.IntuitiveMethodSet(T.Type(), nil) + for _, sel := range ms { + fn := sel.Obj().(*types.Func) + recv := fn.Type().(*types.Signature).Recv() + if Dereference(recv.Type()) != T.Type() { + // skip embedded methods + continue + } + if firstFn == nil { + firstFn = fn + } + if recv.Name() != "" && recv.Name() != "_" { + names[recv.Name()]++ + } + } + } + + if len(names) > 1 { + var seen []string + for name, count := range names { + seen = append(seen, fmt.Sprintf("%dx %q", count, name)) + } + + pass.Reportf(firstFn.Pos(), "methods on the same type should have the same receiver name (seen %s)", strings.Join(seen, ", ")) + } + } + return nil, nil +} + +func CheckContextFirstArg(pass *analysis.Pass) (interface{}, error) { + // TODO(dh): this check doesn't apply to test helpers. Example from the stdlib: + // func helperCommandContext(t *testing.T, ctx context.Context, s ...string) (cmd *exec.Cmd) { +fnLoop: + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if fn.Synthetic != "" || fn.Parent() != nil { + continue + } + params := fn.Signature.Params() + if params.Len() < 2 { + continue + } + if types.TypeString(params.At(0).Type(), nil) == "context.Context" { + continue + } + for i := 1; i < params.Len(); i++ { + param := params.At(i) + if types.TypeString(param.Type(), nil) == "context.Context" { + pass.Reportf(param.Pos(), "context.Context should be the first argument of a function") + continue fnLoop + } + } + } + return nil, nil +} + +func CheckErrorStrings(pass *analysis.Pass) (interface{}, error) { + objNames := map[*ssa.Package]map[string]bool{} + ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).Pkg + objNames[ssapkg] = map[string]bool{} + for _, m := range ssapkg.Members { + if typ, ok := m.(*ssa.Type); ok { + objNames[ssapkg][typ.Name()] = true + } + } + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + objNames[fn.Package()][fn.Name()] = true + } + + for _, fn := range pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA).SrcFuncs { + if IsInTest(pass, fn) { + // We don't care about malformed error messages in tests; + // they're usually for direct human consumption, not part + // of an API + continue + } + for _, block := range fn.Blocks { + instrLoop: + for _, ins := range block.Instrs { + call, ok := ins.(*ssa.Call) + if !ok { + continue + } + if !IsCallTo(call.Common(), "errors.New") && !IsCallTo(call.Common(), "fmt.Errorf") { + continue + } + + k, ok := call.Common().Args[0].(*ssa.Const) + if !ok { + continue + } + + s := constant.StringVal(k.Value) + if len(s) == 0 { + continue + } + switch s[len(s)-1] { + case '.', ':', '!', '\n': + pass.Reportf(call.Pos(), "error strings should not end with punctuation or a newline") + } + idx := strings.IndexByte(s, ' ') + if idx == -1 { + // single word error message, probably not a real + // error but something used in tests or during + // debugging + continue + } + word := s[:idx] + first, n := utf8.DecodeRuneInString(word) + if !unicode.IsUpper(first) { + continue + } + for _, c := range word[n:] { + if unicode.IsUpper(c) { + // Word is probably an initialism or + // multi-word function name + continue instrLoop + } + } + + word = strings.TrimRightFunc(word, func(r rune) bool { return unicode.IsPunct(r) }) + if objNames[fn.Package()][word] { + // Word is probably the name of a function or type in this package + continue + } + // First word in error starts with a capital + // letter, and the word doesn't contain any other + // capitals, making it unlikely to be an + // initialism or multi-word function name. + // + // It could still be a proper noun, though. + + pass.Reportf(call.Pos(), "error strings should not be capitalized") + } + } + } + return nil, nil +} + +func CheckTimeNames(pass *analysis.Pass) (interface{}, error) { + suffixes := []string{ + "Sec", "Secs", "Seconds", + "Msec", "Msecs", + "Milli", "Millis", "Milliseconds", + "Usec", "Usecs", "Microseconds", + "MS", "Ms", + } + fn := func(T types.Type, names []*ast.Ident) { + if !IsType(T, "time.Duration") && !IsType(T, "*time.Duration") { + return + } + for _, name := range names { + for _, suffix := range suffixes { + if strings.HasSuffix(name.Name, suffix) { + ReportNodef(pass, name, "var %s is of type %v; don't use unit-specific suffix %q", name.Name, T, suffix) + break + } + } + } + } + for _, f := range pass.Files { + ast.Inspect(f, func(node ast.Node) bool { + switch node := node.(type) { + case *ast.ValueSpec: + T := pass.TypesInfo.TypeOf(node.Type) + fn(T, node.Names) + case *ast.FieldList: + for _, field := range node.List { + T := pass.TypesInfo.TypeOf(field.Type) + fn(T, field.Names) + } + } + return true + }) + } + return nil, nil +} + +func CheckErrorVarNames(pass *analysis.Pass) (interface{}, error) { + for _, f := range pass.Files { + for _, decl := range f.Decls { + gen, ok := decl.(*ast.GenDecl) + if !ok || gen.Tok != token.VAR { + continue + } + for _, spec := range gen.Specs { + spec := spec.(*ast.ValueSpec) + if len(spec.Names) != len(spec.Values) { + continue + } + + for i, name := range spec.Names { + val := spec.Values[i] + if !IsCallToAST(pass, val, "errors.New") && !IsCallToAST(pass, val, "fmt.Errorf") { + continue + } + + prefix := "err" + if name.IsExported() { + prefix = "Err" + } + if !strings.HasPrefix(name.Name, prefix) { + ReportNodef(pass, name, "error var %s should have name of the form %sFoo", name.Name, prefix) + } + } + } + } + } + return nil, nil +} + +var httpStatusCodes = map[int]string{ + 100: "StatusContinue", + 101: "StatusSwitchingProtocols", + 102: "StatusProcessing", + 200: "StatusOK", + 201: "StatusCreated", + 202: "StatusAccepted", + 203: "StatusNonAuthoritativeInfo", + 204: "StatusNoContent", + 205: "StatusResetContent", + 206: "StatusPartialContent", + 207: "StatusMultiStatus", + 208: "StatusAlreadyReported", + 226: "StatusIMUsed", + 300: "StatusMultipleChoices", + 301: "StatusMovedPermanently", + 302: "StatusFound", + 303: "StatusSeeOther", + 304: "StatusNotModified", + 305: "StatusUseProxy", + 307: "StatusTemporaryRedirect", + 308: "StatusPermanentRedirect", + 400: "StatusBadRequest", + 401: "StatusUnauthorized", + 402: "StatusPaymentRequired", + 403: "StatusForbidden", + 404: "StatusNotFound", + 405: "StatusMethodNotAllowed", + 406: "StatusNotAcceptable", + 407: "StatusProxyAuthRequired", + 408: "StatusRequestTimeout", + 409: "StatusConflict", + 410: "StatusGone", + 411: "StatusLengthRequired", + 412: "StatusPreconditionFailed", + 413: "StatusRequestEntityTooLarge", + 414: "StatusRequestURITooLong", + 415: "StatusUnsupportedMediaType", + 416: "StatusRequestedRangeNotSatisfiable", + 417: "StatusExpectationFailed", + 418: "StatusTeapot", + 422: "StatusUnprocessableEntity", + 423: "StatusLocked", + 424: "StatusFailedDependency", + 426: "StatusUpgradeRequired", + 428: "StatusPreconditionRequired", + 429: "StatusTooManyRequests", + 431: "StatusRequestHeaderFieldsTooLarge", + 451: "StatusUnavailableForLegalReasons", + 500: "StatusInternalServerError", + 501: "StatusNotImplemented", + 502: "StatusBadGateway", + 503: "StatusServiceUnavailable", + 504: "StatusGatewayTimeout", + 505: "StatusHTTPVersionNotSupported", + 506: "StatusVariantAlsoNegotiates", + 507: "StatusInsufficientStorage", + 508: "StatusLoopDetected", + 510: "StatusNotExtended", + 511: "StatusNetworkAuthenticationRequired", +} + +func CheckHTTPStatusCodes(pass *analysis.Pass) (interface{}, error) { + whitelist := map[string]bool{} + for _, code := range config.For(pass).HTTPStatusCodeWhitelist { + whitelist[code] = true + } + fn := func(node ast.Node) bool { + if node == nil { + return true + } + call, ok := node.(*ast.CallExpr) + if !ok { + return true + } + + var arg int + switch CallNameAST(pass, call) { + case "net/http.Error": + arg = 2 + case "net/http.Redirect": + arg = 3 + case "net/http.StatusText": + arg = 0 + case "net/http.RedirectHandler": + arg = 1 + default: + return true + } + lit, ok := call.Args[arg].(*ast.BasicLit) + if !ok { + return true + } + if whitelist[lit.Value] { + return true + } + + n, err := strconv.Atoi(lit.Value) + if err != nil { + return true + } + s, ok := httpStatusCodes[n] + if !ok { + return true + } + ReportNodefFG(pass, lit, "should use constant http.%s instead of numeric literal %d", s, n) + return true + } + // OPT(dh): replace with inspector + for _, f := range pass.Files { + ast.Inspect(f, fn) + } + return nil, nil +} + +func CheckDefaultCaseOrder(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + stmt := node.(*ast.SwitchStmt) + list := stmt.Body.List + for i, c := range list { + if c.(*ast.CaseClause).List == nil && i != 0 && i != len(list)-1 { + ReportNodefFG(pass, c, "default case should be first or last in switch statement") + break + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.SwitchStmt)(nil)}, fn) + return nil, nil +} + +func CheckYodaConditions(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + cond := node.(*ast.BinaryExpr) + if cond.Op != token.EQL && cond.Op != token.NEQ { + return + } + if _, ok := cond.X.(*ast.BasicLit); !ok { + return + } + if _, ok := cond.Y.(*ast.BasicLit); ok { + // Don't flag lit == lit conditions, just in case + return + } + ReportNodefFG(pass, cond, "don't use Yoda conditions") + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BinaryExpr)(nil)}, fn) + return nil, nil +} + +func CheckInvisibleCharacters(pass *analysis.Pass) (interface{}, error) { + fn := func(node ast.Node) { + lit := node.(*ast.BasicLit) + if lit.Kind != token.STRING { + return + } + for _, r := range lit.Value { + if unicode.Is(unicode.Cf, r) { + ReportNodef(pass, lit, "string literal contains the Unicode format character %U, consider using the %q escape sequence", r, r) + } else if unicode.Is(unicode.Cc, r) && r != '\n' && r != '\t' && r != '\r' { + ReportNodef(pass, lit, "string literal contains the Unicode control character %U, consider using the %q escape sequence", r, r) + } + } + } + pass.ResultOf[inspect.Analyzer].(*inspector.Inspector).Preorder([]ast.Node{(*ast.BasicLit)(nil)}, fn) + return nil, nil +} diff --git a/vendor/honnef.co/go/tools/stylecheck/names.go b/vendor/honnef.co/go/tools/stylecheck/names.go new file mode 100644 index 00000000000..160f9d7ff71 --- /dev/null +++ b/vendor/honnef.co/go/tools/stylecheck/names.go @@ -0,0 +1,264 @@ +// Copyright (c) 2013 The Go Authors. All rights reserved. +// Copyright (c) 2018 Dominik Honnef. All rights reserved. + +package stylecheck + +import ( + "go/ast" + "go/token" + "strings" + "unicode" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/config" + . "honnef.co/go/tools/lint/lintdsl" +) + +// knownNameExceptions is a set of names that are known to be exempt from naming checks. +// This is usually because they are constrained by having to match names in the +// standard library. +var knownNameExceptions = map[string]bool{ + "LastInsertId": true, // must match database/sql + "kWh": true, +} + +func CheckNames(pass *analysis.Pass) (interface{}, error) { + // A large part of this function is copied from + // github.com/golang/lint, Copyright (c) 2013 The Go Authors, + // licensed under the BSD 3-clause license. + + allCaps := func(s string) bool { + for _, r := range s { + if !((r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') || r == '_') { + return false + } + } + return true + } + + check := func(id *ast.Ident, thing string, initialisms map[string]bool) { + if id.Name == "_" { + return + } + if knownNameExceptions[id.Name] { + return + } + + // Handle two common styles from other languages that don't belong in Go. + if len(id.Name) >= 5 && allCaps(id.Name) && strings.Contains(id.Name, "_") { + ReportfFG(pass, id.Pos(), "should not use ALL_CAPS in Go names; use CamelCase instead") + return + } + + should := lintName(id.Name, initialisms) + if id.Name == should { + return + } + + if len(id.Name) > 2 && strings.Contains(id.Name[1:len(id.Name)-1], "_") { + ReportfFG(pass, id.Pos(), "should not use underscores in Go names; %s %s should be %s", thing, id.Name, should) + return + } + ReportfFG(pass, id.Pos(), "%s %s should be %s", thing, id.Name, should) + } + checkList := func(fl *ast.FieldList, thing string, initialisms map[string]bool) { + if fl == nil { + return + } + for _, f := range fl.List { + for _, id := range f.Names { + check(id, thing, initialisms) + } + } + } + + il := config.For(pass).Initialisms + initialisms := make(map[string]bool, len(il)) + for _, word := range il { + initialisms[word] = true + } + for _, f := range pass.Files { + // Package names need slightly different handling than other names. + if !strings.HasSuffix(f.Name.Name, "_test") && strings.Contains(f.Name.Name, "_") { + ReportfFG(pass, f.Pos(), "should not use underscores in package names") + } + if strings.IndexFunc(f.Name.Name, unicode.IsUpper) != -1 { + ReportfFG(pass, f.Pos(), "should not use MixedCaps in package name; %s should be %s", f.Name.Name, strings.ToLower(f.Name.Name)) + } + + ast.Inspect(f, func(node ast.Node) bool { + switch v := node.(type) { + case *ast.AssignStmt: + if v.Tok != token.DEFINE { + return true + } + for _, exp := range v.Lhs { + if id, ok := exp.(*ast.Ident); ok { + check(id, "var", initialisms) + } + } + case *ast.FuncDecl: + // Functions with no body are defined elsewhere (in + // assembly, or via go:linkname). These are likely to + // be something very low level (such as the runtime), + // where our rules don't apply. + if v.Body == nil { + return true + } + + if IsInTest(pass, v) && (strings.HasPrefix(v.Name.Name, "Example") || strings.HasPrefix(v.Name.Name, "Test") || strings.HasPrefix(v.Name.Name, "Benchmark")) { + return true + } + + thing := "func" + if v.Recv != nil { + thing = "method" + } + + if !isTechnicallyExported(v) { + check(v.Name, thing, initialisms) + } + + checkList(v.Type.Params, thing+" parameter", initialisms) + checkList(v.Type.Results, thing+" result", initialisms) + case *ast.GenDecl: + if v.Tok == token.IMPORT { + return true + } + var thing string + switch v.Tok { + case token.CONST: + thing = "const" + case token.TYPE: + thing = "type" + case token.VAR: + thing = "var" + } + for _, spec := range v.Specs { + switch s := spec.(type) { + case *ast.TypeSpec: + check(s.Name, thing, initialisms) + case *ast.ValueSpec: + for _, id := range s.Names { + check(id, thing, initialisms) + } + } + } + case *ast.InterfaceType: + // Do not check interface method names. + // They are often constrainted by the method names of concrete types. + for _, x := range v.Methods.List { + ft, ok := x.Type.(*ast.FuncType) + if !ok { // might be an embedded interface name + continue + } + checkList(ft.Params, "interface method parameter", initialisms) + checkList(ft.Results, "interface method result", initialisms) + } + case *ast.RangeStmt: + if v.Tok == token.ASSIGN { + return true + } + if id, ok := v.Key.(*ast.Ident); ok { + check(id, "range var", initialisms) + } + if id, ok := v.Value.(*ast.Ident); ok { + check(id, "range var", initialisms) + } + case *ast.StructType: + for _, f := range v.Fields.List { + for _, id := range f.Names { + check(id, "struct field", initialisms) + } + } + } + return true + }) + } + return nil, nil +} + +// lintName returns a different name if it should be different. +func lintName(name string, initialisms map[string]bool) (should string) { + // A large part of this function is copied from + // github.com/golang/lint, Copyright (c) 2013 The Go Authors, + // licensed under the BSD 3-clause license. + + // Fast path for simple cases: "_" and all lowercase. + if name == "_" { + return name + } + if strings.IndexFunc(name, func(r rune) bool { return !unicode.IsLower(r) }) == -1 { + return name + } + + // Split camelCase at any lower->upper transition, and split on underscores. + // Check each word for common initialisms. + runes := []rune(name) + w, i := 0, 0 // index of start of word, scan + for i+1 <= len(runes) { + eow := false // whether we hit the end of a word + if i+1 == len(runes) { + eow = true + } else if runes[i+1] == '_' && i+1 != len(runes)-1 { + // underscore; shift the remainder forward over any run of underscores + eow = true + n := 1 + for i+n+1 < len(runes) && runes[i+n+1] == '_' { + n++ + } + + // Leave at most one underscore if the underscore is between two digits + if i+n+1 < len(runes) && unicode.IsDigit(runes[i]) && unicode.IsDigit(runes[i+n+1]) { + n-- + } + + copy(runes[i+1:], runes[i+n+1:]) + runes = runes[:len(runes)-n] + } else if unicode.IsLower(runes[i]) && !unicode.IsLower(runes[i+1]) { + // lower->non-lower + eow = true + } + i++ + if !eow { + continue + } + + // [w,i) is a word. + word := string(runes[w:i]) + if u := strings.ToUpper(word); initialisms[u] { + // Keep consistent case, which is lowercase only at the start. + if w == 0 && unicode.IsLower(runes[w]) { + u = strings.ToLower(u) + } + // All the common initialisms are ASCII, + // so we can replace the bytes exactly. + // TODO(dh): this won't be true once we allow custom initialisms + copy(runes[w:], []rune(u)) + } else if w > 0 && strings.ToLower(word) == word { + // already all lowercase, and not the first word, so uppercase the first character. + runes[w] = unicode.ToUpper(runes[w]) + } + w = i + } + return string(runes) +} + +func isTechnicallyExported(f *ast.FuncDecl) bool { + if f.Recv != nil || f.Doc == nil { + return false + } + + const export = "//export " + const linkname = "//go:linkname " + for _, c := range f.Doc.List { + if strings.HasPrefix(c.Text, export) && len(c.Text) == len(export)+len(f.Name.Name) && c.Text[len(export):] == f.Name.Name { + return true + } + + if strings.HasPrefix(c.Text, linkname) { + return true + } + } + return false +} diff --git a/vendor/honnef.co/go/tools/unused/edge.go b/vendor/honnef.co/go/tools/unused/edge.go new file mode 100644 index 00000000000..02e0d09cf2a --- /dev/null +++ b/vendor/honnef.co/go/tools/unused/edge.go @@ -0,0 +1,54 @@ +package unused + +//go:generate stringer -type edgeKind +type edgeKind uint64 + +func (e edgeKind) is(o edgeKind) bool { + return e&o != 0 +} + +const ( + edgeAlias edgeKind = 1 << iota + edgeBlankField + edgeAnonymousStruct + edgeCgoExported + edgeConstGroup + edgeElementType + edgeEmbeddedInterface + edgeExportedConstant + edgeExportedField + edgeExportedFunction + edgeExportedMethod + edgeExportedType + edgeExportedVariable + edgeExtendsExportedFields + edgeExtendsExportedMethodSet + edgeFieldAccess + edgeFunctionArgument + edgeFunctionResult + edgeFunctionSignature + edgeImplements + edgeInstructionOperand + edgeInterfaceCall + edgeInterfaceMethod + edgeKeyType + edgeLinkname + edgeMainFunction + edgeNamedType + edgeNetRPCRegister + edgeNoCopySentinel + edgeProvidesMethod + edgeReceiver + edgeRuntimeFunction + edgeSignature + edgeStructConversion + edgeTestSink + edgeTupleElement + edgeType + edgeTypeName + edgeUnderlyingType + edgePointerType + edgeUnsafeConversion + edgeUsedConstant + edgeVarDecl +) diff --git a/vendor/honnef.co/go/tools/unused/edgekind_string.go b/vendor/honnef.co/go/tools/unused/edgekind_string.go new file mode 100644 index 00000000000..7629636cf13 --- /dev/null +++ b/vendor/honnef.co/go/tools/unused/edgekind_string.go @@ -0,0 +1,109 @@ +// Code generated by "stringer -type edgeKind"; DO NOT EDIT. + +package unused + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[edgeAlias-1] + _ = x[edgeBlankField-2] + _ = x[edgeAnonymousStruct-4] + _ = x[edgeCgoExported-8] + _ = x[edgeConstGroup-16] + _ = x[edgeElementType-32] + _ = x[edgeEmbeddedInterface-64] + _ = x[edgeExportedConstant-128] + _ = x[edgeExportedField-256] + _ = x[edgeExportedFunction-512] + _ = x[edgeExportedMethod-1024] + _ = x[edgeExportedType-2048] + _ = x[edgeExportedVariable-4096] + _ = x[edgeExtendsExportedFields-8192] + _ = x[edgeExtendsExportedMethodSet-16384] + _ = x[edgeFieldAccess-32768] + _ = x[edgeFunctionArgument-65536] + _ = x[edgeFunctionResult-131072] + _ = x[edgeFunctionSignature-262144] + _ = x[edgeImplements-524288] + _ = x[edgeInstructionOperand-1048576] + _ = x[edgeInterfaceCall-2097152] + _ = x[edgeInterfaceMethod-4194304] + _ = x[edgeKeyType-8388608] + _ = x[edgeLinkname-16777216] + _ = x[edgeMainFunction-33554432] + _ = x[edgeNamedType-67108864] + _ = x[edgeNetRPCRegister-134217728] + _ = x[edgeNoCopySentinel-268435456] + _ = x[edgeProvidesMethod-536870912] + _ = x[edgeReceiver-1073741824] + _ = x[edgeRuntimeFunction-2147483648] + _ = x[edgeSignature-4294967296] + _ = x[edgeStructConversion-8589934592] + _ = x[edgeTestSink-17179869184] + _ = x[edgeTupleElement-34359738368] + _ = x[edgeType-68719476736] + _ = x[edgeTypeName-137438953472] + _ = x[edgeUnderlyingType-274877906944] + _ = x[edgePointerType-549755813888] + _ = x[edgeUnsafeConversion-1099511627776] + _ = x[edgeUsedConstant-2199023255552] + _ = x[edgeVarDecl-4398046511104] +} + +const _edgeKind_name = "edgeAliasedgeBlankFieldedgeAnonymousStructedgeCgoExportededgeConstGroupedgeElementTypeedgeEmbeddedInterfaceedgeExportedConstantedgeExportedFieldedgeExportedFunctionedgeExportedMethodedgeExportedTypeedgeExportedVariableedgeExtendsExportedFieldsedgeExtendsExportedMethodSetedgeFieldAccessedgeFunctionArgumentedgeFunctionResultedgeFunctionSignatureedgeImplementsedgeInstructionOperandedgeInterfaceCalledgeInterfaceMethodedgeKeyTypeedgeLinknameedgeMainFunctionedgeNamedTypeedgeNetRPCRegisteredgeNoCopySentineledgeProvidesMethodedgeReceiveredgeRuntimeFunctionedgeSignatureedgeStructConversionedgeTestSinkedgeTupleElementedgeTypeedgeTypeNameedgeUnderlyingTypeedgePointerTypeedgeUnsafeConversionedgeUsedConstantedgeVarDecl" + +var _edgeKind_map = map[edgeKind]string{ + 1: _edgeKind_name[0:9], + 2: _edgeKind_name[9:23], + 4: _edgeKind_name[23:42], + 8: _edgeKind_name[42:57], + 16: _edgeKind_name[57:71], + 32: _edgeKind_name[71:86], + 64: _edgeKind_name[86:107], + 128: _edgeKind_name[107:127], + 256: _edgeKind_name[127:144], + 512: _edgeKind_name[144:164], + 1024: _edgeKind_name[164:182], + 2048: _edgeKind_name[182:198], + 4096: _edgeKind_name[198:218], + 8192: _edgeKind_name[218:243], + 16384: _edgeKind_name[243:271], + 32768: _edgeKind_name[271:286], + 65536: _edgeKind_name[286:306], + 131072: _edgeKind_name[306:324], + 262144: _edgeKind_name[324:345], + 524288: _edgeKind_name[345:359], + 1048576: _edgeKind_name[359:381], + 2097152: _edgeKind_name[381:398], + 4194304: _edgeKind_name[398:417], + 8388608: _edgeKind_name[417:428], + 16777216: _edgeKind_name[428:440], + 33554432: _edgeKind_name[440:456], + 67108864: _edgeKind_name[456:469], + 134217728: _edgeKind_name[469:487], + 268435456: _edgeKind_name[487:505], + 536870912: _edgeKind_name[505:523], + 1073741824: _edgeKind_name[523:535], + 2147483648: _edgeKind_name[535:554], + 4294967296: _edgeKind_name[554:567], + 8589934592: _edgeKind_name[567:587], + 17179869184: _edgeKind_name[587:599], + 34359738368: _edgeKind_name[599:615], + 68719476736: _edgeKind_name[615:623], + 137438953472: _edgeKind_name[623:635], + 274877906944: _edgeKind_name[635:653], + 549755813888: _edgeKind_name[653:668], + 1099511627776: _edgeKind_name[668:688], + 2199023255552: _edgeKind_name[688:704], + 4398046511104: _edgeKind_name[704:715], +} + +func (i edgeKind) String() string { + if str, ok := _edgeKind_map[i]; ok { + return str + } + return "edgeKind(" + strconv.FormatInt(int64(i), 10) + ")" +} diff --git a/vendor/honnef.co/go/tools/unused/implements.go b/vendor/honnef.co/go/tools/unused/implements.go new file mode 100644 index 00000000000..835baac6925 --- /dev/null +++ b/vendor/honnef.co/go/tools/unused/implements.go @@ -0,0 +1,82 @@ +package unused + +import "go/types" + +// lookupMethod returns the index of and method with matching package and name, or (-1, nil). +func lookupMethod(T *types.Interface, pkg *types.Package, name string) (int, *types.Func) { + if name != "_" { + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + if sameId(m, pkg, name) { + return i, m + } + } + } + return -1, nil +} + +func sameId(obj types.Object, pkg *types.Package, name string) bool { + // spec: + // "Two identifiers are different if they are spelled differently, + // or if they appear in different packages and are not exported. + // Otherwise, they are the same." + if name != obj.Name() { + return false + } + // obj.Name == name + if obj.Exported() { + return true + } + // not exported, so packages must be the same (pkg == nil for + // fields in Universe scope; this can only happen for types + // introduced via Eval) + if pkg == nil || obj.Pkg() == nil { + return pkg == obj.Pkg() + } + // pkg != nil && obj.pkg != nil + return pkg.Path() == obj.Pkg().Path() +} + +func (g *Graph) implements(V types.Type, T *types.Interface, msV *types.MethodSet) ([]*types.Selection, bool) { + // fast path for common case + if T.Empty() { + return nil, true + } + + if ityp, _ := V.Underlying().(*types.Interface); ityp != nil { + // TODO(dh): is this code reachable? + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + _, obj := lookupMethod(ityp, m.Pkg(), m.Name()) + switch { + case obj == nil: + return nil, false + case !types.Identical(obj.Type(), m.Type()): + return nil, false + } + } + return nil, true + } + + // A concrete type implements T if it implements all methods of T. + var sels []*types.Selection + for i := 0; i < T.NumMethods(); i++ { + m := T.Method(i) + sel := msV.Lookup(m.Pkg(), m.Name()) + if sel == nil { + return nil, false + } + + f, _ := sel.Obj().(*types.Func) + if f == nil { + return nil, false + } + + if !types.Identical(f.Type(), m.Type()) { + return nil, false + } + + sels = append(sels, sel) + } + return sels, true +} diff --git a/vendor/honnef.co/go/tools/unused/unused.go b/vendor/honnef.co/go/tools/unused/unused.go new file mode 100644 index 00000000000..152d3692dd8 --- /dev/null +++ b/vendor/honnef.co/go/tools/unused/unused.go @@ -0,0 +1,1964 @@ +package unused + +import ( + "fmt" + "go/ast" + "go/token" + "go/types" + "io" + "strings" + "sync" + "sync/atomic" + + "golang.org/x/tools/go/analysis" + "honnef.co/go/tools/go/types/typeutil" + "honnef.co/go/tools/internal/passes/buildssa" + "honnef.co/go/tools/lint" + "honnef.co/go/tools/lint/lintdsl" + "honnef.co/go/tools/ssa" +) + +// The graph we construct omits nodes along a path that do not +// contribute any new information to the solution. For example, the +// full graph for a function with a receiver would be Func -> +// Signature -> Var -> Type. However, since signatures cannot be +// unused, and receivers are always considered used, we can compact +// the graph down to Func -> Type. This makes the graph smaller, but +// harder to debug. + +// TODO(dh): conversions between structs mark fields as used, but the +// conversion itself isn't part of that subgraph. even if the function +// containing the conversion is unused, the fields will be marked as +// used. + +// TODO(dh): we cannot observe function calls in assembly files. + +/* + +- packages use: + - (1.1) exported named types (unless in package main) + - (1.2) exported functions (unless in package main) + - (1.3) exported variables (unless in package main) + - (1.4) exported constants (unless in package main) + - (1.5) init functions + - (1.6) functions exported to cgo + - (1.7) the main function iff in the main package + - (1.8) symbols linked via go:linkname + +- named types use: + - (2.1) exported methods + - (2.2) the type they're based on + - (2.3) all their aliases. we can't easily track uses of aliases + because go/types turns them into uses of the aliased types. assume + that if a type is used, so are all of its aliases. + - (2.4) the pointer type. this aids with eagerly implementing + interfaces. if a method that implements an interface is defined on + a pointer receiver, and the pointer type is never used, but the + named type is, then we still want to mark the method as used. + +- variables and constants use: + - their types + +- functions use: + - (4.1) all their arguments, return parameters and receivers + - (4.2) anonymous functions defined beneath them + - (4.3) closures and bound methods. + this implements a simplified model where a function is used merely by being referenced, even if it is never called. + that way we don't have to keep track of closures escaping functions. + - (4.4) functions they return. we assume that someone else will call the returned function + - (4.5) functions/interface methods they call + - types they instantiate or convert to + - (4.7) fields they access + - (4.8) types of all instructions + - (4.9) package-level variables they assign to iff in tests (sinks for benchmarks) + +- conversions use: + - (5.1) when converting between two equivalent structs, the fields in + either struct use each other. the fields are relevant for the + conversion, but only if the fields are also accessed outside the + conversion. + - (5.2) when converting to or from unsafe.Pointer, mark all fields as used. + +- structs use: + - (6.1) fields of type NoCopy sentinel + - (6.2) exported fields + - (6.3) embedded fields that help implement interfaces (either fully implements it, or contributes required methods) (recursively) + - (6.4) embedded fields that have exported methods (recursively) + - (6.5) embedded structs that have exported fields (recursively) + +- (7.1) field accesses use fields +- (7.2) fields use their types + +- (8.0) How we handle interfaces: + - (8.1) We do not technically care about interfaces that only consist of + exported methods. Exported methods on concrete types are always + marked as used. + - Any concrete type implements all known interfaces. Even if it isn't + assigned to any interfaces in our code, the user may receive a value + of the type and expect to pass it back to us through an interface. + + Concrete types use their methods that implement interfaces. If the + type is used, it uses those methods. Otherwise, it doesn't. This + way, types aren't incorrectly marked reachable through the edge + from method to type. + + - (8.3) All interface methods are marked as used, even if they never get + called. This is to accomodate sum types (unexported interface + method that must exist but never gets called.) + + - (8.4) All embedded interfaces are marked as used. This is an + extension of 8.3, but we have to explicitly track embedded + interfaces because in a chain C->B->A, B wouldn't be marked as + used by 8.3 just because it contributes A's methods to C. + +- Inherent uses: + - thunks and other generated wrappers call the real function + - (9.2) variables use their types + - (9.3) types use their underlying and element types + - (9.4) conversions use the type they convert to + - (9.5) instructions use their operands + - (9.6) instructions use their operands' types + - (9.7) variable _reads_ use variables, writes do not, except in tests + - (9.8) runtime functions that may be called from user code via the compiler + + +- const groups: + (10.1) if one constant out of a block of constants is used, mark all + of them used. a lot of the time, unused constants exist for the sake + of completeness. See also + https://github.com/dominikh/go-tools/issues/365 + + +- (11.1) anonymous struct types use all their fields. we cannot + deduplicate struct types, as that leads to order-dependent + reportings. we can't not deduplicate struct types while still + tracking fields, because then each instance of the unnamed type in + the data flow chain will get its own fields, causing false + positives. Thus, we only accurately track fields of named struct + types, and assume that unnamed struct types use all their fields. + + +- Differences in whole program mode: + - (e2) types aim to implement all exported interfaces from all packages + - (e3) exported identifiers aren't automatically used. for fields and + methods this poses extra issues due to reflection. We assume + that all exported fields are used. We also maintain a list of + known reflection-based method callers. + +*/ + +func assert(b bool) { + if !b { + panic("failed assertion") + } +} + +func typString(obj types.Object) string { + switch obj := obj.(type) { + case *types.Func: + return "func" + case *types.Var: + if obj.IsField() { + return "field" + } + return "var" + case *types.Const: + return "const" + case *types.TypeName: + return "type" + default: + return "identifier" + } +} + +// /usr/lib/go/src/runtime/proc.go:433:6: func badmorestackg0 is unused (U1000) + +// Functions defined in the Go runtime that may be called through +// compiler magic or via assembly. +var runtimeFuncs = map[string]bool{ + // The first part of the list is copied from + // cmd/compile/internal/gc/builtin.go, var runtimeDecls + "newobject": true, + "panicindex": true, + "panicslice": true, + "panicdivide": true, + "panicmakeslicelen": true, + "throwinit": true, + "panicwrap": true, + "gopanic": true, + "gorecover": true, + "goschedguarded": true, + "printbool": true, + "printfloat": true, + "printint": true, + "printhex": true, + "printuint": true, + "printcomplex": true, + "printstring": true, + "printpointer": true, + "printiface": true, + "printeface": true, + "printslice": true, + "printnl": true, + "printsp": true, + "printlock": true, + "printunlock": true, + "concatstring2": true, + "concatstring3": true, + "concatstring4": true, + "concatstring5": true, + "concatstrings": true, + "cmpstring": true, + "intstring": true, + "slicebytetostring": true, + "slicebytetostringtmp": true, + "slicerunetostring": true, + "stringtoslicebyte": true, + "stringtoslicerune": true, + "slicecopy": true, + "slicestringcopy": true, + "decoderune": true, + "countrunes": true, + "convI2I": true, + "convT16": true, + "convT32": true, + "convT64": true, + "convTstring": true, + "convTslice": true, + "convT2E": true, + "convT2Enoptr": true, + "convT2I": true, + "convT2Inoptr": true, + "assertE2I": true, + "assertE2I2": true, + "assertI2I": true, + "assertI2I2": true, + "panicdottypeE": true, + "panicdottypeI": true, + "panicnildottype": true, + "ifaceeq": true, + "efaceeq": true, + "fastrand": true, + "makemap64": true, + "makemap": true, + "makemap_small": true, + "mapaccess1": true, + "mapaccess1_fast32": true, + "mapaccess1_fast64": true, + "mapaccess1_faststr": true, + "mapaccess1_fat": true, + "mapaccess2": true, + "mapaccess2_fast32": true, + "mapaccess2_fast64": true, + "mapaccess2_faststr": true, + "mapaccess2_fat": true, + "mapassign": true, + "mapassign_fast32": true, + "mapassign_fast32ptr": true, + "mapassign_fast64": true, + "mapassign_fast64ptr": true, + "mapassign_faststr": true, + "mapiterinit": true, + "mapdelete": true, + "mapdelete_fast32": true, + "mapdelete_fast64": true, + "mapdelete_faststr": true, + "mapiternext": true, + "mapclear": true, + "makechan64": true, + "makechan": true, + "chanrecv1": true, + "chanrecv2": true, + "chansend1": true, + "closechan": true, + "writeBarrier": true, + "typedmemmove": true, + "typedmemclr": true, + "typedslicecopy": true, + "selectnbsend": true, + "selectnbrecv": true, + "selectnbrecv2": true, + "selectsetpc": true, + "selectgo": true, + "block": true, + "makeslice": true, + "makeslice64": true, + "growslice": true, + "memmove": true, + "memclrNoHeapPointers": true, + "memclrHasPointers": true, + "memequal": true, + "memequal8": true, + "memequal16": true, + "memequal32": true, + "memequal64": true, + "memequal128": true, + "int64div": true, + "uint64div": true, + "int64mod": true, + "uint64mod": true, + "float64toint64": true, + "float64touint64": true, + "float64touint32": true, + "int64tofloat64": true, + "uint64tofloat64": true, + "uint32tofloat64": true, + "complex128div": true, + "racefuncenter": true, + "racefuncenterfp": true, + "racefuncexit": true, + "raceread": true, + "racewrite": true, + "racereadrange": true, + "racewriterange": true, + "msanread": true, + "msanwrite": true, + "x86HasPOPCNT": true, + "x86HasSSE41": true, + "arm64HasATOMICS": true, + + // The second part of the list is extracted from assembly code in + // the standard library, with the exception of the runtime package itself + "abort": true, + "aeshashbody": true, + "args": true, + "asminit": true, + "badctxt": true, + "badmcall2": true, + "badmcall": true, + "badmorestackg0": true, + "badmorestackgsignal": true, + "badsignal2": true, + "callbackasm1": true, + "callCfunction": true, + "cgocallback_gofunc": true, + "cgocallbackg": true, + "checkgoarm": true, + "check": true, + "debugCallCheck": true, + "debugCallWrap": true, + "emptyfunc": true, + "entersyscall": true, + "exit": true, + "exits": true, + "exitsyscall": true, + "externalthreadhandler": true, + "findnull": true, + "goexit1": true, + "gostring": true, + "i386_set_ldt": true, + "_initcgo": true, + "init_thread_tls": true, + "ldt0setup": true, + "libpreinit": true, + "load_g": true, + "morestack": true, + "mstart": true, + "nacl_sysinfo": true, + "nanotimeQPC": true, + "nanotime": true, + "newosproc0": true, + "newproc": true, + "newstack": true, + "noted": true, + "nowQPC": true, + "osinit": true, + "printf": true, + "racecallback": true, + "reflectcallmove": true, + "reginit": true, + "rt0_go": true, + "save_g": true, + "schedinit": true, + "setldt": true, + "settls": true, + "sighandler": true, + "sigprofNonGo": true, + "sigtrampgo": true, + "_sigtramp": true, + "sigtramp": true, + "stackcheck": true, + "syscall_chdir": true, + "syscall_chroot": true, + "syscall_close": true, + "syscall_dup2": true, + "syscall_execve": true, + "syscall_exit": true, + "syscall_fcntl": true, + "syscall_forkx": true, + "syscall_gethostname": true, + "syscall_getpid": true, + "syscall_ioctl": true, + "syscall_pipe": true, + "syscall_rawsyscall6": true, + "syscall_rawSyscall6": true, + "syscall_rawsyscall": true, + "syscall_RawSyscall": true, + "syscall_rawsysvicall6": true, + "syscall_setgid": true, + "syscall_setgroups": true, + "syscall_setpgid": true, + "syscall_setsid": true, + "syscall_setuid": true, + "syscall_syscall6": true, + "syscall_syscall": true, + "syscall_Syscall": true, + "syscall_sysvicall6": true, + "syscall_wait4": true, + "syscall_write": true, + "traceback": true, + "tstart": true, + "usplitR0": true, + "wbBufFlush": true, + "write": true, +} + +type pkg struct { + Fset *token.FileSet + Files []*ast.File + Pkg *types.Package + TypesInfo *types.Info + TypesSizes types.Sizes + SSA *ssa.Package + SrcFuncs []*ssa.Function +} + +type Checker struct { + WholeProgram bool + Debug io.Writer + + mu sync.Mutex + initialPackages map[*types.Package]struct{} + allPackages map[*types.Package]struct{} + graph *Graph +} + +func NewChecker(wholeProgram bool) *Checker { + return &Checker{ + initialPackages: map[*types.Package]struct{}{}, + allPackages: map[*types.Package]struct{}{}, + WholeProgram: wholeProgram, + } +} + +func (c *Checker) Analyzer() *analysis.Analyzer { + name := "U1000" + if c.WholeProgram { + name = "U1001" + } + return &analysis.Analyzer{ + Name: name, + Doc: "Unused code", + Run: c.Run, + Requires: []*analysis.Analyzer{buildssa.Analyzer}, + } +} + +func (c *Checker) Run(pass *analysis.Pass) (interface{}, error) { + c.mu.Lock() + if c.graph == nil { + c.graph = NewGraph() + c.graph.wholeProgram = c.WholeProgram + c.graph.fset = pass.Fset + } + + var visit func(pkg *types.Package) + visit = func(pkg *types.Package) { + if _, ok := c.allPackages[pkg]; ok { + return + } + c.allPackages[pkg] = struct{}{} + for _, imp := range pkg.Imports() { + visit(imp) + } + } + visit(pass.Pkg) + + c.initialPackages[pass.Pkg] = struct{}{} + c.mu.Unlock() + + ssapkg := pass.ResultOf[buildssa.Analyzer].(*buildssa.SSA) + pkg := &pkg{ + Fset: pass.Fset, + Files: pass.Files, + Pkg: pass.Pkg, + TypesInfo: pass.TypesInfo, + TypesSizes: pass.TypesSizes, + SSA: ssapkg.Pkg, + SrcFuncs: ssapkg.SrcFuncs, + } + + c.processPkg(c.graph, pkg) + + return nil, nil +} + +func (c *Checker) ProblemObject(fset *token.FileSet, obj types.Object) lint.Problem { + name := obj.Name() + if sig, ok := obj.Type().(*types.Signature); ok && sig.Recv() != nil { + switch sig.Recv().Type().(type) { + case *types.Named, *types.Pointer: + typ := types.TypeString(sig.Recv().Type(), func(*types.Package) string { return "" }) + if len(typ) > 0 && typ[0] == '*' { + name = fmt.Sprintf("(%s).%s", typ, obj.Name()) + } else if len(typ) > 0 { + name = fmt.Sprintf("%s.%s", typ, obj.Name()) + } + } + } + + checkName := "U1000" + if c.WholeProgram { + checkName = "U1001" + } + return lint.Problem{ + Pos: lint.DisplayPosition(fset, obj.Pos()), + Message: fmt.Sprintf("%s %s is unused", typString(obj), name), + Check: checkName, + } +} + +func (c *Checker) Result() []types.Object { + out := c.results() + + out2 := make([]types.Object, 0, len(out)) + for _, v := range out { + if _, ok := c.initialPackages[v.Pkg()]; !ok { + continue + } + out2 = append(out2, v) + } + + return out2 +} + +func (c *Checker) debugf(f string, v ...interface{}) { + if c.Debug != nil { + fmt.Fprintf(c.Debug, f, v...) + } +} + +func (graph *Graph) quieten(node *Node) { + if node.seen { + return + } + switch obj := node.obj.(type) { + case *types.Named: + for i := 0; i < obj.NumMethods(); i++ { + m := obj.Method(i) + if node, ok := graph.nodeMaybe(m); ok { + node.quiet = true + } + } + case *types.Struct: + for i := 0; i < obj.NumFields(); i++ { + if node, ok := graph.nodeMaybe(obj.Field(i)); ok { + node.quiet = true + } + } + case *types.Interface: + for i := 0; i < obj.NumExplicitMethods(); i++ { + m := obj.ExplicitMethod(i) + if node, ok := graph.nodeMaybe(m); ok { + node.quiet = true + } + } + } +} + +func (c *Checker) results() []types.Object { + if c.graph == nil { + // We never analyzed any packages + return nil + } + + var out []types.Object + + if c.WholeProgram { + var ifaces []*types.Interface + var notIfaces []types.Type + + // implement as many interfaces as possible + c.graph.seenTypes.Iterate(func(t types.Type, _ interface{}) { + switch t := t.(type) { + case *types.Interface: + if t.NumMethods() > 0 { + ifaces = append(ifaces, t) + } + default: + if _, ok := t.Underlying().(*types.Interface); !ok { + notIfaces = append(notIfaces, t) + } + } + }) + + for pkg := range c.allPackages { + for _, iface := range interfacesFromExportData(pkg) { + if iface.NumMethods() > 0 { + ifaces = append(ifaces, iface) + } + } + } + + ctx := &context{ + g: c.graph, + seenTypes: &c.graph.seenTypes, + } + // (8.0) handle interfaces + // (e2) types aim to implement all exported interfaces from all packages + for _, t := range notIfaces { + // OPT(dh): it is unfortunate that we do not have access + // to a populated method set at this point. + ms := types.NewMethodSet(t) + for _, iface := range ifaces { + if sels, ok := c.graph.implements(t, iface, ms); ok { + for _, sel := range sels { + c.graph.useMethod(ctx, t, sel, t, edgeImplements) + } + } + } + } + } + + if c.Debug != nil { + debugNode := func(node *Node) { + if node.obj == nil { + c.debugf("n%d [label=\"Root\"];\n", node.id) + } else { + c.debugf("n%d [label=%q];\n", node.id, fmt.Sprintf("(%T) %s", node.obj, node.obj)) + } + for _, e := range node.used { + for i := edgeKind(1); i < 64; i++ { + if e.kind.is(1 << i) { + c.debugf("n%d -> n%d [label=%q];\n", node.id, e.node.id, edgeKind(1< 1 { + cg := &ConstGroup{} + ctx.see(cg) + for _, spec := range specs { + for _, name := range spec.(*ast.ValueSpec).Names { + obj := pkg.TypesInfo.ObjectOf(name) + // (10.1) const groups + ctx.seeAndUse(obj, cg, edgeConstGroup) + ctx.use(cg, obj, edgeConstGroup) + } + } + } + } + case token.VAR: + for _, spec := range n.Specs { + v := spec.(*ast.ValueSpec) + for _, name := range v.Names { + T := pkg.TypesInfo.TypeOf(name) + if fn != nil { + ctx.seeAndUse(T, fn, edgeVarDecl) + } else { + // TODO(dh): we likely want to make + // the type used by the variable, not + // the package containing the + // variable. But then we have to take + // special care of blank identifiers. + ctx.seeAndUse(T, nil, edgeVarDecl) + } + g.typ(ctx, T, nil) + } + } + case token.TYPE: + for _, spec := range n.Specs { + // go/types doesn't provide a way to go from a + // types.Named to the named type it was based on + // (the t1 in type t2 t1). Therefore we walk the + // AST and process GenDecls. + // + // (2.2) named types use the type they're based on + v := spec.(*ast.TypeSpec) + T := pkg.TypesInfo.TypeOf(v.Type) + obj := pkg.TypesInfo.ObjectOf(v.Name) + ctx.see(obj) + ctx.see(T) + ctx.use(T, obj, edgeType) + g.typ(ctx, obj.Type(), nil) + g.typ(ctx, T, nil) + + if v.Assign != 0 { + aliasFor := obj.(*types.TypeName).Type() + // (2.3) named types use all their aliases. we can't easily track uses of aliases + if isIrrelevant(aliasFor) { + // We do not track the type this is an + // alias for (for example builtins), so + // just mark the alias used. + // + // FIXME(dh): what about aliases declared inside functions? + ctx.use(obj, nil, edgeAlias) + } else { + ctx.see(aliasFor) + ctx.seeAndUse(obj, aliasFor, edgeAlias) + } + } + } + } + } + return true + }) + } + + for _, m := range pkg.SSA.Members { + switch m := m.(type) { + case *ssa.NamedConst: + // nothing to do, we collect all constants from Defs + case *ssa.Global: + if m.Object() != nil { + ctx.see(m.Object()) + if g.trackExportedIdentifier(ctx, m.Object()) { + // (1.3) packages use exported variables (unless in package main) + ctx.use(m.Object(), nil, edgeExportedVariable) + } + } + case *ssa.Function: + mObj := owningObject(m) + if mObj != nil { + ctx.see(mObj) + } + //lint:ignore SA9003 handled implicitly + if m.Name() == "init" { + // (1.5) packages use init functions + // + // This is handled implicitly. The generated init + // function has no object, thus everything in it will + // be owned by the package. + } + // This branch catches top-level functions, not methods. + if m.Object() != nil && g.trackExportedIdentifier(ctx, m.Object()) { + // (1.2) packages use exported functions (unless in package main) + ctx.use(mObj, nil, edgeExportedFunction) + } + if m.Name() == "main" && pkg.Pkg.Name() == "main" { + // (1.7) packages use the main function iff in the main package + ctx.use(mObj, nil, edgeMainFunction) + } + if pkg.Pkg.Path() == "runtime" && runtimeFuncs[m.Name()] { + // (9.8) runtime functions that may be called from user code via the compiler + ctx.use(mObj, nil, edgeRuntimeFunction) + } + if m.Syntax() != nil { + doc := m.Syntax().(*ast.FuncDecl).Doc + if doc != nil { + for _, cmt := range doc.List { + if strings.HasPrefix(cmt.Text, "//go:cgo_export_") { + // (1.6) packages use functions exported to cgo + ctx.use(mObj, nil, edgeCgoExported) + } + } + } + } + g.function(ctx, m) + case *ssa.Type: + if m.Object() != nil { + ctx.see(m.Object()) + if g.trackExportedIdentifier(ctx, m.Object()) { + // (1.1) packages use exported named types (unless in package main) + ctx.use(m.Object(), nil, edgeExportedType) + } + } + g.typ(ctx, m.Type(), nil) + default: + panic(fmt.Sprintf("unreachable: %T", m)) + } + } + + if !g.wholeProgram { + // When not in whole program mode we reset seenTypes after each package, + // which means g.seenTypes only contains types of + // interest to us. In whole program mode, we're better off + // processing all interfaces at once, globally, both for + // performance reasons and because in whole program mode we + // actually care about all interfaces, not just the subset + // that has unexported methods. + + var ifaces []*types.Interface + var notIfaces []types.Type + + ctx.seenTypes.Iterate(func(t types.Type, _ interface{}) { + switch t := t.(type) { + case *types.Interface: + // OPT(dh): (8.1) we only need interfaces that have unexported methods + ifaces = append(ifaces, t) + default: + if _, ok := t.Underlying().(*types.Interface); !ok { + notIfaces = append(notIfaces, t) + } + } + }) + + // (8.0) handle interfaces + for _, t := range notIfaces { + ms := pkg.SSA.Prog.MethodSets.MethodSet(t) + for _, iface := range ifaces { + if sels, ok := g.implements(t, iface, ms); ok { + for _, sel := range sels { + g.useMethod(ctx, t, sel, t, edgeImplements) + } + } + } + } + } +} + +func (g *Graph) useMethod(ctx *context, t types.Type, sel *types.Selection, by interface{}, kind edgeKind) { + obj := sel.Obj() + path := sel.Index() + assert(obj != nil) + if len(path) > 1 { + base := lintdsl.Dereference(t).Underlying().(*types.Struct) + for _, idx := range path[:len(path)-1] { + next := base.Field(idx) + // (6.3) structs use embedded fields that help implement interfaces + ctx.see(base) + ctx.seeAndUse(next, base, edgeProvidesMethod) + base, _ = lintdsl.Dereference(next.Type()).Underlying().(*types.Struct) + } + } + ctx.seeAndUse(obj, by, kind) +} + +func owningObject(fn *ssa.Function) types.Object { + if fn.Object() != nil { + return fn.Object() + } + if fn.Parent() != nil { + return owningObject(fn.Parent()) + } + return nil +} + +func (g *Graph) function(ctx *context, fn *ssa.Function) { + if fn.Package() != nil && fn.Package() != ctx.pkg.SSA { + return + } + + name := fn.RelString(nil) + if _, ok := ctx.seenFns[name]; ok { + return + } + ctx.seenFns[name] = struct{}{} + + // (4.1) functions use all their arguments, return parameters and receivers + g.signature(ctx, fn.Signature, owningObject(fn)) + g.instructions(ctx, fn) + for _, anon := range fn.AnonFuncs { + // (4.2) functions use anonymous functions defined beneath them + // + // This fact is expressed implicitly. Anonymous functions have + // no types.Object, so their owner is the surrounding + // function. + g.function(ctx, anon) + } +} + +func (g *Graph) typ(ctx *context, t types.Type, parent types.Type) { + if g.wholeProgram { + g.mu.Lock() + } + if ctx.seenTypes.At(t) != nil { + if g.wholeProgram { + g.mu.Unlock() + } + return + } + if g.wholeProgram { + g.mu.Unlock() + } + if t, ok := t.(*types.Named); ok && t.Obj().Pkg() != nil { + if t.Obj().Pkg() != ctx.pkg.Pkg { + return + } + } + + if g.wholeProgram { + g.mu.Lock() + } + ctx.seenTypes.Set(t, struct{}{}) + if g.wholeProgram { + g.mu.Unlock() + } + if isIrrelevant(t) { + return + } + + ctx.see(t) + switch t := t.(type) { + case *types.Struct: + for i := 0; i < t.NumFields(); i++ { + ctx.see(t.Field(i)) + if t.Field(i).Exported() { + // (6.2) structs use exported fields + ctx.use(t.Field(i), t, edgeExportedField) + } else if t.Field(i).Name() == "_" { + ctx.use(t.Field(i), t, edgeBlankField) + } else if isNoCopyType(t.Field(i).Type()) { + // (6.1) structs use fields of type NoCopy sentinel + ctx.use(t.Field(i), t, edgeNoCopySentinel) + } else if parent == nil { + // (11.1) anonymous struct types use all their fields. + ctx.use(t.Field(i), t, edgeAnonymousStruct) + } + if t.Field(i).Anonymous() { + // (e3) exported identifiers aren't automatically used. + if !g.wholeProgram { + // does the embedded field contribute exported methods to the method set? + T := t.Field(i).Type() + if _, ok := T.Underlying().(*types.Pointer); !ok { + // An embedded field is addressable, so check + // the pointer type to get the full method set + T = types.NewPointer(T) + } + ms := ctx.pkg.SSA.Prog.MethodSets.MethodSet(T) + for j := 0; j < ms.Len(); j++ { + if ms.At(j).Obj().Exported() { + // (6.4) structs use embedded fields that have exported methods (recursively) + ctx.use(t.Field(i), t, edgeExtendsExportedMethodSet) + break + } + } + } + + seen := map[*types.Struct]struct{}{} + var hasExportedField func(t types.Type) bool + hasExportedField = func(T types.Type) bool { + t, ok := lintdsl.Dereference(T).Underlying().(*types.Struct) + if !ok { + return false + } + if _, ok := seen[t]; ok { + return false + } + seen[t] = struct{}{} + for i := 0; i < t.NumFields(); i++ { + field := t.Field(i) + if field.Exported() { + return true + } + if field.Embedded() && hasExportedField(field.Type()) { + return true + } + } + return false + } + // does the embedded field contribute exported fields? + if hasExportedField(t.Field(i).Type()) { + // (6.5) structs use embedded structs that have exported fields (recursively) + ctx.use(t.Field(i), t, edgeExtendsExportedFields) + } + + } + g.variable(ctx, t.Field(i)) + } + case *types.Basic: + // Nothing to do + case *types.Named: + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Underlying(), t, edgeUnderlyingType) + ctx.seeAndUse(t.Obj(), t, edgeTypeName) + ctx.seeAndUse(t, t.Obj(), edgeNamedType) + + // (2.4) named types use the pointer type + if _, ok := t.Underlying().(*types.Interface); !ok && t.NumMethods() > 0 { + ctx.seeAndUse(types.NewPointer(t), t, edgePointerType) + } + + for i := 0; i < t.NumMethods(); i++ { + ctx.see(t.Method(i)) + // don't use trackExportedIdentifier here, we care about + // all exported methods, even in package main or in tests. + if t.Method(i).Exported() && !g.wholeProgram { + // (2.1) named types use exported methods + ctx.use(t.Method(i), t, edgeExportedMethod) + } + g.function(ctx, ctx.pkg.SSA.Prog.FuncValue(t.Method(i))) + } + + g.typ(ctx, t.Underlying(), t) + case *types.Slice: + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Elem(), t, edgeElementType) + g.typ(ctx, t.Elem(), nil) + case *types.Map: + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Elem(), t, edgeElementType) + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Key(), t, edgeKeyType) + g.typ(ctx, t.Elem(), nil) + g.typ(ctx, t.Key(), nil) + case *types.Signature: + g.signature(ctx, t, nil) + case *types.Interface: + for i := 0; i < t.NumMethods(); i++ { + m := t.Method(i) + // (8.3) All interface methods are marked as used + ctx.seeAndUse(m, t, edgeInterfaceMethod) + ctx.seeAndUse(m.Type().(*types.Signature), m, edgeSignature) + g.signature(ctx, m.Type().(*types.Signature), nil) + } + for i := 0; i < t.NumEmbeddeds(); i++ { + tt := t.EmbeddedType(i) + // (8.4) All embedded interfaces are marked as used + ctx.seeAndUse(tt, t, edgeEmbeddedInterface) + } + case *types.Array: + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Elem(), t, edgeElementType) + g.typ(ctx, t.Elem(), nil) + case *types.Pointer: + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Elem(), t, edgeElementType) + g.typ(ctx, t.Elem(), nil) + case *types.Chan: + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.Elem(), t, edgeElementType) + g.typ(ctx, t.Elem(), nil) + case *types.Tuple: + for i := 0; i < t.Len(); i++ { + // (9.3) types use their underlying and element types + ctx.seeAndUse(t.At(i).Type(), t, edgeTupleElement|edgeType) + g.typ(ctx, t.At(i).Type(), nil) + } + default: + panic(fmt.Sprintf("unreachable: %T", t)) + } +} + +func (g *Graph) variable(ctx *context, v *types.Var) { + // (9.2) variables use their types + ctx.seeAndUse(v.Type(), v, edgeType) + g.typ(ctx, v.Type(), nil) +} + +func (g *Graph) signature(ctx *context, sig *types.Signature, fn types.Object) { + var user interface{} = fn + if fn == nil { + user = sig + ctx.see(sig) + } + if sig.Recv() != nil { + ctx.seeAndUse(sig.Recv().Type(), user, edgeReceiver|edgeType) + g.typ(ctx, sig.Recv().Type(), nil) + } + for i := 0; i < sig.Params().Len(); i++ { + param := sig.Params().At(i) + ctx.seeAndUse(param.Type(), user, edgeFunctionArgument|edgeType) + g.typ(ctx, param.Type(), nil) + } + for i := 0; i < sig.Results().Len(); i++ { + param := sig.Results().At(i) + ctx.seeAndUse(param.Type(), user, edgeFunctionResult|edgeType) + g.typ(ctx, param.Type(), nil) + } +} + +func (g *Graph) instructions(ctx *context, fn *ssa.Function) { + fnObj := owningObject(fn) + for _, b := range fn.Blocks { + for _, instr := range b.Instrs { + ops := instr.Operands(nil) + switch instr.(type) { + case *ssa.Store: + // (9.7) variable _reads_ use variables, writes do not + ops = ops[1:] + case *ssa.DebugRef: + ops = nil + } + for _, arg := range ops { + walkPhi(*arg, func(v ssa.Value) { + switch v := v.(type) { + case *ssa.Function: + // (4.3) functions use closures and bound methods. + // (4.5) functions use functions they call + // (9.5) instructions use their operands + // (4.4) functions use functions they return. we assume that someone else will call the returned function + if owningObject(v) != nil { + ctx.seeAndUse(owningObject(v), fnObj, edgeInstructionOperand) + } + g.function(ctx, v) + case *ssa.Const: + // (9.6) instructions use their operands' types + ctx.seeAndUse(v.Type(), fnObj, edgeType) + g.typ(ctx, v.Type(), nil) + case *ssa.Global: + if v.Object() != nil { + // (9.5) instructions use their operands + ctx.seeAndUse(v.Object(), fnObj, edgeInstructionOperand) + } + } + }) + } + if v, ok := instr.(ssa.Value); ok { + if _, ok := v.(*ssa.Range); !ok { + // See https://github.com/golang/go/issues/19670 + + // (4.8) instructions use their types + // (9.4) conversions use the type they convert to + ctx.seeAndUse(v.Type(), fnObj, edgeType) + g.typ(ctx, v.Type(), nil) + } + } + switch instr := instr.(type) { + case *ssa.Field: + st := instr.X.Type().Underlying().(*types.Struct) + field := st.Field(instr.Field) + // (4.7) functions use fields they access + ctx.seeAndUse(field, fnObj, edgeFieldAccess) + case *ssa.FieldAddr: + st := lintdsl.Dereference(instr.X.Type()).Underlying().(*types.Struct) + field := st.Field(instr.Field) + // (4.7) functions use fields they access + ctx.seeAndUse(field, fnObj, edgeFieldAccess) + case *ssa.Store: + // nothing to do, handled generically by operands + case *ssa.Call: + c := instr.Common() + if !c.IsInvoke() { + // handled generically as an instruction operand + + if g.wholeProgram { + // (e3) special case known reflection-based method callers + switch lintdsl.CallName(c) { + case "net/rpc.Register", "net/rpc.RegisterName", "(*net/rpc.Server).Register", "(*net/rpc.Server).RegisterName": + var arg ssa.Value + switch lintdsl.CallName(c) { + case "net/rpc.Register": + arg = c.Args[0] + case "net/rpc.RegisterName": + arg = c.Args[1] + case "(*net/rpc.Server).Register": + arg = c.Args[1] + case "(*net/rpc.Server).RegisterName": + arg = c.Args[2] + } + walkPhi(arg, func(v ssa.Value) { + if v, ok := v.(*ssa.MakeInterface); ok { + walkPhi(v.X, func(vv ssa.Value) { + ms := ctx.pkg.SSA.Prog.MethodSets.MethodSet(vv.Type()) + for i := 0; i < ms.Len(); i++ { + if ms.At(i).Obj().Exported() { + g.useMethod(ctx, vv.Type(), ms.At(i), fnObj, edgeNetRPCRegister) + } + } + }) + } + }) + } + } + } else { + // (4.5) functions use functions/interface methods they call + ctx.seeAndUse(c.Method, fnObj, edgeInterfaceCall) + } + case *ssa.Return: + // nothing to do, handled generically by operands + case *ssa.ChangeType: + // conversion type handled generically + + s1, ok1 := lintdsl.Dereference(instr.Type()).Underlying().(*types.Struct) + s2, ok2 := lintdsl.Dereference(instr.X.Type()).Underlying().(*types.Struct) + if ok1 && ok2 { + // Converting between two structs. The fields are + // relevant for the conversion, but only if the + // fields are also used outside of the conversion. + // Mark fields as used by each other. + + assert(s1.NumFields() == s2.NumFields()) + for i := 0; i < s1.NumFields(); i++ { + ctx.see(s1.Field(i)) + ctx.see(s2.Field(i)) + // (5.1) when converting between two equivalent structs, the fields in + // either struct use each other. the fields are relevant for the + // conversion, but only if the fields are also accessed outside the + // conversion. + ctx.seeAndUse(s1.Field(i), s2.Field(i), edgeStructConversion) + ctx.seeAndUse(s2.Field(i), s1.Field(i), edgeStructConversion) + } + } + case *ssa.MakeInterface: + // nothing to do, handled generically by operands + case *ssa.Slice: + // nothing to do, handled generically by operands + case *ssa.RunDefers: + // nothing to do, the deferred functions are already marked use by defering them. + case *ssa.Convert: + // to unsafe.Pointer + if typ, ok := instr.Type().(*types.Basic); ok && typ.Kind() == types.UnsafePointer { + if ptr, ok := instr.X.Type().Underlying().(*types.Pointer); ok { + if st, ok := ptr.Elem().Underlying().(*types.Struct); ok { + for i := 0; i < st.NumFields(); i++ { + // (5.2) when converting to or from unsafe.Pointer, mark all fields as used. + ctx.seeAndUse(st.Field(i), fnObj, edgeUnsafeConversion) + } + } + } + } + // from unsafe.Pointer + if typ, ok := instr.X.Type().(*types.Basic); ok && typ.Kind() == types.UnsafePointer { + if ptr, ok := instr.Type().Underlying().(*types.Pointer); ok { + if st, ok := ptr.Elem().Underlying().(*types.Struct); ok { + for i := 0; i < st.NumFields(); i++ { + // (5.2) when converting to or from unsafe.Pointer, mark all fields as used. + ctx.seeAndUse(st.Field(i), fnObj, edgeUnsafeConversion) + } + } + } + } + case *ssa.TypeAssert: + // nothing to do, handled generically by instruction + // type (possibly a tuple, which contains the asserted + // to type). redundantly handled by the type of + // ssa.Extract, too + case *ssa.MakeClosure: + // nothing to do, handled generically by operands + case *ssa.Alloc: + // nothing to do + case *ssa.UnOp: + // nothing to do + case *ssa.BinOp: + // nothing to do + case *ssa.If: + // nothing to do + case *ssa.Jump: + // nothing to do + case *ssa.IndexAddr: + // nothing to do + case *ssa.Extract: + // nothing to do + case *ssa.Panic: + // nothing to do + case *ssa.DebugRef: + // nothing to do + case *ssa.BlankStore: + // nothing to do + case *ssa.Phi: + // nothing to do + case *ssa.MakeMap: + // nothing to do + case *ssa.MapUpdate: + // nothing to do + case *ssa.Lookup: + // nothing to do + case *ssa.MakeSlice: + // nothing to do + case *ssa.Send: + // nothing to do + case *ssa.MakeChan: + // nothing to do + case *ssa.Range: + // nothing to do + case *ssa.Next: + // nothing to do + case *ssa.Index: + // nothing to do + case *ssa.Select: + // nothing to do + case *ssa.ChangeInterface: + // nothing to do + case *ssa.Go: + // nothing to do, handled generically by operands + case *ssa.Defer: + // nothing to do, handled generically by operands + default: + panic(fmt.Sprintf("unreachable: %T", instr)) + } + } + } +} + +// isNoCopyType reports whether a type represents the NoCopy sentinel +// type. The NoCopy type is a named struct with no fields and exactly +// one method `func Lock()` that is empty. +// +// FIXME(dh): currently we're not checking that the function body is +// empty. +func isNoCopyType(typ types.Type) bool { + st, ok := typ.Underlying().(*types.Struct) + if !ok { + return false + } + if st.NumFields() != 0 { + return false + } + + named, ok := typ.(*types.Named) + if !ok { + return false + } + if named.NumMethods() != 1 { + return false + } + meth := named.Method(0) + if meth.Name() != "Lock" { + return false + } + sig := meth.Type().(*types.Signature) + if sig.Params().Len() != 0 || sig.Results().Len() != 0 { + return false + } + return true +} + +func walkPhi(v ssa.Value, fn func(v ssa.Value)) { + phi, ok := v.(*ssa.Phi) + if !ok { + fn(v) + return + } + + seen := map[ssa.Value]struct{}{} + var impl func(v *ssa.Phi) + impl = func(v *ssa.Phi) { + if _, ok := seen[v]; ok { + return + } + seen[v] = struct{}{} + for _, e := range v.Edges { + if ev, ok := e.(*ssa.Phi); ok { + impl(ev) + } else { + fn(e) + } + } + } + impl(phi) +} + +func interfacesFromExportData(pkg *types.Package) []*types.Interface { + var out []*types.Interface + scope := pkg.Scope() + for _, name := range scope.Names() { + obj := scope.Lookup(name) + out = append(out, interfacesFromObject(obj)...) + } + return out +} + +func interfacesFromObject(obj types.Object) []*types.Interface { + var out []*types.Interface + switch obj := obj.(type) { + case *types.Func: + sig := obj.Type().(*types.Signature) + for i := 0; i < sig.Results().Len(); i++ { + out = append(out, interfacesFromObject(sig.Results().At(i))...) + } + for i := 0; i < sig.Params().Len(); i++ { + out = append(out, interfacesFromObject(sig.Params().At(i))...) + } + case *types.TypeName: + if named, ok := obj.Type().(*types.Named); ok { + for i := 0; i < named.NumMethods(); i++ { + out = append(out, interfacesFromObject(named.Method(i))...) + } + + if iface, ok := named.Underlying().(*types.Interface); ok { + out = append(out, iface) + } + } + case *types.Var: + // No call to Underlying here. We want unnamed interfaces + // only. Named interfaces are gotten directly from the + // package's scope. + if iface, ok := obj.Type().(*types.Interface); ok { + out = append(out, iface) + } + case *types.Const: + case *types.Builtin: + default: + panic(fmt.Sprintf("unhandled type: %T", obj)) + } + return out +} diff --git a/vendor/honnef.co/go/tools/version/buildinfo.go b/vendor/honnef.co/go/tools/version/buildinfo.go new file mode 100644 index 00000000000..b6034bb7dcd --- /dev/null +++ b/vendor/honnef.co/go/tools/version/buildinfo.go @@ -0,0 +1,46 @@ +// +build go1.12 + +package version + +import ( + "fmt" + "runtime/debug" +) + +func printBuildInfo() { + if info, ok := debug.ReadBuildInfo(); ok { + fmt.Println("Main module:") + printModule(&info.Main) + fmt.Println("Dependencies:") + for _, dep := range info.Deps { + printModule(dep) + } + } else { + fmt.Println("Built without Go modules") + } +} + +func buildInfoVersion() (string, bool) { + info, ok := debug.ReadBuildInfo() + if !ok { + return "", false + } + if info.Main.Version == "(devel)" { + return "", false + } + return info.Main.Version, true +} + +func printModule(m *debug.Module) { + fmt.Printf("\t%s", m.Path) + if m.Version != "(devel)" { + fmt.Printf("@%s", m.Version) + } + if m.Sum != "" { + fmt.Printf(" (sum: %s)", m.Sum) + } + if m.Replace != nil { + fmt.Printf(" (replace: %s)", m.Replace.Path) + } + fmt.Println() +} diff --git a/vendor/honnef.co/go/tools/version/buildinfo111.go b/vendor/honnef.co/go/tools/version/buildinfo111.go new file mode 100644 index 00000000000..06aae1e65bb --- /dev/null +++ b/vendor/honnef.co/go/tools/version/buildinfo111.go @@ -0,0 +1,6 @@ +// +build !go1.12 + +package version + +func printBuildInfo() {} +func buildInfoVersion() (string, bool) { return "", false } diff --git a/vendor/honnef.co/go/tools/version/version.go b/vendor/honnef.co/go/tools/version/version.go new file mode 100644 index 00000000000..468e8efd6e1 --- /dev/null +++ b/vendor/honnef.co/go/tools/version/version.go @@ -0,0 +1,42 @@ +package version + +import ( + "fmt" + "os" + "path/filepath" + "runtime" +) + +const Version = "2019.2.3" + +// version returns a version descriptor and reports whether the +// version is a known release. +func version() (string, bool) { + if Version != "devel" { + return Version, true + } + v, ok := buildInfoVersion() + if ok { + return v, false + } + return "devel", false +} + +func Print() { + v, release := version() + + if release { + fmt.Printf("%s %s\n", filepath.Base(os.Args[0]), v) + } else if v == "devel" { + fmt.Printf("%s (no version)\n", filepath.Base(os.Args[0])) + } else { + fmt.Printf("%s (devel, %s)\n", filepath.Base(os.Args[0]), v) + } +} + +func Verbose() { + Print() + fmt.Println() + fmt.Println("Compiled with Go version:", runtime.Version()) + printBuildInfo() +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 15f04f0e227..2698ebe3505 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,12 +1,16 @@ -# 4d63.com/tz v0.0.0-20190311034157-bd6cee76f731 +# 4d63.com/embedfiles v1.0.0 +4d63.com/embedfiles +# 4d63.com/tz v1.1.0 4d63.com/tz -# cloud.google.com/go v0.45.1 +# cloud.google.com/go v0.47.0 +cloud.google.com/go cloud.google.com/go/compute/metadata cloud.google.com/go/iam cloud.google.com/go/internal cloud.google.com/go/internal/optional cloud.google.com/go/internal/trace cloud.google.com/go/internal/version +# cloud.google.com/go/storage v1.1.1 cloud.google.com/go/storage # github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 github.com/Azure/go-ansiterm @@ -22,26 +26,26 @@ github.com/Azure/go-autorest/autorest/date github.com/Azure/go-autorest/logger # github.com/Azure/go-autorest/tracing v0.5.0 => github.com/Azure/go-autorest/tracing v0.5.0 github.com/Azure/go-autorest/tracing +# github.com/BurntSushi/toml v0.3.1 +github.com/BurntSushi/toml # github.com/MakeNowJust/heredoc v0.0.0-20171113091838-e9091a26100e github.com/MakeNowJust/heredoc # github.com/Microsoft/go-winio v0.4.14 github.com/Microsoft/go-winio github.com/Microsoft/go-winio/pkg/guid -# github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 -github.com/Nvveen/Gotty # github.com/beorn7/perks v1.0.1 github.com/beorn7/perks/quantile # github.com/blang/semver v3.5.1+incompatible github.com/blang/semver # github.com/bmatcuk/doublestar v1.1.5 github.com/bmatcuk/doublestar -# github.com/containerd/continuity v0.0.0-20181027224239-bea7585dbfac -github.com/containerd/continuity/pathdriver +# github.com/containerd/containerd v1.3.0 => github.com/containerd/containerd v1.3.0 +github.com/containerd/containerd/errdefs # github.com/davecgh/go-spew v1.1.1 github.com/davecgh/go-spew/spew # github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/dgrijalva/jwt-go -# github.com/docker/cli v0.0.0-20191011045415-5d85cdacd257 +# github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 github.com/docker/cli/cli/config github.com/docker/cli/cli/config/configfile github.com/docker/cli/cli/config/credentials @@ -59,7 +63,7 @@ github.com/docker/distribution/registry/client/auth/challenge github.com/docker/distribution/registry/client/transport github.com/docker/distribution/registry/storage/cache github.com/docker/distribution/registry/storage/cache/memory -# github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197 +# github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7 github.com/docker/docker/api github.com/docker/docker/api/types github.com/docker/docker/api/types/blkiodev @@ -81,15 +85,12 @@ github.com/docker/docker/client github.com/docker/docker/errdefs github.com/docker/docker/pkg/fileutils github.com/docker/docker/pkg/homedir -github.com/docker/docker/pkg/idtools github.com/docker/docker/pkg/ioutils github.com/docker/docker/pkg/jsonmessage github.com/docker/docker/pkg/longpath -github.com/docker/docker/pkg/mount github.com/docker/docker/pkg/progress github.com/docker/docker/pkg/streamformatter github.com/docker/docker/pkg/stringid -github.com/docker/docker/pkg/system github.com/docker/docker/pkg/tarsum github.com/docker/docker/pkg/term github.com/docker/docker/pkg/term/windows @@ -104,7 +105,7 @@ github.com/docker/go-connections/sockets github.com/docker/go-connections/tlsconfig # github.com/docker/go-metrics v0.0.1 github.com/docker/go-metrics -# github.com/docker/go-units v0.3.3 +# github.com/docker/go-units v0.4.0 github.com/docker/go-units # github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c github.com/docker/spdystream @@ -125,14 +126,17 @@ github.com/gogo/protobuf/proto github.com/gogo/protobuf/sortkeys # github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/glog -# github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 +# github.com/golang/groupcache v0.0.0-20191002201903-404acd9df4cc github.com/golang/groupcache/lru # github.com/golang/protobuf v1.3.2 +github.com/golang/protobuf/descriptor github.com/golang/protobuf/jsonpb github.com/golang/protobuf/proto +github.com/golang/protobuf/protoc-gen-go github.com/golang/protobuf/protoc-gen-go/descriptor github.com/golang/protobuf/protoc-gen-go/generator github.com/golang/protobuf/protoc-gen-go/generator/internal/remap +github.com/golang/protobuf/protoc-gen-go/grpc github.com/golang/protobuf/protoc-gen-go/plugin github.com/golang/protobuf/ptypes github.com/golang/protobuf/ptypes/any @@ -148,7 +152,7 @@ github.com/google/go-cmp/cmp/internal/diff github.com/google/go-cmp/cmp/internal/flags github.com/google/go-cmp/cmp/internal/function github.com/google/go-cmp/cmp/internal/value -# github.com/google/go-containerregistry v0.0.0-20191010200024-a3d713f9b7f8 +# github.com/google/go-containerregistry v0.0.0-20191017210159-68bc585818ee github.com/google/go-containerregistry/pkg/authn github.com/google/go-containerregistry/pkg/internal/retry github.com/google/go-containerregistry/pkg/internal/retry/wait @@ -187,18 +191,16 @@ github.com/gophercloud/gophercloud/openstack/identity/v2/tokens github.com/gophercloud/gophercloud/openstack/identity/v3/tokens github.com/gophercloud/gophercloud/openstack/utils github.com/gophercloud/gophercloud/pagination -# github.com/gorilla/context v1.1.1 -github.com/gorilla/context -# github.com/gorilla/mux v1.6.2 +# github.com/gorilla/mux v1.7.3 github.com/gorilla/mux -# github.com/grpc-ecosystem/grpc-gateway v1.8.6 +# github.com/grpc-ecosystem/grpc-gateway v1.11.3 github.com/grpc-ecosystem/grpc-gateway/internal github.com/grpc-ecosystem/grpc-gateway/runtime github.com/grpc-ecosystem/grpc-gateway/utilities # github.com/hashicorp/golang-lru v0.5.3 github.com/hashicorp/golang-lru github.com/hashicorp/golang-lru/simplelru -# github.com/imdario/mergo v0.3.7 +# github.com/imdario/mergo v0.3.8 github.com/imdario/mergo # github.com/inconshreveable/mousetrap v1.0.0 github.com/inconshreveable/mousetrap @@ -206,11 +208,15 @@ github.com/inconshreveable/mousetrap github.com/jbenet/go-context/io # github.com/json-iterator/go v1.1.7 github.com/json-iterator/go -# github.com/karrick/godirwalk v1.10.12 +# github.com/jstemmer/go-junit-report v0.9.1 +github.com/jstemmer/go-junit-report +github.com/jstemmer/go-junit-report/formatter +github.com/jstemmer/go-junit-report/parser +# github.com/karrick/godirwalk v1.12.0 github.com/karrick/godirwalk # github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/kballard/go-shellquote -# github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e +# github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd github.com/kevinburke/ssh_config # github.com/konsorten/go-windows-terminal-sequences v1.0.2 github.com/konsorten/go-windows-terminal-sequences @@ -230,7 +236,7 @@ github.com/mgutz/ansi github.com/mitchellh/go-homedir # github.com/mitchellh/go-wordwrap v1.0.0 github.com/mitchellh/go-wordwrap -# github.com/moby/buildkit v0.3.3 +# github.com/moby/buildkit v0.6.2 github.com/moby/buildkit/frontend/dockerfile/command github.com/moby/buildkit/frontend/dockerfile/parser github.com/moby/buildkit/frontend/dockerfile/shell @@ -238,15 +244,13 @@ github.com/moby/buildkit/frontend/dockerfile/shell github.com/modern-go/concurrent # github.com/modern-go/reflect2 v1.0.1 github.com/modern-go/reflect2 +# github.com/morikuni/aec v1.0.0 +github.com/morikuni/aec # github.com/opencontainers/go-digest v1.0.0-rc1 github.com/opencontainers/go-digest # github.com/opencontainers/image-spec v1.0.1 github.com/opencontainers/image-spec/specs-go github.com/opencontainers/image-spec/specs-go/v1 -# github.com/opencontainers/runc v0.1.1 -github.com/opencontainers/runc/libcontainer/user -# github.com/pelletier/go-buffruneio v0.2.0 -github.com/pelletier/go-buffruneio # github.com/pkg/errors v0.8.1 github.com/pkg/errors # github.com/prometheus/client_golang v1.1.0 @@ -292,7 +296,7 @@ github.com/tektoncd/pipeline/pkg/list github.com/tektoncd/pipeline/pkg/merge github.com/tektoncd/pipeline/pkg/names github.com/tektoncd/pipeline/pkg/templating -# github.com/xanzy/ssh-agent v0.2.0 +# github.com/xanzy/ssh-agent v0.2.1 github.com/xanzy/ssh-agent # go.opencensus.io v0.22.1 go.opencensus.io @@ -311,7 +315,7 @@ go.opencensus.io/trace go.opencensus.io/trace/internal go.opencensus.io/trace/propagation go.opencensus.io/trace/tracestate -# golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 +# golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 golang.org/x/crypto/cast5 golang.org/x/crypto/curve25519 golang.org/x/crypto/ed25519 @@ -329,7 +333,13 @@ golang.org/x/crypto/ssh golang.org/x/crypto/ssh/agent golang.org/x/crypto/ssh/knownhosts golang.org/x/crypto/ssh/terminal -# golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc +# golang.org/x/exp v0.0.0-20191014171548-69215a2ee97e +golang.org/x/exp/apidiff +golang.org/x/exp/cmd/apidiff +# golang.org/x/lint v0.0.0-20190930215403-16217165b5de +golang.org/x/lint +golang.org/x/lint/golint +# golang.org/x/net v0.0.0-20191014212845-da9a3fd4c582 golang.org/x/net/context golang.org/x/net/context/ctxhttp golang.org/x/net/http/httpguts @@ -346,9 +356,9 @@ golang.org/x/oauth2/google golang.org/x/oauth2/internal golang.org/x/oauth2/jws golang.org/x/oauth2/jwt -# golang.org/x/sync v0.0.0-20190423024810-112230192c58 +# golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e golang.org/x/sync/errgroup -# golang.org/x/sys v0.0.0-20190904154756-749cb33beabd +# golang.org/x/sys v0.0.0-20191010194322-b09406accb47 golang.org/x/sys/cpu golang.org/x/sys/unix golang.org/x/sys/windows @@ -359,22 +369,41 @@ golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm # golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 golang.org/x/time/rate +# golang.org/x/tools v0.0.0-20191018000036-341939e08647 +golang.org/x/tools/cmd/goimports +golang.org/x/tools/go/analysis +golang.org/x/tools/go/analysis/passes/inspect +golang.org/x/tools/go/ast/astutil +golang.org/x/tools/go/ast/inspector +golang.org/x/tools/go/buildutil +golang.org/x/tools/go/gcexportdata +golang.org/x/tools/go/internal/gcimporter +golang.org/x/tools/go/internal/packagesdriver +golang.org/x/tools/go/packages +golang.org/x/tools/go/types/objectpath +golang.org/x/tools/go/types/typeutil +golang.org/x/tools/internal/fastwalk +golang.org/x/tools/internal/gopathwalk +golang.org/x/tools/internal/imports +golang.org/x/tools/internal/module +golang.org/x/tools/internal/semver +golang.org/x/tools/internal/span # golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 golang.org/x/xerrors golang.org/x/xerrors/internal -# google.golang.org/api v0.9.0 +# google.golang.org/api v0.11.0 google.golang.org/api/cloudbuild/v1 -google.golang.org/api/gensupport google.golang.org/api/googleapi google.golang.org/api/googleapi/internal/uritemplates google.golang.org/api/googleapi/transport google.golang.org/api/internal +google.golang.org/api/internal/gensupport google.golang.org/api/iterator google.golang.org/api/option google.golang.org/api/storage/v1 google.golang.org/api/transport/http google.golang.org/api/transport/http/internal/propagation -# google.golang.org/appengine v1.6.2 +# google.golang.org/appengine v1.6.5 google.golang.org/appengine google.golang.org/appengine/internal google.golang.org/appengine/internal/app_identity @@ -385,7 +414,7 @@ google.golang.org/appengine/internal/modules google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch -# google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 +# google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03 google.golang.org/genproto/googleapis/api/annotations google.golang.org/genproto/googleapis/api/httpbody google.golang.org/genproto/googleapis/iam/v1 @@ -393,7 +422,7 @@ google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/status google.golang.org/genproto/googleapis/type/expr google.golang.org/genproto/protobuf/field_mask -# google.golang.org/grpc v1.22.2 +# google.golang.org/grpc v1.24.0 google.golang.org/grpc google.golang.org/grpc/balancer google.golang.org/grpc/balancer/base @@ -435,13 +464,13 @@ gopkg.in/AlecAivazis/survey.v1/terminal gopkg.in/inf.v0 # gopkg.in/russross/blackfriday.v2 v2.0.1 => github.com/russross/blackfriday/v2 v2.0.1 gopkg.in/russross/blackfriday.v2 -# gopkg.in/src-d/go-billy.v4 v4.3.0 +# gopkg.in/src-d/go-billy.v4 v4.3.2 gopkg.in/src-d/go-billy.v4 gopkg.in/src-d/go-billy.v4/helper/chroot gopkg.in/src-d/go-billy.v4/helper/polyfill gopkg.in/src-d/go-billy.v4/osfs gopkg.in/src-d/go-billy.v4/util -# gopkg.in/src-d/go-git.v4 v4.11.0 +# gopkg.in/src-d/go-git.v4 v4.13.1 gopkg.in/src-d/go-git.v4 gopkg.in/src-d/go-git.v4/config gopkg.in/src-d/go-git.v4/internal/revision @@ -485,8 +514,34 @@ gopkg.in/src-d/go-git.v4/utils/merkletrie/internal/frame gopkg.in/src-d/go-git.v4/utils/merkletrie/noder # gopkg.in/warnings.v0 v0.1.2 gopkg.in/warnings.v0 -# gopkg.in/yaml.v2 v2.2.2 +# gopkg.in/yaml.v2 v2.2.4 gopkg.in/yaml.v2 +# honnef.co/go/tools v0.0.1-2019.2.3 +honnef.co/go/tools/arg +honnef.co/go/tools/cmd/staticcheck +honnef.co/go/tools/config +honnef.co/go/tools/deprecated +honnef.co/go/tools/facts +honnef.co/go/tools/functions +honnef.co/go/tools/go/types/typeutil +honnef.co/go/tools/internal/cache +honnef.co/go/tools/internal/passes/buildssa +honnef.co/go/tools/internal/renameio +honnef.co/go/tools/internal/sharedcheck +honnef.co/go/tools/lint +honnef.co/go/tools/lint/lintdsl +honnef.co/go/tools/lint/lintutil +honnef.co/go/tools/lint/lintutil/format +honnef.co/go/tools/loader +honnef.co/go/tools/printf +honnef.co/go/tools/simple +honnef.co/go/tools/ssa +honnef.co/go/tools/ssautil +honnef.co/go/tools/staticcheck +honnef.co/go/tools/staticcheck/vrp +honnef.co/go/tools/stylecheck +honnef.co/go/tools/unused +honnef.co/go/tools/version # k8s.io/api v0.0.0-20190831074750-7364b6bdad65 => k8s.io/api v0.0.0-20190620084959-7cf5895f2711 k8s.io/api/admissionregistration/v1beta1 k8s.io/api/apps/v1 @@ -775,7 +830,7 @@ k8s.io/client-go/util/retry k8s.io/klog # k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf k8s.io/kube-openapi/pkg/util/proto -# k8s.io/kubectl v0.0.0-20190831163037-3b58a944563f +# k8s.io/kubectl v0.0.0-20190831163037-3b58a944563f => k8s.io/kubectl v0.0.0-20190831163037-3b58a944563f k8s.io/kubectl/pkg/util/interrupt k8s.io/kubectl/pkg/util/templates k8s.io/kubectl/pkg/util/term